Skip to content

feat: Intel Mac (x86_64) and macOS Ventura support#30

Closed
crichalchemist wants to merge 15 commits into
dedene:mainfrom
crichalchemist:feat/intel-mac-ventura-support
Closed

feat: Intel Mac (x86_64) and macOS Ventura support#30
crichalchemist wants to merge 15 commits into
dedene:mainfrom
crichalchemist:feat/intel-mac-ventura-support

Conversation

@crichalchemist

Copy link
Copy Markdown

Summary

Adds support for running Zentty on Intel Macs (x86_64) with macOS 13 Ventura.

Zentty currently builds and runs only on Apple Silicon with macOS 14+. This contribution extends that to the previous generation of hardware and the macOS release it shipped with.

Changes

Build system

  • Lower deployment target to macOS 13.0; add x86_64 to ARCHS for universal binary output
  • Vendor FuzzyMatch source locally (Swift package manager resolution fails at Swift 5.9)
  • Downgrade sentry-cocoa to 8.37.0 (8.38+ requires macOS 14)
  • Patch ghostty pixel_format import for macOS 13 compilation

GhosttyKit bootstrap

  • Add MacPorts prefix search to scripts/build_ghosttykit.sh alongside Homebrew
  • Allow Zig 0.16.x fallback when 0.14.x is unavailable via MacPorts

Swift compatibility

  • Shim MainActor.assumeIsolated for macOS 13 (available macOS 14+)
  • Backport Swift 6 features (borrowing, consuming) used in the codebase
  • Wrap macOS 14 APIs (NSWindow.collectionBehavior additions, NSVisualEffectView options) behind #available(macOS 14.0, *)

CI / developer tooling

  • Add GitHub Actions build matrix: arm64/macOS 15 + x86_64/macOS 13
  • Add a pre-commit hook that runs xcodebuild build (with CODE_SIGNING_ALLOWED=NO) to catch compilation errors before push
  • Set CLAUDE.md as the single source of truth for agent instructions; AGENTS.md and GEMINI.md symlink to it

Assets & tests

  • Wire assets/icon.png into AppIcon.appiconset so the app bundle ships with an icon
  • Fix test_chrome_geometry_derives_clip_safe_pane_border_inset_and_rounds_outward_on_retina: on macOS < 26, outerWindowRadius = 10 and shellInset + paneInset = 12 cause paneRadius to clamp to 0; assert the correct 0.0/0.5 values on pre-Tahoe behind #available(macOS 26.0, *)

Test plan

  • scripts/build_ghosttykit.sh completes on both arm64/macOS 15 and x86_64/macOS 13
  • xcodebuild build -scheme Zentty ... CODE_SIGNING_ALLOWED=NO succeeds on both targets
  • ZenttyLogicTests pass on macOS 13 (verified locally on Intel MacBook Pro)
  • GitHub Actions matrix passes on both runners

CLA

I have read CLA.md and agree to its terms.

@crichalchemist crichalchemist force-pushed the feat/intel-mac-ventura-support branch from 127d154 to a2b867b Compare June 22, 2026 21:50
crichalchemist and others added 6 commits June 22, 2026 18:25
Consolidates uncommitted work from prior sessions:
- project.yml: ARCHS "x86_64 arm64", MACOSX_DEPLOYMENT_TARGET 13.0, SWIFT_VERSION 5.9
- ZenttyApp.swift: @main entry point with XCTestConfigurationFilePath detection
- Zentty/main.swift: removed (@main conflicts with entry point file)
- NSViewController+loadViewIfNeeded.swift: #available(macOS 14.0, *) guard
- Vendor/FuzzyMatch: locally vendored for Swift 5.9 compat
- project.pbxproj: regenerated (ZenttyApp entry, local FuzzyMatch, ad-hoc signing)
…+ GEMINI.md symlink to it

Co-authored-by: Courtney Andrew Richardson <courtneyrichardson2027@u.northwestern.edu>
- macos-13 (x86_64) and macos-latest (arm64) matrix
- GhosttyKit xcframework cached by ghosttykit.lock hash
  (avoids Zig toolchain install on cache hit)
- ZenttyLogicTests on each architecture
- pre-commit hook gates compilation per commit
The debug-dylib approach (TEST_HOST: "", OTHER_LDFLAGS dylib) does not
produce Zentty.debug.dylib under Xcode 15.2/Swift 5.9 with @main entry
point. Both ZenttyLogicTests and ZenttyIntegrationTests use TEST_HOST/
BUNDLE_LOADER to link against the app binary; the app host runs inert
(.prohibited activation policy) so ZenttyLogicTests remains parallel-safe.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…acOS

- Wire assets/icon.png into AppIcon.appiconset so the app bundle includes
  an icon on all macOS versions.
- Fix test_chrome_geometry_derives_clip_safe_pane_border_inset_and_rounds_outward_on_retina:
  on macOS < 26, outerWindowRadius=10 and shellInset+paneInset=12 causes
  paneRadius to clamp to 0. Guard assertions behind #available(macOS 26.0, *)
  and assert the correct 0.0/0.5 values on pre-Tahoe.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@crichalchemist crichalchemist force-pushed the feat/intel-mac-ventura-support branch from a2b867b to 4f686bd Compare June 22, 2026 23:25
@dedene

dedene commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Thanks a lot for taking the time to dig into this! 🙏 The Ventura compatibility work is useful, but I don’t want to merge this PR in its current shape.

A couple of important distinctions:

  • Zentty already builds universal Release binaries with both arm64 and x86_64 slices. The missing piece is macOS 13/Ventura support, not Intel support by itself.
  • Supporting Zentty running on Ventura is different from supporting Zentty being developed on Ventura. I understand the Swift 5.9 downgrade may be needed for local builds on Ventura/Xcode 15, but I’m not ready to make that the project’s build baseline.

Could you maybe rework this as a smaller runtime-support PR? Or shall I rework on the essentials for what is needed to make Zentty run on Ventura?

What I’d like to see:

  • keep the project on Swift 6
  • lower the deployment target only where needed
  • add the required macOS 13 availability guards
  • remove Vendor/FuzzyMatch entirely (I don't want the full dependency source in this repo history for what appears to be a Package.swift compatibility patch. A fork/tag or upstream PR is a better fit)
  • use a patched FuzzyMatch fork/tag or upstream fix instead of vendoring the source
  • leave AGENTS.md / CLAUDE.md out of this change
  • keep unrelated changes like hooks and app icon work out of the PR

I’m open to Ventura runtime support, but I want that change to stay narrow and reviewable.

@crichalchemist

Copy link
Copy Markdown
Author

Closing this in favour of a narrower, cleaner PR that addresses your feedback.

The new PR is #35 — it cherry-picks only the commits directly related to macOS 13 runtime support:

  • Lower deployment target to 13.0 (no ARCHS override — universal builds are already correct upstream)
  • Swift 6 remains unchanged
  • FuzzyMatch stays on the SPM ordo-one/FuzzyMatch reference — no vendoring
  • Excludes: Swift 5.9 downgrade, AGENTS.md/CLAUDE.md, AppIcon, hooks, CI changes

Thanks for the detailed review!

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.

2 participants