-
Notifications
You must be signed in to change notification settings - Fork 140
Expand file tree
/
Copy pathelectron-builder.yml
More file actions
165 lines (154 loc) · 7.46 KB
/
electron-builder.yml
File metadata and controls
165 lines (154 loc) · 7.46 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# electron-builder.yml
# Skales v7.1.0 — Production Build Configuration
# Docs: https://www.electron.build/configuration/configuration
appId: app.skales.desktop
productName: Skales
copyright: Copyright © 2026 Skales
# ── Compression ───────────────────────────────────────────────────────────────
# 'normal' = faster install on Windows (vs. default 'maximum' which is very slow).
# Mac DMG is unaffected — already fast regardless of this setting.
compression: normal
# ── Directories ───────────────────────────────────────────────────────────────
directories:
output: dist
buildResources: electron/icons
# ── Files packed into the ASAR archive ───────────────────────────────────────
# Next.js is built with `output: 'standalone'` before packaging.
# Run: cd apps/web && npm run build
files:
- electron/**/*
- "apps/web/.next/standalone/**/*"
- "apps/web/.next/standalone/node_modules/**/*"
- "apps/web/.next/static/**/*"
- "apps/web/public/**/*"
- "apps/web/package.json"
# ── Bot scripts ───────────────────────────────────────────────────────────
# Always ship the source files as a safe fallback (needed in dev mode and
# when bundle:bots hasn't been run yet). If telegram-bot.bundled.js exists
# (generated by `npm run bundle:bots`), telegram.ts prefers it at runtime.
- "apps/web/telegram-bot.js"
- "apps/web/discord-bot.js"
- "apps/web/whatsapp-bot.js"
# ── Bundled bots (self-contained, generated by `npm run bundle:bots`) ────
# When present these replace the source files — no node_modules needed.
# Electron-builder silently skips these if they don't exist (safe to omit).
- "apps/web/telegram-bot.bundled.js"
- "apps/web/discord-bot.bundled.js"
- "!.skales-data"
- "!**/*.map"
# ── ASAR unpack ───────────────────────────────────────────────────────────────
# The standalone server.js and static assets must exist as real files on disk
# (not inside the ASAR virtual filesystem) so that `spawn(process.execPath, [serverPath])`
# can actually execute them. These paths are mirrored to app.asar.unpacked/.
asarUnpack:
- "apps/web/.next/standalone/**/*"
- "apps/web/.next/standalone/node_modules/**/*"
- "apps/web/.next/static/**/*"
- "apps/web/public/**/*"
# Bot scripts must be real files so spawn('node', [path]) can execute them
- "apps/web/telegram-bot.js"
- "apps/web/discord-bot.js"
- "apps/web/whatsapp-bot.js"
- "apps/web/telegram-bot.bundled.js"
- "apps/web/discord-bot.bundled.js"
# ── Auto-update ───────────────────────────────────────────────────────────────
# electron-builder generates `latest.yml` (Windows) / `latest-mac.yml` (macOS)
# alongside the installer. Upload BOTH to the URL below after each build.
# electron-updater checks this URL on startup and every 4 hours.
publish:
provider: generic
url: https://skales.app/updates/
# ── Windows ───────────────────────────────────────────────────────────────────
win:
artifactName: "Skales-Setup-${version}.${ext}"
target:
- target: nsis
arch: [x64]
icon: electron/icons/icon.ico
# Code signing — set in CI: CSC_LINK, CSC_KEY_PASSWORD
# ── Windows extra resources: single archive for fast NSIS install ──────────
# NSIS writes files one-by-one. ~50 000 files = 3-5 min.
# ONE tar.gz file = ~15-20 sec install.
# Created by `npm run pack:deps` before packaging.
# Extracted by electron/main.js at first launch (~15-20 sec, shown in splash).
extraResources:
- from: apps/web/node_modules.tar.gz
to: apps/web/node_modules.tar.gz
nsis:
oneClick: true
perMachine: false
allowToChangeInstallationDirectory: false
# Override the registry display name so "Programs and Features" shows
# "Skales" instead of "Skales 6.0.0". The version is still recorded in
# the DisplayVersion registry key — only the DisplayName is affected.
uninstallDisplayName: Skales
installerIcon: electron/icons/icon.ico
uninstallerIcon: electron/icons/icon.ico
installerHeaderIcon: electron/icons/icon.ico
createDesktopShortcut: true
createStartMenuShortcut: true
shortcutName: Skales
# ── macOS ─────────────────────────────────────────────────────────────────────
mac:
artifactName: "Skales-${version}-${arch}.${ext}"
target:
- target: dmg
arch: [x64, arm64]
icon: electron/icons/icon.icns
category: public.app-category.productivity
# ── macOS extra resources: full node_modules folder ───────────────────────
# DMG drag-and-drop install is fast regardless of file count (~15-20 sec).
extraResources:
- from: apps/web/node_modules
to: apps/web/node_modules
filter:
- "**/*"
- "!.cache/**"
# Code signing — set in CI: APPLE_ID, APPLE_ID_PASSWORD, APPLE_TEAM_ID,
# CSC_LINK, CSC_KEY_PASSWORD
hardenedRuntime: true
gatekeeperAssess: false
entitlements: electron/entitlements.mac.plist
entitlementsInherit: electron/entitlements.mac.plist
# ── Info.plist additions ─────────────────────────────────────────────────
# These keys are merged into the generated Info.plist inside the .app bundle.
extendInfo:
NSHumanReadableCopyright: "Copyright © 2026 Skales. All rights reserved."
CFBundleShortVersionString: "7.1.0"
CFBundleVersion: "7.1.0"
# Required for Login Items (auto-launch) via SMLoginItemSetEnabled / LSUIElement
LSUIElement: false
# Declare usage descriptions required by macOS privacy prompts
NSMicrophoneUsageDescription: "Skales uses the microphone for voice input."
NSCameraUsageDescription: "Skales does not use the camera."
# Disable App Transport Security for local-only HTTP server on localhost
NSAppTransportSecurity:
NSAllowsLocalNetworking: true
# ── Linux ──────────────────────────────────────────────────────────────────────
linux:
artifactName: "Skales-${version}-${arch}.${ext}"
target:
- target: AppImage
arch: [x64]
- target: deb
arch: [x64]
category: Utility
icon: electron/icons
desktop:
Name: Skales
Comment: AI Desktop Agent
Categories: Utility;Development;
extraResources:
- from: apps/web/node_modules
to: apps/web/node_modules
filter:
- "**/*"
- "!.cache/**"
dmg:
contents:
- x: 130
y: 220
- x: 410
y: 220
type: link
path: /Applications