feat: add macOS x86_64 (Intel) build support#571
feat: add macOS x86_64 (Intel) build support#571kalifun wants to merge 5 commits intoDimillian:mainfrom
Conversation
- Add matrix build for both aarch64 (macos-14) and x86_64 (macos-13) - Update dmg filename to use TARGET_ARCH variable - Add darwin-x86_64 platform to latest.json - Upload artifacts per-architecture and merge in release job
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e800104687
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
.github/workflows/release.yml
Outdated
| - runner: macos-15 | ||
| arch: x86_64 |
There was a problem hiding this comment.
Build the x86_64 macOS leg on an Intel runner
GitHub's hosted-runner reference maps macos-15 to arm64; the Intel label is macos-15-intel. Because the build and cargo build steps here never pass --target x86_64-apple-darwin, this matrix entry will still compile native arm64 binaries and then package them as x86_64, so the new Intel release artifacts will be mislabeled and unusable on Intel Macs.
Useful? React with 👍 / 👎.
.github/workflows/release.yml
Outdated
| "url": release_url("CodexMonitor.app.tar.gz"), | ||
| "signature": "${SIGNATURE}", | ||
| } | ||
| }, | ||
| "darwin-x86_64": { | ||
| "url": release_url("CodexMonitor.app.tar.gz"), |
There was a problem hiding this comment.
Publish separate macOS updater archives per architecture
Tauri's static updater JSON keys are architecture-specific (darwin-aarch64 vs darwin-x86_64), so they need different tarballs and signatures. Here both entries point to the same CodexMonitor.app.tar.gz(.sig), and the macOS jobs also upload those files under the same name, which means the release can only publish one updater bundle; one Mac architecture will always download the other architecture's update payload.
Useful? React with 👍 / 👎.
- Use macos-15-intel for x86_64 builds (true Intel runner) - Add architecture suffix to macOS updater bundles (tar.gz/sig) - Dynamically resolve per-architecture bundles in latest.json - Upload all tar.gz variants to release
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 61509a9893
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| cp "src-tauri/target/release/bundle/macos/Codex Monitor.app.tar.gz.sig" \ | ||
| release-artifacts/CodexMonitor.app.tar.gz.sig | ||
| release-artifacts/CodexMonitor_${TARGET_ARCH}.app.tar.gz.sig |
There was a problem hiding this comment.
Update the later latest.json step to the new macOS sig names
These renamed macOS updater signatures are now the only .app.tar.gz.sig files that get downloaded into release-artifacts, but the unchanged Build latest.json step still runs cat release-artifacts/CodexMonitor.app.tar.gz.sig under set -e. That cat will now fail on every release run before latest.json is generated, so the workflow never reaches gh release create.
Useful? React with 👍 / 👎.
.github/workflows/release.yml
Outdated
| platforms = {} | ||
|
|
||
| # Find macOS updater bundles for each architecture | ||
| macos_tarballs = list(artifacts_dir.glob("CodexMonitor_*_*.app.tar.gz")) |
There was a problem hiding this comment.
Match the Apple Silicon updater tarball in latest.json
This glob only matches tarballs with a second underscore after CodexMonitor_, so it finds CodexMonitor_x86_64.app.tar.gz but skips CodexMonitor_aarch64.app.tar.gz. Once the earlier release-step failure is fixed, the loop below will therefore emit darwin-x86_64 only, and Apple Silicon clients will disappear from latest.json and stop receiving updater offers.
Useful? React with 👍 / 👎.
| pattern: macos-artifacts-* | ||
| path: release-artifacts | ||
| merge-multiple: true |
There was a problem hiding this comment.
Stop merging the two macOS zip bundles into one filename
Both macOS matrix legs still upload a file named release-artifacts/CodexMonitor.zip, and actions/download-artifact v4 documents that merge-multiple: true resolves same-name collisions with “last writer wins”. That means one architecture's zip overwrites the other here, and the release job later publishes a single unlabeled CodexMonitor.zip whose CPU architecture depends on download order.
Useful? React with 👍 / 👎.
- Fix glob pattern to match all macOS tarballs (remove extra underscore) - Add architecture suffix to zip files to avoid merge conflicts - Remove obsolete SIGNATURE variable - Add zips array for release upload
Add Intel Mac support to release workflow
I tried to write a test compilation file(test-build.yml). At present, I have passed, so I have deleted the file.