chore(deps): Astro 7.1 + dependency refresh (#39) - #43
Merged
Conversation
Move the site onto the Astro 7.1 line (7.0.6 -> 7.1.3) and refresh the remaining dependencies. Backwards-compatible minor; all Starlight plugins already declared support for astro >=7. Starlight 0.41.4 replaced the intersection in docsSchema() with .extend() so that enum fields can be modified (withastro/starlight#3936). The extend option must now return a ZodObject, so src/content.config.ts composes the blog schema with .extend() instead of .and(). Starlight deep-merges the result, which keeps the UNSTABLE_BANNER default on the banner field. TypeScript is held at ^6: @astrojs/check@0.9.9 peers ^5.0.0 || ^6.0.0. Verified: npm run verify (format:check, astro check 0 errors, full build of 78940 pages), npm run validate:data (39250/39250 records), link check clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5 tasks
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.
Moves the site onto the Astro 7.1 line and refreshes the remaining dependencies. Targets
stagingso it ships inside the v0.1.0 release (#4) rather than trailing it.Note on the version number: the release is Astro 7.1, not 7.10 —
astro-710in the blog URL is the 7.1.0 slug. npmlatestisastro@7.1.3.Dependencies
astro@astrojs/starlightstarlight-blog@astrojs/markdown-satteri@commitlint/clilint-stagedprettiertsxnpm outdatedis now empty apart from the deliberate hold below.TypeScript stays at
^6.0.3.@astrojs/check@0.9.9declarestypescript ^5.0.0 || ^6.0.0, so 7.0.2 would break the peer range. Worth a follow-up issue once@astrojs/checkships a TS 7 range.Checklist item 1 — plugin compatibility confirmed
All Starlight plugins already declare Astro 7 support; none needed a bump to accept 7.1.
starlight-llms-txtastro ^7.0.0,@astrojs/starlight >=0.41.0starlight-openapiastro >=7.0.2,@astrojs/starlight >=0.41.0starlight-links-validatorastro >=7.0.2,@astrojs/starlight >=0.41.0starlight-blog@astrojs/starlight >=0.41.0astro-mermaidastro >=4starlight-llms-txt— the #20 blocker — is fine at its current floor; no version change was needed.starlight-blog@0.28.0is purely additive (multi-instance blogs, structured data, RFC 5005 feed archives, linked cover images, a<Preview>component); its Astro 7 breaking change was 0.27.0, already absorbed in #29.One source change was required
Not from Astro — from Starlight 0.41.4. withastro/starlight#3936 replaced the intersection inside
docsSchema()with.extend()so thatz.enumfields can be modified. As a consequence theextendoption must now return aZodObject;BaseSchemais typedz.ZodObject<T>. Oursrc/content.config.tsreturnedblogSchema(context).and(z.object({…})), aZodIntersection, whichastro checknow rejects withts(2322).Fixed by composing with
.extend()instead —blogSchema()returnsblogEntrySchema(context).partial(), aZodObject, so this is a direct swap:Behaviour is preserved: Starlight's
deepMergeSchemaswalks the user shape, and forbannerit merges ourZodDefaultover Starlight's optionalbannerfield, keeping theUNSTABLE_BANNERdefault. Verified in the build output — the pre-1.0 banner still renders (see below).Checklist items 2–3 — verification
npm run verify— exit 0.prettier --checkclean,astro check0 errors, 0 warnings (2 pre-existingts(80005)hints onscripts/compile.tsrequire()calls), full build of 78,940 pages in 1m 9s,starlight-links-validatorreports all internal links valid.npm run validate:data— 39250/39250 records valid (works=12, systems=10, refs=39204, mappings=24)..github/workflows/links.ymlextracts URLs fromdata/andsrc/content/docs/rather than crawlingdist/, since the built site expands to ~200k resolver URLs): 417 checked, 287 OK, 65 errors, 26 excluded. All 65 are pre-existing external-host noise — 63 ×ctext.org403(bot-blocking), 1 ×iso.org403, and 1 ×404ondecisions/ADR-0002-…mdonmain, which resolves once Release v0.1.0: ADR-0001/0002/0003, all data draft, spec fixes #6–#15, Astro 7 (#20) #4 merges. That job is report-only (fail: false) and never gates a PR. This PR touches zero files underdata/orsrc/content/docs/, so the external-link surface is identical tostagingby construction. Internal links are validated at build time bystarlight-links-validator, which passed.npm run formatproduced no changes under prettier 3.9.6, so the diff stays on the manifests, the changelog, and the one schema fix.Checklist item 4 — built-site sanity checks
Verified against
dist/:llms.txt(843 B) andllms-full.txt(194 KB) generated —starlight-llms-txt✅/api/OpenAPI pages render (49 KB index plusoperations/) —starlight-openapi✅/standard/—astro-mermaid✅/blog/index andrss.xmlbuild, feed parses as valid XML —starlight-blog✅/id/work/…/index.htmlplus its.jsonsibling, with<link rel="alternate">intact ✅/id/ref/…pages at 3,234 B — the feat(site)!: minimal static templates for reference pages #30 slimming holds, no regression ✅, andnoindexis still emitted on draft records (feat(site): draft records flagged + noindexed (ADR-0003 follow-up) #26) ✅/reg/index and/cite/redirect pages build ✅Checklist item 5 —
deferRender/collectionStorageare not applicable hereInvestigated and deliberately not adopted. Neither feature touches the registry:
deferRenderis an option on theglob()loader, not ondefineCollection. The only content collection in this project isdocs, loaded by Starlight'sdocsLoader()— the option is not reachable without forking that loader.src/lib/registry.tscallscompileRegistry()fromscripts/compile.tsdirectly and memoises the result in a module-level variable, so the.astro/data-store.jsonceiling thatexperimental.collectionStorage: 'chunked'raises only ever holds the docs markdown — a few hundred KB, nowhere near 10 MB.So the ROADMAP "millions of references" scaling concern is unaffected by both features; the relevant pressure is in
scripts/compile.tsand the 39k static route pages, not the content layer. No config change made. Worth revisiting only if registry records ever move into a content collection.Unrelated pre-existing issue spotted
/api/openapi.yaml— advertised in thestarlight-llms-txtdescription and in/api/prose — 404s on production today and is absent fromdist/.api/openapi.yamlis a build-time input tostarlightOpenAPI({ schema })and was never copied intopublic/, so it is not published. This is not a regression from this PR (it 404s on the current live 7.0.6 build too); flagging it for a separate fix.Closes #39.
🤖 Generated with Claude Code