Full wrapper around jc_sdk v2.16.5 with clean architecture:
- 7 services covering 100% of jc_sdk public API (Client, Call, Device, Channel, Push, Net, Log)
- Constructor injection with GetIt DI module (follows sca_treezor pattern)
- VideocallSdkManager orchestrator for init/destroy lifecycle
- VideocallSdkConfig abstract for environment-specific AppKey
- Stream-based callbacks for reactive UI consumption
- Riverpod providers (service + stream) for feature layer
- AppKey configured per environment via dart-define-from-file
- Integrated in init_app.dart alongside scaTreezorModule
- Add AntelopAwareMessagingService so the Antelop SDK gets first dibs on every
FCM push before delegating to firebase_messaging. Unblocks SCA wallet
activation on Android, which was waiting forever for pushes that the
FlutterFirebaseMessagingService was swallowing ever since Firebase was
integrated. Remove the stock Antelop and firebase_messaging services via
manifest-merge so only the wrapper handles MESSAGING_EVENT.
- Add Copy AntelopRelease Build Phase in Xcode to copy
Runner/AntelopRelease-{flavor}.plist over the fixed AntelopRelease.plist
inside the .app bundle based on CONFIGURATION. Without this the iOS SDK
silently used the production plist on every flavor.
- Revert the six applicationId values (3 AndroidManifest + 3 AntelopRelease
plist) to the sample id 4713640103500149457, which is the only one
provisioned in Antelop's backend today. The four env+platform ids they
provided all fail with 9999 / cryptography: Error while decrypting data.
To be updated once Treezor confirms the real ids.
- Add packages/flutter_treezor_entrust_sdk_bridge/example as a pub workspace
member and bump its Dart SDK and flutter_lints constraints so
'melos bootstrap' stops failing with 'dependencies for
flutter_treezor_entrust_sdk_bridge_example missing'.
Adds a production-grade in-app version check that prompts users to update when a new build is available. Soft updates are dismissable. Force updates block the app entirely. Configured via FirebaseRemote Config so rollouts can be triggered without redeploying.
- Sealed result types (NoUpdate / SoftUpdate / ForceUpdate) for type-safe pattern matching
- AppVersionCheckService
- AppUpdateGate widget encapsulates listener, route guard and dialog wireup, isolated from save_family_app
- Serialized notifier operations prevent race between dismiss and refresh, mounted checks blindar disposal edge cases - Build-aware dismiss persistence via SharedPreferences
Phase 2 of multi-environment setup. Adds Firebase core, Crashlytics,
Analytics, Remote Config, Performance, Messaging and flutter_local_notifications,
plus full APNs configuration for iOS push.
- Wire setupFirebase(env) and setupNotifications() in initApp
- Add firebase_options for dev and staging via flutterfire (sf-platform-pre)
- Register google-services / firebase-perf / crashlytics gradle plugins
- Add per-flavor GoogleService-Info.plist with Build Phase script that
copies the right plist into the .app bundle based on \$CONFIGURATION
- Bump iOS deployment target 13.0 -> 15.0 (required by firebase_analytics)
- Pin flutter_local_notifications to ^19.4.2 (v20+ needs Dart SDK >=3.10)
- Add aps-environment to staging (development) and production entitlements;
development flavor intentionally excluded (no App Store Connect entry)
- Fix AppDelegate.swift to call super.application after forwarding to
AntelopAppDelegate, otherwise Firebase Messaging swizzling breaks and
the APNs token is never captured
- Crashlytics reports in all builds (debug + release) for early detection
- Tag analytics events with env user property per flavor
- App Check intentionally not included (debug-token friction with large
QA team); can be re-added release-only later
- Upgrade Melos to 7.5.1 using Dart pub workspaces (Melos 7 paradigm).
- Replace per-package pubspec_overrides.yaml with workspace-native resolution. Add dependencies.yaml as a centralized catalog for all external deps with sync_deps.dart tool to propagate and validate versions across the monorepo.