v2.2.2 — better-sqlite3 ABI self-heal
What's fixed
A non-developer's dashboard crashed on startup with NODE_MODULE_VERSION: the
native SQLite module (better-sqlite3) had a prebuilt binary for a different
Node version than the one launching the server. The Claude Code CLI (bundled
Node 24) installed it; the server runs under the system Node. This release makes
that self-heal automatically.
- The launcher now rebuilds the SQLite module for your Node. Before starting
the server,/wisp-dashboardchecks whether better-sqlite3 loads under the
launching Node; on a mismatch it rebuilds the binding against that Node (a
prebuilt binary is fetched — no compiler needed for Node 20–25), then retries.
Both the Windows (PowerShell) and macOS/Linux (POSIX) launchers do this. - A direct
node dist/server.jsnow fails clearly, not cryptically: a
native-module preflight prints a plain-language message with the exact rebuild
command instead of a rawNODE_MODULE_VERSIONstack trace. - better-sqlite3 is pinned to 12.9.0 (covers Node 20–25 prebuilds) in both
consumers, so annpm-based install can't drift to a build that drops the
Node-20 prebuilt binary. pnpm doctornow checks the SQLite module loads under your Node.
Update an existing install (the plugin tracks main)
/plugin marketplace remove wisp-local
/plugin marketplace add Samuel0101010/wisp-orchestrator
/plugin install wisp@wisp-local
The install step builds for ~1–2 min. If you hit Permission denied (publickey), run once:
git config --global "url.https://github.com/.insteadOf" "git@github.com:"
Verification
All 8 local gates + e2e (54) green; both launcher scripts syntax/parse-checked;
a real node dist/server.js boot smoke test. A 4-agent adversarial review gated
the diff and caught that the original in-DB guard was dead code under ESM
(fixed by a first-import preflight).