Summary
This enables the Forji app target for iPad and Mac Catalyst builds with a minimal Xcode project change:
- adds
macosx to the supported platforms for the app target
- enables
SUPPORTS_MACCATALYST
- changes the app target device family from iPhone-only to iPhone + iPad
The motivation is to make the existing iOS app usable from a desktop workflow as well, especially for pull request review/merge tasks where using Forji from a Mac can be more convenient than switching to a phone.
Notes
This PR intentionally does not redesign the UI for macOS and does not change any app code. It only exposes the existing app target to iPad and Mac Catalyst builds. I also have a local Mac Catalyst build available for private workflow testing if more feedback would be useful.
The Mac Catalyst build currently depends on an upstream Textual fix: https://github.com/gonzalezreal/textual/pull/60. Without that Textual change, Xcode reaches the Mac Catalyst destination but fails while compiling Textual because canImport(AppKit) selects AppKit APIs that are unavailable in Catalyst (NSFont, NSFontDescriptor, etc.). With that Textual PR applied locally to the SwiftPM checkout, the Forji Mac Catalyst build succeeds.
Verification
Tested on Xcode 26.5:
git diff --check
xcodebuild -project Forji/Forji.xcodeproj -scheme Forji -showdestinations
- confirmed
platform=macOS,variant=Mac Catalyst,name=My Mac is available
xcodebuild -project Forji/Forji.xcodeproj -scheme Forji -configuration Debug -destination 'platform=macOS,variant=Mac Catalyst,name=My Mac' ... build
- expected failure without Textual PR #60, in Textual 0.3.1 AppKit/Catalyst guards
- same build after applying https://github.com/gonzalezreal/textual/pull/60 to the resolved Textual checkout
- passed
- produced a signed
Debug-maccatalyst/Forji.app
- verified
CFBundleSupportedPlatforms = MacOSX
codesign --verify --deep --strict passed
App Store exception
I grant Stefan Hausotte an irrevocable, worldwide, royalty-free license to use, sublicense, and distribute my contribution, including through Apple's App Store under the project's App Store exception.
## Summary
This enables the `Forji` app target for iPad and Mac Catalyst builds with a minimal Xcode project change:
- adds `macosx` to the supported platforms for the app target
- enables `SUPPORTS_MACCATALYST`
- changes the app target device family from iPhone-only to iPhone + iPad
The motivation is to make the existing iOS app usable from a desktop workflow as well, especially for pull request review/merge tasks where using Forji from a Mac can be more convenient than switching to a phone.
## Notes
This PR intentionally does not redesign the UI for macOS and does not change any app code. It only exposes the existing app target to iPad and Mac Catalyst builds. I also have a local Mac Catalyst build available for private workflow testing if more feedback would be useful.
The Mac Catalyst build currently depends on an upstream Textual fix: https://github.com/gonzalezreal/textual/pull/60. Without that Textual change, Xcode reaches the Mac Catalyst destination but fails while compiling Textual because `canImport(AppKit)` selects AppKit APIs that are unavailable in Catalyst (`NSFont`, `NSFontDescriptor`, etc.). With that Textual PR applied locally to the SwiftPM checkout, the Forji Mac Catalyst build succeeds.
## Verification
Tested on Xcode 26.5:
- `git diff --check`
- `xcodebuild -project Forji/Forji.xcodeproj -scheme Forji -showdestinations`
- confirmed `platform=macOS,variant=Mac Catalyst,name=My Mac` is available
- `xcodebuild -project Forji/Forji.xcodeproj -scheme Forji -configuration Debug -destination 'platform=macOS,variant=Mac Catalyst,name=My Mac' ... build`
- expected failure without Textual PR #60, in Textual 0.3.1 AppKit/Catalyst guards
- same build after applying https://github.com/gonzalezreal/textual/pull/60 to the resolved Textual checkout
- passed
- produced a signed `Debug-maccatalyst/Forji.app`
- verified `CFBundleSupportedPlatforms = MacOSX`
- `codesign --verify --deep --strict` passed
## App Store exception
I grant Stefan Hausotte an irrevocable, worldwide, royalty-free license to use, sublicense, and distribute my contribution, including through Apple's App Store under the project's App Store exception.