Skip to content

ci: migrate off the deprecated Node.js 20 runtime - #27

Merged
nprudhomme merged 2 commits into
mainfrom
chore/actions-node24
Aug 13, 2026
Merged

nprudhomme merged 2 commits into
mainfrom
chore/actions-node24

Conversation

@nprudhomme

Copy link
Copy Markdown
Member

Description

Closes #24. Every workflow run warned that the actions target Node.js 20 and were being forced onto Node 24. That fallback is temporary, so this moves both the action runtimes and the Node we build with.

Two commits on purpose, so a build regression is easy to bisect:

1. ci: bump actions off the deprecated Node.js 20 runtime — mechanical, no workflow logic changes, no effect on what the app is built with.

Action Before After
actions/checkout v4 v7
actions/setup-node v4 v7
actions/upload-artifact v4 v7
actions/download-artifact v4 v8
actions/upload-pages-artifact v3 v5
actions/deploy-pages v4 v5
softprops/action-gh-release v2 v3

Versions were read from each action's latest release rather than assumed. dtolnay/rust-toolchain@stable and Swatinem/rust-cache@v2 were not flagged and are already current.

2. ci: build on Node.js 24 — the 7 setup-node steps pinned node-version: 20, which is end-of-life. This is the part with real risk, since it affects npm ci, the Vite build and the test run.

Verification

Tests (317), type check and the Vite build already pass on Node v24.16.0 locally. CI covers what local cannot: the Windows build and the macOS sign/notarize path, both of which exercise softprops/action-gh-release and the artifact up/download pair only on a tag — see the note below.

Note on coverage

ci.yml does not exercise download-artifact or action-gh-release; those run only in release.yml, on a tag push. So a green CI here does not fully prove the release path. The next tagged release is the real test — worth watching rather than assuming.

Type of Change

  • Bug fix
  • New feature
  • Refactoring
  • Documentation

Checklist

  • I have tested my changes locally
  • I have updated the documentation if needed
  • My code follows the existing code style

https://claude.ai/code/session_01NcJuB2iR4WEfuQVLpYqWi4

Every run warned that these actions target Node.js 20 and were being
forced onto Node 24. That fallback is temporary, so move to the majors
that declare node24 natively.

Mechanical: no workflow logic changes, and nothing here affects what the
app is built with — the `node-version` bump is a separate commit so a
build regression is easy to bisect.

Refs #24

Claude-Session: https://claude.ai/code/session_01NcJuB2iR4WEfuQVLpYqWi4
Node 20 is end-of-life, so the version the app is actually built with
follows the runtime bump. This is the part that carries real risk — it
affects `npm ci`, the Vite build and the test run — hence its own commit.

Tests, type check and the Vite build already run on Node 24 locally; CI
covers the rest, in particular the Windows build and the macOS
sign/notarize path.

Closes #24

Claude-Session: https://claude.ai/code/session_01NcJuB2iR4WEfuQVLpYqWi4
@nprudhomme
nprudhomme merged commit 59f2a21 into main Aug 13, 2026
4 checks passed
@nprudhomme
nprudhomme deleted the chore/actions-node24 branch August 13, 2026 19:48
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.

CI: migrate GitHub Actions off the deprecated Node.js 20 runtime

1 participant