# 应用程序的唯一标识符
appId: com.chatlab.fun
# 应用程序的产品名称
productName: ChatLab
# 发布配置
publish:
  provider: github
  owner: hellodigua
  repo: ChatLab
# 构建资源所在的目录
directories:
  buildResources: build
# 包含在最终应用程序构建中的文件列表
files:
  - out/**/*
  - '!**/.vscode/*'
  - '!src/*'
  - '!electron.vite.config.{js,ts,mjs,cjs}'
  - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,CHANGELOG.md,README.md}'
  - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}'
  - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}'
# 哪些文件将不会被压缩，而是解压到构建目录
asarUnpack:
  - resources/**

# Windows 平台配置
win:
  executableName: ChatLab
  target: nsis

# NSIS 安装器配置
nsis:
  oneClick: false
  artifactName: ChatLab-${version}-setup.${ext}
  shortcutName: ${productName}
  uninstallDisplayName: ${productName}
  createDesktopShortcut: always
  allowElevation: true
  allowToChangeInstallationDirectory: true
  installerIcon: build/icon.ico
  uninstallerIcon: build/icon.ico
  include: installer-dpi.nsh
  differentialPackage: false

# macOS 平台配置
mac:
  entitlementsInherit: build/entitlements.mac.plist
  entitlements: build/entitlements.mac.plist
  # 代码签名 - Hardened Runtime 是公证的必要条件
  hardenedRuntime: true
  gatekeeperAssess: false
  # 公证配置 - v26 自动检测环境变量进行公证，无需额外配置
  extendInfo:
    - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder.
    - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder.
  target:
    # 架构由 CI 通过 --x64/--arm64 指定，避免在单个 job 里同时打双架构
    - target: dmg
    - target: zip
  artifactName: ChatLab-${version}-${arch}.${ext}

# macOS 平台的 DMG 配置
dmg:
  artifactName: ChatLab-${version}-${arch}.${ext}

# Linux 平台配置
linux:
  executableName: chatlab
  icon: build/icon.png
  target:
    - AppImage
    - deb
    - rpm
    - tar.gz
  category: Utility

# AppImage 配置
appImage:
  artifactName: ChatLab-${version}.${ext}

# 是否在构建之前重新编译原生模块
npmRebuild: true
