Repository navigation
fix(gui): set linux.executableName so electron-builder 26 can build the AppImage - #182
Merged
Merged
Conversation
…he AppImage
electron-builder 26.8+ derives the Linux binary name from the package name
("@flavian/gui" becomes "@flaviangui") and its AppImage step then refuses the
"@", so every Linux package build since v2.0.0 fails at "Package installer".
Name the binary "flavian" under linux: only, so macOS and Windows keep
productName (Flavian.app, Flavian.exe).
A packaging test derives the Linux executable name the way electron-builder
does and checks it against the AppImage name whitelist, and pins productName
with no top-level executableName. js-yaml joins the GUI dev dependencies to
read electron-builder.yml.
Verified in a linux/amd64 Debian container on Node 22 with electron-builder
26.15.3 and Electron 42.11.16: the unpatched config fails exactly as reported;
with the patch, electron-builder exits 0 and writes dist/Flavian-2.1.0.AppImage
and dist/linux-unpacked/flavian, and the packaged binary launches under Xvfb
and renders the setup view.
Closes #168
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This was referenced Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
On Linux, electron-builder 26.8+ names the GUI binary after the package name, sanitized and lowercased, so
@flavian/guibecomes@flaviangui. Its AppImage step then refuses the@(validateCriticalPathStringinappImageUtil.ts), so every Linux package build since v2.0.0 (electron-builder moved from 25.1.8 to 26.15.3 in #163) fails at "Package installer". macOS and Windows are unaffected: they fall back toproductName.This sets
linux.executableName: flavianinpackages/gui/electron-builder.yml, underlinux:only, soFlavian.appandFlavian.exekeep their names (a top-level key would rename them too, which is what the Aurelius fix did).A new packaging test,
packages/gui/tests/packaging/electron-builder-config.test.mts, derives the Linux executable name the way electron-builder'sLinuxPackagerdoes and checks it against the AppImage name whitelist, and pinsproductNamewith no top-levelexecutableName. It fails onmainwith"@flaviangui"and passes with the fix.js-yamljoins the GUI dev dependencies to read the config.Related Issue
Closes #168
Type of Change
Verification
Linux: a
node:22-bookwormlinux/amd64 container on a clean copy ofmain, running thegui-release.ymlcommands (electron-builder 26.15.3, Electron 42.11.16).pnpm --filter @flavian/gui exec electron-builder --publish neverexecutableName contains characters that cannot be safely used in file paths: @flavianguipackages/gui/dist/linux-unpacked/@flaviangui, no AppImageFlavian-2.1.0.AppImage,linux-unpacked/flavianlinux-unpacked/flavianboots and renders the setup view (Playwright, the same assertions astests/smoke/smoke.mjs); the AppImage starts with--appimage-extract-and-runand stays up, with only D-Bus warnings from the bus-less containermacOS (this host, x64):
electron-builder --dir --macwith the patched config still producesdist/mac/Flavian.app. Windows follows the same rule (productFilenamefalls back toproductNamewhen no top-levelexecutableNameis set) and is pinned by the test.Checklist
pnpm --filter @flavian/gui lint,typecheckandtest(55 tests, 2 new)pnpm test:pipeline(133),pnpm test:claude(88),node scripts/claude-code-conformance.js(0 errors),bash scripts/check-doc-counts.shpnpm lint:commitselectron-builder.ymlexplains the settinggui-release.ymlhas still never run (release-please publishes withGITHUB_TOKEN, which starts no workflows). Fixing that trigger is out of scope here, as the issue says.Local macOS runs of
pnpm test:init(two Canva export tests) and the bats suites (eightconvert-html-to-blockstests) fail inscripts/canva-fse, which this diff does not touch; the same suites are green in CI onmain.🤖 Generated with Claude Code