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 directories: buildResources: build protocols: - name: Cherry Studio schemes: - cherrystudio files: - "**/*" - "!**/{.vscode,.yarn,.yarn-lock,.github,.cursorrules,.prettierrc}" - "!electron.vite.config.{js,ts,mjs,cjs}}" - "!**/{.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-*/**" 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} minimumSystemVersion: "20.1.0" # 最低支持 macOS 11.0 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-beta.1 Major Features: - Agent System: Introducing intelligent Agent capabilities alongside Assistants. Agents can autonomously solve complex problems using Claude Code SDK with tool calling, file operations, and multi-turn reasoning - Agent Management: Create, configure, and manage agents with custom settings including model selection, tool permissions, accessible paths, and MCP server integrations - Agent Sessions: Dedicated session management for agent interactions with persistent message history and context tracking - Unified UI: Streamlined interface combining Assistants and Agents tabs with improved navigation and settings management Agent Features: - Tool Support: Web search, file operations, bash commands, and custom MCP tools - Advanced Configuration: Max turns, temperature, token limits - Permission Control: Configurable tool approval modes (manual, automatic, none) - Session Persistence: Automatic message saving with optimized streaming and database integration - Model Selection: API-based model filtering with provider-specific support UI/UX Improvements: - Unified assistant/agent tabs with smooth animations - In-place session name editing - Virtual list rendering for improved performance - Session count indicators for active agents - Enhanced settings popup with tabbed interface - Webview keyboard shortcut interception for search functionality API & Infrastructure: - RESTful API for agent and session management - Drizzle ORM integration for agent database - OAuth support for Claude Code authentication - Express validator for request validation - Comprehensive error handling with Zod schemas Model Updates: - Gemini 2.5 Image Flash support - Grok 4 Fast with reasoning capabilities - Qwen3-omni and Qwen3-vl thinking models - DeepSeek, Claude 4.5, GLM 4.6 support - GitHub Copilot CLI integration with gpt-5-codex Bug Fixes: - Fix Swagger UI accessibility issues - Fix AI SDK error display with syntax highlighting - Fix webview search shortcut handling - Fix agent model visibility for CherryIn provider - Fix session message ordering and persistence - Fix anthropic model visibility in agent configuration - Fix knowledge base deletion and web search RAG errors - Fix migration for missing providers Technical Updates: - React 19.2.0 upgrade - Enhanced Claude Code service with streaming support - Improved message transformation and streaming lifecycle - Database migration system with automatic schema sync - Optimized bundle size and dependency management v1.7.0-beta.1 新特性 核心功能: - Agent 系统:引入智能 Agent 能力,与助手(Assistant)并存。Agent 基于 Claude Code SDK 构建,具备工具调用、文件操作和多轮推理能力,可自主解决复杂问题 - Agent 管理:创建、配置和管理 Agent,支持自定义模型选择、工具权限、可访问路径和 MCP 服务器集成 - Agent 会话:专属会话管理系统,支持持久化消息历史和上下文追踪 - 统一界面:精简的助手和 Agent 标签页界面,改进导航和设置管理体验 Agent 功能特性: - 工具支持:网页搜索、文件操作、Bash 命令执行和自定义 MCP 工具 - 高级配置:最大轮次、温度、Token 限制 - 权限控制:可配置的工具批准模式(手动、自动、无需批准) - 会话持久化:自动消息保存,优化的流式传输和数据库集成 - 模型选择:基于 API 的模型过滤,支持特定提供商 界面与交互优化: - 统一的助手/Agent 标签页,带有流畅动画效果 - 会话名称原地编辑功能 - 虚拟列表渲染,提升性能表现 - 活跃 Agent 的会话计数指示器 - 增强的设置弹窗,采用标签页界面 - Webview 键盘快捷键拦截,支持搜索功能 API 与基础设施: - RESTful API 用于 Agent 和会话管理 - 集成 Drizzle ORM 管理 Agent 数据库 - Claude Code OAuth 认证支持 - Express validator 请求验证 - 基于 Zod 模式的完善错误处理 模型更新: - 支持 Gemini 2.5 Image Flash - Grok 4 Fast 推理能力 - Qwen3-omni 和 Qwen3-vl 思考模型 - DeepSeek、Claude 4.5、GLM 4.6 支持 - GitHub Copilot CLI 集成 gpt-5-codex 问题修复: - 修复 Swagger UI 无法打开 - 修复 AI SDK 错误显示,添加语法高亮 - 修复 Webview 搜索快捷键处理 - 修复 CherryIn 提供商的 Agent 模型可见性 - 修复会话消息排序和持久化 - 修复 Anthropic 模型在 Agent 配置中的可见性 - 修复知识库删除和网页搜索 RAG 错误 - 修复缺失提供商的迁移问题 技术更新: - 升级至 React 19.2.0 - 增强 Claude Code 服务流式传输支持 - 改进消息转换和流式生命周期 - 数据库迁移系统,支持自动模式同步 - 优化打包大小和依赖管理