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}'
  - '!**/{.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/pdfjs-dist/web/**/*'
  - '!node_modules/pdfjs-dist/legacy/**/*'
  - '!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
  - '!**/*.{h,iobj,ipdb,tlog,recipe,vcxproj,vcxproj.filters,Makefile,*.Makefile}' # filter .node build files
asarUnpack:
  - resources/**
  - '**/*.{metal,exp,lib}'
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
  maintainer: electronjs.org
  category: Utility
  desktop:
    entry:
      StartupWMClass: CherryStudio
  mimeTypes:
    - x-scheme-handler/cherrystudio
publish:
  provider: generic
  url: https://releases.cherry-ai.com
electronDownload:
  mirror: https://npmmirror.com/mirrors/electron/
afterPack: scripts/after-pack.js
afterSign: scripts/notarize.js
artifactBuildCompleted: scripts/artifact-build-completed.js
releaseInfo:
  releaseNotes: |
    新增全局记忆功能
    MCP 支持 DXT 格式导入
    全局快捷键支持 Linux 系统
    模型思考过程增加动画效果
    错误修复和性能优化
