From 881c4b0f7f1e5a95f82c9dba0d669f4eca6edc83 Mon Sep 17 00:00:00 2001 From: Alvin Unreal Date: Thu, 14 May 2026 19:07:30 +0200 Subject: [PATCH] Fix AppImage sandbox launch --- .gitignore | 1 + .ignore | 1 + apps/desktop/electron-builder.yml | 4 ++++ apps/desktop/src/check-packaging-contract.ts | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index a0d1faf8..a25bd41f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ dist-electron apps/desktop/dist-electron *.tsbuildinfo .DS_Store +local/ diff --git a/.ignore b/.ignore index c5619e3f..ceb69739 100644 --- a/.ignore +++ b/.ignore @@ -1,3 +1,4 @@ !v1 !web !lfs +!local diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml index 42626fff..848dee12 100644 --- a/apps/desktop/electron-builder.yml +++ b/apps/desktop/electron-builder.yml @@ -1,5 +1,6 @@ appId: dev.openpets.app productName: OpenPets +executableName: openpets copyright: Copyright © 2026 OpenPets directories: @@ -20,6 +21,9 @@ asarUnpack: npmRebuild: false publish: null +toolsets: + appimage: 1.0.3 + mac: icon: assets/app-icon.icns category: public.app-category.utilities diff --git a/apps/desktop/src/check-packaging-contract.ts b/apps/desktop/src/check-packaging-contract.ts index 36ab17ee..49df1a32 100644 --- a/apps/desktop/src/check-packaging-contract.ts +++ b/apps/desktop/src/check-packaging-contract.ts @@ -35,9 +35,11 @@ assert.match(workspaceConfig, /supportedArchitectures:[\s\S]*?libc:[\s\S]*?- gli assert.match(packageJson.devDependencies?.["electron-builder"] ?? "", /^\^26\.(?:9|[1-9]\d)\./, "desktop AppImage packaging must use electron-builder 26.9+ for conditional Linux sandbox handling."); assert.match(builderConfig, /appId:\s*dev\.openpets\.app/); assert.match(builderConfig, /productName:\s*OpenPets/); +assert.match(builderConfig, /executableName:\s*openpets/, "desktop packages must use a safe executable name for the stricter AppImage toolset."); assert.match(builderConfig, /output:\s*dist-electron/); assert.match(builderConfig, /publish:\s*null/); assert.doesNotMatch(builderConfig, /no-sandbox/, "desktop packaging must not force --no-sandbox for every Linux AppImage launch."); +assert.match(builderConfig, /toolsets:\s*\n\s*appimage:\s*1\.0\.3/, "desktop AppImage packaging must use the AppImage 1.0.3 toolset so the launcher can conditionally fall back when Linux sandboxing is unavailable."); assert.match(builderConfig, /asar:\s*true/); assert.match(builderConfig, /asarUnpack:/); assert.match(builderConfig, /node_modules\/\*\*/);