Skip to content

v0.4.0 — BREAKING: Node.js 22 required

Choose a tag to compare

@alexanderbering alexanderbering released this 07 Aug 13:27
· 40 commits to main since this release
01c46b4

Compatibility-only release. No runtime code changedpackages/*/src is byte-identical to 0.3.5. This release exists to publish a narrower, and finally honest, platform requirement.

⚠️ BREAKING — Node.js 22 or newer is now required

engines.node moves from >=18 to >=22 in all four published packages.

The previous >=18 was never accurate. @zensation/adapter-sqlite@0.1.0 depended on better-sqlite3@^12, which itself declares 20.x || 22.x || 23.x || 24.x || 25.x || 26.x — so the effective floor was already 20, and a Node 18 install would fail on the transitive dependency while our own metadata claimed support. The real change for users is therefore 20 → 22, not 18 → 22. Node 18 and 20 have both reached end of life.

Under semver, a breaking change in the 0.y.z range is expressed by the minor, and this is deliberate: a ^0.3.4 or ^0.1.0 range does not match the new versions, so existing installations on Node 20 are never upgraded into a broken state automatically. Opting in is an explicit act.

Package versions — they move independently

Package from to
@zensation/algorithms 0.3.4 0.4.0
@zensation/core 0.2.2 0.3.0
@zensation/adapter-sqlite 0.1.0 0.2.0
@zensation/adapter-postgres 0.1.0 0.2.0

Migration

Upgrade to Node 22 LTS or newer, then bump the ranges — @zensation/algorithms to ^0.4.0, @zensation/core to ^0.3.0, either adapter to ^0.2.0. Nothing else has to change: no import paths, no APIs, no configuration.

Staying on 0.3.x / 0.1.x remains valid on Node 20; those versions are unaffected by this release and are not being removed.

On Node 20, npm does not fail with an error — it silently resolves to algorithms@0.3.4 / core@0.2.2. If the new version does not appear after an install, check your Node version first.

Also changed

  • @zensation/adapter-sqlite: better-sqlite3 12 → 13. Version 13 is built on N-API, so its prebuilt binaries are ABI-independent and install cleanly across current and future Node releases. The version 12 line required a matching prebuild per Node ABI and was the reason the floor could not be stated honestly before. better-sqlite3@13 itself requires Node >=22, which is what forces the baseline above. No adapter API changed.
  • Peer ranges widened. Both adapters declared peerDependencies: { "@zensation/core": "^0.2.0" }, which the move of core to 0.3.0 would have broken. The range is now ^0.2.0 || ^0.3.0core's public API is unchanged between 0.2.2 and 0.3.0, so pinning either line is legitimate.

Full notes: CHANGELOG.md