@@ -72,19 +72,35 @@ Releases are driven by **conventional commits** via
7272 lockstep across ` app/package.json ` , ` app/src-tauri/Cargo.toml ` , and
7373 ` tauri.conf.json ` — ** don't hand-edit these** ) and updates the changelog.
74743 . Merging the release PR creates the tag + GitHub release; the build matrix then
75- attaches the bundles + ` latest.json ` to it.
75+ builds, signs, and attaches each platform's bundles, and a final job aggregates a
76+ signed ` latest.json ` onto the release.
77+
78+ The matrix builds Linux (` deb ` + ` AppImage ` ), Windows (NSIS), and ** both** macOS
79+ arches — Apple Silicon natively and Intel ** cross-compiled on the arm64 runner**
80+ (` --target x86_64-apple-darwin ` , with ` vendor-node.sh TARGET_TRIPLE=… ` fetching the
81+ matching x64 Node sidecar), since GitHub's Intel ` macos-13 ` runners are deprecated
82+ and queue-starved. The tauri CLI is invoked directly (` tauri build ` ), not via
83+ ` tauri-action ` , which assumes an npm/pnpm script runner rather than ` vp ` .
7684
7785Config: ` release-please-config.json ` + ` .release-please-manifest.json ` ; workflow:
78- ` .github/workflows/release.yml ` (release-please job → gated build job, same workflow
79- so no PAT is needed). ` workflow_dispatch ` runs a build-only smoke test.
86+ ` .github/workflows/release.yml ` (release-please job → gated build matrix →
87+ ` latest-json ` aggregate job, all one workflow so no PAT is needed). Manifest mode
88+ exposes per-package outputs (` app--tag_name ` ) plus a top-level ` releases_created ` ,
89+ which the build gate reads. ` workflow_dispatch ` with a ` tag ` input rebuilds an
90+ existing release's assets (recovery / fill-in) by building ` main ` ; without a tag
91+ it's a build-only smoke test.
8092
8193## Self-update
8294
8395The app updates itself from GitHub Releases.
8496
85- - The release build (via ` tauri-action ` , with the signing key from CI secrets)
86- produces ** signed** updater artifacts and an aggregated ` latest.json ` listing each
87- platform's artifact URL + signature + the changelog (` notes ` ).
97+ - The release build signs the updater artifacts with the CI key
98+ (` createUpdaterArtifacts ` emits a ` .sig ` per platform), and the ` latest-json ` job
99+ aggregates each platform's ` {signature, url} ` into one ` latest.json ` — listing each
100+ artifact's URL + signature, with the changelog as ` notes ` — attached to the release.
101+ The updater artifact is picked explicitly per platform (AppImage / ` .app.tar.gz ` /
102+ ` -setup.exe ` ), and the macOS ` .app.tar.gz ` is arch-suffixed so the two Mac builds
103+ don't collide.
88104- On launch, a bundled app checks ` releases/latest/download/latest.json ` ; if a newer
89105 version exists it shows a native ** "Update available"** dialog with the version and
90106 changelog, and ** Install & Restart** downloads, verifies the signature against the
0 commit comments