chore(desktop): pin AppImage static runtime toolset - #23019
Conversation
The Linux AppImage has a runtime dependency on libfuse2 because electron-builder 26.x defaults to the legacy FUSE 2 AppImage runtime. Modern distros (Ubuntu 24.10+, Fedora 40+) ship without libfuse2, breaking the AppImage for affected users. electron-builder v26.8.0 introduced a `toolsets.appimage` opt-in that switches to a statically-linked runtime requiring no libfuse2 on the host. Pin to 1.0.2, the version advertised at launch. electron-builder v27 will make the static runtime the default at which point this pin can be removed. CODEOWNERS: apps/desktop/electron-builder.json was previously uncovered. Adjacent Platform-owned desktop files (scripts, resources) already point to @bitwarden/team-platform-dev, so this rule closes the gap consistently. Refs: PM-42189
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE This is a two-line build configuration change: it opts the Linux AppImage into electron-builder's static type-2 runtime via Code Review Details
|
| "toolsets": { | ||
| "appimage": "1.0.2" | ||
| }, |
There was a problem hiding this comment.
❓ QUESTION: AppImage CI validation installs libfuse2, so a green build won't confirm this fix works.
Details
Both jobs that actually launch the produced AppImage install libfuse2 before running it:
.github/workflows/build-desktop.yml:2286(validate-linux-x64-appimage).github/workflows/build-desktop.yml:2329(validate-linux-wayland)
Since the host already has libfuse2, the AppImage launches whether or not the static runtime was picked up. That means CI passes identically before and after this change, and it would keep passing if the toolsets block were ever dropped, renamed, or silently ignored by a future electron-builder version.
Was dropping libfuse2 from those two apt-get install lines considered? That would turn validate-linux-x64-appimage into a real regression guard for PM-42189 rather than a launch smoke test.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #23019 +/- ##
==========================================
+ Coverage 54.84% 55.57% +0.73%
==========================================
Files 4340 4412 +72
Lines 138275 140969 +2694
Branches 21903 22392 +489
==========================================
+ Hits 75834 78350 +2516
+ Misses 56933 56918 -15
- Partials 5508 5701 +193 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🎟️ Tracking
📔 Objective
The Linux AppImage has a runtime dependency on
libfuse2because electron-builder 26.x defaults to the legacy FUSE 2 AppImage runtime. Many distros no longer installlibfuse2by default, causing the AppImage to fail at launch for affected users unless they manually installlibfuse2.This opts into the static type-2 AppImage runtime, which is statically linked against musl libc and requires no
libfuse2on the host. Thetoolsets.appimagefield was introduced in electron-builder v26.8.0 (PR #9558).When we update to electron-builder v27, the static runtime may become the default, at which point this
toolsetsblock can be removed.