This repository was archived by the owner on Aug 31, 2026. It is now read-only.
chore(ci): standardise every workflow on Node 24 via .nvmrc - #368
Closed
georgeglarson wants to merge 1 commit into
Closed
chore(ci): standardise every workflow on Node 24 via .nvmrc#368georgeglarson wants to merge 1 commit into
georgeglarson wants to merge 1 commit into
Conversation
Every setup-node step hardcoded its own Node literal across six workflow files, so each bump meant six synchronised edits and the CI job matrix ran twice, once on 22.12 and once on 24.x. All of them now read a single .nvmrc containing 24, and the test job's two-entry matrix is removed rather than reduced to one element. The next bump is one file. The suite already passes on Node 24.20.0: 18 suites, 309 tests. The 22.12 floor was also fiction in practice, since 63 packages in package-lock.json declare engines.node above it (the eslint set wants ^20.19.0 || ^22.13.0 || >=24, @hey-api/* wants >=22.18.0). npm-publish.yml keeps its explicit npm upgrade. The bundled npm is not reliably new enough for trusted publishing: Node 24.0.0 shipped npm 11.3.0, under the 11.5.1 floor, and .nvmrc floats across the 24.x line. Its comment said "Node 22 bundles npm 10.x" and is updated to say why the step still earns its place.
georgeglarson
marked this pull request as ready for review
August 29, 2026 16:46
georgeglarson
added a commit
to georgeglarson/typescript-client
that referenced
this pull request
Aug 29, 2026
The package declares no engines field, so the implicit contract is "runs on whatever Node you have". A consumer on 20 or 22 should learn otherwise at install rather than at connect(). Node 20 reached EOL on 2026-04-30. Node 22 runs to 2027-04-30, so this drops a line that is still supported, which is what makes it breaking rather than housekeeping. Pairs with OpenHands#368, which moves CI onto 24. That one is a plain chore and can land without this. BREAKING CHANGE: raises the minimum supported Node to 24
Contributor
|
🚦 CI is currently failing on this PR's latest commit. Please fix the failing checks before OpenHands reviews it - this is re-checked automatically once you push a new commit. (A maintainer can also request This is an automated check - no AI was used to generate this comment. |
This was referenced Aug 29, 2026
Closed
georgeglarson
added a commit
to georgeglarson/typescript-client
that referenced
this pull request
Aug 29, 2026
The package declares no engines field, so the implicit contract is "runs on whatever Node you have". With CI on 24 that is wider than anything gets tested, and a consumer on an untested runtime is better off seeing it at install than at connect(). Not marked breaking: the maintainer's call is that dropping 22 is not a breaking change for this package, since 24 is what gets built. Under release-please a chore carries no version event, so the field ships with whatever release comes next. Pairs with OpenHands#368, which moves CI onto 24. That one can land without this.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
HUMAN: Ran the full check set against this branch on Node 24.20 in a clean container: lint reports 0 errors, build succeeds, Prettier is clean, and all 309 tests pass across 18 suites. The workflow changes themselves are only exercisable by this PR's own CI run.
Why
From #proj-agent-canvas, 2026-08-29:
Six workflow files each hardcoded their own Node literal, eleven pins in total, so every bump meant eleven synchronised edits. The
testjob ran the whole suite twice, once on 22.12 and once on 24.x.The 22.12 floor was already fiction. 63 packages in
package-lock.jsondeclareengines.nodeabove it: the eslint set wants^20.19.0 || ^22.13.0 || >=24,@hey-api/*wants>=22.18.0. Nothing fails today only because npm warns rather than errors withoutengine-strict.Summary
.nvmrccontaining24, so the next bump is one file instead of eleven.testjob's[22.12, 24.x]matrix is removed rather than reduced to one element, so CI runs once.CONTRIBUTING.mdmoves its stated floor to Node 24 to match.No runtime code changes and no
package.jsonchange, so nothing here affects what consumers install.Issue Number
No issue filed. Requested in Slack, quoted above.
How to Test
Green on Node 24.20.0: 18 suites, 309 tests, 0 lint errors.
The rest is CI config, so this PR's own checks are the real test. The
testjob should appear once rather than twice, and every job should resolve its Node from.nvmrc.Video/Screenshots
Type
Notes
npm-publish.ymlkeeps its explicitnpm install -g npm@latest. Node 24.0.0 shipped npm 11.3.0, under the 11.5.1 that trusted publishing needs, and.nvmrcfloats across the 24.x line, so that step is still load-bearing. Its comment claimed "Node 22 bundles npm 10.x" and now gives the real reason.Two follow-ups, kept out deliberately so this one stays a pure chore:
engines: { "node": ">=24" }floor. That narrows the published support range, which is semver-major, and this repo squash-merges, so bundling it here would make the whole PR breaking and force a 2.0 on merge. It belongs in its own PR where that call can be made on its own merits. Branch is ready if you want it:georgeglarson:feat-node-24-engines.wsdependency. With the floor at 24 that fallback branch is dead code, and deleting it subsumes fix(events): use global WebSocket in Node ESM #362's edit. Happy to open that next.