Skip to content
This repository was archived by the owner on Oct 9, 2026. It is now read-only.

Build diffr for Intel Macs - #40

Merged
thesiti92 merged 2 commits into
mainfrom
intel-mac
Sep 27, 2026
Merged

thesiti92 merged 2 commits into
mainfrom
intel-mac

Conversation

@thesiti92

Copy link
Copy Markdown
Contributor

Adds an x86_64-apple-darwin release target, so Whiteboard can ship an Intel Mac build (devdotfast/whiteboard#614).

  • release.yml: new build leg and Homebrew leg on macos-15-intel. The build is native, so no --target flags.
  • release.py: the formula now uses on_arm/on_intel blocks, and checksums are looked up by target name instead of by position.
  • fetch.mjs/pin.mjs: map darwin-x64 to the new target.

version.test.ts still expects two pins. It moves to three in the pin commit after 0.1.4 is published. Changing it now would turn CI red until then.

GitHub supports Intel macOS runners only until about August 2027. After that, this leg has to cross-build from arm64.

@thesiti92
thesiti92 merged commit 5f529d4 into main Sep 27, 2026
44 checks passed
thesiti92 added a commit to devdotfast/whiteboard that referenced this pull request Sep 28, 2026
Adds a signed, notarized, auto-updating Whiteboard build for Intel Macs
(`darwin-x64`), alongside the Apple silicon build. Closes #614.

**How it builds**
- The Linux payload compile now produces curated extensions for both
chips, in one `darwin-payload.tar.zst`.
- The macOS `build` job is a matrix. `darwin-arm64` runs on
`macos-15-xlarge` with a 90-minute timeout. `darwin-x64` runs natively
on `macos-15-large`, the Intel larger runner, with a 150-minute timeout.
- The scripts derive the target from the host arch (`darwin-arch.sh`,
`darwinTarget()`) instead of hardcoding `darwin-arm64`.
- R2 uploads move to a new `publish-macos` job, which needs the whole
matrix.
- Payloads for both chips upload first, and both `latest.json` files
last.
  - If either chip fails, nothing publishes.
  - `finalize-release` and `tag-preview` now wait on `publish-macos`.
- New live checks confirm the Intel feed (clients send plain `darwin`)
and the Intel DMG alias.

**Wrong-arch guard**
- `validate-release-artifacts.mjs` now runs `lipo -archs` on the app
executable, the bundled diffr, and every native executable declared by a
bundled curated extension (currently ty and ruff).
- Codesign would accept an arm64 binary inside the Intel app. This check
catches it before publishing.

**Dependencies (already live)**
- diffr 0.1.4 ships `x86_64-apple-darwin` (devdotfast/diffr#40, #41,
#42), and this PR bumps to it.
- The update Worker maps the Intel client's `darwin` feed id to
`update/<channel>/darwin-x64/latest.json` (Fix-Fast/dev#1102). It is
deployed, and it answers 204 until the first Intel release.
- The install-page Intel row is Fix-Fast/dev#1103. It is held until the
Intel DMG links return 200.

**Worth knowing**
- **An Intel build under Rosetta on Apple silicon** asks for `darwin`,
so it keeps getting Intel updates. This is correct; please don't "fix"
it.
- **The C# extension's `darwin-x64` VSIX from upstream ships an
arm64-only `netcoredbg`.** C# debugging won't work on Intel Macs. It is
not arch-asserted, on purpose.
- **GitHub keeps Intel macOS runners until about August 2027.** After
that, the Intel leg has to cross-build on arm64.
- **`publish-linux` and `publish-windows` now run in parallel with
`publish-macos`.** Before, they started only after the Mac publish.
- **Removed change-detector assertions** (per AGENTS.md), each in
`curated-extensions.test.mjs`, where it grepped script source text:
  - the `$DARWIN_PAYLOAD_CURATED_EXTENSIONS_PATH` ordering check;
  - `--target=darwin-arm64` in `compile-darwin-payload.sh`;
- `target: "darwin-arm64"` in `validate-release-artifacts.mjs`, and
`REVIEW_DESKTOP_CURATED_EXTENSION_TARGET=darwin-arm64` in
`compile-darwin-payload.sh`.
  Tell me if any should be replaced with a behavioral test.
- **Tester artifacts:** the preview dry-run tester DMG artifact is now
`macos-darwin-arm64` / `macos-darwin-x64`, instead of
`review-desktop-preview-<v>-dmg`.

**Verification**
- `node --test apps/review-desktop/scripts/*.test.mjs` passes, apart
from the existing `yazl` baseline failure.
- `actionlint`, root lint and format are clean.
- All four new Intel VSIX pins were checked against Open VSX (three were
re-hashed independently). Materializing them yields x86_64 binaries.
- The Intel end-to-end proof is the dry-run preview dispatch from this
branch, on real Intel hardware.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants