🐛 Upgrade staticalize to 0.3.0 so the sitemap is valid - #332
Merged
Merged
Conversation
Every sitemap this site has deployed wraps each `<loc>` in `<urls>` rather than `<url>`, which is not the sitemaps.org schema. Crawlers are handed a document whose entries they have no reason to understand. It went unnoticed because staticalize's own reader accepts either spelling, so a site staticalized twice round-trips its own invalid output. thefrontside/staticalize#15 fixes the writer; 0.3.0 is the first release with it. 0.3.0 requires `--retries`, where 0.2.x applied a default of 3. Neither the task nor the workflow passed it, so both pass 3 now and keep the behaviour they had. The `@frontside/staticalize` import map entry goes away rather than moving with them. Nothing imports that specifier — the task names the full `jsr:` url — and it was the only thing pinning the package in the lockfile.
Contributor
Package Changes Through 7e5bed7There are 1 changes which include @interactors/core with patch Planned Package VersionsThe following package releases are the planned based on the context of changes in this pull request.
Add another change file through the GitHub UI by following this link. Read about change files or the docs at github.com/jbolda/covector |
Contributor
|
🚀 Deploy Preview Ready!
|
cowboyd
approved these changes
Sep 28, 2026
This was referenced Sep 28, 2026
This branch was successfully deployed
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.
Motivation
Every sitemap this site has deployed is invalid. Staticalize wraps each
<loc>in
<urls>rather than<url>, which is not thesitemaps.org schema, so crawlers are
handed a document whose entries they have no reason to understand.
It went unnoticed because staticalize's own reader accepts either spelling
(
xml.urlset.url ?? xml.urlset.urls), so a site staticalized twice round-tripsits own invalid output. thefrontside/staticalize#14 has the details;
thefrontside/staticalize#15 fixes the writer, and 0.3.0 is the first release
that carries it.
One of four sites in the org on an affected version — see the table at the
bottom.
Approach
www/deno.json— thestaticalizetask moves from 0.2.2 to 0.3.0.github/workflows/www.yaml— the downloaded binary moves from v0.2.6 tov0.3.0, in both the preview and the production job
0.3.0 requires
--retries, where 0.2.x applied a documented default of 3.Neither the task nor the workflow passed it, so both would have started failing
outright on the new version:
They now pass
--retries=3, which is the value they were already getting. Thatrequirement is itself a bug (thefrontside/staticalize#19), already fixed by
thefrontside/staticalize#20 but not yet released — once it ships, the flag can
come back out.
The
"@frontside/staticalize"import map entry is removed rather than bumped.Nothing imports that specifier — the task names the full
jsr:url — and it wasthe only thing pinning the package in
deno.lock, so bumping it would havepulled staticalize's entire 0.3.0 dependency tree into the lock for no reason.
Dropping it is a one-line lock change instead of 183.
Two other fixes ride along in 0.3.0, neither of which changes anything here:
--baseis honoured — this site's base ishttps://interactors.netlify.app, which has no pathAnd it says where it lives
Second commit, which the upgrade is a prerequisite for.
The deploy staticalized with
--base=https://interactors.netlify.app, so everypage told Google the canonical copy was the Netlify one:
frontside.com proxies this site and serves the same pages, so the two origins
are duplicates of each other and the canonical points at the copy nobody links
to — the page frontside.com serves disclaims its own content. The base is now
the url readers actually visit.
useAbsoluteUrlalready builds the canonical from the crawl origin, sostaticalize rewrites it along with
og:urland every internal link. 0.3.0 iswhat honours the path component of
--base, which is why this cannot goahead of the upgrade.
thefrontside/effection#1248 did the same for Effection.
Tests
Served a two-page site with a valid sitemap and staticalized it with both
versions:
0.2.x, what this site runs today
0.3.0, this PR
Staticalized this site locally against the new base and read the output:
And confirmed frontside.com mounts that sitemap without doubling the prefix,
using the function from thefrontside/frontside.com#509:
I also checked that
--sitestill works, since 0.3.0's--helpnow presents thesite as a positional argument. It does; no caller needs changing.
A note on the lockfile
deno install --frozenfails on this branch. It fails identically onmainwithout these changes, so the lock was already stale and I left that alone
rather than folding an unrelated regeneration into this PR.
Other sites that need the same bump
Merge order
thefrontside/frontside.com#509 must land first. Until it does, frontside.com
prefixes
/interactorsonto sitemap entries that already carry it, and asitemap published under the new base would break its deploy the way Effection's
did.