Files
paseo/packages/desktop/electron-builder.yml
Mohamed Boudra 772ff8d6f3 fix(desktop): preserve Linux sandboxing wherever the host allows it (#4447)
* fix(desktop): preserve Linux sandboxing wherever the host allows it

Chromium checks its Linux sandbox before main.js, while package installation probes run as root and miss AppArmor restrictions on desktop users. Choose the launch flags before exec and always install the SUID alternative for native packages. Test published artifacts as an ordinary user with namespaces both denied and allowed; never repair permissions in the smoke harness.

* fix(desktop): retain the Linux release build baseline

* fix(ci): allow canceled desktop smoke uploads to stop

* test(desktop): verify the installed RPM sandbox under AppArmor

* fix(ci): resolve packaged desktop dependencies before installation

* chore(desktop): keep QA evidence out of the repository
2026-09-11 09:05:26 +02:00

101 lines
2.8 KiB
YAML

npmRebuild: false
appId: sh.paseo.desktop
productName: Paseo
executableName: Paseo
protocols:
- name: Paseo agent link
schemes:
- paseo
afterPack: ./scripts/after-pack.js
afterSign: ./scripts/after-sign.js
directories:
output: release
files:
- dist/**/*
- "!**/*.map"
- "!node_modules/@getpaseo/*/src/**"
- "!node_modules/@getpaseo/**/*.test.*"
- "!node_modules/@getpaseo/**/*.spec.*"
- "!node_modules/@getpaseo/server/dist/server/web-ui/**"
# Workspace packages are symlinked, so anything a dev generates inside them
# lands in the asar. CI never has these; a local .debug run adds gigabytes.
- "!node_modules/@getpaseo/*/.debug/**"
- "!node_modules/@getpaseo/*/.tasks/**"
- "!node_modules/@getpaseo/*/conversations/**"
- "!node_modules/@getpaseo/*/test-results/**"
asarUnpack:
- dist/daemon/node-entrypoint-runner.js
- node_modules/@getpaseo/server/dist/server/terminal/shell-integration/**/*
extraResources:
- from: ../app/dist
to: app-dist
- from: assets/editor-targets
to: editor-target-icons
publish:
provider: github
owner: getpaseo
repo: paseo
mac:
artifactName: "Paseo-${version}-${arch}.${ext}"
minimumSystemVersion: "13.0.0"
category: public.app-category.developer-tools
icon: assets/icon.icns
hardenedRuntime: true
notarize: true
entitlements: build/entitlements.mac.plist
entitlementsInherit: build/entitlements.mac.inherit.plist
extraResources:
- from: bin/paseo
to: bin/paseo
- from: assets/icon.png
to: icon.png
target:
- dmg
- zip
linux:
category: Development
icon: assets
artifactName: "Paseo-${version}-${arch}.${ext}"
maintainer: "Mohamed Boudra <hello@moboudra.com>"
vendor: "Paseo"
extraResources:
- from: bin/paseo
to: bin/paseo
target:
- AppImage
- deb
- rpm
- tar.gz
deb:
afterInstall: scripts/linux-sandbox/after-install.tpl
rpm:
afterInstall: scripts/linux-sandbox/after-install.tpl
appImage:
# A nonempty argument list replaces builder's hardcoded --no-sandbox default.
executableArgs: ["--class=Paseo"]
# Keep the AppImage filename stable across versions (no ${version}) so
# electron-updater overwrites the file in place instead of renaming it to a new
# versioned path. A rename orphans the old binary, breaks desktop shortcuts, and
# dangles the ~/.local/bin/paseo CLI symlink, which points at $APPIMAGE. The
# version stays discoverable via the release tag and the in-app version.
artifactName: "Paseo-${arch}.${ext}"
win:
artifactName: "Paseo-Setup-${version}-${arch}.${ext}"
icon: assets/icon.ico
extraResources:
- from: bin/paseo.cmd
to: bin/paseo.cmd
target:
- target: nsis
arch:
- x64
- arm64
- target: zip
arch:
- x64
- arm64
nsis:
oneClick: false
perMachine: false
allowToChangeInstallationDirectory: true