Skip to content

chore: declare the Node 24 LTS baseline in the repository - #183

Merged
mrsibe merged 1 commit into
mainfrom
chore/node-24-baseline
Sep 30, 2026
Merged

mrsibe merged 1 commit into
mainfrom
chore/node-24-baseline

Conversation

@mrsibe

@mrsibe mrsibe commented Sep 30, 2026

Copy link
Copy Markdown
Owner

What

Make the already-true Node 24 requirement explicit and machine-readable:

  • package.json → "engines": { "node": ">=24 <25" } (npm warns on a mismatch)
  • .node-version → 24 (nodenv / asdf / fnm / mise)
  • CONTRIBUTING.md points at both and says not to develop against Node 26 Current

Why

verify.yml and release.yml already pin node-version: '24', and CONTRIBUTING.md already says "Node.js 24", but nothing in the repository advertises or enforces it. A contributor on Node 22 or Node 26 Current gets no signal until something fails. Node 24 is the Active LTS line, and it is also the Node that Electron 44 embeds, so the development runtime and the packaged runtime agree once that lands.

Deliberately not included

Bumping the root @types/node from ^22.19.7 to ^24. That belongs with the Electron 39 → 44 upgrade, because Electron is what determines the main process's Node runtime. Bumping the types first would let main-process code typecheck against Node 24 APIs while Electron 39 still runs Node 22 — a latent footgun for zero present benefit. I verified the bump is otherwise clean (@types/node@24.19.0, typecheck green) so it can be picked up in the Electron PR or right after it.

Verified

  • npm run typecheck — clean
  • npm test — 469/469 pass
  • npm run build — OK
  • npx prettier --check package.json CONTRIBUTING.md — clean

No dependency changed, so no packaged smoke was needed; the lockfile diff is only the root package's new engines field.

Independence

No overlap with the sqlite-vec or Electron PRs: it touches no shared line of package.json and the lockfile diff is a single root-package block.

CI already runs Node 24 (`.github/workflows/verify.yml`, `release.yml`) and
CONTRIBUTING already tells contributors to use Node 24, but nothing in the
repository enforces or advertises it, so a contributor on Node 26 Current or
Node 22 has no signal.

- `engines.node: ">=24 <25"` so npm warns on a mismatch
- `.node-version` = `24` for nodenv / asdf / fnm / mise
- CONTRIBUTING points at both, and says not to develop against Current

Node 24 is the Active LTS line and is also what Electron 44 embeds, so the
development runtime and the packaged runtime agree.

Not included on purpose: bumping the root `@types/node` from 22 to 24. That
belongs with the Electron 39 -> 44 upgrade (which moves the main process from
Node 22 to Node 24); doing it here would let main-process code typecheck against
Node 24 APIs while Electron 39 still runs Node 22.

Verified: `npm run typecheck` clean, `npm test` 469/469 pass, `npm run build` OK.
@github-actions github-actions Bot added the skip-changelog Exclude from generated release notes label Sep 30, 2026
@mrsibe
mrsibe merged commit 3fbbfcb into main Sep 30, 2026
4 checks passed
@mrsibe
mrsibe deleted the chore/node-24-baseline branch September 30, 2026 05:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Exclude from generated release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant