forked from CherryHQ/cherry-studio
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathelectron-builder.yml
More file actions
239 lines (233 loc) · 12.4 KB
/
Copy pathelectron-builder.yml
File metadata and controls
239 lines (233 loc) · 12.4 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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
appId: com.kangfenmao.CherryStudio
productName: Cherry Studio
extraMetadata:
cherryEdition: global
electronLanguages:
- zh-CN
- zh-TW
- en-US
- ja # macOS/linux/win
- ru # macOS/linux/win
- zh_CN # for macOS
- zh_TW # for macOS
- en # for macOS
- de
directories:
buildResources: build
protocols:
- name: Cherry Studio
schemes:
- cherrystudio
files:
- "**/*"
- "!**/{.vscode,.yarn,.yarn-lock,.github,.cursorrules,.prettierrc}"
- "!electron.vite.config.{js,ts,mjs,cjs}}"
- "!electron-builder.cn.config.cjs"
- "!electron.vite.entries.config.ts"
- "!.*"
- "!components.json"
- "!**/{.eslintignore,.eslintrc.js,.eslintrc.json,.eslintcache,root.eslint.config.js,eslint.config.js,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,eslint.config.mjs,dev-app-update.yml,CHANGELOG.md,README.md,.oxfmtrc.json}"
- "!**/{.env,.env.*,.npmrc,pnpm-lock.yaml}"
- "!**/{tsconfig.json,tsconfig.tsbuildinfo,tsconfig.node.json,tsconfig.web.json}"
- "!**/{.editorconfig,.jekyll-metadata}"
- "!src"
- "!config"
- "!patches"
- "!**/node_modules/**/*.cpp"
- "!**/node_modules/node-addon-api/**"
- "!**/node_modules/prebuild-install/**"
- "!scripts"
- "!local"
- "!docs"
- "!packages"
- "!.swc"
- "!.bin"
- "!._*"
- "!*.log"
- "!stats.html"
- "!*.md"
- "!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}"
- "!**/*.{map,ts,tsx,jsx,less,scss,sass,css.d.ts,d.cts,d.mts,md,markdown,yaml,yml}"
- "!**/{test,tests,__tests__,powered-test,coverage}/**"
- "!**/{example,examples}/**"
- "!**/*.{spec,test}.{js,jsx,ts,tsx}"
- "!**/*.min.*.map"
- "!**/*.d.ts"
- "!**/dist/es6/**"
- "!**/dist/demo/**"
- "!**/amd/**"
- "!**/{.DS_Store,Thumbs.db,thumbs.db,__pycache__}"
- "!**/{LICENSE,license,LICENSE.*,*.LICENSE.txt,NOTICE.txt,README.md,readme.md,CHANGELOG.md}"
- "!node_modules/rollup-plugin-visualizer"
- "!node_modules/js-tiktoken"
- "!node_modules/@tavily/core/node_modules/js-tiktoken"
- "!node_modules/pdf-parse/lib/pdf.js/{v1.9.426,v1.10.88,v2.0.550}"
- "!node_modules/mammoth/{mammoth.browser.js,mammoth.browser.min.js}"
# node-gyp-build prefers build/Release over prebuilds/, so ship the prebuilds and drop the
# host-arch rebuild — a cross-built arm64 package would otherwise load the x86-64 binary (#20530).
- "!node_modules/selection-hook/build/**"
- "!node_modules/selection-hook/node_modules" # we don't need what in the node_modules dir
- "!node_modules/selection-hook/src" # we don't need source files
- "!**/node_modules/node-pty/build/**" # ship upstream prebuilds; the rebuilt binary needs GLIBC_2.34 and is never cross-compiled
- "!node_modules/tesseract.js-core/{tesseract-core.js,tesseract-core.wasm,tesseract-core.wasm.js}" # we don't need source files
- "!node_modules/tesseract.js-core/{tesseract-core-lstm.js,tesseract-core-lstm.wasm,tesseract-core-lstm.wasm.js}" # we don't need source files
- "!node_modules/tesseract.js-core/{tesseract-core-simd-lstm.js,tesseract-core-simd-lstm.wasm,tesseract-core-simd-lstm.wasm.js}" # we don't need source files
- "!node_modules/onnxruntime-web/**" # transformers.js's browser/WASM backend; local inference always runs onnxruntime-node instead
- "!node_modules/@huggingface/transformers/node_modules/onnxruntime-web/**" # same package, nested copy
- "!node_modules/onnxruntime-node/bin/**" # native binary is downloaded on first use (Toolchain/onnxruntime), never bundled — see OnnxRuntimeBinaryService
- "!**/*.{h,iobj,ipdb,tlog,recipe,vcxproj,vcxproj.filters,Makefile,*.Makefile}" # filter .node build files
- "resources/**/*" # include all files in resources, and unpack them from asar for runtime access
- "!resources/devtools/**" # dev-only extensions are loaded from source in development
asarUnpack:
- resources/**
- "!resources/devtools/**"
- "**/*.{metal,exp,lib}"
- "node_modules/@img/sharp-*/**"
# DSH runs under bundled Bun: bundle its JS and unpack native/runtime files.
- "node_modules/@cherrystudio/dsh-bridge/dist/runtime/**"
- "node_modules/sharp/**"
- "node_modules/@img/colour/**"
- "node_modules/detect-libc/**"
- "node_modules/semver/**"
- "node_modules/node-pty/**"
- "node_modules/koffi/**"
- "node_modules/@koromix/koffi-*/**"
- "node_modules/@deepseek-ai/dsh-sandbox-windows-acl/**"
- "node_modules/@deepseek-ai/dsh-win32-process/**"
- "node_modules/@deepseek-ai/node-addon-landlock-run*/**"
- "node_modules/@anthropic-ai/claude-agent-sdk-*/**" # native CLI binary must live on disk to be spawned
- "node_modules/@silvia-odwyer/photon-node/**" # pi SDK WASM dep: photon_rs.js does fs.readFileSync(__dirname/photon_rs_bg.wasm)
- "node_modules/@aiany/sqlite-vec-*/**" # sqlite-vec extension (.dylib/.so/.dll) is dlopen'd at runtime — must live on disk
- "node_modules/@node-rs/xxhash-*/**" # native N-API binary must be unpacked for runtime loading
- "node_modules/@firecrawl/anydoc-*/**" # native N-API binary must be unpacked for runtime loading
- "node_modules/node-screenshots-*/**" # native N-API binary must be unpacked for runtime loading
- "node_modules/node-mac-permissions/**" # native N-API binary must be unpacked for runtime loading
extraResources:
- from: "migrations/sqlite-drizzle"
to: "migrations/sqlite-drizzle"
- from: "packages/provider-registry/data"
to: "provider-registry"
win:
executableName: Cherry Studio
artifactName: ${productName}-${version}-${arch}-setup.${ext}
extraResources:
- from: "node_modules/@aiany/sqlite-vec-windows-${arch}/vec0.dll"
to: "app.asar.unpacked/node_modules/@aiany/sqlite-vec-windows-${arch}/vec0.dll"
target:
- target: nsis
- target: portable
signtoolOptions:
sign: scripts/win-sign.js
verifyUpdateCodeSignature: false
nsis:
# Preserve the existing global installer identity so either edition replaces the same Windows installation.
guid: 41a4ccd8-bcc0-5710-9eee-0e164da68057
artifactName: ${productName}-${version}-${arch}-setup.${ext}
shortcutName: ${productName}
uninstallDisplayName: ${productName}
createDesktopShortcut: always
allowToChangeInstallationDirectory: true
oneClick: false
include: build/nsis-installer.nsh
buildUniversalInstaller: false
differentialPackage: false
portable:
artifactName: ${productName}-${version}-${arch}-portable.${ext}
buildUniversalInstaller: false
# electron-builder 26.15.6 uses true for a unique $PLUGINSDIR on every launch.
unpackDirName: true
mac:
entitlementsInherit: build/entitlements.mac.plist
notarize: false
artifactName: ${productName}-${version}-${arch}.${ext}
extendInfo:
- NSCameraUsageDescription: Application requests access to the device's camera.
- NSMicrophoneUsageDescription: Application requests access to the device's microphone.
- NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder.
- NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder.
target:
- target: dmg
- target: zip
dmg:
writeUpdateInfo: false
linux:
artifactName: ${productName}-${version}-${arch}.${ext}
executableName: CherryStudio
target:
- target: AppImage
- target: deb
- target: rpm
maintainer: electronjs.org
category: Utility
desktop:
entry:
Name: Cherry Studio
StartupWMClass: CherryStudio
mimeTypes:
- x-scheme-handler/cherrystudio
rpm:
# Workaround for electron build issue on rpm package:
# https://github.com/electron/forge/issues/3594
fpm: ["--rpm-rpmbuild-define=_build_id_links none"]
publish:
provider: generic
url: https://releases.cherry-ai.com
electronDownload:
mirror: https://npmmirror.com/mirrors/electron/
beforePack: scripts/before-pack.js
afterPack: scripts/after-pack.js
afterSign: scripts/notarize.js
artifactBuildCompleted: scripts/artifact-build-completed.js
releaseInfo:
releaseNotes: |
<!--LANG:en-->
Cherry Studio 2.1.1 - Provider Support and Stability Improvements
✨ New Features
- [Model] Add oMLX as a built-in local provider with base URL preset and no API key required.
- [Model] Add Moonshot AI global endpoint for users of the international Moonshot console.
- [MCP] The built-in mcp-auto-install server keeps its Registry cache and config writes inside Cherry's config directory instead of other MCP clients; AI-assisted installs can resolve server config from the MCP Registry before registering.
- [Sign-in] CherryIN sign-in uses a local HTTP callback instead of the system custom-protocol handler.
- [Agents] Return to the original chat from a link at the fork boundary.
- [Diagnostics] Chat, tool, and agent failures now record structured diagnostic context with redacted request/response shapes.
🐛 Bug Fixes
- [Recycle Bin] Improve settings with direct category tabs, clearer grouping, compact actions, and disabled batch management for empty categories.
- [Settings] Fixed settings, authorization, billing, and feedback links opening in the internal browser instead of the system browser.
- [Settings] English search terms now find the V2 serif-font setting.
- [Agents] Fixed timeouts when forking long DSH conversations.
- [macOS] Warn Apple Silicon users running the Intel build and link to the correct edition's download page.
- [Tools] Fixed skill installation, Skill tool dependency check, and Windows binary management failing when command lookup times out or errors.
- [Models] Keep valid LM Studio models when one catalog entry is malformed.
- [Input] AskUserQuestion answers now wrap and grow, and keep selected options when a custom note is typed.
- [AI] Fixed Gemini requests failing with 400 error when tool parameters declare numeric or boolean enum values.
- [Markdown] Fixed KaTeX-stretched symbols (e.g., square roots) disappearing from rendered formulas.
- [Windows] Fixed agent-session trace history never being saved.
- [Privacy] Fixed analytics events still being sent after disabling data collection.
- [Sidebar] All resource shortcuts can now be removed via context menus.
- [Profile] Fixed user name input dropping spaces, allowing names like “John Doe”.
- [MCP] Fixed OAuth sign-in failing with connection-refused because callback listener started after browser opened.
<!--LANG:zh-CN-->
Cherry Studio 2.1.1 - 服务商支持与稳定性改进
✨ 新功能
- [模型] 新增 oMLX 内置本地服务商,预设 base URL,无需 API 密钥。
- [模型] 新增 Moonshot AI 全球端点,方便使用国际版 Moonshot 控制台的用户连接。
- [MCP] 内置 mcp-auto-install 服务器将 Registry 缓存和配置写入保持在 Cherry 的配置目录,而非其他 MCP 客户端;AI 辅助安装可在注册前从 MCP Registry 解析服务器配置。
- [登录] CherryIN 登录使用本地 HTTP 回调,不再依赖系统自定义协议处理程序。
- [智能体] 从分叉边界链接返回原始对话。
- [诊断] 对话、工具和智能体失败时记录结构化诊断上下文,请求/响应内容已脱敏。
🐛 问题修复
- [回收站] 改进设置,增加直接分类标签、更清晰的分组、紧凑操作,并为空类别禁用批量管理。
- [设置] 修复设置、授权、账单和反馈链接在内置浏览器打开而非系统浏览器的问题。
- [设置] 英文搜索词现在可以找到 V2 衬线字体设置。
- [智能体] 修复分叉长时间 DSH 对话时的超时问题。
- [macOS] 提醒在 Apple Silicon 上运行 Intel 版本的用户,并链接到正确版本的下载页面。
- [工具] 修复技能安装、Skill 工具依赖检查和 Windows 二进制管理在命令查找超时或出错时失败的问题。
- [模型] 当单个目录条目格式错误时保留有效的 LM Studio 模型。
- [输入] AskUserQuestion 回答现在可以换行和增长,并在输入自定义说明时保留已选选项。
- [AI] 修复工具参数声明数字或布尔枚举值时 Gemini 请求返回 400 错误的问题。
- [Markdown] 修复 KaTeX 拉伸符号(如平方根)在渲染公式中消失的问题。
- [Windows] 修复智能体会话跟踪历史从未保存的问题。
- [隐私] 修复禁用数据收集后仍发送分析事件的问题。
- [侧边栏] 所有资源快捷方式现在可以通过右键菜单移除。
- [个人资料] 修复用户名输入丢失空格的问题,允许输入如”张三”这样的名字。
- [MCP] 修复 OAuth 登录因回调监听器在浏览器打开后才启动而失败的问题。
<!--LANG:END-->