Repository navigation
fix(sitemap): add lastmod and hreflang alternates where missing - #478
Merged
Merged
Conversation
The blog, projects and community POI index pages and the blog author pages now carry lastmod: the newest date among the items they list, dated as each item's own sitemap entry is. Event translations are paired by translationKey, as the detail page pairs them, so events whose slugs differ get alternates. Team pages and events have no content date and keep no lastmod; nothing is derived from the build or request time. Team and author alternates already came from the module's sibling pairing and are unchanged. Claude-Session: https://claude.ai/code/session_019zws4ceJu2jctk3XT48fMX
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
launchpad | 9c8a844 | Commit Preview URL Branch Preview URL |
Oct 10 2026, 10:26 PM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
lastmodwhere the content has a real date, and fixes event translation alternates. Counts come from the localpnpm devsitemap, before and after this change.lastmodbeforelastmodafterxhtml:linkalternates before / afterde-DE.xmlen-US.xmlNewly dated: the blog, projects and community POI index pages, and the blog author page (en:
/en/blog/author/themeinerlp, de:/de/blog/author/themeinerlp).What changed
server/api/__sitemap__/index-pages.ts,shared/utils/indexPageSitemap.ts): the index's lastmod is the newest date among the items it lists, dated the way each item's own sitemap entry is dated. Blog uses released articles only; projects useupdatedAt; community POI usesupdatedAt ?? startedAt. Pages with no derivable date get no entry, so the app's own entry stands. The source adds lastmod to an existing app entry; the sitemap merges onlocand keeps the alternates.shared/utils/blogAuthors.ts): lastmod is the newest modified date of the author's released articles in that locale.updatedDateis now selected.shared/utils/eventRoutes.ts): translations are paired bytranslationKey, as the detail page pairs them, so events whose slugs differ get alternates. Only listed translations are included.shared/utils/sitemapDates.ts.Choices and what was not changed
lastmodfrom build or request time. Team pages, the team index, the events index, and the home, about, bluemap and community pages have no content date, so they keep nolastmod. The team data has no updated date, and no content file carries one for events.xhtml:linkentries. The module pairs them by identical slug across locales, so this change does not touch them.Tests
tests/shared/indexPageSitemap.spec.ts,tests/shared/blogAuthors.spec.ts,tests/shared/eventRoutes.spec.ts.tests/architecture/module-boundaries.spec.ts:index-pages.tsis registered as a named exception, for the same Nitrolocalesimport asteam.ts,events.tsandblog-authors.ts.pnpm test: 165 files, 1304 tests passing.pnpm quality: ESLint errors 186 (baseline 186), TypeScript errors 3 (baseline 3). No regression.pnpm typecheckreports the same 3 errors as the baseline, inlayers/community-poi/composables/useCommunityPoi.tsandlayers/home/composables/useHomeContent.ts. Neither file is touched here.pnpm build: passes.https://claude.ai/code/session_019zws4ceJu2jctk3XT48fMX