From 8a3e7831d35b88d1df295aa9a75d7b1bca0049ec Mon Sep 17 00:00:00 2001 From: Davide Scaini Date: Sun, 19 Apr 2026 22:46:36 +0200 Subject: [PATCH] fix: prevent double URL-rewrite in nested shard resolution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rewriteActivityUrls now skips URLs that are already absolute (start with / or http). Before this fix, the new user→year two-level nesting caused year-shard URLs (/data/brut/_merged/activities/X.json) to be prepended again at the user-shard level, producing broken doubled paths and making every activity show "Activity not found". --- site/src/lib/dataloader.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/site/src/lib/dataloader.ts b/site/src/lib/dataloader.ts index 032c8b8..b37b8fb 100644 --- a/site/src/lib/dataloader.ts +++ b/site/src/lib/dataloader.ts @@ -62,12 +62,14 @@ function isYearShardUrl(url: string): boolean { } function rewriteActivityUrls(a: ActivitySummary, shardBase: string): ActivitySummary { + // Skip if URL is already absolute (http:// or root-relative /) — avoids + // double-rewriting when shards are nested (e.g. user shard → year shard). + const needsRewrite = (url: string | null | undefined): boolean => + !!url && !url.startsWith('http') && !url.startsWith('/'); return { ...a, - detail_url: a.detail_url && !a.detail_url.startsWith('http') - ? `${shardBase}${a.detail_url}` : a.detail_url, - track_url: a.track_url && !a.track_url.startsWith('http') - ? `${shardBase}${a.track_url}` : a.track_url, + detail_url: needsRewrite(a.detail_url) ? `${shardBase}${a.detail_url}` : a.detail_url, + track_url: needsRewrite(a.track_url) ? `${shardBase}${a.track_url}` : a.track_url, }; }