Skip to content

Modernize for Apple Silicon (native arm64) and current Xcode/macOS#49

Open
TackerCochrane wants to merge 1 commit into
insidegui:masterfrom
TackerCochrane:apple-silicon-port
Open

Modernize for Apple Silicon (native arm64) and current Xcode/macOS#49
TackerCochrane wants to merge 1 commit into
insidegui:masterfrom
TackerCochrane:apple-silicon-port

Conversation

@TackerCochrane

Copy link
Copy Markdown

Recent macOS notifications appeared warning that the Intel build "will not open in a future release," so I took a pass at bringing the project up to date. It now builds and runs as a native universal (arm64 + x86_64) app on current Xcode/macOS. Sharing it back in case it's useful; totally understand if you'd rather take a different approach.

Verified working: app launches, Overcast loads and plays, menu bar + popover, media keys, and the Touch Bar UI all function. Every JS selector the app injects still matches Overcast's current page, so the scraping is intact.

I took the liberty of adding one small feature that I have always wished for:

  • Right-click / control-click the menu-bar icon for a Quit item

Below is some nerd stuff.

List of dependencies

  • Carthage → Swift Package Manager (resolves on open; no bootstrap step)
  • SwiftyJSON 3 → 5, Sparkle 1 → 2 (SUUpdaterSPUStandardUpdaterController)
  • Removed Fabric/Crashlytics (SDK discontinued in 2020)
  • Removed IGListKit (was in the Cartfile but never imported in source)

Showing my work

  • Swift 3 → Swift 5 language mode; deployment target 10.11 → 11.0
  • Signing left as Automatic with no team set, so you can sign with your own ID

Some behind-the-scenes fixes

  • AppKit Swift 3→5 renames across ~13 files; restored @objc where needed
  • Fixed two launch crashes on modern macOS:
    • Event tap now guards a NULL CGEventTapCreate (returns NULL without Input Monitoring permission) instead of crashing
    • Touch Bar private SPI was renamed by Apple in 10.14 (presentSystemModalFunctionBar:presentSystemModalTouchBar:)

Notes on updates

  • Sparkle 2 will want an EdDSA key for future appcast entries (it logs a deprecation warning until then). The existing Developer ID–signed update path still works for delivering this build to current users.

Brings the project up to date so it builds and runs as a native
universal (arm64 + x86_64) app on current macOS and Xcode, replacing the
Intel-only build that macOS now warns about.

Dependencies
- Migrate Carthage -> Swift Package Manager (resolves automatically on open).
- Update SwiftyJSON 3 -> 5 and Sparkle 1 -> 2 (SUUpdater ->
  SPUStandardUpdaterController).
- Remove Fabric/Crashlytics (SDK discontinued in 2020).
- Remove IGListKit, which was listed as a dependency but never imported.

Build settings
- Swift 3 -> Swift 5 language mode.
- Deployment target 10.11 -> 11.0.
- Signing left as Automatic with no hard-coded team.

Source migration (Swift 3 -> Swift 5 / current SDK)
- AppKit renames across ~13 files (NSImage.Name, NSControl.StateValue,
  NSTouchBarItem.Identifier, autoresizing masks, NSWorkspace.shared, etc.).
- Restore @objc on members called from Objective-C / used as selectors.

Runtime crash fixes on modern macOS
- PMEventTap: guard against a NULL CGEventTapCreate result (returns NULL
  without Input Monitoring permission), which previously crashed on launch.
- Touch Bar: the private SPI was renamed by Apple in 10.14
  (presentSystemModalFunctionBar: -> presentSystemModalTouchBar:); update
  the declaration and call sites so Touch Bar works again instead of
  crashing on launch.

Small additions
- Right-click (or control-click) the menu-bar icon for a Quit menu item.
- Use the gearshape SF Symbol for the in-popover options button.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.

1 participant