From c836e184a6398262b99a818dfa3fc930e04e2b54 Mon Sep 17 00:00:00 2001 From: AbelOsaretin Date: Thu, 22 Oct 2026 21:11:00 +0100 Subject: [PATCH 1/4] fix(seo): remove /connect from sitemap to match robots.txt disallow Crawlers were seeing /connect in the sitemap while robots.txt disallowed it, wasting crawl budget. Remove the entry so all sitemap URLs are indexable. Fixes #559 --- src/app/sitemap.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index 16f18c7..a09ad51 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -18,12 +18,6 @@ export default async function sitemap(): Promise { changeFrequency: "daily", priority: 0.9, }, - { - url: `${SITE_URL}/connect`, - lastModified: new Date(), - changeFrequency: "monthly", - priority: 0.5, - }, ]; let courseRoutes: MetadataRoute.Sitemap = []; From b9b0af6177d2cde1ea8ca7eca260d1acf02056ee Mon Sep 17 00:00:00 2001 From: AbelOsaretin Date: Thu, 22 Oct 2026 21:11:05 +0100 Subject: [PATCH 2/4] fix(rewards): stop re-throwing claim errors after toast handleClaim already surfaces the failure via addToast, but the re-throw was also caught by the route error boundary and rendered a second error UI on top of the toast. Drop the re-throw so the toast is the only error indication. Fixes #560 --- src/app/rewards/page.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/rewards/page.tsx b/src/app/rewards/page.tsx index 4f1d780..cea7c8f 100644 --- a/src/app/rewards/page.tsx +++ b/src/app/rewards/page.tsx @@ -29,9 +29,8 @@ export default function RewardsPage() { try { await claim(claimableId); addToast("Reward claimed successfully!", "success"); - } catch (err) { + } catch { addToast("Failed to claim reward. Please try again.", "error"); - throw err; } }; From da8e24627eca84da6380c418cb99de7d97b1edb2 Mon Sep 17 00:00:00 2001 From: AbelOsaretin Date: Thu, 22 Oct 2026 21:11:10 +0100 Subject: [PATCH 3/4] fix(a11y): unwrap course card Link to avoid nested interactive elements The card was wrapped in which contained buttons and a dropdown, producing invalid