Commit Graph

874 Commits

Author SHA1 Message Date
James Rich
f6bfefd439 feat(discovery): wire Gemini Nano via ML Kit GenAI Prompt API
Replace the stub GeminiNanoSummaryProvider with a real implementation
that uses com.google.mlkit:genai-prompt:1.0.0-beta2 for on-device
AI-powered scan summaries on supported Android hardware.

Implementation:
- Generation.getClient() to obtain the GenerativeModel
- generateContentRequest with TextPart for structured prompts
- Temperature 0.3, topK 16, maxOutputTokens 200 for concise output
- Graceful fallback to DiscoverySummaryGenerator on any failure
- Lazy model initialization with error logging via Kermit

The existing buildSessionPrompt() and buildPresetPrompt() methods in
DiscoverySummaryGenerator provide the prompt text. On unsupported
devices or fdroid builds, the provider falls through to the
deterministic algorithmic summary seamlessly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-20 17:10:21 -05:00
James Rich
728678dade feat(discovery): extract hardcoded UI strings to resources
Replace all hardcoded strings in discovery UI screens and components
with stringResource() calls using centralized string resources.

Files updated:
- DiscoverySummaryScreen: session stats, AI analysis labels
- DiscoveryHistoryDetailScreen: history metadata labels
- DiscoveryScanScreen: disabled button semantics descriptions
- PresetPickerCard: selected/unselected state descriptions
- PresetResultCard: scan result stat labels
- RfHealthSection: RF health stat labels
- DwellProgressIndicator: dwell progress text

Added 33 new discovery_stat_* and discovery_* string resources.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-20 17:09:50 -05:00
James Rich
2d1fc984bb [Spec Kit] Implementation progress: D044 accessibility polish
- Added semantics annotations for screen readers
- Added progress announcements for dwell indicator
- Added disabled-preset explanations
- Migrated string resources to strings.xml
- Added DiscoveryMigrationTest for string resource migration
- Marked D000, D011, D044 as complete in tasks.md
2026-05-20 17:09:29 -05:00
James Rich
d6f44f2d0b fix(discovery): resolve all detekt and lint issues across discovery modules (D048)
- Fix copyright headers (2025-2026 → 2026) in ~30 files across feature/discovery, core/database, core/repository, core/data, core/prefs
- Fix detekt compose issues: add modifier params to all public composable functions, fix parameter ordering in PresetResultCard, rename onMinutesSelected → onMinuteSelect (past tense), suppress LongMethod for DiscoverySummaryContent
- Fix detekt suppressions: CompositionLocalAllowlist in LocalDiscoveryMapProvider, MagicNumber/ReturnCount in DeepLinkRouter.routeSettings
- Mark D048 complete in tasks.md
All verification passes: spotlessCheck ✓, detekt ✓, tests ✓, kmpSmokeCompile ✓
2026-05-20 17:09:29 -05:00
James Rich
349094e9e3 feat(discovery): replace hardcoded UI strings with string resources (D047) 2026-05-20 17:09:08 -05:00
James Rich
d1c50336e7 test(discovery): add DAO, packet collection, history, and deep-link tests (D010, D023, D042) 2026-05-20 17:09:08 -05:00
James Rich
531ea8363f 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-20 17:09:08 -05:00
James Rich
5792e09989 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-20 17:09:08 -05:00
James Rich
0907e63445 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-20 17:08:46 -05:00
James Rich
a960f9ac2d 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-20 17:08:09 -05:00
James Rich
4c588b73f8 fix(settings): rename UDP toggle label for cross-platform audit alignment (#5549)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-20 21:51:29 +00:00
James Rich
0076be3a24 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5532)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-05-20 09:11:32 -05:00
James Rich
8113167833 build(flatpak): overhaul offline source generation with native cache scanner (#5533) 2026-05-20 09:11:03 -05:00
James Rich
99b5688b00 build(flatpak): overhaul and automate flatpak offline manifest generation (#5529) 2026-05-20 07:12:03 -05:00
James Rich
7ae1b26813 chore(flatpak): optimize CI source generation and clean up redundant tasks (#5525) 2026-05-20 04:51:47 -05:00
James Rich
e13a4359e1 fix(ci): exclude kotlinNativeBundleConfiguration from flatpak source generation (#5517)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 21:03:51 -05:00
James Rich
877909fa94 fix: prevent node details hang when device hardware API is unreachable (#5514)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 20:37:42 -05:00
James Rich
01d32e15c0 fix(database): update @Relation annotations for Room 3.0.0-alpha05 (#5507)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 14:36:47 -05:00
James Rich
228765a159 fix(ci): unblock Dokka documentation generation (#5496)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 13:00:45 -05:00
James Rich
83bb1a31f7 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5465) 2026-05-19 10:12:04 -05:00
James Rich
fc0df1a79a feat(docs): In-app documentation browser with Jekyll site and Docusaurus sync (#5445)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 04:00:22 +00:00
James Rich
f5128798a8 feat: adopt Material 3 Expressive design system (M3-native APIs only) (#5479)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 01:10:47 +00:00
renovate[bot]
72436e70bc chore(deps): update core/proto/src/main/proto digest to 59cb394 (#5480) 2026-05-18 18:01:43 -05:00
James Rich
df4f10c4d6 fix(nav): remote admin nodenum + Nav3 consolidation and improvements (#5478)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-18 17:29:27 +00:00
James Rich
f4b6b02ace refactor(build): rename entry modules and remove DESKTOP_ONLY mode (#5476)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-18 12:44:12 +00:00
James Rich
057d5bb778 fix(database): make withDb retry logic resilient to varying close messages (#5474)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-18 11:24:09 +00:00
James Rich
b32aa1b9f2 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5460)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-05-14 16:34:40 -05:00
James Rich
6edac97d5f fix: TAKPacket-SDK proto ownership and desktop/flatpak CI fixes (#5459)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-14 16:33:05 -05:00
James Rich
33184fef99 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5455)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-05-14 12:17:20 -05:00
renovate[bot]
f1c793db5d chore(deps): update com.github.luben:zstd-jni to v1.5.7-8 (#5454) 2026-05-14 11:32:58 -05:00
Ben Meadors
a04a261b80 feat: TAK v2 protocol integration with zstd compression and full CoT type support (#5434)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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-05-14 12:50:01 +00:00
James Rich
13865e7c8b chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5438)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-05-14 06:10:23 -05:00
James Rich
dcb147163c fix: clarify position precision as ± radius (#5428) 2026-05-12 10:24:29 -05:00
renovate[bot]
05b1ea918e chore(deps): update core/proto/src/main/proto digest to 1c62540 (#5421)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 08:25:55 -05:00
James Rich
0f2b1c064a fix: clamp future lastHeard timestamps to current time on ingestion (#5418)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-12 07:35:11 -05:00
James Rich
09a0d123be chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5416)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-05-12 06:21:59 -05:00
renovate[bot]
56077db6d9 chore(deps): update core/proto/src/main/proto digest to 1c62540 (#5413)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 06:20:48 -05:00
James Rich
85c840de32 feat: add Compose Preview Screenshot Testing infrastructure (#5410)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-12 02:18:23 +00:00
James Rich
10c5b5db2e feat(api): add hasAnyEntries method to local data sources and improve… (#5406) 2026-05-11 19:34:41 -05:00
James Rich
82135df865 Update notification intents and deep link URI format (#5408)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-11 19:34:24 -05:00
renovate[bot]
d847818487 chore(deps): update core/proto/src/main/proto digest to 1c62540 (#5404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 17:31:01 -05:00
James Rich
313dc1c2f7 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5400) 2026-05-11 17:28:06 -05:00
James Rich
95c3bc0bce Brownfield gap remediation: 28 tasks + intro commonMain migration (#5401)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-11 20:10:23 +00:00
renovate[bot]
f89fdaf99d chore(deps): update core/proto/src/main/proto digest to b302d92 (#5398)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 10:48:40 -05:00
Austin
484518195e Gradle: Add flatpakGradleGenerator task (#5369) 2026-05-11 14:44:29 +00:00
renovate[bot]
2d5bcc1e50 chore(deps): update core/proto/src/main/proto digest to 03eb534 (#5397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 12:50:08 +00:00
James Rich
443de4a34d chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5383)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-05-10 05:57:23 -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
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