Skip to content

ci(desktop) [DO NOT MERGE]: drop x64 darwin build to dodge parallel-arch DMG bugs#731

Merged
softmarshmallow merged 2 commits into
mainfrom
worktree-arm64-only-darwin-build
May 20, 2026
Merged

ci(desktop) [DO NOT MERGE]: drop x64 darwin build to dodge parallel-arch DMG bugs#731
softmarshmallow merged 2 commits into
mainfrom
worktree-arm64-only-darwin-build

Conversation

@softmarshmallow
Copy link
Copy Markdown
Member

@softmarshmallow softmarshmallow commented May 20, 2026

This PR is for CI verification only — do NOT merge as-is (contains a test version bump). Once verified, the workflow change will land in a clean PR.

Hypothesis

Both DMG failure modes we've seen are parallel-arch races:

Failure Hit on
hdiutil convert failed - Resource temporarily unavailable (EAGAIN, filesystem contention) runs #26167995147, #26169048761
Target already exists from appdmg (electron/forge#3517, known unfixed) run #26170073770

PR #730's sync hook mitigated the EAGAIN but exposed the next layer. With only one arch, neither race can fire.

Change

- run: pnpm run publish:prerelease --arch="x64,arm64"
+ run: pnpm run publish:prerelease --arch="arm64"

That's it. DMG maker stays. Macos-26 runner stays.

Tradeoff

Intel Mac users can't install or autoupdate. In 2026, Apple-Silicon share dominates and our audience for a 0.x.x technical-preview canvas tool skews heavily to that cohort. We can add Intel back later when telemetry shows demand — either as a universal binary or as a serialized second pnpm make invocation that avoids the parallel race.

Verify

gh workflow run realease-desktop-app.yml -R gridaco/grida \
  --ref worktree-arm64-only-darwin-build -f prerelease=true

Lands on a clearly-test prerelease tag 0.0.2-arm64-test.1. update.electronjs.org skips prereleases by default, so existing users aren't affected.

If the macOS job completes through to publish:

  • Close this PR
  • Open a clean PR with just the workflow change (no test version bump)
  • Delete the 0.0.2-arm64-test.1 release + tag

If it fails:

  • Fall back to dropping MakerDMG

Summary by CodeRabbit

  • Chores
    • Desktop app release now publishes arm64 architecture exclusively
    • Desktop app version updated to 0.0.2-arm64-test.1

Review Change Stack

Two distinct failure modes when building --arch="x64,arm64" together,
both surface only with multi-arch parallel builds:

1. `hdiutil convert failed - Resource temporarily unavailable`
   (EAGAIN from contention on the runner's filesystem)
2. `Target already exists` from appdmg
   (known unfixed forge bug — electron/forge#3517: maker-dmg fails
    when run in parallel)

The sync hook from PR #730 mitigated #1 but exposed #2. With one arch
there is no parallel race, so both go away. DMG stays.

Tradeoff: Intel Mac users can't install or autoupdate. Apple Silicon
share dominates in 2026, so the cost is small for a 0.x.x technical
preview. We can add Intel back later (universal binary or serialized
arch builds) when there's actual demand.

Also bump desktop/package.json version to 0.0.2-arm64-test.1 for the
CI verification run so this test prerelease lands on its own tag and
doesn't touch 0.0.1 production releases. Will be reset before final
merge.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

7 Skipped Deployments
Project Deployment Actions Updated (UTC)
backgrounds Ignored Ignored Preview May 20, 2026 3:31pm
blog Ignored Ignored Preview May 20, 2026 3:31pm
code Ignored Ignored May 20, 2026 3:31pm
docs Ignored Ignored Preview May 20, 2026 3:31pm
grida Ignored Ignored Preview May 20, 2026 3:31pm
legacy Ignored Ignored May 20, 2026 3:31pm
viewer Ignored Ignored Preview May 20, 2026 3:31pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 20, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d167e1f6-00f4-4e28-9128-9f85437caca7

📥 Commits

Reviewing files that changed from the base of the PR and between 233a926 and fc39358.

📒 Files selected for processing (2)
  • .github/workflows/realease-desktop-app.yml
  • desktop/package.json

Walkthrough

Desktop app release workflow and version updated. The macOS publish step now targets ARM64 architecture only instead of x64,arm64, and the package version is bumped to reflect this test release.

Changes

ARM64-only Desktop Release

Layer / File(s) Summary
ARM64 publish configuration and version bump
.github/workflows/realease-desktop-app.yml, desktop/package.json
macOS publish step restricted to arm64 architecture only, and package version incremented from 0.0.1 to 0.0.2-arm64-test.1.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • gridaco/grida#726: Both PRs modify the macOS desktop release workflow configuration; PR #726 adds signing/notarization gating and Apple Silicon build path while this PR narrows publish output to ARM64 only.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: dropping x64 from macOS builds to resolve parallel-architecture DMG bugs, which aligns with the workflow modification from x64,arm64 to arm64-only.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch worktree-arm64-only-darwin-build

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@softmarshmallow softmarshmallow merged commit 88ef692 into main May 20, 2026
6 of 7 checks passed
@softmarshmallow softmarshmallow deleted the worktree-arm64-only-darwin-build branch May 20, 2026 15:29
pull Bot pushed a commit to A-Archives-and-Forks/grida that referenced this pull request May 20, 2026
…elease notes

Two related cleanups now that macOS builds are arm64-only (PR gridaco#731):

**1. Downloads page — remove no-longer-built macOS variants.**

- `editor/app/(www)/(downloads)/downloads/downloads.ts`
  - Drop `mac_dmg_x64` and `mac_dmg_universal` from the DownloadLinks
    interface and from `getLinks` / `getLinks_v001`.
  - Drop `"universal"` from the Arch union; tighten the mac distro
    config to arm64 only.
  - Switch the per-platform default for `"mac"` from
    `mac_dmg_universal` → `mac_dmg_arm64`.
- `editor/app/(www)/(downloads)/downloads/page.tsx`
  - Remove the "macOS (Universal)" and "macOS (Intel-based Macs)"
    buttons. Keep "macOS (Apple Silicon)".

The v0.0.1 release still has the legacy universal/x64 dmg assets so
existing direct links keep working; the page just doesn't surface
them. New releases won't include those artifacts.

**2. Release notes templating.**

GitHub Releases have no built-in body template, and forge's
publisher-github doesn't expose `releaseNotes`. New releases land
with an empty body unless we templatize it ourselves.

- New file `.github/release-notes/desktop.md` — the canonical body
  for desktop releases, with a `{{version}}` placeholder. Lives in
  `.github/` because it's release-process content, not desktop app
  source.
- New step `Update release notes from template` in the macOS row of
  the release workflow. After publish creates the tag, the step
  interpolates the template and applies it via `gh release edit`.
  Runs once per release (gated to the macOS matrix row).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant