James Rich
cffafb175d
test(discovery): add DAO, packet collection, history, and deep-link tests (D010, D023, D042)
2026-05-07 19:32:38 -05:00
James Rich
92bf9a6a31
feat(discovery): add 2.4 GHz hardware gating and AI provider tests (D045, D037)
2026-05-07 19:16:15 -05:00
James Rich
937a1b8fd7
docs(discovery): mark D012 complete
2026-05-07 18:19:23 -05:00
James Rich
135974ec75
feat(discovery): add DiscoveryPrefs for persistent user defaults (D012)
...
Add DataStore-backed preferences for discovery scan settings:
- dwellMinutes: persisted dwell time per preset (default 15)
- selectedPresets: last-used preset selection (restored on reopen)
- aiEnabled: whether AI summary expansion is enabled
- topologyOverlayEnabled: map topology overlay default
Architecture:
- Interface: DiscoveryPrefs in core:repository/AppPreferences.kt
- Implementation: DiscoveryPrefsImpl in core:prefs (reuses UiDataStore)
- Fake: FakeDiscoveryPrefs in core:testing
- Wiring: DiscoveryViewModel restores prefs on init, persists on change
Validated: spotlessApply, allTests, compileKotlinJvm
2026-05-07 18:19:02 -05:00
James Rich
eb8bcbbc5d
docs(discovery): mark D030 complete in tasks.md
2026-05-07 18:00:12 -05:00
James Rich
4507fafd06
feat(discovery): wire DiscoveryRankingEngine into summary UI (D030)
...
- Add rankings StateFlow to DiscoverySummaryViewModel
- Compute rankings from PresetRankingInput on loadNodes and rerunAnalysis
- Pass rank/isTied to PresetResultCard for display
- Show rank badge (#1 , #2 , tied) in preset header
- Rank 1 (untied) highlighted in primary color
Validated: spotlessApply, allTests, compileKotlinJvm
2026-05-07 17:59:38 -05:00
James Rich
3bbd32ec3c
docs(discovery): update tasks.md to reflect actual implementation status
...
Mark 30 of 49 tasks as complete based on code review of the
feat/discovery branch. Key phases completed: setup (P1), data model
(P2 partial), scan engine (P3), packet collection (P4 partial),
map (P5 partial), summary (P6 partial), AI (P7 partial), history (P8).
Remaining: D010-D011 (DAO/migration tests), D012 (prefs), D020
(neighbor info trigger), D023-D024 (tests + map filter), D028
(map UI tests), D030/D032 (summary models + tests), D037 (AI tests),
D042 (history tests), D044-D045/D047-D048 (polish).
2026-05-07 17:57:08 -05:00
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
803aca0928
refactor(discovery): reorder imports for clarity and consistency
2026-05-07 16:18:18 -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
c0d95d6ac4
docs(specs): add feature specs for discovery, node-list-layout, and app-docs ( #5388 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-07 16:16:58 -05:00
renovate[bot]
934e687bc5
chore(deps): update com.google.firebase:firebase-bom to v34.13.0 ( #5385 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-07 14:24:03 -05:00
James Rich
031f25ceda
docs: comprehensive copilot instructions & spec-kit setup ( #5386 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-07 14:23:24 -05:00
github-actions[bot]
aeff0a6ce1
docs: update CHANGELOG.md ( #5381 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-07 07:35:08 -05:00
James Rich
924f8a507b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) ( #5378 )
...
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com >
2026-05-07 07:34:30 -05:00
renovate[bot]
d68aada1ba
chore(deps): update aboutlibraries to v14.2.0 ( #5380 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-07 07:33:43 -05:00
github-actions[bot]
3dd985d7df
docs: update CHANGELOG.md ( #5377 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-06 18:38:25 -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
github-actions[bot]
8d621bc6f4
docs: update CHANGELOG.md ( #5374 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-06 14:24:26 -05:00
renovate[bot]
0b75fd4140
chore(deps): update paging to v3.5.0 ( #5375 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 14:20:43 -05:00
renovate[bot]
d28d684d05
chore(deps): update compose-multiplatform to v1.11.1 ( #5371 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 14:18:59 -05:00
renovate[bot]
2f2a71587d
chore(deps): update androidx.camera.viewfinder:viewfinder-compose to v1.6.1 ( #5370 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 14:06:21 -05:00
github-actions[bot]
78b9a942dc
docs: update CHANGELOG.md ( #5363 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v2.7.14-closed.26
v2.7.14-internal.87
v2.7.14-open.8
2026-05-06 12:11:32 -05:00
renovate[bot]
f547be6cbf
chore(deps): update room to v3.0.0-alpha04 ( #5368 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 12:10:34 -05:00
renovate[bot]
8434b57613
chore(deps): update androidx.camera:camera-view to v1.6.1 ( #5367 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 12:10:10 -05: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
renovate[bot]
f97900b558
chore(deps): update org.jetbrains.androidx.navigation3:navigation3-ui to v1.1.1 ( #5364 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 12:07:52 -05:00
James Rich
3e55579250
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) ( #5357 )
...
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com >
2026-05-06 12:02:01 -05:00
renovate[bot]
7db0f9a032
chore(deps): update jetbrains.lifecycle to v2.11.0-beta01 ( #5359 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 11:55:26 -05:00
James Rich
086c9afbaf
feat: desktop-only build isolation for Flatpak packaging ( #5360 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: Austin <vidplace7@gmail.com >
2026-05-06 12:43:35 -04:00
renovate[bot]
94e3901bd4
chore(deps): update compose-multiplatform to v1.11.0-rc01 ( #5358 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 10:13:14 -05:00
renovate[bot]
5a303e148c
chore(deps): update agp to v9.2.1 ( #5361 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 10:12:58 -05:00
renovate[bot]
7021984281
chore(deps): update com.android.tools:common to v32.2.1 ( #5362 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 10:12:49 -05:00
github-actions[bot]
d8ed204800
docs: update CHANGELOG.md ( #5356 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v2.7.14-closed.25
v2.7.14-open.7
v2.7.14-internal.86
2026-05-04 16:11:00 -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
github-actions[bot]
1a6774d67c
docs: update CHANGELOG.md ( #5353 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v2.7.14-internal.85
2026-05-04 15:03:54 -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
78ff3f599c
chore(ble): don't surface ui message when canceling scope ( #5352 )
2026-05-04 17:23:57 +00:00
github-actions[bot]
c9d633f1d3
docs: update CHANGELOG.md ( #5351 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v2.7.14-internal.84
2026-05-04 11:48:25 -05:00
James Rich
fa3437b147
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) ( #5349 )
...
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com >
2026-05-04 11:45:11 -05:00
renovate[bot]
fca1fd8248
chore(deps): update org.meshtastic:mqtt-client to v0.3.6 ( #5350 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 11:44:42 -05:00
github-actions[bot]
e70396f55f
docs: update CHANGELOG.md ( #5348 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-04 11:33:13 -05:00
Copilot
f51e046043
Add Meshtastic design standards as a skill ( #5346 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: garthvh <1795163+garthvh@users.noreply.github.com >
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com >
2026-05-04 11:32:42 -05:00
James Rich
26c50258da
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) ( #5347 )
...
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com >
2026-05-04 11:30:59 -05:00
github-actions[bot]
7d9f0e9682
docs: update CHANGELOG.md ( #5345 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-03 20:16:53 -05:00
renovate[bot]
08ff14235d
chore(deps): update org.meshtastic:mqtt-client to v0.3.5 ( #5344 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
v2.7.14-closed.24
v2.7.14-internal.83
v2.7.14-open.6
2026-05-04 00:23:57 +00:00
github-actions[bot]
744dab07fc
docs: update CHANGELOG.md ( #5342 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
v2.7.14-open.5
v2.7.14-internal.82
v2.7.14-closed.23
2026-05-03 15:20:36 -05:00