Commit Graph

6358 Commits

Author SHA1 Message Date
James Rich
fb606db067 fix(auto): refresh group summary when a conversation is cancelled
After clearing a message notification we left the GROUP_KEY_MESSAGES
summary in place, which on Android Auto leaves a lingering HUN /
summary entry for the already-dismissed conversation. Cancel the
summary when no child notifications remain, and refresh it otherwise.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 09:21:37 -05:00
James Rich
b5a631ebd7 fix(auto): only include unread messages in conversation notif
The MIN_CONTEXT_MESSAGES fallback (pull 3 most recent history
messages when unread < 3) was injecting already-read historical
messages into the MessagingStyle. On Android Auto, Gearhead reads
every message in the style aloud and shows them stacked on the
HUN, so old context was announced alongside the new one.

Just show the unread messages (up to MAX_HISTORY_MESSAGES). If
nothing is unread, don't post at all — we only call this from
paths that already check for fresh inbound content.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 09:17:48 -05:00
James Rich
c1073f3e12 fix(auto): don't re-post conversation notif on outgoing messages
rememberDataPacket() was invoking handlePacketNotification() for
outgoing packets too, which made our own reply race with the
cancel issued by ReplyReceiver and repost the conversation with
ourselves as the visible sender (lastMessage.node == ourNode).

Also harden ensureShortcutForNotification for DMs: the remote
contact is deterministic from contactKey (channel + nodeId), so
derive the shortcut Person from the resolved contact node rather
than whatever message happens to be newest in history. This keeps
the Android Auto HUN labelled correctly even if the message list
ends with an outgoing packet.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 09:12:48 -05:00
James Rich
72e27e32cc chore(auto): log ReplyReceiver entry and completion
Temporary diagnostic logging added while investigating why Android Auto
inline replies don't appear to dismiss the conversation notification
for some users. Remove or downgrade to verbose once confirmed working.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 09:02:20 -05:00
James Rich
d17e715a45 fix(auto): clear unread count after inline reply
ReplyReceiver was only cancelling the notification after an inline
reply; PacketRepository.clearUnreadCount was never called, so the
message stayed 'unread' in the app (and in the Android Auto favorites
unread badges) even after the user replied from the HUN.

Mirror MarkAsReadReceiver by invoking clearUnreadCount with nowMillis
before cancelling the notification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 08:53:11 -05:00
James Rich
07772917c3 fix(auto): project messaging notifications to Android Auto
Gearhead's MsgNotifParser was rejecting Meshtastic notifications with:
- 'No semantic reply action found'
- 'No semantic mark-as-read action found'
- 'added an invalid shortcut'

Fixes:
- Tag reply action with SEMANTIC_ACTION_REPLY + setShowsUserInterface(false)
  + setAllowGeneratedReplies(true) so Gearhead/Assistant can surface it.
- Tag mark-as-read action with SEMANTIC_ACTION_MARK_AS_READ.
- Publish an on-demand long-lived conversation shortcut whose id matches
  the notification's setShortcutId(contactKey). Previously only favorites
  + channels at index 0 had shortcuts, so DMs received on a non-zero
  channel referenced an unpublished shortcut and Android Auto refused to
  project them.

Verified on Pixel 6a + DHU 2.0: notifications now carry matching
long-lived shortcuts and project as messaging HUNs with reply, mark-read
and reaction actions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 08:48:38 -05:00
James Rich
36f770fd0b fix(auto): preserve raw channel index for shortcut/unread contactKey
Notifications and message routing key channel conversations by the raw
protocol channel index (e.g. "2^all"), but publishShortcuts and the
car screen were re-indexing after filtering out unnamed channels, so
named channels after a gap would never match their notification's
shortcutId/locusId and their unread badge would stay at zero.

Preserve the original index via mapIndexedNotNull { index to settings }.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 08:02:55 -05:00
James Rich
86bb9583b0 fix(auto): extract shortcut builders to fix LongMethod + catch specific exceptions
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 07:56:34 -05: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
copilot-swe-agent[bot]
41b99fd079 fix(auto): fix ConnectionState data object usage and add list item limits
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/d1af27de-bc74-4b77-bdb8-7ae8167ab336

Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-17 03:34:43 +00:00
copilot-swe-agent[bot]
6d7ddebbef fix(auto): address code review — filterIndexed, remove deprecated override
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/571f7a66-0c36-43f2-890e-c8ed87ec7164

Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-17 03:17:21 +00:00
copilot-swe-agent[bot]
e2700b26aa fix(auto): clean up imports and simplify CarAppService
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/571f7a66-0c36-43f2-890e-c8ed87ec7164

Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-17 03:16:14 +00:00
copilot-swe-agent[bot]
c018ca6066 feat(auto): add Android Auto communications app with notification and Car App Library support
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/571f7a66-0c36-43f2-890e-c8ed87ec7164

Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com>
2026-04-17 03:11:21 +00:00
James Rich
a6a889430b chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5159)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-16 21:43:35 -05:00
renovate[bot]
65b885a073 chore(deps): update core/proto/src/main/proto digest to 4d5b500 (#5161)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 21:41:36 -05:00
James Rich
17e69c6d4c chore: review-cleanup fleet (audit + fix + hardening) (#5158) v2.7.14-internal.57 2026-04-17 00:02:59 +00:00
James Rich
872c566ef1 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5157)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-16 20:25:12 +00:00
renovate[bot]
3a2f2fc56b chore(deps): update kotlin to v2.3.21-rc2 (#5155)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 16:33:25 +00:00
renovate[bot]
50896d455b chore(deps): update dd.sdk.android to v3.9.0 (#5156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 16:33:13 +00:00
James Rich
a580cd0467 chore(analytics): disable Datadog Compose action tracking (#5153)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 23:09:21 +00:00
James Rich
8e5d99410c refactor(di): adopt @KoinApplication with startKoin<T>() compiler plugin API (#5152)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-15 22:52:59 +00:00
renovate[bot]
0f900fe7d7 chore(deps): update core/proto/src/main/proto digest to c9067da (#5151)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 13:12:53 -05:00
James Rich
9ac02cf851 fix(app): disable R8 optimization to fix Compose animation freeze (#5150)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 17:45:27 +00:00
James Rich
878905aea3 perf(messaging): batch node + reply lookups in message loading (#5149)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
v2.7.14-internal.56
2026-04-15 15:48:26 +00:00
James Rich
dea364dd17 fix(app): add R8 keep rules for Compose animation/runtime/ui (#5146)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 14:30:33 +00:00
James Rich
c7d2a76851 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5145)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
v2.7.14-internal.55
2026-04-15 07:48:12 -05:00
renovate[bot]
f72b91328d chore(deps): update androidx.compose to v1.11.0-rc01 (#5144)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-15 07:47:53 -05:00
James Rich
d0057752f6 fix(ci): remove Renovate groupings and decouple AndroidX Compose version ref (#5143)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 07:23:20 -05:00
James Rich
84621acb04 fix: align BLE connection handshake with firmware protocol expectations (#5141)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 11:55:15 +00:00
James Rich
96419f3251 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5140)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-15 06:07:21 -05:00
James Rich
60ff495037 chore(r8): clean up ProGuard rules and enable Compose Hot Reload (#5139)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 03:26:39 +00:00
James Rich
401f59489a chore: remove deprecated mesh_service_example module (#5055) 2026-04-15 03:10:23 +00:00
James Rich
a2763bdfeb fix(charts): apply Vico 3.1.0 best-practice audit fixes (#5138)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 02:20:33 +00:00
James Rich
72b981f73b chore: KMP audit — commonize code, centralize utilities, eliminate dead abstractions (#5133)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 02:17:50 +00:00
James Rich
50ade01e55 docs(agents): add PR and commit hygiene guidance (#5137)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-14 20:49:34 -05:00
James Rich
79ed0a865a chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5128)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-15 01:14:38 +00:00
James Rich
bf0deef708 fix(icons): audit and correct icon migration regressions from #5030 #5040 #5056 (#5136)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 01:14:31 +00:00
James Rich
fa63a4ac50 feat: add high-contrast theme with accessible message bubbles (#5135)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 01:14:20 +00:00
James Rich
f48fc61729 feat(environment): add 1-Wire multi-thermometer (DS18B20) display support (#5130)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 00:03:24 +00:00
James Rich
099aea2d81 feat(desktop): add entitlements and wire MeshConnectionManager into orchestrator (#5127) 2026-04-14 15:16:10 +00:00
renovate[bot]
c6f58cc799 chore(deps): update core/proto/src/main/proto digest to 940ac38 (#5126)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 09:48:25 -05:00
James Rich
27055290e2 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5125)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-14 12:37:12 +00:00
renovate[bot]
3aadd29e67 chore(deps): update core/proto/src/main/proto digest to a045501 (#5124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 07:17:49 -05:00
James Rich
9acdf5309f refactor: modern APIs — Koin 4.2, CMP 1.11, Ktor resilience, Room @Upsert, injected dispatchers (#5119) 2026-04-14 11:41:01 +00:00
renovate[bot]
99378c9291 chore(deps): update core/proto/src/main/proto digest to 98e95ee (#5123)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 06:50:59 -05:00
James Rich
3c7e1266f8 fix: truncate traceroute chart x-values to whole seconds to prevent Vico crash (#5122) 2026-04-14 11:01:03 +00:00
James Rich
743851b0b5 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5120)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-14 10:35:19 +00:00
James Rich
e46a8296cb feat(core/ui): add safeLaunch, UiState, KMP permissions, and CMP lifecycle modernization (#5118) v2.7.14-internal.54 2026-04-14 00:45:34 +00:00
James Rich
27367e9064 fix(build): pin Skiko version to align with Compose Multiplatform (#5117) 2026-04-13 23:32:00 +00:00
James Rich
28be6933c8 fix(proguard): disable shrinking for Compose animation classes (#5116) 2026-04-13 21:55:52 +00:00