ci(desktop): restore macOS Intel (x64) builds via native dual-runner (#947) - #953
Conversation
…947) macOS shipped arm64-only since #731, which fled the maker-dmg parallel-arch race (electron/forge#3517 — hdiutil EAGAIN + appdmg "Target already exists", fixed only in Forge 8, still alpha). A paying Intel-Mac customer is now blocked. Bring x64 back with the one shape that sidesteps the race instead of suppressing it: one arch per native runner. Workflow (.github/workflows/realease-desktop-app.yml): - Add a `macos-intel` matrix row (macos-15-intel, x64) beside `macos-apple-silicon` (macos-26, arm64), each carrying a `mac_arch` field. Single-arch per runner → neither DMG-race failure mode can occur, and pnpm resolves each arch's per-platform prebuild (@parcel/watcher-darwin-<arch>) natively — a cross-packaged x64 app would silently miss it (the bundle oracle tolerates missing optionals, #805). - Generalize the three mac-gated steps to a `matrix.os.mac_arch` truthiness check; publish is arch-parameterized `--arch="${{ matrix.os.mac_arch }}"`. - macos-15-intel is GitHub's last x86_64 image, retired Aug 2027 (actions/runner-images#13045); comments anchor the Forge 8 GA exit (electron/forge#4082). Consumer surfaces: - downloads.ts / page.tsx: restore mac_dmg_x64 (#732 revert) as `string | null` + a conditionally-rendered Intel button — nullable so the editor deploying before the first x64 release doesn't throw and degrade all platforms to the static v0.0.1 fallback. - release-notes template: add darwin-x64 dmg + zip rows, drop the arm64-only footnote. - desktop-release.md runbook: four approvals, per-arch feed check, and a pinned one-arch-per-runner constraint. No forge.config.ts / desktop/src changes needed (node-pty ships both darwin prebuilds, sandbox-runtime vendors both arches, update-electron-app's feed is already darwin-${process.arch}).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughThe macOS desktop release workflow's build matrix is split into per-architecture rows (arm64, x64) using a new ChangesmacOS Intel x64 build and download restoration
Estimated code review effort: 2 (Simple) | ~15 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9924025ad4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Closes #947.
What
macOS shipped arm64-only since #731, which fled the maker-dmg parallel-arch race (electron/forge#3517 —
hdiutilEAGAIN + appdmg "Target already exists", fixed only in Forge 8, still alpha). #732 then removed the Intel download buttons. A paying Intel-Mac customer is now blocked — this is the "add it back when there's demand" trigger the #731 commit anticipated.This brings x64 back with the one shape that sidesteps the race instead of suppressing it: one arch per native runner.
Why native dual-runner (not the issue's Option A/B)
synchook (243c04a30) was abandoned in ci(desktop) [DO NOT MERGE]: drop x64 darwin build to dodge parallel-arch DMG bugs #731, so thehdiutilEAGAIN mode has no working mitigation.@parcel/watcher-darwin-x64is a platform-gated optional dep; on an arm64 host pnpm installs only-darwin-arm64, and the packaged-bundle oracle deliberately tolerates missing optionals (feat(desktop): watch workspace files — refresh open editor + file tree on external change, with save-conflict guard (VSCode model) #805) — a cross-packaged x64 app would ship silently broken. A native Intel runner resolves it with zero config.forge.config.tschanges → DMG filenames stayGrida-{version}-{arch}.dmg, so the downloads restoration is a clean partial revert of chore(www,ci): drop unsupported mac builds from downloads, template release notes #732.macos-15-intelis GitHub's last x86_64 image, retired Aug 2027 ([macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions actions/runner-images#13045) — a natural sunset, documented inline; exit is Forge 8 GA (Forge 8 electron/forge#4082).Changes
macos-intel(macos-15-intel, x64) matrix row besidemacos-apple-silicon(macos-26, arm64); generalize the mac-gated steps tomatrix.os.mac_arch; arch-parameterize the publish.mac_dmg_x64asstring | null+ a conditionally-rendered Intel button (nullable so the editor deploying before the first x64 release doesn't degrade all platforms to the static v0.0.1 fallback).No
desktop/src/forge.config.tschanges (node-pty ships both darwin prebuilds, sandbox-runtime vendors both arches,update-electron-app's feed is alreadydarwin-${process.arch}).Verification
turbo typecheck --filter=editorclean;oxlintclean; all PR CI green.0.0.7-intel-test.1bump, not in this diff) via run28813086645. All four jobs green, includingbuild (macos-intel, macos-15-intel, x64). The release carried the correctly-named x64 assets, built + signed + notarized natively on the Intel runner:Grida-0.0.7-intel-test.1-x64.dmg(144.7 MB)Grida-darwin-x64-0.0.7-intel-test.1.zip(143.9 MB) — matchesupdate-electron-app'sdarwin-x64feed@parcel/watcher-darwin-x64resolved natively. Throwaway prerelease + tag + branch deleted after.Not in this PR
desktop/package.json) and the workflow dispatched — seedocs/contributing/desktop-release.md. Kept version-neutral on purpose so capability and release-cut stay separate commits.