James Rich
5b98b852e9
feat(discovery): add DiscoveryRankingEngine with 6-level deterministic heuristic (D029)
...
Implement the spec's ranking and recommendation heuristic:
1. Highest unique discovered node count
2. Highest neighbor-report diversity (direct + mesh)
3. Highest non-duplicate packet count
4. Best median link quality (SNR first, then RSSI)
5. Greatest best known distance
6. Lowest failure/reconnect penalty
Presets tied after all 6 criteria share the same rank with isTied=true.
Includes RankingScoreBreakdown for transparent per-criterion scoring.
11 unit tests covering each criterion as tiebreaker, full ties,
edge cases (empty/single preset, no nodes, failed presets).
Validated: spotlessApply, allTests, kmpSmokeCompile
2026-05-07 17:55:38 -05:00
James Rich
5cb9ea8102
feat(discovery): align state machine with spec, add deep links, fix tests
...
- Add Preparing, Cancelling, Failed states to DiscoveryScanState (FR-008)
- Change Complete to data class with CompletionOutcome enum
- Add local-mesh-discovery deep link routes to DeepLinkRouter (FR-031)
- Compute packetSuccessRate/packetFailureRate in scan engine (FR-012)
- Fix DiscoveryScanEngineTest compilation and restructure with shared scheduler
- All 8 tests pass, kmpSmokeCompile clean
2026-05-07 16:55:35 -05:00
James Rich
18859ef667
refactor(discovery): improve KMP compatibility and clean up icon imports
...
- Replace platform-specific `String.format` with Kotlin standard library `padStart` in `DwellProgressIndicator` to support common code.
- Simplify fully qualified icon references in `DiscoveryGoogleMap` by adding explicit imports.
2026-05-07 16:18:18 -05:00
James Rich
67f444a927
feat(discovery): improve scan metrics, node enrichment, and configuration restoration
...
- Implement distance tracking using `latLongToMeter` and a new `getMaxDistance` DAO query
- Calculate Airtime Rate as a delta over time to align with telemetry specifications
- Capture and restore the full `LoRaConfig` instead of just the modem preset after a scan
- Persist local radio statistics (Tx/Rx counts, uptime, relay stats) in preset results
- Backfill missing node names and positions from the local NodeDB during discovery
- Refactor `DiscoveryScanEngine` to use injected `CoroutineDispatchers` and `ApplicationCoroutineScope`
- Reduce BLE connection priority request delay in `BleRadioTransport` to 1 second
- Improve test reliability by replacing fixed `Thread.sleep` calls with state-based polling and `delay`
2026-05-07 16:18:18 -05:00
James Rich
f8c7cc02ea
Add Local Mesh Discovery feature
...
* Introduce a new `:feature:discovery` module for scanning mesh topology across multiple LoRa presets
* Add `DiscoveryScanEngine` to manage scan lifecycles, preset shifting, and packet collection
* Update database schema to version 39 with tables for discovery sessions, preset results, and discovered nodes
* Implement UI screens for scan configuration, real-time progress, and historical session management
* Add flavor-specific discovery maps (Google Maps and OSM) for visualizing node positions and topology
* Include algorithmic and AI-powered summary generation for analyzing LoRa preset performance
* Add report export functionality for Text and PDF formats
* Integrate discovery entry point into the settings screen and navigation graphs
2026-05-07 16:18:16 -05:00
James Rich
213c380514
refactor(firmware): replace PlatformBackHandler with NavigationBackHandler ( #5376 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-06 20:01:40 +00:00
James Rich
3c75510f01
fix(mqtt): harden TLS enforcement, add user CA trust, and improve error diagnostics ( #5365 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-06 12:09:49 -05:00
James Rich
2de57a9e81
feat: align theme with Design Standards v1.3, remove contrast setting ( #5355 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-04 16:10:06 -05:00
James Rich
82926fd734
feat: event firmware easter egg with ambient branding ( #5354 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-04 19:37:47 +00:00
James Rich
c0b0b9edd4
fix(network): resolve empty MQTT address and enforce TLS on default server ( #5333 )
...
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-02 14:59:44 +00:00
James Rich
5a95201b4e
fix(connections): improve BLE scan reliability and UI lifecycle ( #5329 )
2026-05-02 14:25:40 +00:00
James Rich
68a1c578a7
fix: add explicit DI binds and ensure scans start after DataStore load ( #5319 )
2026-05-01 15:39:40 +00:00
James Rich
e198f52de5
refactor(coroutines): migrate to kotlinx-coroutines 1.11.0-rc02 ( #5312 )
...
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-01 03:11:22 +00:00
James Rich
2822290908
refactor(build): build-logic cleanup, CC safety, and detekt 2.0 upgrade ( #5311 )
2026-05-01 02:48:37 +00:00
James Rich
1966889c2d
feat(connections): connection sorting & conversation empty channel ranking ( #5295 )
2026-04-29 17:18:57 +00:00
James Rich
cbd26b06dd
fix: ensure snackbar respects safe drawing padding over host modifiers ( #5290 )
2026-04-29 14:59:18 +00:00
James Rich
e8f8e14984
fix: persist language switching and correctly map locales ( #5287 )
2026-04-29 14:59:10 +00:00
James Rich
247f342210
chore: project-wide cruft cleanup and dead code removal ( #5249 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-04-27 16:09:37 +00:00
James Rich
534b4fde24
feat(messaging): send message on Enter keypress ( #5246 )
2026-04-25 20:52:58 +00:00
James Rich
bbb7f8b23f
fix(crashlytics): resolve beta 2.7.14 crash issues ( #5245 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-25 19:23:21 +00:00
James Rich
815882d880
feat(messaging): add entry points for filter settings ( #5229 )
2026-04-23 10:25:43 +00:00
Nick
019c65ad8b
fix(ui): make footer buttons expand downwards ( #5226 )
2026-04-23 09:47:34 +00:00
James Rich
cf834a77f6
feat: Enhance mPWRD-os WiFi provisioning success state and UI components ( #5225 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-04-23 02:04:16 +00:00
James Rich
0b873be228
fix(ble): unblock reconnect + kable audit (logging, priority, backoff, StateFlow) ( #5222 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-22 18:35:22 -05:00
James Rich
228d872f9d
feat(connections): unified device list, ACCESS_LOCAL_NETWORK, transport filter chips ( #5219 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-22 19:34:22 +00:00
James Rich
f14ae2643c
feat(node): smoother remote-admin UX with per-node session tracking ( #5217 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-22 14:21:04 -05:00
James Rich
ba559549ba
refactor: eliminate Accompanist permissions library ( #5211 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-22 11:04:57 -05:00
James Rich
f22e5a70d9
feat(firmware): nRF52 BLE Legacy DFU support ( #5209 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-22 10:12:15 -05:00
James Rich
6e1a500ca7
fix(settings): restore Import/Export button functionality in #4913 ( #5204 )
2026-04-21 14:48:39 +00:00
James Rich
4fd52ffb46
fix(canned-messages): enable multiline text editing for long message lists ( #5203 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-21 14:44:44 +00:00
James Rich
38c2e9fb33
fix(compass): stop coarse network fixes from clobbering GPS fixes ( #5200 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-21 14:06:19 +00:00
James Rich
f21d8af9ae
fix(transport): improve BLE / TCP / USB reconnect and handshake resilience ( #5196 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-20 17:34:16 +00:00
Copilot
7492a33cf8
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 >
2026-04-20 15:59:20 +00:00
James Rich
84fe24467f
fix(widget): drive updates via debounced state observer ( #5185 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-18 04:11:32 +00:00
James Rich
14e86b90f1
feat(mqtt): adopt mqttastic-client-kmp 0.2.0 — disconnect reasons + Test Connection ( #5181 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 21:33:55 -05:00
James Rich
dd74e501f3
fix(ui): finish accessibility roles and action labels for clickable surfaces ( #5170 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 17:33:38 +00:00
James Rich
b979663e24
refactor: consolidate metric formatting through MetricFormatter ( #5169 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 17:13:01 +00:00
James Rich
90f6e21a9c
fix(ui): stable LazyColumn keys, semantic roles, and content descriptions ( #5168 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 16:24:18 +00:00
James Rich
adfe3bfed1
refactor: use injected ioDispatcher and ApplicationCoroutineScope ( #5167 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 16:18:45 +00:00
James Rich
a97f704300
feat(mqtt): migrate to MQTTastic-Client-KMP ( #5165 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-17 15:19:08 +00: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