This is somewhat in prep of being able to make the project file generated, but also just organizes things into more concrete directory structures.
This pulls out _all_ of the build settings from the root level, and most from the target level, into xcconfigs.
The new directory structure looks like:
- Sources
- App
- (everything from HomeAssistant/)
- WatchApp
- Shared
- MacBridge
- Extensions
- Intents
- NotificationContent
- NotificationService
- Share
- Today
- Watch
- Widgets
- Tests
- App
- UI
- Shared
Somewhat intentionally, the file structure under these is not yet standardized/organized.
The project targets are now:
- App
- WatchApp
- Shared-iOS
- Shared-watchOS
- MacBridge
- Tests-App
- Tests-UI
- Tests-Shared
- Extension-Intents
- Extension-NotificationContent
- Extension-NotificationService
- Extension-Share
- Extension-Today
- Extension-Widget
- WatchExtension-Watch
This does not yet clean up resources vs. sources, nor does it handle some of the "it's in Sources/App but it's part of Shared" crossover directory issues.
- Adds a plugin and protocol for it which can talk to AppKit.
- Cleans up some build settings to the root level, moves version and build number to the xcconfig so we don't need to mutate Info.plist each time.
Starting in the 12.0gm (but not 12.0b6) and in 12.2b1, when our Shared.framework has a dependency on Sodium's xcframework-via-SPM, it is both statically linked into the binary of the framework and copied into Frameworks/. This causes codesign to fail, because it is not expecting a binary file inside.
Reproduced this in a sample project and filed FB8721223 -- it is certainly not expected behavior. Doubly fun if is the presence of this .a causes e.g. notarization to fail. This requires manually removing the directory in Shared.framework. This can't be done as a build phase in Shared.framework because Xcode is doing the incorrect file copy _after_ all build phases, so I put it as a post-build scheme script for the Debug and Release schemes.
- Bumps Realm to 5.3.6 to fix#822. Removes the hacky workaround. Refs #907 -- if this does not fix it, please let us know.
- Fixes the Update checker (for Mac) incorrectly firing on iOS, along with a couple other places that I used `#available(macCatalyst)` instead of `Current.isCatalyst` (the former is equivalent to `#available(iOS)`.
- Fixes single-scene startup not having a scene immediately causing the delayed WebViewWindowController access to assert.
Apple's documentation for the CaptiveNetwork API we use to query SSID information reads:
> This function returns NULL in Mac apps built with Mac Catalyst.
The header file for the same thing reads:
> On Mac Catalyst platform, to receive current Wi-Fi network information, an application must have "com.apple.developer.networking.wifi-info" entitlement and user's authorization to access location.
It seems the former is correct - even with the "access Wi-Fi info" entitlement specified, we cannot access Wi-Fi info on Catalyst, nor can I add the entitlement in the provisioning center. Hides the setting until I can figure out how to get to the information -- CoreWLAN on macOS has access to the data, but we can't access it directly since the contents of the framework are not available in Catalyst (but are, oddly, `import`-able).
Also adds the read-file/read-downloads entitlements since they are needed for weird downloaded-to-`~/Downloads` problems.
- Open Finder for log files instead of zipping
- Hide Background Refresh on Catalyst
- Fix white background flash in Event Log in Dark Mode
- Hide Siri shortcut button on Catalyst
- Update to iOS 14 API for zoom
- Fix About appearance, add Mac-specific links
- Hide System Sounds & give instructions on Import
- Catalyst location update handling - less focus on monitored regions
- Avoid requesting color updates every time focus changes to the window
- About, Preferences & Help menu items
- Hide About in Settings on Catalyst
- Add Actions menu
- Requires disabling dead code stripping on the Intents and Widgets extensions.
- Requires not opting into submitting Bitcode when uploading for iOS symbols (checkbox on upload time).
- Fixes not weak linking against WidgetKit which avoids a crash on launch on iOS 13.
- Updates to use the `scan_tag` webhook added in home-assistant/core#38721.
- Bumps Realm dependency and build numbers for the next build, since this is the only change for it.