syzygy_services_flutter 1.2.0
syzygy_services_flutter: ^1.2.0 copied to clipboard
Concrete I/O service implementations for the Syzygy Flutter ecosystem
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased #
1.2.0 - 2026-09-19 #
Fixed #
WebSocketProvider:_scheduleReconnect()guards_disposedflag before and after delay — no reconnect after disposalWebSocketProvider:StreamSubscriptionstored and cancelled on disconnect/dispose — no more leaked subscriptions- Header redaction is now case-insensitive and covers
authorization,cookie,x-api-key,proxy-authorization
Changed #
TokenAuthProviderdepends only on FoundationStorageProviderabstract type — concrete dependencies removedTokenAuthProvidersecure storage injection documented — caller must inject a secure-backed implementationRemoteConfigProvider: logs warn on fetch failure, info on recoveryflutter_lintsupdated to ^6.0.0verbose()dispatches asdebuguntil Foundation addsLogLevel.verbose— documented in CHANGELOG- Canonical backoff policy: 500ms base, 2.0× multiplier, full jitter, 8 000ms cap, max 3 retries
- Foundation dependency updated to ^1.2.0
1.1.0 - 2026-09-13 #
Added #
- DeviceServices —
IoDeviceProvider.deviceIdnow persists viaStorageProviderunder keysyzygy.device.uuid; UUID is never regenerated once stored - Persistence —
InMemoryStorageProvider.get<T>()andgetSecure<T>()now throwStateErrorwith a descriptive message (key name, stored type, requested type) on type mismatch instead of silently returning null - NetworkClient —
HttpNetworkClientaccepts an optionalLoggerProtocol? loggerparameter; logs request (method, URL, safe headers, body size), response (status, elapsed ms, body size), and errors; null logger incurs zero overhead - Analytics —
InMemoryAnalyticsProviderandConsoleAnalyticsProviderinjectsession_idinto every tracked event's properties;reset()generates a fresh session UUID - CrashReporting —
CrashReporterabstract class gainsleaveBreadcrumb(String, {Map<String,String>?})andclearBreadcrumbs(); newInMemoryCrashReporterstores the last 20 breadcrumbs in a circular buffer and includes a snapshot in each crash report;Breadcrumbvalue type added - Networking retry integration tests with mock HttpClient call counting
- Auth real token-refresh flow wired to NetworkClient with auto-refresh on expired JWT
- RemoteConfig cache TTL support (cacheTtlSeconds, default 3600)
- WebSocket binary send integration tests (Uint8List send/receive, mixed text+binary)
- PushNotifications FCM/APNs integration documentation and NotificationPayload factory helpers
- Contract compliance tests verifying all service implementations satisfy Foundation contracts
WebSocketProvider.binaryMessages—Stream<Uint8List>aligned with Android'sbinaryMessages: Flow<ByteArray>;InMemoryWebSocketProviderandDartWebSocketProviderboth implement the new typed binary streamBackoffClocktypedef and injectablebackoffClockparameter onHttpNetworkClient; enables deterministic backoff tests without real wall-clock delays, mirroring the Android clock-injection pattern- PushNotifications section in README covering FCM/APNs integration, factory helpers, and test usage
Changed #
- RetryDelay typedef renamed to BackoffClock; RecordingBackoffClock made public for cross-platform naming consistency
Fixed #
dispose()added toHttpNetworkClient,DartWebSocketProvider,InMemoryWebSocketProvider- README install snippet version corrected to 1.1.0
- README version badge corrected to 1.1.0
- README banner updated to match cross-repo standard
- README modules table class names updated to v1.1.0 implementations
1.0.0 - 2026-09-12 #
Added #
- NetworkClient abstract class and Dio-backed HTTP client stub
- StorageProvider abstract class and SharedPreferences-backed key-value persistence stub
- AuthProvider abstract class and JWT token storage and refresh stub
- FileProvider abstract class and dart:io File-backed file I/O
- PushProvider abstract class and FCM token registration stub
- DeviceProvider abstract class and Platform/device info stub
- RemoteConfigProvider abstract class and in-memory remote config store
- AnalyticsProvider abstract class and console analytics event logging stub
- CrashReporter abstract class and console crash logging stub
- WebSocketProvider abstract class and dart:io WebSocket stub