seenn_flutter 0.8.0
seenn_flutter: ^0.8.0 copied to clipboard
Flutter SDK for Seenn - Real-time job progress tracking with Polling and Live Activity support.
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.
0.7.0 - 2026-01-29 #
Added #
- Provisional Push Authorization (iOS 12+) - Request push notifications without permission prompt
LiveActivity.getPushAuthorizationStatus()- Get current authorization statusLiveActivity.requestProvisionalPushAuthorization()- Request quiet notificationsLiveActivity.requestStandardPushAuthorization()- Request full notifications (shows prompt)LiveActivity.upgradeToStandardPush()- Upgrade from provisional to full access- New
PushAuthorizationStatusenum andPushAuthorizationInfomodel
0.6.0 - 2026-01-29 #
Added #
- Standalone Mode - Use Live Activity without Seenn server connection
- New
LiveActivitystatic class for direct native bridge access - No
Seenn.init()required for standalone usage - Perfect for BYO Backend scenarios with own job state and APNs push
- New
- Static convenience methods:
LiveActivity.start(),update(),end()LiveActivity.isSupported(),areActivitiesEnabled()LiveActivity.isActive(),getActiveIds()LiveActivity.cancel(),cancelAll()LiveActivity.onPushTokenstreamLiveActivity.initialize(),dispose()
Documentation #
- Added "Standalone Mode (BYO Backend)" section to docs
- Clarified difference between Self-Hosted and Standalone modes
0.5.0 - 2026-01-29 #
Added #
- Live Activity CTA Button - Tappable button on completion
ctaButtonparameter inendActivity()LiveActivityCTAButtonmodel with text, deepLink, style options
0.4.1 - 2026-01-28 #
Fixed #
- Critical: Push token race condition - tokens arriving before Dart listener was ready were silently dropped
- Added token buffering: tokens received before
EventChannel.listen()are now queued and emitted when listener connects
0.4.0 - 2026-01-28 #
Changed #
- BREAKING: Live Activity now requires bridge registration
- Removed internal
SeennJobAttributesto fix "ActivityInput error 0" iOS module isolation bug - Added
SeennLiveActivityBridgeprotocol for app-level implementation - Added
SeennLiveActivityRegistryfor bridge registration
Added #
isBridgeRegistered()method inLiveActivityServiceLiveActivityResult.bridgeNotRegistered()error type- Bridge implementation template in example app
Migration #
Users must now:
- Copy
SeennLiveActivityBridgeImpl.swiftto their app - Copy
SeennJobAttributes.swiftto both app and Widget Extension targets - Register bridge in AppDelegate:
SeennLiveActivityRegistry.shared.register(SeennLiveActivityBridgeImpl.shared) - See docs: https://docs.seenn.io/client/flutter#live-activity-setup
0.3.0 - 2026-01-24 #
Added #
- Polling Mode - Alternative to SSE for self-hosted backends
ConnectionModeenum:.sse(default) or.pollingPollingServicefor REST-based job pollingSeennConfig.selfHosted()factory for easy setupsubscribeJob(),subscribeJobs(),unsubscribeJob()methods- Configurable
pollInterval(default: 5 seconds) - Auto-unsubscribe from terminal jobs
Changed #
SeennConfignow includesmode,pollInterval,initialJobIds- SDK version bumped to 0.3.0
0.2.0 - 2026-01-24 #
Added #
- Android Ongoing Notification - Persistent notification with progress bar
OngoingNotificationServicefor direct Android controlJobNotificationServicefor unified cross-platform API
- ETA Countdown - Real-time countdown with server sync
EtaCountdownServicewith formatted outputetaCountdownStream()convenience function
- Parent-Child Jobs - Hierarchical job relationships
ParentInfo,ChildrenStats,ChildJobSummarymodelschildrenOf(),parents,childrenin JobsService
- New Job Fields - Full @seenn/types alignment
jobType,workflowId,estimatedCompletionAtetaConfidence,etaBasedOn,childProgressModeparent,children,startedAt
- JobTracker Enhancements
onCancelledstreamonChildProgressstream for parent jobs
Changed #
StageInfofields:name,current,total,descriptionQueueInfoaddedqueueNamefieldJobStatusaddedcancelledstatus
Deprecated #
StageInfo.id→ usenameStageInfo.label→ usenameStageInfo.index→ usecurrent