James Rich
|
11cfb0de7b
|
feat(car): wire CarStateCoordinator to session and HomeScreen
- Add CarStateCoordinator bridging NodeRepository, PacketRepository,
ServiceRepository, RadioConfigRepository, QuickChatActionRepository
into car-optimized StateFlows
- Wire coordinator into MeshtasticCarSession lifecycle (start/destroy)
- Update HomeScreen to render real messaging and node lists from state
- Add core:database dependency for QuickChatAction entity access
- Fix FlavorModule ktfmt/ktlint conflict with @file:Suppress
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-05-21 20:05:07 -05:00 |
|
James Rich
|
6d063a70aa
|
feat(car): implement feature/car module with Car App Library 1.9.0-alpha01
Complete implementation of the Android Auto / AAOS car module:
Phase 1 - Setup:
- Version catalog entries (car-app 1.9.0-alpha01)
- Module build.gradle.kts with android-library, flavors, koin
- AndroidManifest with MESSAGING category, minCarApiLevel 8
- AAOS automotive_app_desc.xml
- Car-specific string resources
- ProGuard keep rules
Phase 2 - Foundation:
- MeshtasticCarAppService (CarAppService entry point)
- MeshtasticCarSession (session lifecycle, Crashlytics tagging)
- FeatureCarModule (Koin DI with ComponentScan)
- HomeScreen (TabTemplate: Messages + Nodes)
- CrashlyticsCarTagger, TemplateBuilders helpers
- CarUiModels (presentation state models)
Phase 3 - Messaging (MVP):
- MessagingScreen (300ms debounced invalidation, max 10 conversations)
- ConversationScreen (voice reply, read-aloud, max 5 messages)
- FuzzyNodeNameResolver (LCS-based voice name matching)
- MessageFilter (emoji/admin exclusion, 237-byte limit)
- BatchMessageLoader (50 unread on session start)
- CarNotificationManager (MessagingStyle + reply/mark-read)
Phase 4 - Emergency:
- EmergencyHandler (flow collection, alert state, audio tone)
- EmergencySpotlightBuilder (alert rows for messaging screen)
- EmergencySessionWiring (lifecycle attach/detach)
Phase 5 - Nodes:
- NodeDashboardScreen (sorted list, signal/battery, topology header)
- NodeDetailScreen (PaneTemplate with Message action)
Phase 6 - Channels:
- ChannelChipBuilder (ActionStrip with unread badges)
Phase 8 - Status Panel:
- MeshStatusPanel (connection, node count, last msg time)
- MeshStatusSessionWiring (Flow-based lifecycle)
Phase 9 - Voice:
- CarTtsEngine (TTS read-aloud)
- VoiceDmCoordinator (fuzzy resolve + voice DM flow)
Phase 10 - Polish:
- OnboardingScreen (no channels configured state)
- DisconnectedScreen (BLE disconnect graceful degradation)
- ProGuard consumer rules
Verified: spotlessApply ✓ detekt ✓ compileGoogleDebugKotlin ✓ assembleGoogleDebug ✓
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-05-21 20:05:07 -05:00 |
|