Releases: stefanprojchev/ForgePush
1.1.0
Conventions refactor
Applied the project-wide layered conventions and canonical pragma marks across all 5 targets. No public API removals, no behavior changes.
SilentPushHandlerandVisiblePushHandlerprotocols split from implementations intoDomain/Services/<Area>/+Data/Services/<Area>/.- Context and Result value types moved into
Domain/Models/Entities/(one type per file). - Normalized pragma marks to canonical
Dependencies/Init/Implementation/Private.
All 5 sibling products (ForgePush, ForgePushPermission, ForgePushToken, ForgeSilentPush, ForgeVisiblePush) remain importable unchanged.
1.0.1
Switch local path dependencies (ForgeCore, ForgeObservers) to GitHub-hosted versions so consumers can resolve via SPM.
ForgePush 1.0.0
First public release.
Libraries
ForgePushPermission
Request, check, and observe notification authorization. Wraps UNUserNotificationCenter with a clean async API.
ForgePushToken
PushTokenManager bridges UIApplicationDelegate APNs callbacks into an AsyncStream<String?>. Thread-safe state, multiple subscribers, deterministic cleanup on deinit.
ForgeSilentPush
SilentPushRouter dispatches background pushes to registered handlers concurrently via TaskGroup. Aggregates results using the most-optimistic policy: .newData > .failed > .noData.
ForgeVisiblePush
VisiblePushRouter dispatches tapped notification responses to matching handlers. Same handler/router pattern as silent push.
ForgePush (umbrella)
Re-exports all four libraries for a single import.
Dependency protocols
All routers take ConnectivityObserving and ProtectedDataObserving as dependencies, so you can use ForgeObservers or provide your own implementations.
Tests
34 tests across token lifecycle, silent/visible router dispatch, result aggregation, and context propagation.
Requirements
- iOS 18+, macOS 15+
- Swift 6.3+ (Xcode 26 or later)
Installation
.package(url: "https://github.com/stefanprojchev/ForgePush.git", from: "1.0.0")Documentation
Full docs: https://stefanprojchev.github.io/ForgePush/