v0.4.0 — BREAKING: Node.js 22 required
Compatibility-only release. No runtime code changed — packages/*/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-sqlite312 → 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@13itself 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 ofcoreto0.3.0would have broken. The range is now^0.2.0 || ^0.3.0—core's public API is unchanged between0.2.2and0.3.0, so pinning either line is legitimate.
Full notes: CHANGELOG.md