diff --git a/apps/stage-tamagotchi/electron-builder.config.ts b/apps/stage-tamagotchi/electron-builder.config.ts new file mode 100644 index 000000000..1390073aa --- /dev/null +++ b/apps/stage-tamagotchi/electron-builder.config.ts @@ -0,0 +1,90 @@ +/* eslint-disable no-template-curly-in-string */ + +import type { Configuration } from 'electron-builder' + +export default { + appId: 'ai.moeru.airi', + productName: 'AIRI', + directories: { + output: 'dist', + buildResources: 'build', + }, + files: [ + 'out/**', + 'resources/**', + 'package.json', + '!**/.vscode/*', + '!src/**/*', + '!**/node_modules/**/{CHANGELOG.md,README.md,README,readme.md,readme}', + '!**/node_modules/**/{.turbo,test,src,__tests__,tests,example,examples}', + 'node_modules/debug/src/**', + '!electron.vite.config.{js,ts,mjs,cjs}', + '!vite.config.{js,ts,mjs,cjs}', + '!uno.config.{js,ts,mjs,cjs}', + '!{.eslintcache,eslint.config.ts,.yaml,dev-app-update.yml,CHANGELOG.md,README.md}', + '!{.env,.env.*,.npmrc,pnpm-lock.yaml}', + '!{tsconfig.json}', + ], + asar: true, + asarUnpack: [ + '**/*.node', + ], + extraMetadata: { + name: 'ai.moeru.airi', + main: 'out/main/index.js', + homepage: 'https://airi.moeru.ai/docs/', + repository: 'https://github.com/moeru-ai/airi', + license: 'MIT', + }, + win: { + executableName: 'airi', + }, + nsis: { + artifactName: '${productName}-${version}-windows-${arch}-setup.${ext}', + shortcutName: '${productName}', + uninstallDisplayName: '${productName}', + createDesktopShortcut: 'always', + deleteAppDataOnUninstall: true, + oneClick: false, + allowToChangeInstallationDirectory: true, + }, + mac: { + entitlementsInherit: 'build/entitlements.mac.plist', + extendInfo: [ + { + NSMicrophoneUsageDescription: 'AIRI requires microphone access for voice interaction', + }, + { + NSCameraUsageDescription: 'AIRI requires camera access for vision understanding', + }, + ], + notarize: false, + hardenedRuntime: false, + executableName: 'airi', + icon: 'icon.icon', + }, + dmg: { + artifactName: '${productName}-${version}-darwin-${arch}.${ext}', + }, + linux: { + target: [ + 'deb', + 'rpm', + ], + category: 'Utility', + synopsis: 'AI VTuber/Waifu chatbot app inspired by Neuro-sama.', + description: 'AIRI is an AI VTuber/Waifu chatbot supporting Live2D/VRM avatars, featuring human-like interactions and modular stage-based rendering.', + executableName: 'airi', + artifactName: '${productName}-${version}-linux-${arch}.${ext}', + icon: 'build/icons/icon.png', + }, + appImage: { + artifactName: '${productName}-${version}-linux-${arch}.${ext}', + }, + npmRebuild: false, + publish: { + provider: 'github', + owner: 'moeru-ai', + repo: 'airi', + }, +} as Configuration diff --git a/apps/stage-tamagotchi/package.json b/apps/stage-tamagotchi/package.json index 9fd6cac92..5c90f7855 100644 --- a/apps/stage-tamagotchi/package.json +++ b/apps/stage-tamagotchi/package.json @@ -179,6 +179,6 @@ }, "build": { "appId": "ai.moeru.airi", - "extends": "electron-builder.yml" + "extends": "electron-builder.config.ts" } } diff --git a/cspell.config.yaml b/cspell.config.yaml index 19bd0e30b..eb329e5e2 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -16,6 +16,7 @@ words: - animejs - APNG - Armbruster + - asar - astrojs - Attributify - attw @@ -309,6 +310,7 @@ words: - vtuber - vueuse - waapi + - Waifu - warpdrive - Warudo - wavefile