Commit graph

5 commits

Author SHA1 Message Date
copilot-swe-agent[bot]
67e300da96
fix(auto): apply Android Auto best-practices audit fixes
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/8d768315-9c58-4b16-8912-d0b4f97c3681

Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2026-04-17 18:29:52 +00:00
copilot-swe-agent[bot]
01b1759503
feat(auto): spec-compliance — minCarApiLevel=1, runtime API fallback, onNewIntent, loading state
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/50f9540a-3ba0-4e05-8e06-83cc8c4c93aa

Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2026-04-17 16:13:09 +00:00
James Rich
38b74441fb fix(auto): align TabTemplate with required Car API level 6 and tintable icons
- TabTemplate is @RequiresCarApi(6); bump manifest minCarApiLevel from 2
  to 6 so the host doesn't reject the template at runtime.
- Use a proper anonymous TabCallback (androidx's TabCallback is not a
  Kotlin fun interface) and import top-level TabContents (it is not a
  nested type of TabTemplate); the lambda/nested references don't
  compile.
- Mark tab CarIcons tintable (CarColor.DEFAULT) so day-mode AAOS themes
  don't render white-on-white.
- Extract buildChannelRow to keep buildChannelsTemplate under the
  NestedBlockDepth detekt threshold.
- Clarify MAX_LIST_ITEMS KDoc (per-ListTemplate host constraint, not an
  API-level property).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 10:26:15 -05:00
copilot-swe-agent[bot]
dac4880e0f
feat(auto): replace ListTemplate with TabTemplate for iOS CarPlay parity
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/67580c49-612a-450b-8452-9c88875df1c3

Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-17 14:44:19 +00:00
James Rich
0df6d70317 refactor(auto): extract Android Auto into feature:auto module
- Move MeshtasticCarAppService, CarSession, CarScreen from app/auto
  to the new :feature:auto module (meshtastic.android.library)
- Move automotive_app_desc.xml → auto_app_desc.xml (respects resourcePrefix)
- Move manifest entries (service + meta-data) into feature module so they
  merge into app rather than living in the app manifest directly
- Fix HostValidator: use ApplicationInfo.FLAG_DEBUGGABLE instead of
  BuildConfig.DEBUG (library modules don't ship their own BuildConfig)
- Fix stale unread counts: replace point-in-time getUnreadCount() with
  flatMapLatest + per-conversation getUnreadCountFlow() so the car screen
  invalidates on new messages, not just topology changes
- Fix ConversationShortcutManager: replace removeAllDynamicShortcuts +
  addDynamicShortcuts with pushDynamicShortcut per conversation to
  preserve usage/ranking history; remove stale shortcuts individually;
  respect getMaxShortcutCountPerActivity() limit
- Fix SHORTCUT_CATEGORY_CONVERSATION: constant lives on ShortcutInfo,
  not ShortcutManagerCompat
- Remove androidx.car.app dependency from :app (now owned by :feature:auto)
- Add :feature:auto to settings.gradle.kts and app dependencies

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 07:34:16 -05:00