Repository navigation
Conversation
Build GhosttyKit.xcframework with -Dxcframework-target=universal instead of native/unspecified, and set ONLY_ACTIVE_ARCH=NO for the main app Release configuration so Xcode produces a universal (arm64 + x86_64) binary. Closes manaflow-ai#293
|
@pmochine is attempting to deploy a commit to the Manaflow Team on Vercel. A member of the Team first needs to authorize it. |
✅ Build verified on Apple SiliconI built this locally and can confirm: Both the app binary and the embedded CLI are universal. The app launches and runs fine on Apple Silicon. 🧪 Test build available for Intel Mac testersI uploaded an unsigned test build for anyone who wants to verify on Intel hardware: 👉 Download cmux-universal-unsigned.zip To install:
|
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 104af83c17
ℹ️ 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".
| if [ ! -d "GhosttyKit.xcframework" ]; then | ||
| echo "Building GhosttyKit..." | ||
| cd ghostty && zig build -Demit-xcframework=true -Demit-macos-app=false -Dxcframework-target=native -Doptimize=ReleaseFast && cd .. | ||
| cd ghostty && zig build -Demit-xcframework=true -Demit-macos-app=false -Dxcframework-target=universal -Doptimize=ReleaseFast && cd .. |
There was a problem hiding this comment.
Rebuild GhosttyKit for universal release builds
This now requests a universal GhosttyKit build, but build-sign-upload.sh still skips the build whenever GhosttyKit.xcframework already exists (the common case after scripts/setup.sh, which builds/seeds a native-arch framework). With this commit also setting app Release builds to ONLY_ACTIVE_ARCH=NO, local release builds will attempt x86_64 and fail to link against an existing arm64-only GhosttyKit slice. Please force a rebuild (or validate slices) in release packaging instead of reusing any preexisting xcframework directory.
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 104af83c17
ℹ️ 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".
| if [ ! -d "GhosttyKit.xcframework" ]; then | ||
| echo "Building GhosttyKit..." | ||
| cd ghostty && zig build -Demit-xcframework=true -Demit-macos-app=false -Dxcframework-target=native -Doptimize=ReleaseFast && cd .. | ||
| cd ghostty && zig build -Demit-xcframework=true -Demit-macos-app=false -Dxcframework-target=universal -Doptimize=ReleaseFast && cd .. |
There was a problem hiding this comment.
Rebuild GhosttyKit when producing universal release builds
With Release now set to build all architectures (ONLY_ACTIVE_ARCH = NO in GhosttyTabs.xcodeproj/project.pbxproj), this conditional skip can leave a previously built native-only GhosttyKit.xcframework in place, which is common after scripts/setup.sh (it builds GhosttyKit without a universal target). In that state, ./scripts/build-sign-upload.sh can fail during Release xcodebuild or otherwise miss the intended universal dependency slices; the script should verify the existing xcframework has both arm64 and x86_64 slices (or always rebuild universal for release packaging).
Useful? React with 👍 / 👎.
The release script previously skipped the GhosttyKit build whenever the xcframework directory existed, even if it only contained a native (arm64-only) build from setup.sh. With ONLY_ACTIVE_ARCH=NO the Release build now needs both slices, so check for the macos-arm64_x86_64 directory before reusing the cached framework. Addresses review feedback from Codex.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review infoConfiguration used: defaults Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughUpdates CI and build tooling to produce universal (arm64 + x86_64) xcframeworks: workflow flags changed, Xcode Release configs set to build non-only-active-arch, and the build script now detects missing x86_64 slices and triggers a universal rebuild when needed. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@GhosttyTabs.xcodeproj/project.pbxproj`:
- Line 799: The cmux-cli Release build is inheriting the project-level config
(A5001081) which lacks ONLY_ACTIVE_ARCH, causing cmux-cli (target
B9000009A1B2C3D4E5F60719) to build only the active arch; add ONLY_ACTIVE_ARCH =
NO; to the cmux-cli Release configuration block (the cmux-cli target's Release
config) so it matches GhosttyTabs' Release setting and produces a universal
binary.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.github/workflows/nightly.yml.github/workflows/release.ymlGhosttyTabs.xcodeproj/project.pbxprojscripts/build-sign-upload.sh
Addressed Codex review feedbackPushed a follow-up commit ( The problem: The fix: Check for the # Before: blind existence check
if [ ! -d "GhosttyKit.xcframework" ]; then
# After: also checks for universal slices
if [ ! -d "GhosttyKit.xcframework" ]; then
NEED_BUILD="true"
elif [ ! -d "GhosttyKit.xcframework/macos-arm64_x86_64" ]; then
echo "GhosttyKit.xcframework exists but is not universal, rebuilding..."
NEED_BUILD="true"
fi |
Explicitly set the CLI target to build for all architectures in Release, rather than relying on Xcode defaults. Ensures the embedded CLI binary is always universal. Addresses CodeRabbit review feedback.
Addressed CodeRabbit feedbackPushed Our build already produced a universal CLI binary (verified with |
|
I tested this and it works great on my Intel Silicon Mac! |
|
cmux-reconcile: close-candidate Usefulness verdict: Close the initial universal-build proposal as superseded. The release workflow already builds Reviewed patch head: Older issue/PR tracking index — remaining scope and competing implementations are recorded there. |
|
Agreed, this can close. The universal build landed in #2287, which sets For anyone who reaches this from #293 later, the short history:
Thanks @noahvandal for testing on real Intel hardware, and thanks for the reconciliation pass. Closing. |
Summary
Fixes #293 — cmux currently ships as arm64-only, preventing installation on Intel Macs.
This PR makes 3 minimal changes to produce a Universal Binary (arm64 + x86_64):
-Dxcframework-target=universalinstead ofnative/unspecified in all release & nightly build pathsONLY_ACTIVE_ARCH = NOfor the main app Release configuration so Xcode compiles Swift code for both architecturesFiles changed (4 files, 4 lines)
scripts/build-sign-upload.sh:64-Dxcframework-target=native→universal.github/workflows/release.yml:117-Dxcframework-target=universal(was missing).github/workflows/nightly.yml:123-Dxcframework-target=native→universalGhosttyTabs.xcodeproj/project.pbxproj:799ONLY_ACTIVE_ARCH = YES→NO(Release config only)What was NOT changed (by design)
scripts/setup.sh: Keeps no explicit xcframework-target — builds for the developer's native architecture (works on both Intel and Apple Silicon for local dev)ONLY_ACTIVE_ARCH = YESfor fast dev buildsONLY_ACTIVE_ARCH = YESWhy this works
-Dxcframework-target=universal, which cross-compiles both arm64 and x86_64 slices into the xcframework (Ghostty itself ships as a Universal Binary)Verification
After building, the output can be verified with:
Test plan
Contents/Resources/bin/cmux) is also universalSummary by CodeRabbit