- Add !context.mounted/!mounted guards in control_panel_screen and
location_map to clear use_build_context_synchronously info-level
lints that were failing flutter analyze
- Wrap PrimaryButton's Text in Flexible so TextOverflow.ellipsis
can truncate when width is constrained (Row was overflowing 44px
with the "small" golden scenario)
- Regenerate primary_button and secondary_button goldens after the
layout fix
- Remove empty boilerplate widget_test.dart from
flutter_treezor_entrust_sdk_bridge/example (referenced an SDK with
platform channels that crashed in vm test mode)
- Gitignore **/test/failures/ (transient diff artifacts written by
flutter test when goldens fail)
Also dropped 10 empty test/ directories scaffolded by flutter create
that were failing melos run test with "Test directory does not
contain any test files": auth, dashboard_shell, home, legacy_auth,
notifications, profile, sca_treezor, sf_infrastructure, splash, utils
These files are regenerated by flutter pub get and contain machine-
specific paths (FLUTTER_ROOT, FLUTTER_APPLICATION_PATH). They should
not be tracked — the file header itself states "do not check into
version control".
- Update .gitignore: prepend **/ to .flutter-plugins-dependencies so
it matches in sub-packages, add Generated.xcconfig and
flutter_export_environment.sh patterns.
- git rm --cached the 4 files that were already tracked (keeps them
on disk for local builds but removes from repo).
- 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'.
The repo had no root-level .gitignore, so .dart_tool/, ephemeral plugin
symlinks and build artifacts were being tracked across the workspace.
Every flutter pub get regenerated them and they polluted PRs as recurring
noise.
- Add root .gitignore covering .dart_tool/, ephemeral plugin symlinks,
build/, coverage/, IDE files
- Untrack ~39 existing cache files across root, modules and packages
- 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.
- Fix upload flow: capture photo ID from POST /photos response
- Fix endpoint: use /devices/identificator/{id}/photos/files for listing
- Fix setBackgroundImage: use device.id (UUID) instead of identificator
- Redesign screen as photo gallery with grid view
- Add image compression on pick (maxWidth: 800, quality: 80%)
- Fix multipart upload: remove content-type header for FormData auto-detection
- Replace hardcoded Spanish text with i18n in 6 languages
- Add typed error/success enums (BackgroundImageErrorEvent, BackgroundImageSuccessEvent)
- Revert initialLocation to splash
- Add missing translations for contacts and background-image features
- Fix position address model nullability (province field missing from API)
- Fix health query order to sortDirection to match backend API
- Add pagination to health chart queries to prevent backend timeout
- Align GetDevicesResponseModel with full backend schema
- Add route history with gradient polyline, direction arrows, and clustering
- Add animated map movements
- Add follow mode with auto-refresh
- Add share location via Google Maps link
- Add fit bounds on history load
- Add expandable action buttons panel
- Add location list bottom sheet with type filters
- Add whitelist sync alongside secondary contacts
- Add loading state to linked devices screen
- Refactor location_map.dart: extract RouteHistoryLayer, MapActionsPanel
- Migrate setState to LocationMapViewModel
- Position history with polyline trail and date range picker
- Map style selector (standard, voyager, light, dark, satellite) persisted via SharedPreferences
- Geofence and frequent place CRUD with info cards
- Device banner with swipeable carousel
- Refresh position button
- Widget extraction: map controls, info cards, device banner, modal overlay
Device management:
- Activity meter with steps charts and history
- Apps usage with daily breakdown and top apps
- Health monitoring (heart rate, oxygen, blood pressure)
- Scheduled activities with timeline and CRUD
- Contacts sync to device via contact-lists
- Locate device, rewards refactor
Settings (new module):
- Block phone
- SOS contacts
- WiFi networks
- Alarm refactor with full CRUD
- Settings menu with feature stubs
Account:
- Personal data and account settings refactor
Shared:
- 100+ i18n keys in 6 languages
- New routes in app_router
- WeekDayChips, TimeRangeSelector shared widgets
- Legacy dashboard shell simplified