Repository navigation
fix(seo): resolve the findings of the SEO audit - #29
Merged
Merged
Conversation
…temap The sitemap no longer counts against any limit and is cached for an hour. Its URLs now match the canonicals, and static pages no longer claim to change every day. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A page whose API call failed now answers 503 with Retry-After and noindex. A package page embeds its newest versions, and the browser fetches the rest after it loads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The registry and page are now in the /packages URL, so every package page is reachable by a link. The blog list also becomes Release Digests and answers 503 when it cannot load. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated posts are unreviewed, so they are now noindex. Also corrects llms.txt and the homepage registry count. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 2, 2026
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
Fixes the code-level findings of the 2026-11-02 SEO audit: how failed renders answer, rate limiting of server rendering and the sitemap, package page size, crawlable links to package pages, generated posts, an about page, and several outdated details.
Why
Closes #28
A failed render looked like a good page to crawlers, and server rendering spent the same request budget as visitors, which makes those failures more likely. Only 20 of about 350 package pages could be reached by a link, and the largest package page was 10.7 MB. A site giving security advice also needs to say who runs it, and a generated post contained a factual error.
Changes
Retry-Afterandnoindexwhen their API call fails./api/sitemapis exempt and cached in memory for an hour. API calls from the render server get their own per-visitor tier, authenticated by a shared key. Without the key they count as visitor calls, as they do today.GET /api/Package/{registry}/{id}acceptsversionLimitandincludeVersionand returnstotalVersions. The first load embeds the 10 newest versions, plus the latest and the requested version. The browser then fetches the full list./packagesuses?page=Nlinks with self-canonicals and?registry=hub pages with their own heading and meta. A page past the end is a 404.noindexand the section is now called Release Digests./aboutcovers the operator, data sources, categorisation and limits. It is linked from the header and footer, andOrganizationnow has afounder.changefreqandpriorityare gone, and/about,/contributorsand the hubs are added.llms.txtis rewritten and the homepage says six registries.Notes for reviewers
RENDER_SERVER_KEYin the server's.envto get the render tier. The site works without it, but render calls keep using the visitor budget./packagesare now links and select one registry at a time instead of several.ssr-smoke.test.mjsandpackage.spec.tsare updated only where this change alters what they assert or mock. No new tests were added.noindexis the only change to them.Checklist
Closes #NNNabove)developand is about one thingfeat(scope): ...,fix(scope): ...)src/frontend/src/app/core/models