feat(installer): Add universal macOS binary support (Intel + Apple Silicon) - #51777
feat(installer): Add universal macOS binary support (Intel + Apple Silicon)#51777w-up wants to merge 1 commit into
Conversation
…licon) **Problem:** Official Hermes Desktop DMG is arm64-only, preventing Intel Mac users from installing via the GUI installer. Website claims "macOS 12+" support but product doesn't deliver. **Solution:** - Add GitHub Actions workflow to build universal macOS DMG (x86_64 + arm64) - Raise minimumSystemVersion to 12.0 (Monterey) to match documented support - Document universal binary support and build instructions **Changes:** - New: .github/workflows/build-desktop-installer.yml (universal DMG CI) - New: apps/bootstrap-installer/README.md (build docs + architecture notes) - Modified: apps/bootstrap-installer/src-tauri/tauri.conf.json (11.0 → 12.0) - Modified: website/docs/getting-started/installation.md (explicit Intel support note) **Verification:** Locally built and verified universal DMG on Intel Mac (x86_64): ``` lipo -info Hermes-Setup Architectures in the fat file: ... are: x86_64 arm64 ``` **Impact:** Universal binary size: ~12 MB (vs 7.7 MB arm64-only). Standard Apple-recommended distribution model. Closes #<issue> (if one exists)
teknium1
left a comment
There was a problem hiding this comment.
Thanks for tackling a real Intel-Mac distribution request; the linked reports #42928 and #60054 confirm that users need a supported official path.
Problems
- Current main still declares Intel macOS unsupported at
website/docs/getting-started/platform-support.md:46; this needs a maintainer support-policy decision before the docs can claim universal support. - The workflow only triggers on
installer-v*(.github/workflows/build-desktop-installer.yml:17-19), while normal releases use CalVerv20*tags (.github/workflows/upload_to_pypi.yml:3-9), so ordinary releases would not publish this artifact. - External actions are floating tags (
build-desktop-installer.yml:28,31,37,60,68), contrary to the SHA-pinning policy inAGENTS.md:569. upload_releasecan publish from a manually dispatched branch because line 67 does not enforce a tag.
Suggested changes
- Confirm and document the Intel support decision in the platform matrix.
- Integrate this build into the actual CalVer release path, enforce tag-only publication, and SHA-pin every action.
- Retain macOS 11 support unless a separate compatibility decision approves
tauri.conf.json's 12.0 minimum.
Automated hermes-sweeper review.
| build-macos-universal: | ||
| name: Build Universal macOS DMG | ||
| runs-on: macos-latest | ||
|
|
There was a problem hiding this comment.
This trigger is outside the current product release convention: .github/workflows/upload_to_pypi.yml:3-9 publishes CalVer v20* tags. Please wire this into the authoritative release path (or establish the separate installer-release lifecycle), otherwise ordinary releases will never produce the universal installer.
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '22' | ||
| cache: 'npm' |
There was a problem hiding this comment.
Repository policy requires every third-party GitHub Action to use an immutable full commit SHA plus a version comment (AGENTS.md:569). Please pin this and the other new external actions in this workflow rather than using mutable tags.
| files: apps/bootstrap-installer/src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg | ||
| draft: true | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
There was a problem hiding this comment.
The manual upload_release path can satisfy this condition from an arbitrary branch, despite the input saying a tag is required. Enforce github.ref_type == 'tag' and bind publication to that tag before creating or uploading a release.
| }, | ||
| "macOS": { | ||
| "minimumSystemVersion": "11.0", | ||
| "minimumSystemVersion": "12.0", |
There was a problem hiding this comment.
This drops macOS 11 compatibility for existing Apple-Silicon users. Current main does not document a macOS 12 minimum; please keep 11.0 unless a separately approved platform-support decision changes the compatibility contract.
|
Thanks for the follow-up. I am parking this implementation and closing the PR in favor of #37762, which is the narrower and more actively maintained universal-installer path. #37762 now has SHA-pinned actions, explicit More importantly, official Intel macOS support is still listed as unsupported in the platform matrix and remains a maintainer policy decision ( Closing as superseded by #37762. Thank you @RobbieMcKinstry for checking in. |
Problem
Official Hermes Desktop DMG (
Hermes-Setup.dmg) is arm64-only, preventing Intel Mac users from installing via the GUI installer. The website claims "macOS 12+" support but the product doesn't deliver on Intel machines.Current behavior:
Non-fat file: arm64Root cause:
apps/bootstrap-installer(Tauri 2.x) builds for host architecture only by default. Upstream build machines are ARM Macs → arm64-only DMG.Solution
Build a universal macOS binary containing both x86_64 and arm64 in a single DMG — the Apple-recommended distribution model for cross-architecture compatibility.
Changes
New GitHub Actions workflow (
.github/workflows/build-desktop-installer.yml)installer-v*tags or manual dispatchlipo -info)New README (
apps/bootstrap-installer/README.md)Raise minimum macOS version (
tauri.conf.json: 11.0 → 12.0)Document Intel support (
website/docs/getting-started/installation.md)Verification
Local build on Intel Mac (x86_64):
DMG size:
Impact
✅ Intel Mac users can now install Hermes Desktop via the official DMG
✅ Single download for all Mac users (no "Which Mac do I have?" confusion)
✅ Aligns product with website promise ("macOS 12+")
✅ Apple-recommended distribution model (Building a Universal macOS Binary)
Checklist
Related