Files
2026-07-13 13:20:22 +08:00

226 lines
7.2 KiB
YAML

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