Add desktop (Electron) packaging and release distribution (#1147)

* Add desktop packaging workflow

* Add desktop package homepage

* Fix desktop default credential prompt

* Suppress default credential prompt on desktop

* Publish desktop artifacts on release; reduce CI to PR smoke test

Add desktop-release.yml triggered on release publish (mirroring
docker-publish.yml) to build all platforms and upload .dmg/.exe/
.AppImage/.deb to the GitHub Release.

Trim build.yml desktop job to a PR-only Linux x64 smoke test, since
release artifacts are now produced by desktop-release.yml. This drops
per-push and macOS/Windows packaging from regular CI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fix desktop Hermes data home on Windows

---------

Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
sir1st
2026-05-30 14:20:04 +08:00
committed by GitHub
parent cb410e5007
commit cbae8e8c3f
24 changed files with 6016 additions and 1 deletions
+71
View File
@@ -0,0 +1,71 @@
appId: com.hermesagent.desktop
productName: Hermes Desktop
copyright: Copyright © 2026
directories:
output: release
buildResources: build
# Don't auto-prune our root node_modules; we curate `files` and `extraResources` ourselves.
buildDependenciesFromSource: false
nodeGypRebuild: false
npmRebuild: false
files:
- "dist/**/*"
- "package.json"
- "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme,LICENSE,LICENSE.txt,license,*.d.ts}"
- "!**/node_modules/.bin"
- "!**/{.DS_Store,.git,.gitignore,.eslintrc*,.prettierrc*,*.map,tsconfig.json}"
# Web UI source (built dist) and bundled Python live outside the asar.
# This package lives at packages/desktop, so ../.. is the hermes-web-ui repo root.
extraResources:
- from: "../.."
to: "webui"
filter:
- "package.json"
- "dist/**"
- "node_modules/**"
# Drop other-platform node-pty prebuilds (saves ~45MB)
- "!node_modules/node-pty/prebuilds/!(${platform}-${arch})/**"
- "!node_modules/node-pty/build/**"
- "!packages/desktop/**"
- "!**/{.git,.github,docs,tests,playwright.config.ts,*.md,README*,scripts,*.map}"
- from: "resources/python/${os}-${arch}"
to: "python"
filter:
- "**/*"
asarUnpack:
- "**/*.node"
mac:
target:
- target: dmg
arch: [arm64, x64]
category: public.app-category.developer-tools
hardenedRuntime: false
gatekeeperAssess: false
identity: null
artifactName: "${productName}-${version}-${arch}.${ext}"
win:
target:
- target: nsis
arch: [x64]
artifactName: "${productName}-${version}-${arch}.${ext}"
linux:
target:
- target: AppImage
arch: [x64, arm64]
- target: deb
arch: [x64] # fpm has no arm64 binary; deb only on x64
category: Development
artifactName: "${productName}-${version}-${arch}.${ext}"
nsis:
oneClick: false
allowToChangeInstallationDirectory: true
perMachine: false