appId: com.kangfenmao.CherryStudio productName: Cherry Studio 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}}" - "!.*" - "!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,biome.jsonc}" - "!**/{.env,.env.*,.npmrc,pnpm-lock.yaml}" - "!**/{tsconfig.json,tsconfig.tsbuildinfo,tsconfig.node.json,tsconfig.web.json}" - "!**/{.editorconfig,.jekyll-metadata}" - "!src" - "!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_modules/selection-hook/prebuilds/**/*" # we rebuild .node, don't use prebuilds - "!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/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 - "!**/*.{h,iobj,ipdb,tlog,recipe,vcxproj,vcxproj.filters,Makefile,*.Makefile}" # filter .node build files asarUnpack: - resources/** - "**/*.{metal,exp,lib}" - "node_modules/@img/sharp-libvips-*/**" # copy from node_modules/claude-code-plugins/plugins to resources/data/claude-code-pluginso extraResources: - from: "./node_modules/claude-code-plugins/plugins/" to: "claude-code-plugins" win: executableName: Cherry Studio artifactName: ${productName}-${version}-${arch}-setup.${ext} target: - target: nsis - target: portable signtoolOptions: sign: scripts/win-sign.js verifyUpdateCodeSignature: false nsis: artifactName: ${productName}-${version}-${arch}-setup.${ext} shortcutName: ${productName} uninstallDisplayName: ${productName} createDesktopShortcut: always allowToChangeInstallationDirectory: true oneClick: false include: build/nsis-installer.nsh buildUniversalInstaller: false portable: artifactName: ${productName}-${version}-${arch}-portable.${ext} buildUniversalInstaller: false 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 linux: artifactName: ${productName}-${version}-${arch}.${ext} target: - target: AppImage - target: deb - target: rpm maintainer: electronjs.org category: Utility desktop: entry: 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: | What's New in v1.7.0-rc.2 ✨ New Features: - AI Models: Added support for Gemini 3, Gemini 3 Pro with image preview, and GPT-5.1 - Import: ChatGPT conversation import feature - Agent: Git Bash detection and requirement check for Windows agents - Search: Native language emoji search with CLDR data format - Provider: Endpoint type support for cherryin provider - Debug: Local crash mini dump file for better diagnostics 🐛 Important Bug Fixes: - Error Handling: Improved error display in AiSdkToChunkAdapter - Database: Optimized DatabaseManager and fixed libsql crash issues - Memory: Fixed EventEmitter memory leak in useApiServer hook - Messages: Fixed adjacent user messages appearing when assistant message contains error only - Tools: Fixed missing execution state for approved tool permissions - File Processing: Fixed "no such file" error for non-English filenames in open-mineru - PDF: Fixed mineru PDF validation and 403 errors - Images: Fixed base64 image save issues - Search: Fixed URL context and web search capability - Models: Added verbosity parameter support for GPT-5 models - UI: Improved todo tool status icon visibility and colors - Providers: Fixed api-host for vercel ai-gateway and gitcode update config ⚡ Improvements: - SDK: Updated Google and OpenAI SDKs with new features - UI: Simplified knowledge base creation modal and agent creation form - Tools: Replaced renderToolContent function with ToolContent component - Architecture: Namespace tool call IDs with session ID to prevent conflicts - Config: AI SDK configuration refactoring v1.7.0-rc.2 新特性 ✨ 新功能: - AI 模型:新增 Gemini 3、Gemini 3 Pro 图像预览支持,以及 GPT-5.1 - 导入:ChatGPT 对话导入功能 - Agent:Windows Agent 的 Git Bash 检测和要求检查 - 搜索:支持本地语言 emoji 搜索(CLDR 数据格式) - 提供商:cherryin provider 的端点类型支持 - 调试:启用本地崩溃 mini dump 文件,方便诊断 🐛 重要修复: - 错误处理:改进 AiSdkToChunkAdapter 的错误显示 - 数据库:优化 DatabaseManager 并修复 libsql 崩溃问题 - 内存:修复 useApiServer hook 中的 EventEmitter 内存泄漏 - 消息:修复当助手消息仅包含错误时相邻用户消息出现的问题 - 工具:修复批准工具权限缺少执行状态的问题 - 文件处理:修复 open-mineru 处理非英文文件名时的"无此文件"错误 - PDF:修复 mineru PDF 验证和 403 错误 - 图片:修复 base64 图片保存问题 - 搜索:修复 URL 上下文和网络搜索功能 - 模型:为 GPT-5 模型添加 verbosity 参数支持 - UI:改进 todo 工具状态图标可见性和颜色 - 提供商:修复 vercel ai-gateway 和 gitcode 更新配置的 api-host ⚡ 改进: - SDK:更新 Google 和 OpenAI SDK,新增功能和修复 - UI:简化知识库创建模态框和 agent 创建表单 - 工具:用 ToolContent 组件替换 renderToolContent 函数,提升可读性 - 架构:用会话 ID 命名工具调用 ID 以防止冲突 - 配置:AI SDK 配置重构