Repository navigation
Expand file tree
/
Copy pathelectron-builder.yml
More file actions
94 lines (86 loc) · 3.43 KB
/
Copy pathelectron-builder.yml
File metadata and controls
94 lines (86 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
appId: studio.claudecode.app
productName: Claude Code Studio
copyright: © Claude Code Studio
# GitHub releases are the update feed for electron-updater (Win/Linux) and the
# source of the dmg for the Homebrew Cask (macOS).
publish:
provider: github
owner: Lexus2016
repo: claude-code-studio
releaseType: release # publish directly (not a draft) so it merges cleanly with release.yml
asar: true
# Runtime uses Node's built-in node:sqlite (Electron's Node >= 22.13), not the
# native better-sqlite3, and ssh2 falls back to pure-JS without cpu-features —
# so skip rebuilding native modules against Electron's ABI (avoids a brittle,
# slow compile step that isn't needed).
npmRebuild: false
# Spawned helper scripts and hooks must be real files on disk so the child
# Node interpreter can read them — they cannot live inside the asar archive.
asarUnpack:
- "mcp-*.js"
- "hooks/**"
# Whatever those scripts require() has to be out here with them. The child is a
# plain `node` with no asar support, so a module left inside the archive fails one
# level deeper than the entry point: mcp-bots.js unpacked fine and still died on
# `Cannot find module './bots.js'`. Pinned by test/asar-helpers.test.js.
- "bots.js"
files:
- "**/*"
- "!.planning/**"
- "!docs/**"
- "!data/**"
- "!workspace/**"
- "!.git/**"
- "!.github/**"
- "!.claude/**"
- "!.serena/**"
- "!.playwright-mcp/**"
- "!**/*.bak"
- "!dist-desktop/**"
- "!public/screenshots/**"
- "!homebrew-tap/**"
- "!README*"
- "!CLAUDE.md"
# SECURITY: never ship developer secrets or repo test/junk into the app bundle.
# The desktop app reads config.json/.env from userData (APP_DIR), NOT the bundle
# (electron/main.js:128), and loadConfig() tolerates a missing file (server.js:1864),
# so excluding these is safe. Verified via `asar list` that they were leaking.
- "!.env*"
- "!config.json"
- "!tasks/**"
- "!test-snapshot*"
- "!test-*.sh"
# Local signing/notarization settings (docs/electron-desktop/MAC-SIGNING.md). Read
# by the electron-builder CLI from the working directory; never part of the app.
- "!electron-builder.env"
directories:
output: dist-desktop
buildResources: build
mac:
# Apple Silicon only. macOS 27 no longer runs on Intel, and Homebrew — the only
# supported macOS channel — moved Intel to Tier 3 in September 2026. The arch is
# pinned here, not just on the CI command line, so a local `npm run dist:mac` on
# any host produces the same artefact the release does.
target:
- target: dmg
arch: arm64
- target: zip
arch: arm64
category: public.app-category.developer-tools
artifactName: "claude-code-studio-${version}-${arch}.${ext}"
# Developer ID signing + notarization — docs/electron-desktop/MAC-SIGNING.md.
# The identity is auto-discovered from the keychain (CSC_LINK in CI); notarization
# runs only after a successful signature and only when APPLE_* credentials are set.
hardenedRuntime: true
entitlements: build/entitlements.mac.plist
entitlementsInherit: build/entitlements.mac.plist
extendInfo:
# Shown by the Automation prompt the first time the app opens a command in Terminal.
NSAppleEventsUsageDescription: "Claude Code Studio opens commands in Terminal on your request."
win:
target: [nsis]
artifactName: "claude-code-studio-Setup-${version}.${ext}"
linux:
target: [AppImage, deb]
category: Development
artifactName: "claude-code-studio-${version}-${arch}.${ext}"