James Rich
3a4cae5d0b
fix(ble): unblock reconnect + kable audit (logging, priority, backoff, StateFlow) ( #5222 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
37b805afc3
feat(connections): unified device list, ACCESS_LOCAL_NETWORK, transport filter chips ( #5219 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
24f19db79a
feat(node): smoother remote-admin UX with per-node session tracking ( #5217 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
ae610bbba5
refactor: eliminate Accompanist permissions library ( #5211 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
652c898d6b
feat(firmware): nRF52 BLE Legacy DFU support ( #5209 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
6c63af9999
fix(settings): restore Import/Export button functionality in #4913 ( #5204 )
...
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
8df6efb9c4
fix(canned-messages): enable multiline text editing for long message lists ( #5203 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
cafd0767bc
fix(compass): stop coarse network fixes from clobbering GPS fixes ( #5200 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:09:00 +00:00
James Rich
14e8ab4e2b
fix(transport): improve BLE / TCP / USB reconnect and handshake resilience ( #5196 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:08:59 +00:00
Copilot
40adf8601d
Fix node-details remove action to preserve confirmation flow ( #5192 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
Co-authored-by: James Rich <james.a.rich@gmail.com >
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:08:59 +00:00
James Rich
cc6114bafd
fix(widget): drive updates via debounced state observer ( #5185 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
2026-04-24 19:08:59 +00:00
James Rich
84e70d01a3
feat(mqtt): adopt mqttastic-client-kmp 0.2.0 — disconnect reasons + Test Connection ( #5181 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-18 03:05:31 +00:00
copilot-swe-agent[bot]
cb5f11f996
fix(auto): address branch review — cleanup, ProGuard, dedupe, API trim
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/ade4e6ae-8e8e-4651-a985-a8042f86e7c6
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 20:16:24 +00:00
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
James Rich
b49e8b2aaf
fix(ui): finish accessibility roles and action labels for clickable surfaces ( #5170 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:56:39 +00:00
James Rich
9c8085b0e3
refactor: consolidate metric formatting through MetricFormatter ( #5169 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:56:38 +00:00
James Rich
2a6e27de09
fix(ui): stable LazyColumn keys, semantic roles, and content descriptions ( #5168 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:56:38 +00:00
James Rich
7f1ea28d47
refactor: use injected ioDispatcher and ApplicationCoroutineScope ( #5167 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:56:38 +00:00
James Rich
305a487dd7
feat(mqtt): migrate to MQTTastic-Client-KMP ( #5165 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:56:38 +00:00
copilot-swe-agent[bot]
b828a1271c
style(auto): expand TabTemplate tab builder chains for readability
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/e79e1ea2-bea6-4b71-acb3-13dbdbce363f
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:22:49 +00:00
copilot-swe-agent[bot]
2e74af770b
feat(auto): polish - extract CarScreenDataBuilder, add unit tests, fix batteryStr, DRY row builder
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/e79e1ea2-bea6-4b71-acb3-13dbdbce363f
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 17:19:47 +00:00
copilot-swe-agent[bot]
9f0ead2518
feat(auto): align Auto node/message row UI with phone NodeItem and ContactItem
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/ebb54cc3-35cd-4c25-afd2-4b7fbaa05a5d
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 16:53:08 +00:00
copilot-swe-agent[bot]
849aca797b
plan: align Auto node/message row UI with phone NodeItem and ContactItem
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/ebb54cc3-35cd-4c25-afd2-4b7fbaa05a5d
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 16:49:59 +00:00
copilot-swe-agent[bot]
7c15c7bcb4
feat(auto): unified Messages tab — channels + DMs, mirroring Contacts screen
...
Agent-Logs-Url: https://github.com/meshtastic/Meshtastic-Android/sessions/8757a33e-0881-45a4-9c3b-5489642c413d
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-04-17 16:32:46 +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
Garth Vander Houwen
6af9cbf376
Merge branch 'main' into copilot/add-messaging-feature-android-auto
2026-04-17 08:10:42 -07: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
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
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
James Rich
df3b5365f9
fix(node): don't recreate Vico CartesianChartModelProducer on channel switch ( #5160 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 02:40:17 +00:00
James Rich
17e69c6d4c
chore: review-cleanup fleet (audit + fix + hardening) ( #5158 )
2026-04-17 00:02:59 +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
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
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
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
e46a8296cb
feat(core/ui): add safeLaunch, UiState, KMP permissions, and CMP lifecycle modernization ( #5118 )
2026-04-14 00:45:34 +00:00
James Rich
938a951737
refactor: leverage CMP 1.11 + Lifecycle 2.11 — v2 test API, Json privacy, dropUnlessResumed nav guards ( #5112 )
2026-04-13 20:02:31 +00:00
James Rich
76386e419c
refactor: migrate remaining raw stateIn(WhileSubscribed) to stateInWhileSubscribed extension ( #5113 )
2026-04-13 20:02:06 +00:00
James Rich
b13f9bf989
fix(resources): add resourcePrefix to KMP + widget modules, rename prefixed resources ( #5111 )
2026-04-13 18:25:23 +00:00
James Rich
39620d063b
fix(nav): restore broken traceroute map navigation ( #5104 )
2026-04-13 12:25:21 +00:00
James Rich
5c47256b3f
test(prefs): migrate DataStore tests from androidHostTest to commonTest ( #5092 )
2026-04-12 20:45:19 +00:00
James Rich
a11dee42a7
test: migrate Compose UI tests from androidTest to commonTest ( #5091 )
2026-04-12 20:20:00 +00:00
James Rich
bc44af1597
fix(connections): show device name during connecting state ( #5085 )
2026-04-12 17:29:25 +00:00
James Rich
7ca7179197
build: migrate Compose dependencies to Compose Multiplatform ( #5084 )
2026-04-12 14:45:11 +00:00
James Rich
e85300531e
refactor(transport): complete transport architecture overhaul — extract callback, wire BleReconnectPolicy, fix safety issues ( #5080 )
2026-04-12 04:22:18 +00:00
James Rich
62264b10c6
refactor(model): remove ConnectionState helper methods and fix updateStatusNotification return type ( #5074 )
2026-04-11 23:41:34 +00:00