Repository navigation
chore: require Node.js 22 and test Node.js 22 and 24 on Ubuntu, Windows and macOS - #171
Conversation
…ws and macOS Node.js 20 reached end of life on 2026-04-30, yet the README, engines, doctor and CI still treated it as the baseline, and macOS was advertised for the installers without any CI coverage. - Raise the minimum to Node.js 22: package engines, doctor (one constant), the Web capability contract, README, the installing guide and the version-support guide. tests/runtime-baseline.test.mjs fails when any of these, the root manifest or the CI matrix disagree, so the baseline cannot drift again. - Verify on Node.js 22 and 24 across ubuntu-latest, windows-latest and macos-latest, with a 30 minute job limit. - Move every workflow action to a release that runs on Node.js 24 (checkout 7.0.1, setup-node 7.0.0, upload-artifact 7.0.1), pinned by commit as the browser workflows already were. The v4 actions run on Node.js 20 and are forced onto Node.js 24 by the runner. - Pin the two Chromium workflows to ubuntu-24.04: ubuntu-latest moves to Ubuntu 26.04 on 2026-10-19 and playwright install --with-deps installs system packages. - Add a private root package.json and .npmrc so contributors run npm install and npm run verify. Without a root manifest npm uses the nearest parent directory that has a package.json or node_modules as the project, so a stray one above the clone captures the install. Verified locally on Node.js 22.19.0 (Windows): verify-all passes with 92 test files. The macOS jobs and the matrix itself run only on GitHub Actions. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 102b3efed6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| test("the Node.js baseline is declared once per surface and agrees everywhere", () => { | ||
| // Node.js 20 reached end of life on 2026-04-30. | ||
| assert.ok(Number.isInteger(minimumMajor) && minimumMajor >= 22, `engines.node must be >=N with N of at least 22: ${skillPackage.engines.node}`); | ||
| const workspace = readJson("package.json"); |
There was a problem hiding this comment.
Include the root manifest in release archives
release-files.json now ships this test, but the rootFiles allow-list in scripts/build-release.mjs still excludes the newly required root package.json and .npmrc. In every generated source release, node scripts/verify-all.mjs therefore reaches this line and fails with ENOENT for package.json; the documented npm run verify cannot start either. Add the workspace files to the release allow-list and inventory, or keep the shipped verifier independent of files excluded from the archive.
Useful? React with 👍 / 👎.
Problem
engines,doctorand CI still treated it as the baseline. Node.js 24 was never exercised.v4actions run on Node.js 20 and are forced onto Node.js 24 by the runner.ubuntu-latestmoves to Ubuntu 26.04 on 2026-10-19, and the two Chromium workflows runplaywright install --with-deps, which installs system packages.package.json, npm uses the nearest parent directory that has apackage.jsonornode_modulesas the project, so a stray one above the clone capturesnpm install. This was reproduced locally while verifying this change (the install targeted a project in a parent directory; nothing was modified).Change
engines,doctor(one constant), the Web capability contract, the README files,docs/installing.mdanddocs/version-support.md.tests/runtime-baseline.test.mjsfails when any of these, the root manifest or the CI matrix disagree, so the baseline cannot drift again.Verifyruns Node.js 22 and 24 onubuntu-latest,windows-latestandmacos-latest(six jobs, 30 minute limit).actions/checkout7.0.1,actions/setup-node7.0.0,actions/upload-artifact7.0.1) and pin them by full commit SHA, as the browser workflows already were. The three SHAs were resolved from the release tags on GitHub before opening this PR.report-accessibility-e2e,web-evidence-e2e) toubuntu-24.04.package.json(npm run sync,npm run verify, test dependencyexceljs4.4.0) and.npmrc(package-lock=false,ignore-scripts=true). The CI install step becomesnpm install. Neither file is a release path.permissionsof every workflow are unchanged (contents: read, pluscontents: writefor the existing branch cleanup).Verification
node scripts/verify-all.mjson Windows / Node.js 22.19.0: PASS, 92 test filesnode scripts/verify-all.mjson Windows / Node.js 24.21.0: PASS, 92 test filesnode scripts/sync-distributions.mjs --writewas followed by--checktests/runtime-baseline.test.mjsderives the minimum major from the skill'sengines.nodeand checks the root manifest, the Web capability contract,doctor --format json, the documentation statements, theVerifymatrix and every workflownode-versionCompatibility
doctorreports an unsupported runtime andenginesis>=22.Security and privacy
Merge note
Sibling PRs from the same batch also add one bullet at the same place in
CHANGELOG.md. After one of them merges, the others need a trivial conflict resolution that keeps both bullets.Issue
Part of the follow-ups listed after PR #169. Closes no issue.
🤖 Generated with Claude Code