fix(packaging): restore Snap desktop runtime (#1406)

* fix(packaging): restore Snap desktop runtime

* docs(packaging): publish Snap launch repair note

* fix(packaging): declare Node 22.12 floor

* docs(architecture): update SQLite pin rationale

* fix(tooling): align Node engine floor

* fix(tooling): constrain supported Node releases

* docs(architecture): correct node-abi consumer
This commit is contained in:
4gray authored and GitHub committed 2026-08-11 02:08:30 +02:00
1 parent 2a7d7c315e
commit 728df1a68c
11 files changed
+404 -660

No files matched your search

+18 -11
View File
@@ -305,18 +305,25 @@ Window decorations on Linux (shadows, corners):
Toolchain notes for the Electron 41 upgrade:
1. `better-sqlite3` is pinned to exactly `12.9.0` — the last release that
ships prebuilt binaries for BOTH Node 20 (ABI 115, used by Jest) and
Electron 41 (ABI 145, used at runtime). `12.10.0` dropped the Node 20
prebuilds, which forces a from-source build that fails on machines
without a C++ toolchain.
1. `better-sqlite3` remains pinned to exactly `12.9.0` so native dependency
updates happen deliberately with database-worker, packaging, and Electron
E2E validation. The former Node 20 prebuild constraint no longer applies
now that the supported development floor is Node 22.13; revisit this pin
in a dedicated native-dependency update.
2. The pnpm override `node-abi@3.85.0 -> 3.92.0` is required so
`@electron/rebuild` (via `electron-builder install-app-deps`) can map
Electron 41 to its ABI.
3. Local development needs **Node >= 22.12**, declared in `engines`.
`electron-builder` 26.15.3 pulls `@electron/rebuild` 4, which sets that
floor, and the root `postinstall` runs `install-app-deps` on every
`pnpm install`. CI already runs Node 22.
`better-sqlite3`'s `prebuild-install` can map Electron 41 to ABI 145 when
`electron-builder install-app-deps` rebuilds native modules. The 3.85
registry stops at Electron 40, while 3.92 includes Electron 41;
`@electron/rebuild` itself now resolves `node-abi` 4.x.
3. Local development supports **Node 22.13–22.x or Node >= 24**, declared in
`engines` as `^22.13.0 || >=24.0.0`.
The direct `@faker-js/faker` dependency and current lint tooling require
that floor. `electron-builder` 26.15.7 also pulls `@electron/rebuild` 4,
which requires Node 22.12 or newer, and the root `postinstall` runs
`install-app-deps` on every `pnpm install`. The 26.15.7 minimum also
carries the v26 backport that fully extracts the Snap template's `.tar.7z`
payload; 26.15.0–26.15.6 can
produce a Snap that is missing `desktop-init.sh`. CI already runs Node 22.
Known caveats: