Maintenance release after a long pause. Mostly a cleanup, but it changes what the package requires and how it is installed, hence the major bump.
Breaking
- Deployment targets are now iOS 15, tvOS 15, watchOS 9 and macOS 13. Xcode 26 no longer builds for anything older.
- The package builds in Swift 6 language mode. Completion closures are
@MainActor— a permission dialog is UI work, and callingrequest { }from a view controller keeps working unchanged. - CocoaPods support is gone. The podspec, the subspecs and the
PERMISSIONSKIT_*build flags went with it; Swift Package Manager is the only supported install. HealthPermissionreturned the two usage description keys the wrong way round.readingUsageDescriptionKeyis nowNSHealthShareUsageDescriptionandwritingUsageDescriptionKeyisNSHealthUpdateUsageDescription. Check what your Info.plist says if you took the keys from here.
Fixed
- Simplified Chinese never loaded: the folder was named
zh_Hans.lprojwith an underscore, which no bundle matches. - Microphone moved off
AVAudioSession.recordPermission, deprecated since iOS 17, toAVAudioApplication. - Photo library moved off the legacy
PHPhotoLibrarycalls, which report plainauthorizedeven under limited access, to the access-level variants. - Motion no longer calls
stopActivityUpdates()after a query — that method pairs withstartActivityUpdatesand did nothing here. - Calendar, Reminders and Location each had a switch branch that could never run, because
EKAuthorizationStatusAuthorizedandkCLAuthorizationStatusAuthorizedare aliases offullAccessandauthorizedAlways. - The package now builds cleanly for macOS, tvOS and watchOS. It did not before:
announcementis unavailable outside iOS, watchOS and visionOS, and the Photos and AppTrackingTransparency targets have no watchOS counterpart.