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/
  # Pre-bundled third-party skills (full directories, not only SKILL.md)
  - from: build/preinstalled-skills/
    to: resources/preinstalled-skills/
  # 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"
  # lru-cache CJS/ESM interop: older CJS versions (v5, v6, v7) don't export
  # `LRUCache` as a named property, breaking `import { LRUCache }` in Node.js
  # 22+ (Electron 40+).  Unpacking lets afterPack patch them in place.
  - "**/node_modules/lru-cache/**"

# 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:
  # Explicit volume size prevents dmg-builder@1.2.0 auto-calculation from
  # underestimating (causes "No space left on device" for large app bundles).
  # The final .dmg is bzip2-compressed, so this only affects the temp volume.
  size: 2g
  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:
  # Skip update signature verification: we ship via OSS + GitHub without a
  # code-signing certificate, so verifying would always fail on the updater.
  verifyUpdateCodeSignature: false
  extraResources:
    - from: resources/bin/win32-${arch}
      to: bin
    - from: resources/cli/win32/
      to: cli/
  icon: resources/icons/icon.ico
  target:
    - target: nsis
      arch: x64

nsis:
  oneClick: false
  perMachine: false
  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;
      StartupWMClass: clawx

appImage:
  license: LICENSE

deb:
  depends:
    # Use OR syntax to support both Ubuntu 22.04 and Ubuntu 24.04 (t64 transition).
    # Ubuntu 24.04 renamed many libraries with a t64 suffix (64-bit time_t ABI transition).
    - libgtk-3-0 | libgtk-3-0t64
    - libnotify4 | libnotify4t64
    - libnss3
    - libxss1 | libxss1t64
    - libxtst6 | libxtst6t64
    - xdg-utils
    - libatspi2.0-0 | libatspi2.0-0t64
    - libuuid1
  afterInstall: scripts/linux/after-install.sh
  afterRemove: scripts/linux/after-remove.sh