appId: com.aionui.app productName: AionUi executableName: AionUi copyright: Copyright © 2024 AionUi protocols: - name: AionUi Protocol schemes: - aionui asar: smartUnpack: true directories: app: . output: out buildResources: resources files: # electron-vite build output (main process + preload + renderer) - out/main/**/* - out/preload/**/* - out/renderer/**/* # Static resources — use explicit directory inclusion to prevent resource loss - public/**/* - package.json # Native modules and their runtime dependencies - node_modules/better-sqlite3/**/* - node_modules/bcrypt/**/* - node_modules/node-pty/**/* - node_modules/@mapbox/**/* - node_modules/detect-libc/**/* - node_modules/prebuild-install/**/* - node_modules/node-gyp-build/**/* - node_modules/bindings/**/* # CLI dependencies (needed by nested jackspeak/glob) - node_modules/@isaacs/cliui/**/* - node_modules/ansi-regex/**/* - node_modules/ansi-styles/**/* - node_modules/strip-ansi/**/* - node_modules/wrap-ansi/**/* - node_modules/string-width/**/* - node_modules/eastasianwidth/**/* - node_modules/emoji-regex/**/* # open library - needs to be external for Windows asar compatibility - node_modules/open/**/* - node_modules/default-browser/**/* - node_modules/default-browser-id/**/* - node_modules/run-applescript/**/* - node_modules/bundle-name/**/* # tree-sitter WASM dependencies - node_modules/web-tree-sitter/**/* - node_modules/tree-sitter-bash/**/* # CRITICAL: Exclude ALL tree-sitter native binaries to prevent signing issues - '!**/node_modules/tree-sitter-*/prebuilds/**' - '!**/node_modules/tree-sitter-*/build/**' - '!**/node_modules/tree-sitter-*/src/**' - '!**/node_modules/tree-sitter-*/**/*.node' - '!**/node_modules/tree-sitter-*/**/*.obj' - '!**/node_modules/tree-sitter-*/**/*.o' - '!**/node_modules/tree-sitter-*/**/*.cc' - '!**/node_modules/tree-sitter-*/**/*.c' # Exclude dev/test files - '!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}' - '!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}' - '!**/node_modules/*/{*.test.js,*.spec.js,*.test.ts,*.spec.ts}' # Defensive: exclude sibling packages from desktop bundle - '!packages/web-host/**' - '!packages/web-cli/**' - '!packages/shared-scripts/**' - '!packages/desktop/src/**' - '!**/node_modules/*.d.ts' - '!**/node_modules/.bin' - '!**/node_modules/*/{docs,documentation,doc}' # Exclude system files - '!**/{.DS_Store,.git,.gitignore,.gitattributes}' - '!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}' - '!**/{appveyor.yml,.travis.yml,circle.yml}' - '!**/{npm-debug.log,yarn.lock,.yarn-metadata.json,yarn-error.log}' # Exclude large packages - '!**/node_modules/{@img,@emnapi}/**' - '!**/node_modules/@img/sharp-*/**' - '!**/node_modules/@anthropic-ai/claude-code/vendor/**' - '!**/node_modules/@anthropic-ai/claude-agent-sdk/vendor/**' # Exclude JAR files and JNI libraries that cause notarization issues - '!**/*.jar' - '!**/*.jnilib' # Exclude all vendor directories to prevent unsigned binaries - '!**/node_modules/*/vendor/**' - '!**/node_modules/@*/*/vendor/**' # Re-include vendor dirs for native modules that need them (if any) - 'node_modules/better-sqlite3/vendor/**' - 'node_modules/bcrypt/vendor/**' - 'node_modules/node-pty/vendor/**' # Exclude vite source maps - '!**/*.map' # Exclude syntax highlighter languages (keep common ones) - '!**/out/**/react-syntax-highlighter_languages_highlight_*' - 'out/**/react-syntax-highlighter_languages_highlight_{javascript,typescript,python,java,cpp,c,html,css,json,xml,yaml,shell,bash,dockerfile,sql,markdown,go,rust,php}' # Ensure vendor chunks from manual splitting are included - 'out/renderer/**/vendor-*.js' # Remap viteStaticCopy output (out/main/static/) # to root-level directories inside the asar, so runtime path resolution stays simple. - from: out/main/static to: static extraResources: - from: public to: . - from: resources/app.png to: app.png # aioncore binary (pre-compiled per platform/arch, ships its own bun runtime) - from: resources/bundled-aioncore to: bundled-aioncore - from: resources/hub to: hub win: target: - nsis # - msi icon: resources/app.ico # Use the checked-in Windows icon resource for executable metadata/icon patching artifactName: ${productName}-${version}-${os}-${arch}.${ext} nsis: oneClick: false allowToChangeInstallationDirectory: true createDesktopShortcut: true createStartMenuShortcut: true shortcutName: ${productName} uninstallDisplayName: ${productName} artifactName: ${productName}-${version}-${os}-${arch}.${ext} differentialPackage: false mac: target: - dmg - zip icon: resources/app.icns artifactName: ${productName}-${version}-${os}-${arch}.${ext} category: public.app-category.productivity hardenedRuntime: true gatekeeperAssess: false entitlements: entitlements.plist entitlementsInherit: entitlements.plist dmg: # Use UDZO format which is more reliable on CI format: UDZO # Disable internet-enabled DMG to avoid network issues internetEnabled: false # Simple window settings to avoid layout issues window: width: 540 height: 380 # Contents positioning contents: - x: 140 y: 180 type: file - x: 400 y: 180 type: link path: /Applications afterPack: scripts/afterPack.js afterSign: scripts/afterSign.js linux: target: - deb icon: resources/app.png artifactName: ${productName}-${version}-${os}-${arch}.${ext} category: Utility maintainer: aionui vendor: aionui synopsis: ${description} description: ${description} desktop: entry: Name: AionUi Comment: ${description} Icon: AionUi Categories: Office;Utility; MimeType: x-scheme-handler/aionui; npmRebuild: false buildDependenciesFromSource: false nodeGypRebuild: false asarUnpack: - '**/node_modules/better-sqlite3/**/*' - '**/node_modules/bcrypt/**/*' - '**/node_modules/node-pty/**/*' - '**/node_modules/@mapbox/**/*' - '**/node_modules/detect-libc/**/*' - '**/node_modules/prebuild-install/**/*' - '**/node_modules/node-gyp-build/**/*' - '**/node_modules/bindings/**/*' # open library and dependencies - needed for Windows asar compatibility - '**/node_modules/open/**/*' - '**/node_modules/default-browser/**/*' - '**/node_modules/default-browser-id/**/*' - '**/node_modules/run-applescript/**/*' - '**/node_modules/bundle-name/**/*' # tree-sitter WASM files need to be unpacked for fs.readFile access - '**/node_modules/web-tree-sitter/**/*' - '**/node_modules/tree-sitter-bash/**/*' # Builtin MCP server scripts must be unpacked so external node processes can execute them - 'out/main/builtin-mcp-image-gen.js' - 'out/main/team-mcp-stdio.js' # Compression level: normal for faster builds, maximum for smallest size # Note: electron-builder doesn't support YAML template syntax for env vars # The build script sets ELECTRON_BUILDER_COMPRESSION_LEVEL env var which takes precedence compression: normal removePackageScripts: true electronDownload: cache: ${env.ELECTRON_CACHE} publish: provider: github owner: iOfficeAI repo: AionUi publishAutoUpdate: true releaseType: release