Skip to content

merge latest to main #6068

Closed
dantovska wants to merge 5 commits into
mainfrom
latest
Closed

merge latest to main #6068
dantovska wants to merge 5 commits into
mainfrom
latest

Conversation

@dantovska

@dantovska dantovska commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

What

Testing


Note

Medium Risk
Electron 41 + snap/LXD CI changes affect desktop packaging; Vector Set and prodMode at 10% rollout change user-visible behavior for a subset of installs.

Overview
This merge brings Linux snap builds onto core24 via electron-builder’s snapcraft block (useLXD, explicit plugs, XDG_SESSION_TYPE=x11) and adds a GitHub Actions step on x64 to install snapcraft + LXD, fix LXD socket permissions, and set iptables FORWARD ACCEPT so isolated snap builds can reach the network.

Packaging/runtime deps: bumps Electron to ^41.7.2, pins electron-builder to 26.14.0 (with matching lockfile churn), upgrades better-sqlite3 to ^12.10.1, and drops the yauzl yarn resolution.

Vector Set graduation: renames the feature from dev-vectorSet / devVectorSet to vectorSet across API, UI selectors, config, and Playwright tests; remote config enables vectorSet and prodMode at 10% (features-config 3.93).

Reviewed by Cursor Bugbot for commit 98016b6. Bugbot is set up for automated code reviews on this repo. Configure here.

dantovska and others added 5 commits June 9, 2026 16:10
* feat(RI-7390): promote dev-vectorSet feature flag to vectorSet

Rename the flag end-to-end (backend config, KnownFeatures enum, registry
and strategy registration; frontend enum, slice default, selector and all
consumers; E2E specs). Bump features-config.json to version 3.92. Flag
stays default-off, so E2E specs that exercise Vector Set UI keep their
explicit { vectorSet: true } override.

* feat(RI-7390): enable vectorSet and prodMode for 10% rollout

Flip both flags to flag: true with perc: [[0, 10]] in features-config.json
and bump version to 3.93.
electron-builder 26.15.0 replaced the Go app-builder-bin snap builder with
a pure-TS rewrite (#9829) that ships a broken snap: the launcher references
$SNAP/desktop-init.sh that is never staged, and even past that the bundled
NSS/NSPR libs are unreachable (libnspr4.so: cannot open shared object file)
because SNAP_DESKTOP_RUNTIME / LD_LIBRARY_PATH are not wired up. 26.15.1-.3
all carry the regression.

The snap Wayland fix that motivated moving off 26.0.12 (#9337/#9320) shipped
in 26.2.0 — well before the 26.15.0 rewrite. Pinning to 26.14.0 keeps that
fix (DISABLE_WAYLAND / allowNativeWayland handling) and the proven Go-based
snap builder, which correctly sets SNAP_DESKTOP_RUNTIME and LD_LIBRARY_PATH.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Linux snap failed to launch on modern systems: native modules built on the
ubuntu-24.04 CI runner (glibc 2.39) couldn't load on the core20 base (glibc 2.31)
-> "libm.so.6: version GLIBC_2.38 not found" loading better_sqlite3.node. The old
gnome-3-28-1804 platform also lacked a working GPU driver for current hardware.

Migrate the snap to base core24 via electron-builder's `snapcraft.core24`:
- base core24 -> glibc 2.39, matching the build toolchain (fixes the fatal load)
- GNOME extension (default) -> gnome-46-2404 + mesa-2404/gpu-2404 (modern GPU)
- XDG_SESSION_TYPE=x11 -> forces XWayland, restoring the old allowNativeWayland:false
  behavior (Electron 40 removed ELECTRON_OZONE_PLATFORM_HINT and snapcraft core24
  rejects '=' in an app command, so this env var is the supported mechanism)
- plain browser-support plug -> auto-connects on install (snapd only blocks
  auto-connect for allow-sandbox:true); electron-builder adds --no-sandbox itself
- network / home / password-manager-service plugs preserved

CI: core24 builds via the snapcraft CLI in an LXD container, so the x64 Linux job
installs snapcraft + lxd, grants the LXD socket, and allows iptables FORWARD (the
runner's Docker sets it to DROP, blocking the build container's network). Gated to
runs where the snap target is actually built.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Why 41 and not 42
Electron 42 ships ABI 146. better-sqlite3@12.10.1 fixed the code paths for Electron 42, but the WiseLibs release does not yet publish prebuilt .node assets for ABI 146 — only ABI 145 (Electron 41) and below. Targeting 42 today would silently force every dev install and CI job into a local C++ build (node-gyp), which is exactly what the prebuilt pipeline is here to avoid.

Electron 41 is the highest version with verified prebuilt better-sqlite3 coverage for all our targets (macOS x64/arm64, Linux x64/arm64 glibc + musl, Windows x64). Once WiseLibs publishes the ABI 146 assets, the follow-up to 42 is a one-line bump.
@dantovska dantovska self-assigned this Jun 15, 2026
@dantovska dantovska requested a review from a team as a code owner June 15, 2026 17:18
@jit-ci

jit-ci Bot commented Jun 15, 2026

Copy link
Copy Markdown

🛡️ Jit Security Scan Results

CRITICAL HIGH MEDIUM

✅ No security findings were detected in this PR


Security scan by Jit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants