The App Group identifier registered in the portal does not change, but the string the runtime expects does: macOS and Mac Catalyst require the Team ID prefix, iOS forbids it. CalendarrAppGroup now resolves the right one per platform. Getting this wrong is the worst failure mode in the whole port — containerURL() returns nil, every snapshot read and write quietly no-ops, and the widgets show placeholder content forever with no error anywhere. A DEBUG assertion now makes that loud during development. Because the two platforms need different values, they need different entitlements files — listing both strings in one file breaks iOS provisioning on the unregistered prefixed value. Selected via CODE_SIGN_ENTITLEMENTS[sdk=macosx*], verified to resolve correctly for both destinations. The Catalyst entitlements are written App Store grade from the start, so one configuration serves both the Mac App Store and a notarized DMG: sandbox, network client, Contacts (birthday import), user-selected files (.ics import and export), the prefixed App Group, and keychain sharing. Deliberately absent: files.downloads, network.server, device.*, temporary-exception.* — nothing needs them and each is App Review friction. ENABLE_HARDENED_RUNTIME is required for notarization and ignored by the App Store, so it is safe to set unconditionally. Verified: builds for both Mac Catalyst and iOS Simulator. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.8 KiB
1.8 KiB