Skip to content

chore(deps): upgrade dependencies for Astro 7 (DOCSDEV-75) - #712

Open
Infi-Knight wants to merge 1 commit into
mainfrom
chore/docsdev-75-webmonetization-dep-upgrade
Open

chore(deps): upgrade dependencies for Astro 7 (DOCSDEV-75)#712
Infi-Knight wants to merge 1 commit into
mainfrom
chore/docsdev-75-webmonetization-dep-upgrade

Conversation

@Infi-Knight

Copy link
Copy Markdown
Collaborator

Part of a fleet-wide dependency upgrade across the Interledger documentation sites (DOCSDEV-75). This one moves the site to Astro 7.

Dependency changes

  • astro 6.3.8 to 7.2.10
  • @astrojs/starlight 0.39.2 to 0.42.0
  • @astrojs/markdown-remark added at 7.3.0
  • @interledger/docs-design-system 0.13.0 to 0.14.0
  • starlight-links-validator 0.24.0 to 0.26.0
  • starlight-llms-txt 0.9.0 to 0.11.0
  • @astrojs/check 0.9.9 to 0.9.10
  • sharp 0.34.5 to 0.35.4
  • respec 35.6.1 to 37.3.5

Tooling: eslint to 10.9.1, eslint-plugin-astro to 3.1.0, astro-eslint-parser to 3.1.0, typescript-eslint to 8.69.0, globals to 17.11.0, prettier to 3.9.6, eslint-plugin-jsx-a11y added at 6.10.2.

typescript stays at 6.0.3. @astrojs/check declares typescript ^5 || ^6, and typescript-eslint refuses TypeScript 7 at runtime.

Removed remark-mermaidjs

It was declared in dependencies but never imported. A repo-wide search found references only in package.json, the lockfile, and one old SVG filename. This site renders no Mermaid diagrams.

An accessibility bug, found and fixed

eslint-plugin-astro 3 exposes accessibility rule sets that version 1 did not. The config now extends flat/jsx-a11y-recommended, which turns on 31 rules. That found one real problem:

src/pages/faq.astro
  14:7  error  img elements must have an alt prop  astro/jsx-a11y/alt-text

The FAQ hero image had no alt. It sits beside the "Frequently asked Questions" heading and adds no information, so it is decorative and now has alt="". Screen readers will skip it rather than announce a filename.

Two things reviewers should know

package-lock.json is fully regenerated. npm could not resolve the Astro 7 tree against the old lockfile, so the diff is large. I verified the Linux-only optional dependencies are still recorded, so npm ci --include=optional still works on CI. Note that Vite 8 replaced rollup with rolldown, so the pinned @rollup/rollup-linux-x64-gnu is now unused. I left it in place rather than change a deliberate pin, but it can be dropped in a follow-up.

A new overrides entry was needed. eslint-plugin-jsx-a11y@6.10.2 declares eslint ^3 || ... || ^9 but runs correctly on ESLint 10. npm treats that stale range as a hard install failure, where bun and pnpm only warn. The override forces the root eslint version for that package. It can be removed once upstream declares ESLint 10 support.

Markdown processor

Astro 7 makes Sätteri the default, and Sätteri does not run remark or rehype plugins. Starlight follows the same default. This cycle keeps every Starlight site on the unified() processor, so all sites stay on the pipeline they run today. This site configures no plugins, so its unified() call takes no arguments.

Test plan

  • npm install --include=optional clean
  • npm run build passed, 41 pages, 101 HTML files
  • The spec-symlink integration works under Vite 8. Tested from a clean state with public/specification deleted, which is what CI does. The integration recreated the symlink and 22 spec files reached dist/.
  • /specification/ serves, and respec loads from the W3C CDN (respecConfig defined, 23825 characters of content)
  • starlight-links-validator 0.26.0 reports all internal links valid
  • /llms.txt and /llms-full.txt generate
  • npm run lint exits 0 at --max-warnings=0 after the alt-text fix
  • Pagefind index built
  • Linux-only optional dependencies still present in the regenerated lockfile
  • Deploy preview verified, including /specification/

Two pre-existing build warnings, both benign

  • [starlight-i18n-loader] No files found matching ... in "src/content/i18n". That directory holds only a .keepme file. No i18n is configured.
  • Could not render /404 from route /[...slug] as it conflicts with higher priority route /404. dist/404.html is still produced.

Refs: DOCSDEV-75

Phase 3b of DOCSDEV-75.

Core:

- astro 6.3.8 to 7.2.10
- @astrojs/starlight 0.39.2 to 0.42.0
- @astrojs/markdown-remark added at 7.3.0
- @interledger/docs-design-system 0.13.0 to 0.14.0
- starlight-links-validator 0.24.0 to 0.26.0
- starlight-llms-txt 0.9.0 to 0.11.0
- @astrojs/check 0.9.9 to 0.9.10
- sharp 0.34.5 to 0.35.4
- respec 35.6.1 to 37.3.5

Tooling:

- eslint 10.4.0 to 10.9.1
- eslint-plugin-astro 1.7.0 to 3.1.0
- astro-eslint-parser 1.4.0 to 3.1.0
- typescript-eslint and @typescript-eslint/parser 8.60.0 to 8.69.0
- globals 17.6.0 to 17.11.0
- prettier 3.8.3 to 3.9.6
- eslint-plugin-jsx-a11y added at 6.10.2

Removed remark-mermaidjs. It was declared but never imported, and this
site renders no Mermaid diagrams.

TypeScript stays at 6.0.3. @astrojs/check declares typescript ^5 or ^6,
and typescript-eslint refuses TypeScript 7 at runtime.

Astro 7 makes Sätteri the default markdown processor. This cycle keeps
every Starlight site on the unified processor. This site configures no
plugins, so its unified() call takes no arguments.

Enabled the eslint-plugin-astro accessibility rules through
flat/jsx-a11y-recommended. That found one real bug: the FAQ hero image
had no alt attribute. It is decorative, so it now has alt="".

Added an npm overrides entry for eslint-plugin-jsx-a11y. That package
declares eslint ^3 to ^9 but runs correctly on eslint 10. npm treats the
stale range as a hard install error, unlike bun and pnpm.

Regenerated package-lock.json. npm could not resolve the Astro 7 tree
against the old lockfile. The Linux-only optional dependencies are still
recorded, so npm ci --include=optional still works on CI.
@netlify

netlify Bot commented Sep 3, 2026

Copy link
Copy Markdown

Deploy Preview for webmonetization-preview ready!

Name Link
🔨 Latest commit 856d4d8
🔍 Latest deploy log https://app.netlify.com/projects/webmonetization-preview/deploys/6a994f90d539880008e2b71d
😎 Deploy Preview https://deploy-preview-712--webmonetization-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@w3cbot

w3cbot commented Sep 7, 2026

Copy link
Copy Markdown

Infi-Knight marked as non substantive for IPR from ash-nazg.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants