appId: app.clawx.desktop
productName: ClawX
copyright: Copyright © 2026 ClawX
compression: maximum
artifactName: ${productName}-${version}-${os}-${arch}.${ext}

directories:
  output: release
  buildResources: resources

files:
  - dist
  - dist-electron
  - package.json

extraResources:
  - from: resources/
    to: resources/
    filter:
      - "**/*"
      - "!icons/*.md"
      - "!icons/*.svg"
      - "!bin/**"
      - "!screenshot/**"
  # OpenClaw package (node_modules copied separately by afterPack hook
  # because electron-builder respects .gitignore which excludes node_modules/)
  - from: build/openclaw/
    to: openclaw/
  # NOTE: OpenClaw plugin mirrors (dingtalk, etc.) are bundled by the
  # afterPack hook (after-pack.cjs) directly from node_modules, so they
  # don't need an extraResources entry here.

afterPack: ./scripts/after-pack.cjs

asar: true
asarUnpack:
  - "**/*.node"

# Disable native module rebuilding.
# The Electron renderer/main process has no native (.node) dependencies.
# All native modules (opus, sharp, koffi …) belong to openclaw, which is
# bundled separately (bundle-openclaw.mjs → extraResources) and runs in its
# own process — @electron/rebuild must NOT touch them.
npmRebuild: false

# Auto-update configuration
# Primary: Alibaba Cloud OSS (fast for Chinese users, used for auto-update)
# Fallback: GitHub Releases (backup, used when OSS is unavailable)
publish:
  - provider: generic
    url: https://oss.intelli-spectrum.com/latest
    useMultipleRangeRequest: false
  - provider: github
    owner: ValueCell-ai
    repo: ClawX

# macOS Configuration
mac:
  extraResources:
    - from: resources/bin/darwin-${arch}
      to: bin
    - from: resources/cli/posix/
      to: cli/
  category: public.app-category.productivity
  icon: resources/icons/icon.icns
  target:
    - target: dmg
      arch:
        - x64
        - arm64
    - target: zip
      arch:
        - x64
        - arm64
  darkModeSupport: true
  hardenedRuntime: true
  gatekeeperAssess: false
  entitlements: entitlements.mac.plist
  entitlementsInherit: entitlements.mac.plist
  notarize: true
  extendInfo:
    NSMicrophoneUsageDescription: ClawX requires microphone access for voice features
    NSCameraUsageDescription: ClawX requires camera access for video features

dmg:
  background: resources/dmg-background.png
  icon: resources/icons/icon.icns
  iconSize: 100
  window:
    width: 540
    height: 380
  contents:
    - type: file
      x: 130
      y: 220
    - type: link
      path: /Applications
      x: 410
      y: 220

# Windows Configuration
win:
  forceCodeSigning: false
  verifyUpdateCodeSignature: false
  signAndEditExecutable: true
  extraResources:
    - from: resources/bin/win32-${arch}
      to: bin
    - from: resources/cli/win32/
      to: cli/
  icon: resources/icons/icon.ico
  target:
    - target: nsis
      arch:
        - x64
        - arm64

nsis:
  oneClick: false
  perMachine: false
  # Avoid NSIS build failure: warning 6010 (_ci_StrContains "not referenced") is emitted when
  # building the uninstaller, because that function is only used in the install macro.
  warningsAsErrors: false
  allowToChangeInstallationDirectory: true
  deleteAppDataOnUninstall: false
  differentialPackage: true
  createDesktopShortcut: true
  createStartMenuShortcut: true
  shortcutName: ClawX
  uninstallDisplayName: ClawX
  license: LICENSE
  include: scripts/installer.nsh
  installerIcon: resources/icons/icon.ico
  uninstallerIcon: resources/icons/icon.ico

# Linux Configuration
linux:
  extraResources:
    - from: resources/bin/linux-${arch}
      to: bin
    - from: resources/cli/posix/
      to: cli/
  icon: resources/icons
  target:
    - target: AppImage
      arch:
        - x64
        - arm64
    - target: deb
      arch:
        - x64
        - arm64
    - target: rpm
      arch:
        - x64
  category: Utility
  maintainer: ClawX Team <public@valuecell.ai>
  vendor: ClawX
  synopsis: AI Assistant powered by OpenClaw
  description: |
    ClawX is a graphical AI assistant application that integrates with
    OpenClaw Gateway to provide intelligent automation and assistance
    across multiple messaging platforms.
  desktop:
    entry:
      Name: ClawX
      Comment: AI Assistant powered by OpenClaw
      Categories: Utility;Network;
      Keywords: ai;assistant;automation;chat;

appImage:
  license: LICENSE

deb:
  depends:
    - libgtk-3-0
    - libnotify4
    - libnss3
    - libxss1
    - libxtst6
    - xdg-utils
    - libatspi2.0-0
    - libuuid1
  afterInstall: scripts/linux/after-install.sh
  afterRemove: scripts/linux/after-remove.sh
