# electron-builder config (design § "桌面端原型 · 打包与更新", milestone M3). # # The app directory is the pnpm-deploy staging tree assembled by scripts/stage.mjs — # a portable, self-contained node_modules (workspace packages materialized) plus the # shell bundle and the server's web-dist. # # asar is off on purpose: the shell forks the server as a child process, the skill # library reads its .md files from disk, and agent commands spawn real shells — plain # files sidestep every asar edge (fork-from-archive, unpacked-tree resolution splits) # at the cost of some inodes. # # M3 ships unsigned artifacts: macOS signing/notarization and Windows code signing are # milestone M4, together with electron-updater. appId: com.prismshadow.penguinharness productName: PenguinHarness directories: app: stage/app output: stage/out asar: false # The staged tree is complete and has no native modules; a rebuild would only fail # against the pruned package.json. npmRebuild: false nodeGypRebuild: false mac: category: public.app-category.developer-tools # No Developer ID yet (M4): identity null skips codesign instead of failing. identity: null # Version-less artifact names, following the CLI bundles (penguin-darwin-arm64.tar.gz): # the version lives in the Release tag and SHA256SUMS.desktop, so the download page and # the OSS mirror manifest can address every installer by a stable name — and GitHub's # `releases/latest/download/` stays a working static link across releases. artifactName: penguin-desktop-darwin-${arch}.${ext} target: - target: dmg arch: [arm64, x64] - target: zip arch: [arm64, x64] win: artifactName: penguin-desktop-win32-${arch}.${ext} target: - target: nsis arch: [x64] # MinGit, downloaded by the CI job into stage/minigit (empty for local non-Windows # builds): lands under resources/git, and the shell advertises git/usr/bin/sh.exe as # PENGUIN_BUNDLED_SHELL so the agent shell behaves like the npm-installed package. extraResources: - from: stage/minigit to: git nsis: oneClick: false allowToChangeInstallationDirectory: true linux: # The scoped package name is not a valid executable file name. executableName: penguin-harness # ${arch} expands to each Linux target's own convention — x86_64 for AppImage, amd64 # for deb — so the published names are penguin-desktop-linux-x86_64.AppImage and # penguin-desktop-linux-amd64.deb; the OSS mirror manifest and the landing download # page name them accordingly. artifactName: penguin-desktop-linux-${arch}.${ext} category: Development maintainer: Prism Shadow target: - target: AppImage arch: [x64] - target: deb arch: [x64]