Skip to content
This repository was archived by the owner on Aug 31, 2026. It is now read-only.

chore: require Node 24 - #369

Closed
georgeglarson wants to merge 1 commit into
OpenHands:mainfrom
georgeglarson:feat-node-24-engines
Closed

chore: require Node 24#369
georgeglarson wants to merge 1 commit into
OpenHands:mainfrom
georgeglarson:feat-node-24-engines

Conversation

@georgeglarson

@georgeglarson georgeglarson commented Aug 29, 2026

Copy link
Copy Markdown
Contributor
  • A human has tested these changes.

HUMAN:

Tests are human confirmed.


Why

Follows the Node 24 conversation in #proj-agent-canvas on 2026-08-29:

So I'd like to kill Node 22, and make all stuff run well on Node 24

package.json declares no engines field, so the package promises to run anywhere. It still runs on 22.12, and the suite passes there in #370's CI. So this is not fixing a false claim, it is narrowing the promise to what actually gets tested once #368 lands.

Node 20 reached EOL on 2026-04-30, Node 22 runs to 2027-04-30. Kept separate from #368 so the declaration is a decision on its own rather than a line buried in a CI chore.

Summary

  • Adds engines: { "node": ">=24" } to package.json. Three lines, no other change.

Issue Number

No issue filed. Requested in Slack, quoted above.

How to Test

npm ci && npm run lint && npm run build && npm run format:check && npm test

Green on Node 24.20.0: 18 suites, 309 tests, 0 lint errors.

Consumer-side behaviour is the actual subject, and it is advisory rather than enforced. Packed the tarball and installed it on Node 22.23.2: npm warns EBADENGINE and installs anyway, refusing only under engine-strict. pnpm and yarn (berry) both install too, yarn with a warning.

So this narrows the declared contract and gives people a signal. It does not break anyone's build the day it merges.

Video/Screenshots

image

Type

  • Bug fix
  • Feature
  • Refactor
  • Breaking change
  • Docs / chore

Notes

Not marked breaking: the maintainer's read is that dropping 22 isn't breaking here, since 24 is what gets built. The commit is a chore, so release-please cuts no version event and the field ships with whatever release comes next. Close this if you'd rather set the floor differently. Nothing else depends on it.

#368 moves CI to Node 24 and is a plain chore. It stands alone and can land whether or not this one does.

@github-actions github-actions Bot added the type: feat A new feature label Aug 29, 2026
@georgeglarson
georgeglarson marked this pull request as ready for review August 29, 2026 17:15
@all-hands-bot

all-hands-bot commented Aug 29, 2026

Copy link
Copy Markdown
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 @all-hands-bot as a reviewer to have it reviewed regardless of CI status.)

This is an automated check - no AI was used to generate this comment.

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.
@georgeglarson georgeglarson changed the title feat!: require Node 24 chore: require Node 24 Aug 29, 2026
@github-actions github-actions Bot added type: chore Maintenance / chores and removed type: feat A new feature labels Aug 29, 2026
@neubig neubig closed this Aug 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

type: chore Maintenance / chores

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants