Skip to content

Commit cdfec7f

Browse files
fix(desktop): green the tag desktop build on Linux/Windows and add app icon (#348)
The `Desktop testing build` workflow (tag 0.0.0-testing-*) failed on two of its three runners, and the unsigned macOS artifact has no real app icon. Linux (rpm): maker-rpm reported "cannot run on linux" because electron-installer-redhat is only a deeply-nested optional dependency and npm non-deterministically skipped it on the runner (debian installed, redhat did not). Promote both electron-installer-debian and electron-installer-redhat to top-level optionalDependencies so npm reliably installs them on linux/darwin and still skips them cleanly on win32. Also give the rpm maker an explicit License (rpmbuild rejects an empty License field) and a maintainer/homepage. Windows (squirrel): NuGet pack exits 1 when <authors> is empty. package.json had no author, so add author/license/homepage and set authors + setupIcon on the squirrel maker. App icon: generate icon.icns/.ico/.png from src/landing/public/og-image.png (1024x1024) and wire packagerConfig.icon, the deb/rpm/squirrel makers, and the runtime BrowserWindow icon (Linux/Windows; macOS uses the bundle .icns). Verified on macOS: npm run make builds the zip, the packaged app's icns matches the generated icon, typecheck + 160 vitest tests pass. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent d9dde92 commit cdfec7f

7 files changed

Lines changed: 101 additions & 76 deletions

File tree

frontend/assets/icon.icns

1.61 MB
Binary file not shown.

frontend/assets/icon.ico

79.9 KB
Binary file not shown.

frontend/assets/icon.png

238 KB
Loading

frontend/forge.config.ts

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ const config: ForgeConfig = {
88
name: "Agent Orchestrator",
99
executableName: "agent-orchestrator",
1010
appCategoryType: "public.app-category.developer-tools",
11-
extraResource: "daemon",
11+
// App icon. electron-packager appends the per-platform extension
12+
// (.icns on macOS, .ico on Windows); Linux menu icons come from the
13+
// deb/rpm makers below, and the runtime window icon from src/main.ts.
14+
icon: "assets/icon",
15+
extraResource: ["daemon", "assets/icon.png"],
1216
// macOS signing + notarization — set CSC_LINK/CSC_KEY_PASSWORD and
1317
// APPLE_ID/APPLE_APP_SPECIFIC_PASSWORD/APPLE_TEAM_ID in CI.
1418
// See frontend/docs/desktop-release.md.
@@ -23,10 +27,38 @@ const config: ForgeConfig = {
2327
},
2428
rebuildConfig: {},
2529
makers: [
26-
{ name: "@electron-forge/maker-squirrel", config: { name: "AgentOrchestrator" } },
30+
{
31+
name: "@electron-forge/maker-squirrel",
32+
config: {
33+
name: "AgentOrchestrator",
34+
// NuGet requires a non-empty <authors>; without it `nuget pack`
35+
// exits 1 and the Squirrel maker fails. Mirror package.json.author.
36+
authors: "Agent Orchestrator",
37+
setupIcon: "assets/icon.ico",
38+
},
39+
},
2740
{ name: "@electron-forge/maker-zip", platforms: ["darwin"], config: {} },
28-
{ name: "@electron-forge/maker-deb", config: {} },
29-
{ name: "@electron-forge/maker-rpm", config: {} },
41+
{
42+
name: "@electron-forge/maker-deb",
43+
config: {
44+
options: {
45+
icon: "assets/icon.png",
46+
maintainer: "Agent Orchestrator",
47+
homepage: "https://github.com/aoagents/agent-orchestrator",
48+
},
49+
},
50+
},
51+
{
52+
name: "@electron-forge/maker-rpm",
53+
config: {
54+
options: {
55+
icon: "assets/icon.png",
56+
// rpmbuild rejects a spec with an empty License field.
57+
license: "MIT",
58+
homepage: "https://github.com/aoagents/agent-orchestrator",
59+
},
60+
},
61+
},
3062
],
3163
publishers: [
3264
{

0 commit comments

Comments
 (0)