From 26758d1609697a8a89a956dc63979678e24664a2 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Oct 2026 22:19:46 -0600 Subject: [PATCH 1/2] fix(seo): emit canonical Charts catalog sitemap URLs --- src/utils/charts-catalog.ts | 6 +++--- tests/charts-catalog-site-contracts.test.ts | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/utils/charts-catalog.ts b/src/utils/charts-catalog.ts index 258b3defb..a83fa39e8 100644 --- a/src/utils/charts-catalog.ts +++ b/src/utils/charts-catalog.ts @@ -60,12 +60,12 @@ export function getChartsCatalogSitemapEntries(index: ChartsCatalogIndex) { ) return [ - { path: chartsCatalogBasePath }, + { path: chartsCatalogBasePath.replace(/\/$/, '') }, ...collections.map((collection) => ({ - path: `${chartsCatalogBasePath}collections/${collection.id}/`, + path: `${chartsCatalogBasePath}collections/${collection.id}`, })), ...index.cases.map((catalogCase) => ({ - path: `${chartsCatalogBasePath}charts/${catalogCase.id}/`, + path: `${chartsCatalogBasePath}charts/${catalogCase.id}`, })), ] } diff --git a/tests/charts-catalog-site-contracts.test.ts b/tests/charts-catalog-site-contracts.test.ts index 7dd090024..40460f59f 100644 --- a/tests/charts-catalog-site-contracts.test.ts +++ b/tests/charts-catalog-site-contracts.test.ts @@ -12,7 +12,7 @@ import { type DocsWebhookSource, } from '../src/utils/docs-webhook-sources' -test('sitemap exposes catalog pages but not runtime resources', () => { +test('sitemap emits canonical catalog URLs without trailing slashes or runtime resources', () => { const index = parseChartsCatalogIndex({ schemaVersion: 2, source: { @@ -46,9 +46,9 @@ test('sitemap exposes catalog pages but not runtime resources', () => { }) assert.deepEqual(getChartsCatalogSitemapEntries(index), [ - { path: '/charts/catalog/' }, - { path: '/charts/catalog/collections/shadcn/' }, - { path: '/charts/catalog/charts/01-line/' }, + { path: '/charts/catalog' }, + { path: '/charts/catalog/collections/shadcn' }, + { path: '/charts/catalog/charts/01-line' }, ]) }) From d075a56f4febb9e8902d4cf0de715e01a4ba85fb Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sat, 31 Oct 2026 22:43:57 -0600 Subject: [PATCH 2/2] fix(seo): keep the catalog fallback URL canonical --- src/utils/sitemap.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/sitemap.ts b/src/utils/sitemap.ts index f818b1740..d4cf82bfa 100644 --- a/src/utils/sitemap.ts +++ b/src/utils/sitemap.ts @@ -145,7 +145,7 @@ async function getPublishedChartsCatalogEntries(): Promise< return getChartsCatalogSitemapEntries(publication.index) } catch (error) { console.error('[sitemap] Charts catalog unavailable', error) - return [{ path: '/charts/catalog/' }] + return [{ path: '/charts/catalog' }] } }