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"
  - "!config"
  - "!patches"
  - "!app-upgrade-config.json"
  - "!**/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_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
  - "resources/**/*" # include all files in resources, and unpack them from asar for runtime access
asarUnpack:
  - out/proxy/**
  - resources/**
  - "**/*.{metal,exp,lib}"
  - "node_modules/@img/sharp-*/**"

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
  differentialPackage: 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
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 1.9.11 - Model, Agent, and Artifact Fixes

    🐛 Bug Fixes
    - [Agent] Fix task completion status not updating in agent task lists.
    - [Artifacts] Fix Mermaid flowcharts failing when CJK labels include parentheses.
    - [CherryIN] Fix CherryIN sign-in flow completing in the wrong window.
    - [Knowledge] Fix knowledge base embedding failures with some OpenAI-compatible providers.
    - [Artifacts] Fix opening HTML artifacts in an external browser.
    - [Models] Fix deep thinking with Claude Opus 4.8.
    - [Models] Fix MiniMax M3 thinking content not showing as a thinking block.
    - [Mini Apps] Fix oversized text in the Gemini mini app.
    - [Agent] Fix deleted agent sessions leaving old messages behind.
    - [Models] Fix custom provider models being grouped incorrectly.
    - [Models] Fix Gemini model list loading when API keys contain special characters.

    💄 Improvements
    - [Models] Remove retired MiniMax models from the built-in model list.

    <!--LANG:zh-CN-->
    Cherry Studio 1.9.11 - 模型、智能体问题修复

    🐛 问题修复
    - [知识库] 修复部分 OpenAI 兼容提供商的知识库向量化失败问题。
    - [智能体] 修复智能体任务完成后，任务列表仍显示未勾选的问题。
    - [智能体] 修复删除智能体会话后旧消息未清理的问题。
    - [模型] 修复 Claude Opus 4.8 深度思考异常的问题。
    - [模型] 修复 MiniMax M3 思考内容未显示为思考块的问题。
    - [模型] 修复自定义提供商模型分组错误的问题。
    - [模型] 修复 Gemini API Key 包含特殊字符时模型列表加载失败的问题。
    - [小程序] 修复 Gemini 小程序文字异常变大的问题。
    - [CherryIN] 修复 CherryIN 登录流程问题。
    - [Artifacts] 修复 Mermaid 流程图中 CJK 标签包含括号时无法渲染的问题。
    - [Artifacts] 修复 HTML 产物无法在外部浏览器打开的问题。

    💄 改进
    - [模型] 从内置模型列表移除已下线的 MiniMax 旧模型。
    <!--LANG:END-->
