Compare commits

...

5718 commits
0.7.80 ... main

Author SHA1 Message Date
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
James Rich
a90cb2d89e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5195)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-20 17:32:58 +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
2b47da3b61
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5193)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-20 07:40:08 -05:00
renovate[bot]
3322257cfd
chore(deps): update plugin com.gradle.develocity to v4.4.1 (#5194)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 11:47:09 +00:00
James Rich
99e7407a90
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5189)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-19 20:07:52 +00:00
renovate[bot]
9dd57725f2
chore(deps): update vico to v3.2.0-next.1 (#5191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-19 12:31:11 -05:00
renovate[bot]
2c1984ace5
chore(deps): update fastlane to v2.233.0 (#5190)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-19 16:30:34 +00:00
James Rich
94856d257f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5186)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-18 12:09:22 +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
renovate[bot]
68a414b75b
chore(deps): update compose-multiplatform to v1.11.0-rc01 (#5184)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-17 22:00:34 -05:00
James Rich
4257e7b7e4
chore(deps): split androidx-compose version ref from CMP (#5183)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 21:41:36 -05: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
ef0e159abb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5177)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-17 21:20:58 -05:00
James Rich
61d7f6fef3
fix(deps): pin androidx-compose runtime-tracing/ui-test to CMP version (#5179)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 15:46:59 -05:00
James Rich
a273dc6623
Revert "diag(r8): disable minify for release builds (animation-freeze diagnostic)" (#5176)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 15:07:54 -05:00
James Rich
c866f60b59
diag(r8): disable minify for release builds (animation-freeze diagnostic) (#5174)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 18:36:33 +00:00
James Rich
10bc58d417
chore(strings): remove 4 unused string resources (#5173)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 17:36:32 +00: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
56cbc3670d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5163)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-17 17:13:27 +00:00
James Rich
15a7c19b74
chore(r8): remove redundant keep rules covered by consumer rules (#5172)
Co-authored-by: GitHub Copilot CLI <223556219+Copilot@users.noreply.github.com>
2026-04-17 17:13:26 +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
9f3fe865e3
test: migrate MigrationTest to runTest and add missing repository fakes (#5171)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 16:35:41 +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
cdeb1ac532
fix: redact MeshLog proto secrets and centralize Compose keep-rules (#5166)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 16:20:50 +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
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) 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>
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>
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) 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
James Rich
92166f0fa2
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5115)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-13 15:52:55 -05:00
renovate[bot]
8e7c4f54a3
chore(deps): update actions/upload-pages-artifact action to v5 (#5114)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 15:24:43 -05: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
8a06157ff4
docs: remove agent cruft, condense and validate remaining docs (#5110) 2026-04-13 17:59:19 +00:00
renovate[bot]
75e2177da7
chore(deps): update com.android.tools:common to v32.1.1 (#5108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 17:16:04 +00:00
renovate[bot]
61f90352c4
chore(deps): update agp to v9.2.0-rc01 (#5107)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 17:15:52 +00:00
James Rich
087fbbfb45
fix(build): overhaul R8 rules and DRY up build-logic conventions (#5109) 2026-04-13 17:11:42 +00:00
James Rich
048c74db13
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5105)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-13 12:37:53 +00:00
James Rich
39620d063b
fix(nav): restore broken traceroute map navigation (#5104) 2026-04-13 12:25:21 +00:00
James Rich
35bf1fded5
build: align Compose Multiplatform versions and exclude transitive BOMs (#5103) 2026-04-13 12:02:52 +00:00
James Rich
4dd591af25
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5101)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2026-04-13 11:04:58 +00:00
James Rich
a8cdec7f55
fix(ci): isolate JetBrains Compose Multiplatform in Renovate config (#5102) 2026-04-13 06:09:22 -05:00
renovate[bot]
1e29fec469
chore(deps): update androidx (general) to v1.11.0-rc01 (#5099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <james.a.rich@gmail.com>
2026-04-12 22:33:44 -05:00
James Rich
b0c603c7ed
fix(build): align AndroidX Compose versions with CMP and migrate to runComposeUiTest (#5096) 2026-04-13 02:49:11 +00:00
James Rich
e424d4d076
fix(build): add explicit compose-multiplatform-animation dependency (#5095) 2026-04-12 22:36:37 +00:00
James Rich
17d85c88c4
fix(release): publish GitHub release on promotion instead of staying draft (#5094) 2026-04-12 16:04:13 -05: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
4156acf297
ci: fix Gradle cache path validation warning for Robolectric jars (#5093) 2026-04-12 15:18:02 -05:00
James Rich
c059f19cc6
ci: reduce CI costs by ~54% — skip desktop builds in PR/main, reduce scheduled frequency (#5090) 2026-04-12 18:59:21 +00:00
James Rich
ade314d503
build: upgrade TARGET_SDK to 37 and update AGP to 9.2.0-alpha08 (#5089) 2026-04-12 17:42:58 +00:00
James Rich
bc44af1597
fix(connections): show device name during connecting state (#5085) 2026-04-12 17:29:25 +00:00
James Rich
eeed780e51
chore(ai): modernize and unify agent tooling and instructions (#5087) 2026-04-12 17:29:05 +00:00
James Rich
d03e61af6f
fix(build): remove Compose BOM to resolve compileSdk 37 conflict (#5088) 2026-04-12 17:05:52 +00:00
renovate[bot]
916eb51b94
chore(deps): update androidx.compose:compose-bom-alpha to v2026.04.00 (#5086)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-12 10:01:40 -05:00
James Rich
7ca7179197
build: migrate Compose dependencies to Compose Multiplatform (#5084) 2026-04-12 14:45:11 +00:00
James Rich
9281324be3
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5082) 2026-04-12 06:44:03 -05:00
renovate[bot]
6da9f088a9
chore(deps): update softprops/action-gh-release action to v3 (#5081)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-12 06:43:45 -05: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
962c619c4c
chore(deps): bump Kotlin 2.3.21-RC, Koin plugin 1.0.0-RC1, drop datetime compat (#5079) 2026-04-12 02:09:23 +00:00
James Rich
19502cd1e0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5078) 2026-04-12 01:48:42 +00:00
James Rich
9468bc6ebe
refactor(service): unify dual connectionState flows into single source of truth (#5077) 2026-04-12 00:50:52 +00:00
James Rich
5e44cbd3a9
fix(data): make MeshConnectionManagerImpl.onConnectionChanged atomic (#5076) 2026-04-12 00:49:09 +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
James Rich
174315b21f
refactor(data): replace lateinit var scope + start() with constructor injection (#5075) 2026-04-11 23:39:29 +00:00
James Rich
172680fd46
fix(mqtt): replace yield() with proper connection readiness signal (#5073) 2026-04-11 23:38:33 +00:00
James Rich
a3c0a4832d
fix(transport): Kable BLE audit + thread-safety, MQTT, and logging fixes across transport layers (#5071) 2026-04-11 22:56:29 +00:00
James Rich
5f0e60eb21
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5067) 2026-04-11 22:07:04 +00:00
James Rich
40ea45a4fe
fix(settings): hide Status Message config until firmware v2.8.0 (#5070) 2026-04-11 22:06:53 +00:00
James Rich
1fe3f4423d
fix(ui): add missing @ParameterName annotations on actual rememberReadTextFromUri declarations (#5072) 2026-04-11 22:06:44 +00:00
James Rich
0441093ce8
refactor(node): move Position to last in telemetry list on node details (#5068) 2026-04-11 17:06:17 +00:00
James Rich
b3d0c97206
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5065) 2026-04-11 04:53:07 -05:00
James Rich
1f88a26d51
feat(desktop): align versioning with Android, build runnable distributions in CI (#5064) 2026-04-11 03:50:32 +00:00
James Rich
6b77658cb1
ci: remove mesh_service_example from CI checks and Codecov (#5066) 2026-04-11 03:48:09 +00:00
James Rich
3794c79dae
refactor: adopt M3 Expressive components from material3 1.11.0-alpha06 (#5063) 2026-04-11 02:10:03 +00:00
James Rich
a6423d0a0f
feat(metrics): redesign position log with SelectableMetricCard and add CSV export to all metrics screens (#5062) 2026-04-11 01:26:26 +00:00
James Rich
37e9e2c8f0
fix(charts): hoist rememberVicoZoomState above vararg layers to prevent ClassCastException (#5060) 2026-04-11 00:05:56 +00:00
James Rich
9c8532f80d
refactor: leverage new dependency features from recent updates (#5057) 2026-04-10 22:51:08 +00:00
James Rich
929e273978
fix(build): resolve all actionable compile-time warnings (#5058) 2026-04-10 22:42:30 +00:00
James Rich
3d139d32fd
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5059) 2026-04-10 22:15:59 +00:00
James Rich
ce32e640de
fix(icons): replace outline (FILL=0) pathData with filled (FILL=1) from upstream Material Symbols (#5056) 2026-04-10 22:15:43 +00:00
James Rich
77e30b60e1
chore(build): enable AboutLibraries offlineMode by default (#5054) 2026-04-10 21:34:38 +00:00
James Rich
520fa717a9
refactor(metrics/map): DRY up charts, decompose MapView monoliths, add test coverage (#5049) 2026-04-10 20:54:09 +00:00
James Rich
56332f4d77
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5053) 2026-04-10 20:41:55 +00:00
James Rich
02f6fd67b8
fix: clean up flaky, duplicated, and misplaced tests; remove redundant deps (#5048) 2026-04-10 19:46:45 +00:00
James Rich
e70dabe94d
test(navigation): add tests for NavigationConfig, DeepLinkRouter, and… (#5052) 2026-04-10 19:18:59 +00:00
James Rich
eec27cf6f7
chore(resources): remove 131 unused string keys (#5051) 2026-04-10 19:13:33 +00:00
renovate[bot]
7ef382cce7
chore(deps): update google maps compose to v8.3.0 (#5050)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 18:22:14 +00:00
James Rich
3d51a48da2
feat(messaging): add IME Send action to message input (#5047) 2026-04-10 16:02:55 +00:00
renovate[bot]
6f5fa49b94
chore(deps): update actions/cache action to v5 (#5046)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 11:07:46 -05:00
James Rich
ae5f021323
refactor(navigation): adopt sealed interface routes with subclassesOfSealed() (#5043) 2026-04-10 15:33:57 +00:00
James Rich
0355c7b8b3
fix(build): prevent DataDog asset transform from stripping fdroid release assets (#5044) 2026-04-10 10:18:02 -05:00
James Rich
1390a3cd4f
ci: cache Robolectric SDK jars to prevent flaky SocketException failures (#5045) 2026-04-10 10:05:07 -05:00
James Rich
93e0b9ca57
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5042) 2026-04-10 14:41:56 +00:00
renovate[bot]
5c58709b0f
chore(deps): update core/proto/src/main/proto digest to a4c649b (#5041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 06:44:45 -05:00
James Rich
decda75852
style: update ic_no_cell and ic_place vector drawables (#5040) 2026-04-10 11:30:48 +00:00
James Rich
17e7c76583
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5035) 2026-04-10 10:44:08 +00:00
renovate[bot]
aeef34f88c
chore(deps): update compose.multiplatform.material3 to v1.11.0-alpha06 (#5037)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 06:08:02 -05:00
renovate[bot]
978ce19f93
chore(deps): update compose.multiplatform to v1.11.0-beta02 (#5036)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 06:06:37 -05:00
renovate[bot]
1db4e03076
chore(deps): update org.jetbrains.androidx.navigation3:navigation3-ui to v1.1.0-rc01 (#5039)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 06:06:11 -05:00
renovate[bot]
e23fab2667
chore(deps): update jetbrains.lifecycle to v2.11.0-alpha03 (#5038)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-10 06:04:01 -05:00
James Rich
ebf3b8272c
fix(service): resolve MeshService crash from eager notification channel init (#5034) 2026-04-10 03:24:03 +00:00
James Rich
dba037466e
refactor(icons): migrate to self-hosted VectorDrawable XMLs via MeshtasticIcons (#5030) 2026-04-10 01:35:52 +00:00
James Rich
5e57efeb06
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5031) 2026-04-09 19:48:16 -05:00
James Rich
a1e94aa439
fix(ci): add concurrency group to Check PR Labels workflow (#5032) 2026-04-09 19:47:30 -05:00
renovate[bot]
f07624be88
chore(deps): update actions/github-script action to v9 (#5029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 23:53:58 +00:00
James Rich
d5a9e32b32
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5025) 2026-04-09 23:46:20 +00:00
James Rich
9c0e9b82d6
feat(charts): adopt Vico best practices, add sensor data, and migrate TracerouteLog (#5026) 2026-04-09 23:44:59 +00:00
renovate[bot]
e01c4abae7
chore(deps): update markdown renderer (mike penz) to v14.0.1 (#5028)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 23:44:23 +00:00
renovate[bot]
20d934459a
chore(deps): update firebase to v3.0.7 (#5027)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 23:44:08 +00:00
renovate[bot]
ad7003ed90
chore(deps): update kotlin ecosystem to v1.11.0 (#5024)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 13:37:47 -05:00
James Rich
14b381c1eb
fix: harden reliability, clean up KMP compliance, and improve code quality (#5023) 2026-04-09 18:21:46 +00:00
James Rich
537029a71c
fix(ci): correct repo guards, labels, and prompts in triage/moderation workflows (#5022) 2026-04-09 12:48:55 -05:00
renovate[bot]
015ab5c0fb
chore(deps): update com.google.firebase:firebase-bom to v34.12.0 (#5021)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:40:16 -05:00
James Rich
1649e46dd5
chore(deps): remove 7 unused dependencies across modules (#5017) 2026-04-09 12:35:28 -05:00
renovate[bot]
0576364c11
chore(deps): update koin to v4.2.1 (#5019)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:26:31 -05:00
renovate[bot]
eb79421209
chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v2.6.0 (#5016)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:26:15 -05:00
James Rich
2ce110dffe
fix: scope labeler trigger to reduce rate limiting and fix bugfix typo (#5020) 2026-04-09 12:25:51 -05:00
James Rich
750c4ea928
fix: use payload labels in pr_enforce_labels.yml to avoid rate limiting (#5018) 2026-04-09 12:16:15 -05:00
James Rich
013a9afc96
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5014) 2026-04-09 16:34:33 +00:00
James Rich
975df02437
fix(tak): resolve frequent TAK client disconnections (#5015) 2026-04-09 16:24:50 +00:00
James Rich
ad08a6c7b7
feat(settings): add DNS support and fix UDP protocol toggle (#5013) 2026-04-09 14:23:31 +00:00
James Rich
150ee3f1a4
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5012) 2026-04-09 13:37:09 +00:00
James Rich
60cc2f4237
fix: resolve bugs across connection, PKI, admin, packet flow, and stability subsystems (#5011) 2026-04-09 13:20:06 +00:00
renovate[bot]
cd9f1c0600
chore(deps): update markdown renderer (mike penz) to v14 (major) (#5001)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:08:19 +00:00
renovate[bot]
8dfb642deb
chore(deps): update vico to v3.1.0 (#4999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:08:13 +00:00
James Rich
87d507eb6e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4997) 2026-04-09 12:08:01 +00:00
renovate[bot]
f817297ebe
chore(deps): update androidx room to v3.0.0-alpha03 (#5007)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:07:54 +00:00
renovate[bot]
f33518de6d
chore(deps): update markdown renderer (mike penz) to v0.40.2 (#5000)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:07:49 +00:00
renovate[bot]
cc2fb45366
chore(deps): update datadog to v1.25.0 (#5003)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:07:43 +00:00
renovate[bot]
5f53bfa300
chore(deps): update androidx.annotation:annotation to v1.10.0 (#5009)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:07:36 +00:00
renovate[bot]
38a19e5599
chore(deps): update io.nlopez.compose.rules:detekt to v0.5.7 (#5008)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:07:31 +00:00
renovate[bot]
547d349b48
chore(deps): update core/proto/src/main/proto digest to e30092e (#5006)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 12:07:25 +00:00
Copilot
15419aba6c
fix: resolve correct node public key in sendSharedContact and favoriteNode (#5005)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
2026-04-08 12:54:47 +00:00
James Rich
72f4697d0d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4993) 2026-04-04 19:51:47 -05:00
James Rich
b3be9e2c38
fix: improve PKI message routing and resolve database migration racecondition (#4996) 2026-04-05 00:37:20 +00:00
renovate[bot]
d0e3b682ab
chore(deps): update kotest to v6.1.11 (#4991)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Deploy Documentation / build-docs (push) Waiting to run
Deploy Documentation / deploy (push) Blocked by required conditions
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-04 13:43:51 -05:00
James Rich
6af3ad6f0c
refactor(service): harden KMP service layer — database init, connection reliability, handler decomposition (#4992) 2026-04-04 18:07:44 +00:00
James Rich
e111b61e4e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4985)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Deploy Documentation / build-docs (push) Waiting to run
Deploy Documentation / deploy (push) Blocked by required conditions
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-04-04 10:51:51 +00:00
renovate[bot]
1442e9354e
chore(deps): update core/proto/src/main/proto digest to 349c1d5 (#4990)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-04 10:51:21 +00:00
renovate[bot]
5673eb90f3
chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v2.5.0 (#4987)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-04 10:51:09 +00:00
renovate[bot]
53d21b4193
chore(deps): update koin.plugin to v0.6.2 (#4986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-04 10:51:01 +00:00
James Rich
fda96e2f8c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4975)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-04-03 09:13:23 -05:00
renovate[bot]
e468818c82
chore(deps): update org.junit.platform:junit-platform-launcher to v6 (#4983)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-03 09:09:57 -05:00
renovate[bot]
919da2904e
chore(deps): update junit5 to v6 (major) (#4982)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-03 09:08:03 -05:00
renovate[bot]
9544df2bb9
chore(deps): update org.junit.platform:junit-platform-launcher to v1.14.3 (#4981)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-03 09:02:31 -05:00
renovate[bot]
db5403b436
chore(deps): update junit5 to v5.14.3 (#4980)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-03 08:59:43 -05:00
James Rich
fc86c696cd
feat(wifi-provision): add mPWRD-OS branding and disclaimer banner (#4978) 2026-04-03 13:47:15 +00:00
James Rich
51251ab16a
feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
James Rich
7e041c00e1
feat(wifi): introduce BLE-based WiFi provisioning for nymea-compatible devices (#4968)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-04-02 17:31:17 +00:00
James Rich
1fee6c4431
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4973)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-04-01 18:40:29 -05:00
James Rich
176340be5f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4972) 2026-04-01 16:49:55 -05:00
renovate[bot]
05229fd652
chore(deps): update xmlutil to v0.91.3 (#4971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-01 16:48:57 -05:00
James Rich
0167063497
feat(analytics): expand DataDog RUM integration and align with iOS parity (#4970) 2026-04-01 20:27:28 +00:00
James Rich
e249461e3c
feat(tak): introduce built-in Local TAK Server and mesh integration (#4951)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-04-01 20:21:25 +00:00
James Rich
d1ca8ec527
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4967)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-04-01 10:56:33 -05:00
James Rich
fefe74d217
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4965) 2026-04-01 12:45:23 +00:00
James Rich
89547afe6b
Refactor and unify firmware update logic across platforms (#4966) 2026-04-01 12:14:26 +00:00
James Rich
d8e295cafb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4964)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-31 21:15:06 -05:00
James Rich
7c9d007a1f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4962) 2026-03-31 21:26:24 +00:00
James Rich
464a12b9f7
chore: standardize resources and update documentation for Navigation 3 (#4961) 2026-03-31 21:25:37 +00:00
James Rich
1faa802fe6
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4958)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-31 14:07:18 +00:00
James Rich
6a5115b897
Refactor navigation to use NodeDetail route and fix radio settings (#4960) 2026-03-31 14:03:02 +00:00
James Rich
c75c9b34d6
feat: implement XModem file transfers and enhance BLE connection robustness (#4959)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-31 03:49:31 +00:00
Roman Vlasenko
ae4465d7c8
fix(strings): Fix public key description (#4957)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-30 20:34:54 +00:00
renovate[bot]
38848b4ea4
chore(deps): update kotest to v6.1.10 (#4956)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-30 16:03:58 +00:00
James Rich
69f147a1d8
ci: Upgrade to JDK 21 and centralize CI configuration with new workflows (#4948)
Some checks failed
Dependency Submission / dependency-submission (push) Has been cancelled
Main CI (Verify & Build) / validate-and-build (push) Has been cancelled
Main Push Changelog / Generate main push changelog (push) Has been cancelled
2026-03-27 17:06:19 +00:00
renovate[bot]
445ec27fa4
chore(deps): update ktor to v3.4.2 (#4947)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-27 16:49:00 +00:00
James Rich
ad6e12445b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4943)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-27 14:51:32 +00:00
James Rich
f2d09ff79d
Refactor nav3 architecture and enhance adaptive layouts (#4944)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-27 14:43:44 +00:00
James Rich
3feec759a1
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4939)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-27 02:45:08 +00:00
renovate[bot]
791601dec2
chore(deps): update wire to v6.2.0 (#4940)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-27 02:45:01 +00:00
James Rich
0bc7ca820b
ci(github): add conditional desktop build to release workflows (#4938)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-26 15:03:27 -05:00
James Rich
1c1c208d48
chore(ci): implement tiered GitHub Actions runner strategy (#4937)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 18:18:03 +00:00
James Rich
e106badec7
build: update JVM toolchain and CI Java distribution (#4936) 2026-03-26 12:25:05 -05:00
James Rich
d979269552
fix(ci): update APP_VERSION_NAME output reference in workflows (#4935) 2026-03-26 12:01:53 -05:00
James Rich
141b54ff9c
feat: migrate to Material 3 Expressive APIs (#4934)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 16:42:46 +00:00
renovate[bot]
c259c76550
chore(deps): update codecov/codecov-action action to v6 (#4933)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 15:26:11 +00:00
James Rich
518096ddc8
build: update Compose Multiplatform and migrate lifecycle dependencies (#4932)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 15:18:45 +00:00
renovate[bot]
4be0fb9c65
chore(deps): update org.jetbrains.androidx.navigation3:navigation3-ui to v1.1.0-beta01 (#4931)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 09:08:36 -05:00
renovate[bot]
0d2c2e8a98
chore(deps): update jetbrains.lifecycle to v2.11.0-alpha02 (#4930)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 13:52:16 +00:00
James Rich
3b485a0109
build: enable -Xjvm-default=all compiler flag (#4929)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 13:16:04 +00:00
renovate[bot]
e1fa05f63f
chore(deps): update dokka to v2.2.0 (#4928)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 08:16:35 -05:00
James Rich
ff6e1813ea
chore(github): update GitHub token reference in workflows (#4926)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-25 21:32:14 -05:00
James Rich
da5b28443e
ci: change jdk from jetbrains to temurin in non-release workflows (#4925) 2026-03-25 21:24:29 -05:00
James Rich
7484cc69b4
refactor(ui): remove labels from navigation suite items (#4924) 2026-03-25 21:14:17 -05:00
James Rich
36290fc94b
build(github): add GITHUB_TOKEN to setup-java actions (#4923) 2026-03-25 20:53:18 -05:00
James Rich
6f95435cfc
ci: refine workflow permissions and version parsing logic (#4922)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 01:16:22 +00:00
James Rich
a005231d94
Refactor map layer management and navigation infrastructure (#4921)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 00:29:24 +00:00
James Rich
b608a04ca4
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4912)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-25 16:37:36 -05:00
renovate[bot]
d62481a532
chore(deps): update actions/deploy-pages action to v5 (#4920)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 16:37:26 -05:00
renovate[bot]
e81e84a544
chore(deps): update androidx (general) (#4919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 16:36:59 -05:00
renovate[bot]
eabab0b137
chore(deps): update kotlin ecosystem to v0.9.8 (#4917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 16:36:47 -05:00
renovate[bot]
705f617adb
chore(deps): update plugin com.gradle.develocity to v4.4.0 (#4918)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 16:36:31 -05:00
renovate[bot]
c55d25bade
chore(deps): update androidx.room3:room3-gradle-plugin to v3.0.0-alpha02 (#4916)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 18:00:14 +00:00
renovate[bot]
f622fae74f
chore(deps): update androidx (general) (#4915)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 17:59:25 +00:00
James Rich
c470b9a366
Revise security policy for supported versions and reporting
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Updated the security policy to clarify supported versions and reporting process.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-25 10:18:51 -05:00
James Rich
8ce17defb7
refactor: remove demoscenario and enhance BLE connection stability (#4914)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-25 14:24:42 +00:00
James Rich
6516287c62
refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-25 02:15:51 +00:00
James Rich
b0e91a390c
feat: implement unified deep link routing for Kotlin Multiplatform (#4910)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-25 00:21:24 +00:00
James Rich
553ca2f8ed
feat: implement global SnackbarManager and consolidate common UI setup (#4909)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-24 22:31:40 +00:00
James Rich
9b8ac6a460
build(desktop): enable ProGuard minification and tree-shaking (#4904)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-24 22:22:37 +00:00
James Rich
0c3ab92908
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4907) 2026-03-24 22:21:59 +00:00
renovate[bot]
3a9f611fc0
chore(deps): update wire to v6.1.0 (#4906)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 22:21:46 +00:00
renovate[bot]
cd328b236d
chore(deps): update kotest to v6.1.9 (#4908)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 22:21:40 +00:00
James Rich
b45bc9be90
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4905) 2026-03-24 15:49:49 +00:00
renovate[bot]
41c82abc9e
chore(deps): update kotest to v6.1.8 (#4902)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 14:07:41 +00:00
James Rich
96060a0a4d
refactor: coroutine dispatchers and modernize testing infrastructure (#4901)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-24 01:31:48 +00:00
James Rich
664ebf218e
refactor: null safety, update date/time libraries, and migrate tests (#4900)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-23 23:17:50 +00:00
James Rich
f826cac6c8
refactor(di): specify disk cache directory for ImageLoader (#4899)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-23 21:05:50 +00:00
James Rich
a0b4c56505
feat: optimistically persist local configs and channels (#4898)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-23 19:57:45 +00:00
James Rich
57242d905c
refactor: Consolidate UI preference handling (#4895) 2026-03-23 19:36:02 +00:00
renovate[bot]
b4afe22030
chore(deps): update gradle/actions action to v6 (#4894)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 18:41:41 +00:00
James Rich
82466be072
feat: Integrate AlertHost into desktop application and add UI tests (#4893) 2026-03-23 18:19:41 +00:00
renovate[bot]
d2c9036d24
chore(deps): update org.jetbrains.kotlinx:atomicfu to v0.32.1 (#4892)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 12:37:21 -05:00
James Rich
7b327215f3
refactor: adaptive UI components for Navigation 3 (#4891) 2026-03-23 12:35:02 -05:00
James Rich
b3b38acc0b
feat: Migrate networking to Ktor and enhance multiplatform support (#4890)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-23 16:48:10 +00:00
James Rich
acb328dae3
refactor(desktop): remove native MenuBar from main window (#4888)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-23 12:20:07 +00:00
James Rich
cb89b111de
refactor(messaging): fix contact key derivation in ContactsViewModel (#4887)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-23 12:14:01 +00:00
James Rich
5a287f7133
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4884)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-22 15:56:10 +00:00
Dmitry
ee146df334
Add InlineMap implementation for F-Droid build (#4877) 2026-03-22 15:55:58 +00:00
James Rich
d5d4aa4577
refactor(service): update string formatting for local stats notif (#4885)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-22 15:55:30 +00:00
renovate[bot]
883ab5f7da
chore(deps): update core/proto/src/main/proto digest to cb1f893 (#4882)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-22 12:56:23 +00:00
James Rich
55729c9e2d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4880) 2026-03-22 12:52:15 +00:00
James Rich
27bcbcb7be
fix(settings): remove redundant regex option in DebugViewModel (#4881) 2026-03-22 07:41:52 -05:00
James Rich
fa98d20256
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4874)
Some checks are pending
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
2026-03-22 00:59:35 -05:00
James Rich
c38bfc64de
Refactor command handling, enhance tests, and improve discovery logic (#4878)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-22 05:42:27 +00:00
James Rich
d136b162a4
feat: Implement iOS support and unify Compose Multiplatform infrastructure (#4876) 2026-03-21 23:19:13 +00:00
James Rich
f04924ded5
chore: Enhance CI coverage reporting and add main branch workflow (#4873) 2026-03-21 16:54:17 +00:00
James Rich
a331f96576
fix: specify jetbrains in gradle-daemon-jvm.properties (#4872) 2026-03-21 15:27:21 +00:00
James Rich
88d11aafec
fix: Update messaging feature with contact item keys and MQTT limits (#4871) 2026-03-21 14:25:23 +00:00
renovate[bot]
d61c0c9a67
chore(deps): update core/proto/src/main/proto digest to ee7df89 (#4868)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-21 13:07:44 +00:00
James Rich
3bd8669cbe
fix: Implement reconnection logic and stabilize BLE connection flow (#4870) 2026-03-21 12:49:03 +00:00
James Rich
6e50db0b91
docs: Unify notification channel management and migrate unit tests (#4867) 2026-03-20 22:58:47 +00:00
renovate[bot]
b1e433e0dc
chore(deps): update androidx.sqlite:sqlite-bundled to v2.6.2 (#4785)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 22:42:00 +00:00
renovate[bot]
05dc1703da
chore(deps): update org.jetbrains.kotlinx:atomicfu to v0.32.0 (#4866)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 22:41:55 +00:00
James Rich
c4087c2ab7
feat: Migrate to Room 3.0 and update related documentation and tracks (#4865) 2026-03-20 21:40:08 +00:00
James Rich
6cdd10d936
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4863) 2026-03-20 13:35:13 +00:00
James Rich
0a3d2ec4b9
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4862) 2026-03-19 17:13:08 -05:00
James Rich
398e751a87
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4860) 2026-03-19 21:47:01 +00:00
James Rich
00697cc3c1
feat: KMP Debug Panel Migration and Update Documentation (#4859)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-19 19:07:03 +00:00
renovate[bot]
e36176bbf7
chore(deps): update io.github.g0dkar:qrcode-kotlin to v4.5.0 (#4858)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 13:39:11 -05:00
renovate[bot]
89e38611d8
chore(deps): update com.google.firebase:firebase-bom to v34.11.0 (#4857)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 13:36:43 -05:00
James Rich
1e55e554be
feat: Add KMP URI handling, import, and QR code generation support (#4856) 2026-03-19 13:36:19 -05:00
James Rich
4eb711ce58
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4853) 2026-03-19 12:36:58 -05:00
renovate[bot]
b7b973eaee
chore(deps): update org.jmdns:jmdns to v3.6.3 (#4855)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 12:36:36 -05:00
James Rich
bc08093f6c
fix(map, settings): allow null IDs and implement request timeout (#4851) 2026-03-19 12:36:14 -05:00
James Rich
b982b145e6
feat: Implement KMP ServiceDiscovery for TCP devices (#4854) 2026-03-19 17:19:58 +00:00
renovate[bot]
a5d3914149
chore(deps): update jetbrains.lifecycle to v2.10.0 (#4852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 14:25:48 +00:00
renovate[bot]
ad06eafff7
chore(deps): update gradle to v9.4.1 (#4850)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 14:15:38 +00:00
James Rich
cdba140eeb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4846) 2026-03-19 12:30:01 +00:00
James Rich
06b9f8c77a
feat: Enhance test coverage (#4847)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-19 03:09:19 +00:00
James Rich
1b0dc75dfe
feat: Complete app module thinning and feature module extraction (#4844) 2026-03-19 00:21:18 +00:00
James Rich
dcbbc0823b
feat: Integrate Mokkery and Turbine into KMP testing framework (#4845) 2026-03-18 18:33:37 -05:00
James Rich
df3a094430
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4843) 2026-03-18 21:25:06 +00:00
renovate[bot]
5158d6c9d6
chore(deps): update static analysis to v8.4.0 (#4842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 21:24:59 +00:00
renovate[bot]
04a71c2743
chore(deps): update datadog to v3.8.0 (#4839)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 19:00:41 +00:00
James Rich
54b07d41de
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4840) 2026-03-18 18:54:03 +00:00
James Rich
d314ee2d8a
feat: mqtt (#4841) 2026-03-18 18:39:20 +00:00
Victorio Berra
eae5a6bdac
Add "Exclude MQTT" filter to Nodes view. (#4825)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <james.a.rich@gmail.com>
2026-03-18 15:39:59 +00:00
James Rich
1e9e838025
build: switch Java distribution from Zulu to JetBrains in GitHub Actions (#4838) 2026-03-18 14:36:50 +00:00
renovate[bot]
3263b0614f
chore(deps): update com.fazecast:jserialcomm to v2.11.4 (#4837)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 08:28:25 -05:00
James Rich
59408ef46e
feat: Desktop USB serial transport (#4836)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-18 12:42:24 +00:00
renovate[bot]
06c990026f
chore(deps): update google maps compose to v8.2.2 (#4834)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 03:18:02 +00:00
James Rich
49a6a1d4a9
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4833) 2026-03-18 03:17:50 +00:00
James Rich
cb95cace25
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4832) 2026-03-17 16:51:09 -05:00
James Rich
3bbb8a65ba
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4831) 2026-03-17 20:39:48 +00:00
renovate[bot]
afa7552141
chore(deps): update koin.plugin to v0.4.1 (#4763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 20:39:05 +00:00
James Rich
7d63f8b824
feat: build logic (#4829)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 20:35:39 +00:00
James Rich
807db83f53
feat: service extraction (#4828) 2026-03-17 14:06:01 -05:00
renovate[bot]
0d0bdf9172
chore(deps): update core/proto/src/main/proto digest to eba2d94 (#4830)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 14:05:21 -05:00
renovate[bot]
0c3a841a80
chore(deps): update koin to v4.2.0 (#4827)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 18:07:36 +00:00
renovate[bot]
190e62ce68
chore(deps): update datadog to v1.24.0 (#4826)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 18:07:18 +00:00
James Rich
5eb6e501c0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4822) 2026-03-17 14:25:38 +00:00
renovate[bot]
212acaecac
chore(deps): update core/proto/src/main/proto digest to bc8e638 (#4823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 14:25:30 +00:00
James Rich
a10fe61d0f
fix: resolve crashes and debug filter issues in Metrics and MapView (#4824)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 14:04:41 +00:00
James Rich
9ad28e924f
build: fix license generation and analytics build tasks (#4820)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 01:21:29 +00:00
James Rich
8c964a15ca
feat: Integrate notification management and preferences across platforms (#4819)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 01:17:34 +00:00
James Rich
0b2e89c46f
refactor: Replace Nordic, use Kable backend for Desktop and Android with BLE support (#4818)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-16 23:06:43 +00:00
James Rich
0e5f94579f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4816) 2026-03-16 20:06:05 +00:00
James Rich
6e81ceec91
feat: Complete ViewModel extraction and update documentation (#4817) 2026-03-16 20:05:50 +00:00
Alexey Skobkin
80cae8e620
fix: fix wrong getChannelUrl() call causing loss of "add" flag and un… (#4809) 2026-03-16 09:03:17 -05:00
James Rich
5edb8abd05
feat: enhance map navigation and waypoint handling (#4814)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-16 13:48:00 +00:00
James Rich
802aa09aab
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4815) 2026-03-16 13:47:48 +00:00
renovate[bot]
2c52977683
chore(deps): update kotlin ecosystem to v2.3.20 (#4813)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 13:07:41 +00:00
James Rich
4e64182afd
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4805) 2026-03-16 13:06:21 +00:00
James Rich
513dcc2f78
Revert "ci: Integrate Conveyor for cross-platform desktop packaging and simplify build" (#4804) 2026-03-14 13:25:28 -05:00
James Rich
e29fd596b6
ci: Integrate Conveyor for cross-platform desktop packaging and simplify build (#4802) 2026-03-14 12:44:55 -05:00
James Rich
fae6f83968
ci: Update Linux desktop distribution packaging and CI workflow (#4799) 2026-03-14 10:26:47 -05:00
James Rich
5610cc3924
ci(github-actions): install libfuse2t64 for Linux AppImage packaging (#4798) 2026-03-14 10:13:00 -05:00
James Rich
ac8119b086
ci(github): add Release environment to desktop release workflow (#4797) 2026-03-14 09:43:40 -05:00
James Rich
609d24a9e4
build(desktop): dynamically configure target formats based on host OS (#4796) 2026-03-14 09:38:34 -05:00
James Rich
b63192dccc
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4795) 2026-03-14 09:11:33 -05:00
James Rich
a8044a2402
build(desktop): refactor native distribution target formats (#4794) 2026-03-14 09:11:18 -05:00
James Rich
acf7aea098
feat(desktop): add enter-to-send functionality in messaging (#4793) 2026-03-14 08:43:25 -05:00
James Rich
bff87daaa7
ci(github-actions): include architecture in desktop artifact names (#4792) 2026-03-14 08:17:13 -05:00
James Rich
365e278335 ci(desktop): add ubuntu-24.04-arm to native distribution build 2026-03-14 07:32:54 -05:00
James Rich
8c6892a4da
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4791) 2026-03-14 06:44:36 -05:00
James Rich
832e785785 ci(release): update artifact glob pattern to be recursive
This commit updates the release workflow to ensure all files within the artifacts directory are correctly captured, regardless of nesting depth.

Specific changes include:
- Updated the `files` path in both draft and final release steps from `./artifacts/*/*` to `./artifacts/**/*` to support recursive file matching.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-14 06:44:03 -05:00
James Rich
06f002a198
refactor(settings): improve destination node handling in RadioConfigViewModel (#4790)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-14 02:55:46 +00:00
James Rich
2bfd225b68
build: Update desktop app icons, versioning, and packaging configuration (#4789) 2026-03-13 20:05:22 -05:00
James Rich
305466514a
build: remove PKG from desktop distribution targets (#4788) 2026-03-13 19:07:35 -05:00
James Rich
48740fe280
build(desktop): include java.net.http module in native distribution (#4787) 2026-03-13 19:02:29 -05:00
renovate[bot]
be70743ed6
chore(deps): update androidx.compose:compose-bom to v2026 (#4786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 18:13:26 -05:00
James Rich
427c0f3bbb
fix: fix animation stalls and update dependencies for stability (#4784)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-13 23:01:17 +00:00
James Rich
90844301e8
feat(desktop): expand supported native distribution formats (#4783) 2026-03-13 13:23:34 -05:00
James Rich
07ec771758
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4781) 2026-03-13 18:10:21 +00:00
James Rich
f45993ede2
feat(desktop): implement DI auto-wiring and validation (#4782)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-13 18:08:55 +00:00
renovate[bot]
8bb1e86511
chore(deps): update wire to v6.0.0 (#4778)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 18:04:35 +00:00
James Rich
da11703ccd
ai: Establish conductor documentation and governance framework (#4780)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-13 16:38:25 +00:00
James Rich
b0f1f93c5a
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4777) 2026-03-13 16:33:41 +00:00
James Rich
5cc1e94a13
fix(ble): implement scanning for unbonded devices in common connections ui (#4779)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-13 16:33:30 +00:00
James Rich
afe1356430 build: streamline icon file configuration for desktop platforms
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-12 23:11:20 -05:00
James Rich
aacf5c69e9
Disable ProGuard for desktop release and add application icon (#4776) 2026-03-12 23:09:18 -05:00
James Rich
0ed9b6633b
build(ci): optimize release workflow and update Room configuration (#4775) 2026-03-12 22:46:01 -05:00
James Rich
eb3349fa11
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4773) 2026-03-12 22:15:20 -05:00
James Rich
20f358e01c
ci(release): pass app version to desktop build via environment variable (#4774) 2026-03-12 22:15:07 -05:00
James Rich
87e291f58d
build(desktop): enable ProGuard for release builds (#4772) 2026-03-12 21:57:29 -05:00
James Rich
3d93d0b4e3
build(github): switch Java distribution to Zulu across workflows (#4771) 2026-03-12 21:51:23 -05:00
James Rich
84bb6d24e4
docs: summarize KMP migration progress and architectural decisions (#4770)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-13 02:23:25 +00:00
James Rich
bdfd7b9251
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4766) 2026-03-13 01:51:02 +00:00
James Rich
3321c47200
ci: Update Dokka configuration and unify AboutLibraries JSON generation (#4767)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-13 01:49:11 +00:00
renovate[bot]
629d80ec65
chore(deps): update actions/upload-artifact action to v7 (#4768)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 00:47:45 +00:00
renovate[bot]
3957b0823c
chore(deps): update dorny/paths-filter action to v4 (#4769)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 00:47:40 +00:00
renovate[bot]
55cea44993
chore(deps): update jetbrains.adaptive to v1.3.0-alpha06 (#4764)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 21:45:20 +00:00
James Rich
ac6bb5479b
feat: introduce Desktop target and expand Kotlin Multiplatform (KMP) architecture (#4761)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-12 21:14:49 +00:00
renovate[bot]
f4364cff9a
chore(deps): update google maps compose to v8.2.1 (#4758)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 14:55:20 +00:00
renovate[bot]
3ccfcf644f
chore(deps): update androidx.datastore:datastore to v1.2.1 (#4755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 14:55:10 +00:00
renovate[bot]
6a1f3b197a
chore(deps): update com.squareup.okio:okio to v3.17.0 (#4759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 14:14:42 +00:00
renovate[bot]
c72e085f10
chore(deps): update koin to v4.2.0-rc2 (#4760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 14:14:03 +00:00
renovate[bot]
f70623db14
chore(deps): update androidx (general) (#4756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 13:53:02 +00:00
James Rich
a562f274bf
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4757) 2026-03-12 13:52:20 +00:00
James Rich
cfef01ccac
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4753) 2026-03-11 15:17:44 +00:00
James Rich
a902da4ca0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4749) 2026-03-11 14:56:55 +00:00
renovate[bot]
7a1e1778f4
chore(deps): update compose.multiplatform to v1.11.0-alpha04 (#4751)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 14:56:46 +00:00
renovate[bot]
2ef0547fb2
chore(deps): update ruby to v3.4.9 (#4752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 14:56:35 +00:00
James Rich
d076361c55
refactor: migrate core UI and features to KMP, adopt Navigation 3 (#4750)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-10 17:29:47 +00:00
James Rich
b1070321fe
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4748) 2026-03-09 20:45:41 -05:00
renovate[bot]
e3e010e3db
chore(deps): update vico to v3.0.3 (#4740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 01:22:08 +00:00
renovate[bot]
f86ba289d8
chore(deps): update core/proto/src/main/proto digest to cdde287 (#4742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 01:21:59 +00:00
James Rich
ee03b6d186
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4741) 2026-03-10 01:21:46 +00:00
James Rich
875cf1cff2
refactor: migrate from Hilt to Koin and expand KMP common modules (#4746)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-10 01:19:46 +00:00
James Rich
a5390a80e7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4739) 2026-03-06 20:59:08 -06:00
James Rich
0ce322a0f5
feat: Migrate project to Kotlin Multiplatform (KMP) architecture (#4738)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-07 02:43:45 +00:00
James Rich
182ad933f4
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4737) 2026-03-06 16:39:05 -06:00
renovate[bot]
f663866d53
chore(deps): update kotlin ecosystem (#4736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 16:35:31 -06:00
James Rich
cffbd08806
refactor: migrate core modules to Kotlin Multiplatform and consolidat… (#4735)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-06 22:06:50 +00:00
renovate[bot]
f3775a601c
chore(deps): update datadog to v3.7.1 (#4734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 13:36:26 +00:00
James Rich
27e7dec69e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4729) 2026-03-05 20:37:58 -06:00
James Rich
b9b68d2779
refactor: migrate preferences to DataStore and decouple core:domain for KMP (#4731) 2026-03-05 20:37:35 -06:00
James Rich
87fdaa26ff
refactor: enhance handshake stall guard and extend coverage to Stage 2 (#4730) 2026-03-05 16:06:21 -06:00
James Rich
dfab02bfb4
refactor(ble): increase default timeout for BLE profiling (#4728) 2026-03-05 14:56:49 -06:00
James Rich
a854c839e4
ci: Refine APK artifact paths and enable automatic release notes generation (#4727) 2026-03-05 14:51:47 -06:00
James Rich
9d9f95961d
ci: fix secrets context not allowed in if conditional (#4726) 2026-03-05 14:29:56 -06:00
James Rich
79a4a3671f
ci: fix internal builds release failing the workflow when secrets are missing (#4725) 2026-03-05 14:26:57 -06:00
James Rich
c9005432ea
ci: improve release cleanup and optimize build tasks (#4724) 2026-03-05 14:04:37 -06:00
James Rich
2e13b1ab17
ci: release flow tweaks (#4723) 2026-03-05 13:47:09 -06:00
James Rich
43f9aa0b50
ci: Remove environment from github-release job
Removed the environment specification for the github-release job.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-05 13:13:14 -06:00
James Rich
63984f0723
fix(widget): ensure local stats widget gets updates (#4722) 2026-03-05 19:00:30 +00:00
James Rich
68b2b6d88e
refactor(ble): improve connection lifecycle and enhance OTA reliability (#4721)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-05 18:58:34 +00:00
renovate[bot]
5a5aa1f026
chore(deps): update nordic.common to v2.9.2 (#4718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 12:46:01 -06:00
renovate[bot]
c1309545ea
chore(deps): update core/proto/src/main/proto digest to 2edc5ab (#4717)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 18:18:52 +00:00
James Rich
af3f36b648
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4719) 2026-03-05 18:18:41 +00:00
James Rich
b0258d0cf1
feat: Add "Mark all as read" and unread message count indicators (#4720) 2026-03-05 18:18:34 +00:00
James Rich
6a1a612c38
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4716) 2026-03-05 12:57:22 +00:00
renovate[bot]
5fc7e46c29
chore(deps): update actions/upload-artifact action to v7 (#4714)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 21:26:16 +00:00
James Rich
3e986032a5
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4709) 2026-03-04 21:14:18 +00:00
renovate[bot]
1e0613d520
chore(deps): update gradle/actions action to v5 (#4715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 21:13:13 +00:00
renovate[bot]
5b43dcb636
chore(deps): update actions/checkout action to v6 (#4712)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 21:12:54 +00:00
James Rich
02e01bb331
ci: optimize, secure, and modernize CI pipeline (#4711) 2026-03-04 17:34:46 +00:00
github-actions[bot]
bd9c730c25 chore(release): prepare v2.7.14-internal.6 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-03-04 12:02:04 +00:00
renovate[bot]
6f393a56ec
chore(deps): update gradle to v9.4.0 (#4708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 05:59:39 -06:00
James Rich
7812e7df72
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4706) 2026-03-04 11:27:54 +00:00
renovate[bot]
7cdfff9ae8
chore(deps): update androidx.sqlite:sqlite-bundled to v2.6.2 (#4704)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 11:27:34 +00:00
James Rich
7067806444
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4705) 2026-03-04 03:07:27 +00:00
James Rich
6a858acb4a
refactor: migrate :core:database to Room Kotlin Multiplatform (#4702) 2026-03-03 20:44:34 -06:00
renovate[bot]
744db2d5bd
chore(deps): update wire to v6.0.0-alpha03 (#4701)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-04 00:52:25 +00:00
James Rich
034c85d191
ci: update github-release permissions and environment settings (#4700) 2026-03-03 12:53:55 -06:00
James Rich
fe67219207
refactor: simplify traceroute tracking and unify cooldown button logic (#4699)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-03 18:34:12 +00:00
James Rich
17dcbed6b1
build: apply instrumented test dependencies conditionally (#4698) 2026-03-03 10:29:26 -06:00
renovate[bot]
8f055fda93
chore(deps): update datadog to v3.7.0 (#4697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 10:28:16 -06:00
renovate[bot]
be8f756694
chore(deps): update agp to v9.1.0 (#4694)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 16:14:21 +00:00
James Rich
c234ace312
fix: ui tweaks (#4696)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-03 15:37:40 +00:00
renovate[bot]
657553f830
chore(deps): update com.android.tools:common to v32.1.0 (#4695)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 15:32:41 +00:00
James Rich
05e2c5d457
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4692) 2026-03-03 15:19:40 +00:00
renovate[bot]
9dc1319845
chore(deps): update ktor to v3.4.1 (#4691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 07:56:31 -06:00
renovate[bot]
f4c2a37913
chore(deps): update core/proto/src/main/proto digest to a229208 (#4690)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 07:55:58 -06:00
James Rich
4d21278514
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4689) 2026-03-03 13:16:23 +00:00
renovate[bot]
66d4cfb8c3
chore(deps): update static analysis to v8.3.0 (#4687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 13:16:12 +00:00
James Rich
2c49db8041
feat/decoupling (#4685)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-03 13:15:28 +00:00
James Rich
40244f8337
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4686) 2026-03-03 00:34:50 +00:00
renovate[bot]
0fc3fd280e
chore(deps): update app.cash.turbine:turbine to v1.2.1 (#4682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 00:34:13 +00:00
renovate[bot]
bb37c66353
chore(deps): update co.touchlab:kermit to v2.1.0 (#4684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 21:57:48 +00:00
James Rich
728c300315
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4683) 2026-03-02 21:47:19 +00:00
James Rich
8c6bd8ab7a
feat: settings rework part 2, domain and usecase abstraction, tests (#4680)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-02 18:15:33 +00:00
renovate[bot]
5f31df96d8
chore(deps): update androidx.compose:compose-bom-alpha to v2026.02.01 (#4673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 18:15:23 +00:00
renovate[bot]
9ba4d50e60
chore(deps): update vico to v3.0.2 (#4675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 14:52:46 +00:00
James Rich
362ab6357c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4672) 2026-03-02 14:52:29 +00:00
James Rich
fdd07f893f
feat: settings rework (#4678)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-02 14:51:05 +00:00
James Rich
b2b21e10e2
feat: upcoming support for tak and trafficmanagement configs, device hw (#4671)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-27 17:44:19 +00:00
James Rich
a07992530c
feat: Improve edge-to-edge and display cutout handling (#4669) 2026-02-27 17:33:43 +00:00
James Rich
225dc232b6
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4667) 2026-02-27 17:25:41 +00:00
James Rich
145c256972
Merge pull request #4668
* Disable generate_release_notes in release workflow
2026-02-27 11:22:36 -06:00
github-actions[bot]
8347f2e56e chore(release): prepare v2.7.14-internal.2 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-02-27 16:45:12 +00:00
James Rich
5da54fc001
Merge pull request #4666
* Replace strings.xml with app_name resource
2026-02-27 10:14:36 -06:00
James Rich
3b531b61a3
ci: Split Google artifact attestations and ensure F-Droid uploads (#4665) 2026-02-27 09:48:10 -06:00
github-actions[bot]
2e64edf561 chore(release): prepare v2.7.14-internal.2 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-02-27 15:11:08 +00:00
James Rich
8a3763b2ff
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4662) 2026-02-27 09:08:11 -06:00
renovate[bot]
6faa6e1c21
chore(deps): update fastlane to v2.232.2 (#4663)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-27 08:49:53 -06:00
James Rich
0a6fcc830a
feat(maps): Google maps improvements for network and offline tilesources (#4664)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-27 14:36:56 +00:00
github-actions[bot]
22c239016b chore(release): prepare v2.7.14-internal.2 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-02-27 00:32:32 +00:00
Alec Perkins
728ef0c62b
fix(strings): Correct capitalization of Ham (#4620) 2026-02-26 23:31:37 +00:00
renovate[bot]
ce9a3b5403
chore(deps): update com.google.firebase:firebase-bom to v34.10.0 (#4661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 23:04:53 +00:00
James Rich
ddc05ddfb7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4660) 2026-02-26 15:51:51 -06:00
renovate[bot]
3585422097
chore(deps): update github artifact actions (major) (#4659)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 21:12:58 +00:00
James Rich
b60d67297d
fix(map): location perms and button visibility, breadcrumb taps (#4651)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-26 15:39:15 +00:00
James Rich
27e7669366
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4654) 2026-02-26 14:57:10 +00:00
James Rich
145cde9393
chore(deps): bump deps to take advantage of new functionality (#4658)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-26 13:26:50 +00:00
renovate[bot]
46b32f1cce
chore(deps): update actions/attest-build-provenance action to v4 (#4652)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 03:11:42 +00:00
renovate[bot]
a683dcb04f
chore(deps): update androidx.compose.runtime:runtime-tracing to v1.10.4 (#4648)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 03:09:42 +00:00
James Rich
54c4ace5eb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4650) 2026-02-26 02:45:56 +00:00
James Rich
85c6ed61bb
refactor(analytics): reduce tracking footprint (#4649)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-26 02:44:13 +00:00
James Rich
ceeb28945d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4646) 2026-02-25 20:12:08 +00:00
James Rich
9970d31520
feat(widget): Add Local Stats glance widget (#4642)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-25 19:39:00 +00:00
Jade
692ad78c80
Align FDroid MapView constructor with Google version (Issue #4576) (#4630)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-25 17:31:52 +00:00
Ken Piper
ce2d4c6b9c
Add per-message transport method icons for new message format (#4643) 2026-02-25 13:14:22 +00:00
James Rich
6b94b12258
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4637) 2026-02-25 04:13:25 +00:00
renovate[bot]
2803eae63c
chore(deps): update vico to v3.0.1 (#4639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:13:11 +00:00
renovate[bot]
bd9e96e5ea
chore(deps): update core/proto/src/main/proto digest to f7f7c8d (#4638)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:13:00 +00:00
renovate[bot]
754b9c5769
chore(deps): update google maps compose to v8.2.0 (#4641)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:12:35 +00:00
renovate[bot]
8d3568eee5
chore(deps): update coil to v3.4.0 (#4640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:12:23 +00:00
James Rich
b5e5c9cbe0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4634) 2026-02-24 18:34:38 +00:00
James Rich
3e4f33854b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4629) 2026-02-24 14:03:04 +00:00
renovate[bot]
b29a18c31e
chore(deps): update com.squareup.okio:okio to v3.16.4 (#4633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 13:45:27 +00:00
James Rich
d408964f07
refactor: KMP Migration, Messaging Modularization, and Handshake Robustness (#4631)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-24 12:37:33 +00:00
James Rich
b3f88bd94f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4627) 2026-02-23 09:57:01 +00:00
James Rich
2676a51647
refactor(ui): compose resources, domain layer (#4628)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-23 03:39:50 +00:00
James Rich
96adc70401
Fix/splits (#4626) 2026-02-22 08:48:04 -06:00
github-actions[bot]
9524fecca5 chore(release): prepare v2.7.14-internal.1 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-02-22 13:58:39 +00:00
James Rich
8b2a9d5f9a
chore(ci): Refine analytics task filtering and improve release debugging (#4624) 2026-02-22 07:57:05 -06:00
github-actions[bot]
fae66782af chore(release): prepare v2.7.14-internal.1 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-02-22 13:08:06 +00:00
James Rich
67762256c8
chore(ci): Use wildcard for APK paths in release workflow (#4622) 2026-02-22 07:04:49 -06:00
James Rich
d8f08c3c96
ci(release): Use wildcards for APK paths in release workflow (#4619) 2026-02-21 19:44:09 -06:00
James Rich
cbcac06c80
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4615) 2026-02-21 18:55:03 -06:00
renovate[bot]
f97b06167b
chore(deps): update core/proto/src/main/proto digest to 93bee53 (#4616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-21 18:50:34 -06:00
renovate[bot]
5c827e39aa
chore(deps): update vico to v3.0.0 (#4617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-21 23:26:24 +00:00
James Rich
cf2f165a67
chore(ble): Add Proguard rules for Nordic BLE library (#4618) 2026-02-21 18:28:50 -06:00
nreisbeck
7d7292a54a
fix(qr): add channels as key to remember block to fix add-channel rac… (#4607)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-20 21:01:45 -06:00
renovate[bot]
f35ef6bc6e
chore(deps): update core/proto/src/main/proto digest to cb07ce2 (#4614)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-21 01:13:48 +00:00
James Rich
e720a393ff
feat(build): Implement flavor-specific barcode scanning and build improvements (#4611)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-21 00:47:54 +00:00
James Rich
96d4027f74
feat(ble): Add support for FromRadioSync characteristic (#4609)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-21 00:02:00 +00:00
James Rich
5d2336c092
ci: Fix and improve Kover coverage reporting (#4610)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-20 23:09:24 +00:00
James Rich
45b19f0608
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4605) 2026-02-20 22:56:33 +00:00
renovate[bot]
ac7645366b
chore(deps): update dagger & hilt to v2.59.2 (#4608)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 22:04:42 +00:00
James Rich
82eed1766e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4601) 2026-02-20 17:53:07 +00:00
James Rich
5a0913a1d7
fix: spotless (#4604)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-20 11:52:09 -06:00
James Rich
ac5a1714e0
Merge pull request #4602
* refactor(test): Introduce MeshTestApplication for robust testing
2026-02-20 11:25:11 -06:00
James Rich
f75622002f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4599) 2026-02-20 15:38:38 +00:00
James Rich
b6e311c605
fix: replace fdroid map_style_selection string (#4598)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-20 08:54:32 -06:00
James Rich
7aa624368a
fix(strings): replace plurals (#4596)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-20 08:15:10 -06:00
github-actions[bot]
27d93f805d chore(release): prepare v2.7.14-internal.1 [skip ci]
- Bump base version to 2.7.14
- Sync translations and assets
2026-02-20 13:05:45 +00:00
renovate[bot]
a4441b5472
chore(deps): update nordic.common to v2.9.1 (#4594)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 07:04:01 -06:00
James Rich
465cd299c4
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4593) 2026-02-20 06:59:17 -06:00
James Rich
6bfa5b5f70
refactor(ble): Centralize BLE logic into a core module (#4550)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-20 12:41:52 +00:00
James Rich
7a68802bc2
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4592) 2026-02-19 14:27:07 +00:00
James Rich
f012e3818d
refactor(logging): Reduce log noise by lowering severity of common errors (#4591)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-18 21:16:11 +00:00
James Rich
7ffbbd6113
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4583) 2026-02-18 21:02:30 +00:00
renovate[bot]
b9ee54aac1
chore(deps): update devtools.ksp to v2.3.6 (#4587)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-18 00:37:26 +00:00
github-actions[bot]
96c5e00a81 chore(release): prepare v2.7.13-internal.15 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-17 16:43:56 +00:00
James Rich
574c2c3577
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4581) 2026-02-17 15:28:15 +00:00
James Rich
2878ad79ef
refactor(settings): Use LocalConfig for radio configuration state (#4579)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-17 14:30:06 +00:00
James Rich
c7097c83bb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4580) 2026-02-17 14:20:57 +00:00
James Rich
85b3acd7ef
refactor(metrics): Prevent chart crashes with empty data (#4578)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-17 13:51:54 +00:00
James Rich
558cf77768
feat(settings): Allow clearing the node status message (#4577)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-17 13:32:48 +00:00
James Rich
eb2f04117a
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4574) 2026-02-17 13:22:26 +00:00
renovate[bot]
034ed7648f
chore(deps): update actions/stale action to v10.2.0 (#4575)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 13:22:20 +00:00
James Rich
d374e768b2
refactor(ui): Simplify composable message handling in dialog (#4573)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-17 00:34:15 +00:00
James Rich
5d198c7407
feat(nodes): Display role-specific icons (#4572)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-17 00:26:28 +00:00
James Rich
8c5bc65334
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4565) 2026-02-16 22:27:32 +00:00
James Rich
c690ddc7ea
feat: Accurately display outgoing diagnostic packets (#4569)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-16 22:09:21 +00:00
renovate[bot]
6a244316b2
chore(deps): update vico to v3.0.0-beta.4 (#4564)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-15 14:04:44 +00:00
James Rich
50203dc7f5
chore(docs): Refine Dokka source set configuration (#4562)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-15 13:38:36 +00:00
James Rich
5b61e059e8
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4563) 2026-02-15 13:21:50 +00:00
James Rich
71bf032214
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4561) 2026-02-15 12:33:20 +00:00
James Rich
fb1bdb2044
feat(settings): Only show homoglyph setting for Cyrillic locales (#4559)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-14 19:56:41 +00:00
James Rich
d14ae9e7c3
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4557) 2026-02-14 17:09:27 +00:00
James Rich
4fb5546699
feat(notifications): navigate to node details on tap (#4558)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-14 16:30:06 +00:00
James Rich
0f03492ac6
fix: uri handling, ci test setup (#4556)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-14 16:07:03 +00:00
renovate[bot]
5061dc8262
chore(deps): update agp to v9.0.1 (#4551)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-14 14:24:22 +00:00
renovate[bot]
90f33e5089
chore(deps): update com.android.tools:common to v32.0.1 (#4552)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-14 14:11:59 +00:00
James Rich
d86e2a417e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4554) 2026-02-14 13:59:39 +00:00
James Rich
c845f9222c
feat(db): enhance public key conflict handling (#4555)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-14 13:47:59 +00:00
James Rich
5ca2ab4695
refactor(time): Centralize time handling with kotlinx-datetime (#4545)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-14 02:01:07 +00:00
James Rich
da04448dee
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4549) 2026-02-13 14:25:11 +00:00
github-actions[bot]
b9a470d0cf chore(release): prepare v2.7.13-internal.10 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-12 21:50:52 +00:00
renovate[bot]
c7d174811b
chore(deps): update core/proto/src/main/proto digest to 44298d3 (#4548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-12 20:47:10 +00:00
James Rich
7d637f9909
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4547) 2026-02-12 20:38:57 +00:00
James Rich
80d9a2e0aa
fix(release): fixes to prep for release (#4546)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-12 20:23:19 +00:00
renovate[bot]
c5f2b1bbea
chore(deps): update datadog to v1.23.0 (#4542)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-12 14:15:32 +00:00
James Rich
ed746a12fa
fix(mesh): Set from field in locally handled packets (#4543)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-12 14:08:25 +00:00
James Rich
f664cdcf3b
feat(analytics): Enhance user privacy (#4540)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-12 13:31:30 +00:00
renovate[bot]
62daf2e272
chore(deps): update androidx (general) (#4538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-11 14:56:54 -06:00
renovate[bot]
fd4b4a9d23
chore(deps): update androidx navigation to v1.0.1 (#4537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-11 14:54:40 -06:00
James Rich
28c364f935
Revert "chore(deps): update nordic.ble to v2.0.0-alpha13" (#4536) 2026-02-11 14:53:25 -06:00
renovate[bot]
55b17857be
chore(deps): update nordic.ble to v2.0.0-alpha13 (#4534)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-11 17:14:46 +00:00
James Rich
f5eb3387bb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4533) 2026-02-11 14:31:49 +00:00
renovate[bot]
b49ed5213b
chore(deps): update no.nordicsemi.android:dfu to v2.11.0 (#4531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-11 14:18:19 +00:00
James Rich
9d583bdfc9
feat(messaging): Add bell character to alert message and refine trim (#4532)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-11 14:16:20 +00:00
James Rich
1efff35330
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4529) 2026-02-11 13:40:37 +00:00
James Rich
ff3f8b13f1
feat(messaging): Move message input to Scaffold bottomBar (#4530)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-11 13:36:55 +00:00
James Rich
640c696f66
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4528) 2026-02-11 01:50:44 +00:00
James Rich
88ca011c38
fix(settings): Correct hop_limit type for LoRa config (#4525)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-11 01:28:11 +00:00
James Rich
eaf37a052c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4526) 2026-02-11 01:21:54 +00:00
James Rich
a575e0f7cb
fix(db): Revert removal of retry_count (#4527) 2026-02-10 19:21:08 -06:00
James Rich
fd90aa3b7a
fix: use truthy value for emoji field on Reaction packets (#4524)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-10 23:14:21 +00:00
James Rich
d252fde289
feat(charts): More charts ui/ux tweaks (#4520)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-10 23:02:06 +00:00
James Rich
53b5707a41
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4521) 2026-02-10 23:01:29 +00:00
renovate[bot]
a6d411ca0b
chore(deps): update fastlane to v2.232.1 (#4523)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 23:01:00 +00:00
renovate[bot]
7b597e37c1
chore(deps): update org.jetbrains.compose.runtime:runtime to v1.10.1 (#4514)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-10 16:11:24 -06:00
renovate[bot]
fe5d7d6b92
chore(deps): update core/proto/src/main/proto digest to e1a6b3a (#4519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 20:52:37 +00:00
James Rich
8eb4a0cad8
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4516) 2026-02-10 20:22:21 +00:00
renovate[bot]
56d376973e
chore(deps): update kotlin ecosystem to v0.9.7 (#4518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 20:21:09 +00:00
James Rich
bd8ff75787
feat: Remove auto-retry confirmation for messages (#4513)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-10 14:00:41 +00:00
James Rich
8167fdaa89
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4504) 2026-02-10 12:42:48 +00:00
renovate[bot]
d9b4a1639e
chore(deps): update core/proto/src/main/proto digest to 27591d9 (#4511)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 12:42:37 +00:00
renovate[bot]
de50987fc3
chore(deps): update google maps compose to v8.1.0 (#4509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 12:41:54 +00:00
James Rich
ea6d1ffa32
feat: consolidate dialogs (#4506)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-08 22:45:52 +00:00
James Rich
7bcc51863f
fix: Defer setting connected state until after nodeDB load (#4505)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-08 17:40:12 +00:00
github-actions[bot]
826bffe230 chore(release): prepare v2.7.13-internal.6 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-07 22:34:33 +00:00
James Rich
31790ff709
feat: Add disconnect broadcast and improve app port handling (#4502)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-07 22:19:10 +00:00
github-actions[bot]
a493cf1420 chore(release): prepare v2.7.13-internal.5 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-07 19:50:01 +00:00
James Rich
e94e4da904
feat(database): Enable Write-Ahead Logging for Room DB (#4499)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-07 19:20:26 +00:00
James Rich
8c9743ca77
feat: Add stable class definitions for Meshtastic models (#4500)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-07 19:19:18 +00:00
James Rich
7c37b308a0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4494) 2026-02-07 18:52:55 +00:00
James Rich
fad26f1273
feat: Improve connection state broadcast and timing (#4498)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-07 18:52:35 +00:00
Pavel Vasiliev
4303bfaac4
Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages (#4491) 2026-02-07 18:49:35 +00:00
James Rich
6ec2ed76ca
feat: Queue special app PortNums when disconnected (#4495)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-07 17:13:41 +00:00
James Rich
55f09fc6bb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4493) 2026-02-07 14:56:32 +00:00
github-actions[bot]
57c443bf69 chore(release): prepare v2.7.13-internal.4 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-07 01:19:58 +00:00
James Rich
ba03aacdc9
feat(ble): Handle invalid BLE attributes (#4485)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-07 00:59:24 +00:00
James Rich
bf4020a939
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4490) 2026-02-07 00:33:06 +00:00
James Rich
9c1b4847df
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4488) 2026-02-06 23:05:36 +00:00
renovate[bot]
64cd6b94d5
chore(deps): update core/proto/src/main/proto digest to e80cb2e (#4487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-06 23:05:21 +00:00
James Rich
cab39408df
refactor(node): Improve public key conflict handling (#4486)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-06 19:55:20 +00:00
github-actions[bot]
78820863da chore(release): prepare v2.7.13-internal.3 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-06 18:41:28 +00:00
James Rich
ee861a9911
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4484) 2026-02-06 12:30:33 -06:00
James Rich
1e255a5120
feat: Check if NFC is enabled and prompt user to enable it (#4482) 2026-02-06 18:08:35 +00:00
James Rich
edd658f063
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4483) 2026-02-06 18:00:46 +00:00
James Rich
d4ab504882
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4480) 2026-02-06 16:44:44 +00:00
renovate[bot]
935cff8d26
chore(deps): update fastlane to v2.232.0 (#4479)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-06 16:04:11 +00:00
renovate[bot]
2ff8ffa4f8
chore(deps): update core/proto/src/main/proto digest to cba89ee (#4478)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-06 15:44:52 +00:00
James Rich
fce8e7cd08
feat(db): Add sender-based message filtering (#4477)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-06 15:13:59 +00:00
renovate[bot]
d48a0ea2b3
chore(deps): update androidx (general) (#4472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-06 13:46:56 +00:00
James Rich
10df4d47f1
feat(ui): Redesign NodeItem for improved clarity and density (#4475)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-06 05:01:42 +00:00
James Rich
96551761c8
feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX (#4471)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-06 04:16:16 +00:00
renovate[bot]
3971c0a9f4
chore(deps): update actions/setup-java action to v5 (#4469)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-06 02:54:56 +00:00
renovate[bot]
7073c5d8c0
chore(deps): update gradle/actions action to v5 (#4470)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-06 02:54:45 +00:00
renovate[bot]
c88235e333
chore(deps): update actions/checkout action to v6 (#4468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 22:54:14 +00:00
renovate[bot]
7f7fba84c2
chore(deps): update com.google.firebase:firebase-bom to v34.9.0 (#4467)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 22:54:10 +00:00
James Rich
d9c6ba52b4
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4464) 2026-02-05 22:36:38 +00:00
James Rich
18aae852fd
build(ksp): ksp and publishing tuning (#4462)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-05 22:36:38 +00:00
James Rich
9e6de124ee
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4461) 2026-02-05 16:39:14 +00:00
github-actions[bot]
c0c1875cb1 chore(release): prepare v2.7.13-internal.2 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-05 14:59:11 +00:00
James Rich
94280a873f
chore(ci): Simplify jitpack.yml build steps (#4460)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-05 08:56:09 -06:00
James Rich
37e9d6425c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4459) 2026-02-05 13:32:33 +00:00
github-actions[bot]
3d274540b8 chore(release): prepare v2.7.13-internal.1 [skip ci]
- Bump base version to 2.7.13
- Sync translations and assets
2026-02-05 13:25:45 +00:00
James Rich
f1520eb383
feat(example): Add packet log and UI improvements (#4455)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-05 07:24:15 -06:00
James Rich
c44d2f3268
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4458) 2026-02-05 12:24:23 +00:00
renovate[bot]
4695f6c68f
chore(deps): update kotlin ecosystem to v2.3.10 (#4457)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 12:20:34 +00:00
James Rich
451b2343b7
feat(deps): Remove temporary kotlinx-metadata-jvm dependency (#4453)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-04 23:27:16 +00:00
James Rich
67120465da
refactor(build): Use version catalog for Compose Multiplatform (#4452) 2026-02-04 16:31:26 -06:00
James Rich
4643435f5f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4445) 2026-02-04 16:30:30 -06:00
renovate[bot]
a71bf4da16
chore(deps): update kotlin ecosystem to v0.9.6 (#4451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 16:30:06 -06:00
James Rich
3eefa801d6
refactor(build): Introduce AndroidLibraryFlavors convention plugin (#4449) 2026-02-04 16:01:09 -06:00
James Rich
854eff685e
ci(jitpack): Use standard Gradle tasks for building (#4448)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-04 20:40:36 +00:00
James Rich
498a797740
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4443) 2026-02-04 14:51:48 +00:00
renovate[bot]
4ba3209a7a
chore(deps): update com.google.guava:guava to v33.5.0-jre (#4441)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 14:51:34 +00:00
renovate[bot]
1e1dabef19
chore(deps): update google maps compose to v8.0.1 (#4442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 14:51:20 +00:00
James Rich
21d10bcde9
feat(deps): Update Wire to v6.0.0-alpha02 (#4440)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-04 03:08:17 +00:00
James Rich
e055d22346
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4438) 2026-02-04 02:41:48 +00:00
renovate[bot]
9507acb007
chore(deps): update wire to v5.5.0 (#4437)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 01:50:19 +00:00
b8b8
0023887c04
Update strings.xml (#4432)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-04 01:46:28 +00:00
James Rich
7ded77d1a9
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4430) 2026-02-04 00:52:32 +00:00
renovate[bot]
e128885475
chore(deps): update google maps compose to v8.0.1 (#4434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 00:52:18 +00:00
renovate[bot]
391aeea99a
chore(deps): update com.google.guava:guava to v33.5.0-jre (#4435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 00:52:00 +00:00
James Rich
fd49e8a633
Add 'fdroid' flavor to pull request workflow (#4436) 2026-02-03 18:58:02 -06:00
James Rich
25657e8f8f
feat(wire): migrate from protobuf -> wire (#4401)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-04 00:01:12 +00:00
James Rich
9dbc8b7fbf
refactor(model): Make DataPacket fully mutable and fix Parcel reading (#4431)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-03 21:14:24 +00:00
renovate[bot]
08184aae2d
chore(deps): update dagger & hilt to v2.59.1 (#4427)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 19:33:23 +00:00
James Rich
a3e19d6ad7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4426) 2026-02-03 18:35:06 +00:00
James Rich
ee0e25c706
chore(ci): Change number of shards for parallel test execution (#4428) 2026-02-03 12:39:21 -06:00
James Rich
35c0f9afcf
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4424) 2026-02-03 13:17:37 +00:00
James Rich
9e41291484
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4423) 2026-02-03 03:14:40 +00:00
github-actions[bot]
7c7e46ecc4 chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Sync translations and assets
2026-02-03 01:48:12 +00:00
James Rich
8667314d3e
Modify internal lane to skip metadata and changelogs
Updated the internal deployment lane to skip uploading metadata and changelogs.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-02 19:46:10 -06:00
James Rich
5ddd59cd33
fix(l10n): update translation paths in Crowdin config to use locale (#4422) 2026-02-02 19:35:22 -06:00
James Rich
f77a74da98
fix(l10n): update translation paths in Crowdin config to use locale (#4420) 2026-02-02 18:53:05 -06:00
James Rich
e5543daca0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4419) 2026-02-02 18:16:39 -06:00
James Rich
41ea09b3ff
chore(l10n): Remove custom changelogs from Crowdin config (#4418) 2026-02-02 18:09:04 -06:00
github-actions[bot]
e6536ea5be chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Add changelog for version code 29319934
- Sync translations and assets
2026-02-02 23:15:49 +00:00
James Rich
d4089a2985
fix(ci): pre-emptive tagging (#4415) 2026-02-02 13:43:42 -06:00
James Rich
cf0af91ae1
fix(ci): switch to pre-emptive tagging workflow (#4414) 2026-02-02 13:34:34 -06:00
github-actions[bot]
773b481a58 chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Add changelog for version code 29319931
- Sync translations and assets
2026-02-02 19:23:14 +00:00
James Rich
f4db2a33c2
fix(ci): robust SHA passing via artifact to bypass secret masking (#4412) 2026-02-02 13:21:54 -06:00
github-actions[bot]
1e1b9e9a86 chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Add changelog for version code 29319929
- Sync translations and assets
2026-02-02 19:13:16 +00:00
James Rich
7d35f6e4a7
fix(ci): ensure release SHA is passed correctly and validate inputs (#4411) 2026-02-02 13:11:39 -06:00
github-actions[bot]
2c8eaf8f5d chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Add changelog for version code 29319927
- Sync translations and assets
2026-02-02 18:54:28 +00:00
James Rich
1cb42aa48a
fix(ci): robust SHA passing for release workflow (#4410) 2026-02-02 12:52:47 -06:00
github-actions[bot]
20d21b107d chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Add changelog for version code 29319925
- Sync translations and assets
2026-02-02 18:46:33 +00:00
James Rich
256486625d
fix(ci): ensure release commit is pushed to branch and validate SHA (#4409) 2026-02-02 12:44:38 -06:00
github-actions[bot]
78b73c3187 chore(release): prepare v2.7.12-internal.9 [skip ci]
- Bump base version to 2.7.12
- Add changelog for version code 29319923
- Sync translations and assets
2026-02-02 18:36:28 +00:00
James Rich
fa95872b65
fix(ci): use PAT for release workflow to bypass branch protection (#4408) 2026-02-02 12:35:06 -06:00
James Rich
70d7319efe
feat(release): Automate changelog, asset updates, and tagging (#4407) 2026-02-02 12:19:08 -06:00
James Rich
f60fbf4b3a
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4406) 2026-02-02 16:35:37 +00:00
James Rich
93a5dc2ebb
ci: fix scheduled-updates workflow by explicitly adding paths (#4405) 2026-02-02 10:31:20 -06:00
James Rich
37b2efa176
feat(settings): Add firmware capability checks for settings (#4403)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-02 15:35:20 +00:00
James Rich
fac72af9f4
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4399) 2026-02-02 15:25:47 +00:00
James Rich
73f1a30915
ci18n: Add fastlane metadata to Crowdin (#4402)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-02 15:25:27 +00:00
James Rich
221e774471
chore: fix regressions in the release (#4398)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-01 23:18:06 +00:00
renovate[bot]
6eb42cc180
chore(deps): update markdown renderer (mike penz) to v0.39.2 (#4393)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-01 21:37:32 +00:00
James Rich
16f380f0e3
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4395) 2026-02-01 21:27:16 +00:00
Bob Idle
d2b1b531e6
docs: fix typo and url (#4396)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-01 21:16:02 +00:00
James Rich
0f83e3e3ab
Refactor PR workflow to include check-changes step (#4397) 2026-02-01 15:14:51 -06:00
James Rich
3659f468e4
chore(ci): Optimize and stabilize Gradle builds and CI workflows (#4390)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-01 18:03:17 +00:00
James Rich
152099c7e9
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4385) 2026-02-01 14:12:03 +00:00
Korb
d781cef755
Update full_description.txt (#4388) 2026-01-31 09:44:29 -06:00
renovate[bot]
f77c1600df
chore(deps): update kotlin ecosystem to v0.9.5 (#4381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-30 20:06:14 -06:00
James Rich
1abcb4d4ed
refactor(build): Centralize Develocity and build cache configuration (#4382) 2026-01-30 18:42:06 -06:00
James Rich
c39dcb4461
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4384) 2026-01-30 18:41:50 -06:00
James Rich
9a8a31b298
feat(charts): voltage, colors, legends, and adaptive ui (#4383)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-30 23:20:57 +00:00
James Rich
8941643f69
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4376) 2026-01-30 22:29:49 +00:00
James Rich
c3580815cc
fix(node): fix regressions since node ui refactor (#4379)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-30 21:24:24 +00:00
James Rich
cbf70fcc3f
refactor(build): Centralize Android SDK and Java versions (#4377) 2026-01-30 11:36:36 -06:00
James Rich
b95c773ec7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4375) 2026-01-30 10:19:08 -06:00
James Rich
bd6480e5db
chore(build): more downgrades to JDK 17 (#4374) 2026-01-30 10:18:50 -06:00
James Rich
742d57bd64
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4373) 2026-01-30 14:52:57 +00:00
James Rich
5441f87b7a
Update README with JitPack integration details (#4372)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-30 13:30:06 +00:00
James Rich
b1cfaaa981
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4371) 2026-01-30 11:40:38 +00:00
renovate[bot]
bf91570a4b
chore(deps): update androidx.activity:activity-compose to v1.12.3 (#4370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-30 02:32:39 +00:00
James Rich
039e785a2d
build: Lower JDK to 17 and minSdk to 21 (#4369) 2026-01-29 20:04:30 -06:00
renovate[bot]
2b51926e24
chore(deps): update protobuf runtime to v4.33.5 (#4367)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-30 00:44:10 +00:00
James Rich
73c790290c
chore(ci): Remove GitHub Packages publishing workflow (#4368) 2026-01-29 17:56:41 -06:00
James Rich
f9cc7080f8
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4363) 2026-01-29 22:36:33 +00:00
James Rich
8f979521d7
build: Configure JitPack publishing for core modules (#4366) 2026-01-29 15:41:27 -06:00
James Rich
0bea76edb9 chore: delete test
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-29 15:17:47 -06:00
James Rich
266650f29e
feat: Add JitPack configuration for publishing (#4365) 2026-01-29 15:04:45 -06:00
James Rich
07639900c9
chore: Apply maven-publish plugin consistently (#4364) 2026-01-29 14:10:58 -06:00
James Rich
15760da074
Refactor: Create core:api module and set up publishing (#4362) 2026-01-29 13:45:00 -06:00
James Rich
4e7de3b73c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4361) 2026-01-29 13:44:06 -06:00
James Rich
fd3ad804fa
feat(build): Add support for remote Gradle build cache (#4357) 2026-01-29 13:43:21 -06:00
James Rich
6665737c9b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4360) 2026-01-29 11:10:06 -06:00
renovate[bot]
d54ea5efc3
chore(deps): update gradle to v9.3.1 (#4358)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-29 09:54:03 -06:00
James Rich
7283edd5b0
chore(repo): replace the triage robots (#4359) 2026-01-29 09:53:29 -06:00
James Rich
0345a87f5f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4356) 2026-01-29 08:56:10 -06:00
James Rich
e46cb27f5c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4353) 2026-01-29 13:25:30 +00:00
James Rich
68beca60a5
fix(reactions): fix sent message reaction alignment (#4355)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-29 13:25:20 +00:00
renovate[bot]
49da6a80bf
chore(deps): update androidx (general) (#4352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-29 02:30:28 +00:00
James Rich
8e00038e7c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4343) 2026-01-29 02:18:17 +00:00
renovate[bot]
20e18be002
chore(deps): update androidx navigation to v2.9.7 (#4350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-29 02:06:18 +00:00
renovate[bot]
ffa5eabea9
chore(deps): update androidx.work:work-runtime-ktx to v2.11.1 (#4351)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-29 01:07:32 +00:00
James Rich
70a1b3c479
Refactor: Replace custom charts with Vico library (#4348)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-29 00:52:59 +00:00
renovate[bot]
d651bbeaa2
chore(deps): update devtools.ksp to v2.3.5 (#4349)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-29 00:01:23 +00:00
renovate[bot]
085a641941
chore(deps): update plugin com.gradle.develocity to v4.3.2 (#4347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-28 15:31:40 +00:00
James Rich
091ca9b400
fix(neighborinfo): disable neighbor info dialog temporarily (#4345)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-28 03:21:04 +00:00
James Rich
12f7fe30b9
chore(lint): Disable ForbiddenComment detekt rule (#4344) 2026-01-27 19:38:14 -06:00
renovate[bot]
636788bf59
chore(deps): update static analysis to v8.2.1 (#4342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 23:26:18 +00:00
James Rich
c2d6871b6b
fix(caps): Correct firmware version for canMuteNode (#4341)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-27 22:22:28 +00:00
James Rich
e2328adca2
refactor(firmware): Inject dispatcher into BleOtaTransport (#4339)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-27 21:01:39 +00:00
renovate[bot]
76b7798642
chore(deps): update core/proto/src/main/proto digest to bc63a57 (#4337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 20:41:19 +00:00
renovate[bot]
1bea523b5f
chore(deps): update datadog to v3.6.0 (#4340)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 19:29:26 +00:00
James Rich
4ae69447df
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4332) 2026-01-27 19:03:00 +00:00
renovate[bot]
a2100c4bbd
chore(deps): update io.nlopez.compose.rules:detekt to v0.5.6 (#4335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 18:34:03 +00:00
James Rich
dff3e60b8c
fix(node): list and detail usability fixes (#4336)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-27 18:33:46 +00:00
renovate[bot]
3f45687351
chore(deps): update google maps compose to v8 (major) (#4338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 18:04:22 +00:00
James Rich
78c2a115a7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4329) 2026-01-27 00:26:38 +00:00
James Rich
2f67727bf5
feat(messaging): Improve message bubble UI and add delivery status action (#4330)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-27 00:26:27 +00:00
James Rich
0357ac286b
feat(ui): Remove uptime from SignalInfo (#4328)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 21:26:13 +00:00
James Rich
814de6bb78
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4327) 2026-01-26 21:20:06 +00:00
James Rich
2b6c3185b0
fix(mesh): Set hopStart to match hopLimit in sent packets (#4324)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 17:50:04 +00:00
renovate[bot]
4cfd8777a6
chore(deps): update io.mockk:mockk to v1.14.9 (#4325)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-26 15:38:50 +00:00
James Rich
a7d386db81
fix(notifications): Suppress notifications for muted contacts an… (#4323)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 14:31:37 +00:00
James Rich
231646e5a3
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4322) 2026-01-26 13:35:07 +00:00
James Rich
ed6606b182
ci(release): Ensure artifacts are always uploaded and attested (#4321)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 13:22:42 +00:00
James Rich
fc5255a0f0
refactor(core): Optimize and share network state flows (#4320)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 12:59:53 +00:00
James Rich
7ffd5bc9f2
fix: map cluster crash (#4317)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 12:57:49 +00:00
James Rich
4d7af80389
fix(service): Add error handling for invalid StoreForward++ packets (#4319)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 12:56:52 +00:00
James Rich
28cf2b1e98
fix(usb): Add error handling for serial write operations (#4318)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 12:55:11 +00:00
James Rich
50a04a98b8
fix(ui): Prevent NaN values in environment metrics (#4316)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-26 12:52:13 +00:00
James Rich
847152acd7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4315) 2026-01-26 12:38:22 +00:00
James Rich
a28aa4d52e
refactor(ui): Icon audit and node list item refactor (#4313)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 22:43:23 +00:00
James Rich
5db2c9d69c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4314) 2026-01-25 22:25:54 +00:00
James Rich
0564007b0b
Update VERSION_NAME_BASE to 2.7.12 (#4312)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 17:41:23 +00:00
James Rich
a789c32194
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4310) 2026-01-25 17:14:38 +00:00
James Rich
edb5569f5b
build: Upgrade build configuration and dependencies (#4311)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 17:07:07 +00:00
James Rich
140264d438
chore(deps): Update Gradle and library versions (#4309)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 16:04:25 +00:00
renovate[bot]
de81289c42
chore(deps): update org.robolectric:robolectric to v4.16.1 (#4305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 14:45:07 +00:00
renovate[bot]
79df66710b
chore(deps): update com.android.tools:common to v32 (#4306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 14:43:55 +00:00
renovate[bot]
71a8afecfc
chore(deps): update app.cash.molecule:molecule-runtime to v2.2.0 (#4302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 14:17:09 +00:00
James Rich
355d2260e8
feat: Add Status Message module support (#4163)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 14:15:47 +00:00
James Rich
df592d4d86
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4301) 2026-01-25 13:09:31 +00:00
James Rich
71628cac84
Refactor: Only show advanced and app settings for local node (#4290)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 03:11:14 +00:00
James Rich
d8c7a51a84
feat: Improve channel migration logic and add tests (#4294) 2026-01-25 03:01:16 +00:00
James Rich
2cdfababe5
feat(node): Refactor Node Detail screen and enhance user feedback (#4291)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 03:00:23 +00:00
James Rich
8eb349e794
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4299) 2026-01-25 02:46:00 +00:00
James Rich
576ae6757f
feat(service): Introduce fallback worker to ensure service stays alive (#4295)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 02:25:09 +00:00
renovate[bot]
bd4cb80877
chore(deps): update dagger & hilt to v2.59 (#4297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-24 17:53:02 +00:00
renovate[bot]
584b49ed73
chore(deps): update fastlane to v2.231.1 (#4296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-24 17:52:47 +00:00
Mac DeCourcy
c0f8ed3503
feat: word-based message filtering with quarantine approach (stored but hidden) (#4241) 2026-01-24 16:41:17 +00:00
James Rich
ae65e64a37
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4287) 2026-01-24 15:23:41 +00:00
James Rich
833f1ca4fb
chore(build): Enable and configure Compose Compiler reports (#4289)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-22 16:27:11 +00:00
James Rich
9266caae9b
feat: Configure Pre-Commit run for debugging (#4284) 2026-01-21 19:50:27 +00:00
James Rich
174228bc61
Fix(firmware): Disable serial/USB updates for ESP32 devices (#4283) 2026-01-21 19:17:57 +00:00
James Rich
f9404f63c5
chore: Add gradle-daemon-jvm.properties to specify toolchain (#4282) 2026-01-21 18:44:53 +00:00
James Rich
1d60be2791
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4280) 2026-01-21 17:06:06 +00:00
James Rich
fb6a4c96b8
fix: crashes (#4281)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 16:21:10 +00:00
James Rich
7f7d189958
refactor(service): Add destination node number to remote admin commands (#4276)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 08:27:20 -06:00
James Rich
9b150bad42
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4279) 2026-01-21 08:26:14 -06:00
James Rich
4dda810ada
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4277) 2026-01-21 13:39:42 +00:00
James Rich
1baae77e96
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4275) 2026-01-21 12:39:56 +00:00
James Rich
cdfd0e3d5d
fix(configs): Improve loading state feedback and dialog behavior (#4271)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 12:36:15 +00:00
James Rich
932c31c2b8
fix(ui): Hide battery icon when no power data is available (#4274)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 03:41:49 +00:00
James Rich
7173a2da99
fix(4269): Add LongTurbo preset name and tests (#4273)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 03:36:31 +00:00
James Rich
b73a304452
refactor(firmware): Simplify ESP32 firmware check (#4272)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 02:42:16 +00:00
renovate[bot]
85a6900b74
chore(deps): update fastlane to v2.231.0 (#4270)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-20 18:27:54 +00:00
renovate[bot]
7fefbf6d42
chore(deps): update datadog to v1.22.0 (#4268)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-20 17:36:11 +00:00
James Rich
ec0bffa2d7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4266) 2026-01-20 17:28:08 +00:00
renovate[bot]
b562941b63
chore(deps): update core/proto/src/main/proto digest to 77c8329 (#4267)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-20 11:14:09 -06:00
James Rich
e45b940e51
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4265) 2026-01-20 12:25:46 +00:00
James Rich
45227fb142
feat(test): Add comprehensive unit and instrumentation tests (#4260)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-20 01:52:03 +00:00
James Rich
4e2c429180
feat(service): Overhaul MeshServiceExample (#4263)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-20 00:58:26 +00:00
James Rich
8e4541c147
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4264) 2026-01-19 19:06:20 -06:00
Eric Severance
343fec2383
Display traceroutes with 0 hops (#4261) 2026-01-19 20:22:32 +00:00
James Rich
afbec5d02a
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4259) 2026-01-19 20:22:17 +00:00
James Rich
5f86dadc96
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4254) 2026-01-19 12:16:02 +00:00
James Rich
3b0dda4491
fix(node): Correct owner ID and local user detection (#4256)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-19 03:20:40 +00:00
James Rich
f760feffe2
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4253) 2026-01-18 03:13:42 +00:00
James Rich
a41856319c
refactor: Use device address to manage service lifecycle (#4251)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-18 01:54:13 +00:00
James Rich
cf48d6c1c1
chore(ci): Refactor and optimize GitHub Actions workflows (#4252)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-18 01:52:04 +00:00
James Rich
d9bc79b396
refactor(ui): Improve EmojiPicker layout constraints (#4250)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-17 23:39:15 +00:00
James Rich
46a2c68830
ci: fix coverage report paths and improve test result inclusivity (#4245) 2026-01-16 19:40:50 +00:00
James Rich
fe9c8dac83
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4242) 2026-01-16 17:04:13 +00:00
James Rich
75a3f89f51
feat(firmware): Use pio_env to select correct firmware variant (#4244)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-16 16:51:55 +00:00
James Rich
4a65292bcf
fix(ci): Run tests for both F-Droid and Google flavors (#4239) 2026-01-15 21:32:20 -06:00
James Rich
73f3cac2ea
Revert "ci: Run tests and generate coverage for all modules" (#4240) 2026-01-15 20:53:05 -06:00
James Rich
54a90a9f50
ci: Run tests and generate coverage for all modules (#4238) 2026-01-15 19:39:28 -06:00
James Rich
e470fa86eb
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4237) 2026-01-16 01:06:42 +00:00
James Rich
962137ae4d
refactor: Enable test coverage and update CI (#4233)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-16 00:47:45 +00:00
James Rich
45d8f5944a
ci(actions): Set up JDK 21 in scheduled-updates workflow (#4236) 2026-01-15 19:00:58 -06:00
James Rich
04758fa0c7
ci: Add Gradle setup to scheduled updates workflow (#4234) 2026-01-15 18:56:17 -06:00
renovate[bot]
8b65d85271
chore(deps): update dagger & hilt to v2.58 (#4232)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 00:33:49 +00:00
James Rich
d27a848b2d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4229) 2026-01-15 23:24:00 +00:00
renovate[bot]
fd47d0d783
chore(deps): update agp to v9.0.0 (#4230)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 23:23:53 +00:00
renovate[bot]
61fff46601
chore(deps): update plugin com.gradle.develocity to v4.3.1 (#4231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 23:23:45 +00:00
Mac DeCourcy
afeff9a460
feat: retry message/reaction dialog (#4195) 2026-01-15 23:23:33 +00:00
James Rich
4b7f20000e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4226) 2026-01-15 16:47:48 +00:00
James Rich
37b59af27b
feat: Localize traceroute strings (#4228)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-15 16:43:55 +00:00
James Rich
1f07486745
feat: Add Client Base role strings (#4227)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-15 16:40:21 +00:00
renovate[bot]
c8d2375aca
chore(deps): update com.google.firebase:firebase-bom to v34.8.0 (#4225)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 16:29:28 +00:00
James Rich
5a59dcf2e2
feat(connections): Improve connection screen UI and logic (#4224)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-15 15:36:03 +00:00
James Rich
2f3d94c759
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4223) 2026-01-15 15:01:44 +00:00
James Rich
5829a5dd62
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4222) 2026-01-15 13:05:47 +00:00
James Rich
8599d1aef7
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4220) 2026-01-15 11:33:25 +00:00
James Rich
ba74822b9e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4218) 2026-01-14 21:43:48 -06:00
renovate[bot]
4130d5e0f7
chore(deps): update io.mockk:mockk to v1.14.7 (#4219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 21:43:15 -06:00
James Rich
2a60480bd9
feat: Add ESP32 Unified OTA update support (#4095)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-01-15 03:22:30 +00:00
James Rich
6b5dd24249
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4216) 2026-01-15 03:19:11 +00:00
James Rich
f144454053
refactor(messaging): Redesign message bubbles and reaction UI (#4217)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-15 02:40:05 +00:00
James Rich
b84dcb3971
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4215) 2026-01-14 23:41:14 +00:00
renovate[bot]
196cf9330f
chore(deps): update com.google.android.gms:play-services-maps to v20 (#4214)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 23:40:55 +00:00
James Rich
297e9a710c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4213) 2026-01-14 22:45:51 +00:00
renovate[bot]
b07c16fed2
chore(deps): update androidx.compose:compose-bom-alpha to v2026 (#4211)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 20:56:14 +00:00
renovate[bot]
ef40e5bf64
chore(deps): update androidx.compose.runtime:runtime-tracing to v1.10.1 (#4210)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 20:56:01 +00:00
James Rich
eba9d62c12
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4212) 2026-01-14 20:55:40 +00:00
James Rich
4088b5e5c5
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4209) 2026-01-14 15:07:57 +00:00
James Rich
418ebe387c
Refactor: Improve MessageItem layout and styling (#4208)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-14 03:46:10 +00:00
renovate[bot]
028596e013
chore(deps): update markdown renderer (mike penz) to v0.39.1 (#4207)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 02:47:23 +00:00
James Rich
5d0d52517d
feat(messaging): Overhaul message bubbles and add actions (#4206)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-14 02:43:06 +00:00
James Rich
8dc1a3a8cf
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4205) 2026-01-13 23:33:33 +00:00
renovate[bot]
1c6ecb5a35
chore(deps): update core/proto/src/main/proto digest to c8d5047 (#4204)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 23:33:14 +00:00
renovate[bot]
99e4204b87
chore(deps): update org.jetbrains.compose:compose-gradle-plugin to v1.10.0 (#4198)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 13:52:23 +00:00
renovate[bot]
209ffde7c8
chore(deps): update plugin compose-multiplatform to v1.10.0 (#4202)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 13:49:35 +00:00
James Rich
b0c0569bfa
Revert "chore(deps): update ruby to v4" (#4201) 2026-01-13 07:29:17 -06:00
James Rich
18654b4493
Revert "fix(deps): resolve faraday-multipart ruby 4 incompatibility" (#4200) 2026-01-13 07:28:44 -06:00
James Rich
4cd03558f0
fix(deps): resolve faraday-multipart ruby 4 incompatibility (#4199) 2026-01-13 07:24:23 -06:00
renovate[bot]
f718a92575
chore(deps): update ruby to v4 (#4065)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 12:41:44 +00:00
lowi
80996f241b
fix #4150: display 0°C instead of -0°C for near-zero negative temperatures (#4186)
Signed-off-by: lowi <75674438+lohwasser@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-13 12:34:35 +00:00
James Rich
0df3af36c6
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4197) 2026-01-13 12:25:35 +00:00
renovate[bot]
c7d8c65176
chore(deps): update core/proto/src/main/proto digest to 547a7d8 (#4196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 12:24:58 +00:00
renovate[bot]
b131003008
chore(deps): update core/proto/src/main/proto digest to 61219de (#4194)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 01:58:49 +00:00
James Rich
99c7989b8f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4192) 2026-01-12 23:36:43 +00:00
renovate[bot]
38bed5ffbf
chore(deps): update protobuf runtime to v4.33.4 (#4191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 20:59:09 +00:00
James Rich
bc6c19c83d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4187) 2026-01-11 23:35:28 +00:00
renovate[bot]
d7b96a1471
chore(deps): update core/proto/src/main/proto digest to aa48faf (#4185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-11 13:13:46 +00:00
James Rich
ed00eb64a2
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4182) 2026-01-11 02:49:48 +00:00
James Rich
0591e9186b
feat: Add "now" string and update formatAgo function (#4183)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-11 02:25:21 +00:00
James Rich
c5c7c2b454
feat: Add forceEnableAll to Capabilities (#4184)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-11 02:04:07 +00:00
renovate[bot]
75d8c0bdc3
chore(deps): update protobuf runtime to v4.33.3 (#4178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-10 21:35:28 +00:00
renovate[bot]
e25b5bef72
chore(deps): update core/proto/src/main/proto digest to 1a63a3d (#4180)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-10 21:35:17 +00:00
James Rich
a67b519abd
feat: Add mute node functionality (#4181)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-10 21:35:01 +00:00
James Rich
42fe7e9b2e
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4179) 2026-01-10 14:26:48 +00:00
James Rich
399dce19a6
fix(meshlog): Change default retention to 30 days (#4177)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-09 22:38:36 +00:00
Mac DeCourcy
63318bf66e
Dedup repeat messages/reactions due to sfpp (#4174)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-09 21:56:20 +00:00
James Rich
c4379c8f0d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4175) 2026-01-09 21:28:18 +00:00
renovate[bot]
47434222b8
chore(deps): update core/proto/src/main/proto digest to 9cb3737 (#4176)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-09 21:28:10 +00:00
James Rich
de5f06ce56
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4172) 2026-01-09 15:40:14 +00:00
James Rich
731430d7d6
refactor(build): Centralize Dokka configuration into convention plugin (#4173)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-09 15:40:00 +00:00
James Rich
02f99bd7bb
refactor(build): centralize Dokka documentation generation (#4171)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 23:55:07 +00:00
James Rich
7744a42e1c
refactor(deps): inject CoroutineDispatchers (#4170)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 23:40:26 +00:00
James Rich
68185460fa
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4169) 2026-01-08 20:29:05 +00:00
renovate[bot]
09c50d8ef6
chore(deps): update agp to v9.0.0-rc03 (#4167)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-08 20:28:05 +00:00
James Rich
e2bbdff1b7
feat: Handle Store and Forward heartbeat packets (#4168)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 20:26:08 +00:00
James Rich
e759731f83
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4166) 2026-01-08 18:44:04 +00:00
James Rich
02cf1f1034
refactor(datetime): Standardize date/time formatting with DateUtils (#4164)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 18:43:50 +00:00
James Rich
1422217303
feat(i18n): Add string for PKI public key send failure (#4165)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 16:27:05 +00:00
renovate[bot]
7c83c13e98
chore(deps): update datadog to v3.5.0 (#4161)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 16:06:32 +00:00
renovate[bot]
3f713faa2d
chore(deps): update core/proto/src/main/proto digest to 4ed2d1a (#4160)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-08 15:42:05 +00:00
James Rich
d245246f37
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4155) 2026-01-08 13:21:33 +00:00
James Rich
782c068ead
feat: Add SFPP confirmed status to Messages and Reactions (#4139)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Mac DeCourcy <github.znq26@slmail.me>
2026-01-08 13:21:21 +00:00
James Rich
78bd1ad6dd
feat: Mute broadcast Reaction notifications by default (#4159)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 04:06:28 +00:00
James Rich
f373aa124d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4154) 2026-01-07 12:58:16 +00:00
James Rich
6216ff8315
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4152) 2026-01-07 00:19:21 +00:00
James Rich
7d60c20dd7
fix: Make node details selectable (#4151)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-06 22:46:54 +00:00
James Rich
8a026c2b88
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4148) 2026-01-06 22:13:23 +00:00
James Rich
d4816a9dab
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4145) 2026-01-06 17:43:57 +00:00
James Rich
2526728859
feat: Add acknowledgement status and retry for emoji reactions (#4142)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-06 17:43:36 +00:00
James Rich
41c5992158
fix: fix strings.xml (#4147) 2026-01-06 11:43:13 -06:00
James Rich
f525541fe0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4134) 2026-01-06 06:39:22 -06:00
James Rich
d05aca5cf3
refactor: use location compat (#4143)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-06 01:51:58 +00:00
James Rich
6bb54bcd55
fix: reaction display regression (#4141)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-05 19:32:25 +00:00
James Rich
8400ae854f
feat: Add initial handling for Store and Forward PlusPlus packets (#4136)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-05 01:20:57 +00:00
James Rich
49f6ffe6e5
feat: Enhance message notifications with history and actions (#4133)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-04 21:46:07 +00:00
James Rich
43aca3c558
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4132) 2026-01-04 21:38:10 +00:00
James Rich
c46fb23f00
feat: Add separate notifications for waypoints (#4131)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-04 17:57:58 +00:00
James Rich
e5f78d101c
feat: Improve node handling and add client notifications (#4130)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-04 17:32:13 +00:00
James Rich
2c9f410baa
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4129) 2026-01-04 17:16:12 +00:00
James Rich
add87a4425
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4128) 2026-01-03 20:20:55 +00:00
James Rich
be57b083ca
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4126) 2026-01-03 12:23:15 +00:00
Mac DeCourcy
6bb40e4d20
feat: auto retry text message send on max retransmit (#4124) 2026-01-03 12:21:43 +00:00
James Rich
c9259c793f
feat: Send emoji codepoint in reaction packets (#4123)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-03 02:51:23 +00:00
James Rich
5b1693aa04
chore: Increase build memory (#4122)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-03 00:35:33 +00:00
James Rich
c03178406a
fix: Update copyright year to 2026 (#4121) 2026-01-02 15:51:27 -06:00
James Rich
5468f6814a
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4119) 2026-01-02 14:46:03 -06:00
James Rich
b5d30a8bb7
Refactor: Improve analytics plugin application and task configuration (#4120) 2026-01-02 14:45:48 -06:00
renovate[bot]
3e57102526
chore(deps): update dagger & hilt to v1.3.0 (#4118)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-02 14:45:34 -06:00
James Rich
00ce0d7fc0
feat: Enable local build cache (#4117) 2026-01-02 14:45:19 -06:00
James Rich
6950c8f01b
Fix: Use dynamic year for copyright headers (#4116) 2026-01-02 14:06:05 -06:00
Mac DeCourcy
6f338c4cde
feat: add retention period to meshLog. Defaults to 7 days, with a settings dropdown to change (#4078) 2026-01-02 18:14:16 +00:00
James Rich
dc9e51f18f
chore: Update VERSION_NAME_BASE to 2.7.11
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-02 11:41:34 -06:00
James Rich
b3ebe760dd
feat: Refactor MeshService into smaller, single-responsibility components (#4108)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-02 17:13:38 +00:00
renovate[bot]
0fa690eb61
chore(deps): update core/proto/src/main/proto digest to c2e45a3 (#4109)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:44:44 +00:00
James Rich
e7c3512cef
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4114) 2026-01-02 13:35:26 +00:00
James Rich
e11b51ac3b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4111) 2026-01-02 05:19:40 +00:00
Roman Leukin
8de38066ff
Convert Room DAO methods to suspend functions (#4102)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-31 13:25:15 +00:00
James Rich
76b34ceb53
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4099) 2025-12-31 13:19:41 +00:00
Eric Severance
a0910dfcb0
Consider hopStart=0 when calculating hops for packets (#4101) 2025-12-31 12:46:59 +00:00
James Rich
21ec78d8ef
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4096) 2025-12-30 17:38:19 +00:00
renovate[bot]
4980b34fef
chore(deps): update core/proto/src/main/proto digest to 96d3060 (#4098)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-30 17:38:13 +00:00
renovate[bot]
57f4b9b385
chore(deps): update agp to v9.0.0-rc02 (#4094)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 18:15:40 +00:00
renovate[bot]
0feba993cd
chore(deps): update core/proto/src/main/proto digest to f78b3f0 (#4093)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 15:11:11 +00:00
James Rich
9a9b900696
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4092) 2025-12-29 01:31:33 +00:00
James Rich
56760412cb
feat(build): Set JVM toolchain to 21 (#4090)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 23:14:31 +00:00
James Rich
27aee9e529
chore(ci): Simplify changelog generation workflow (#4089) 2025-12-28 15:24:48 -06:00
James Rich
29a7fd376d
ci(github-actions): Escape changelog output in workflow (#4088) 2025-12-28 15:15:05 -06:00
James Rich
0f00332e94
feat: Improve POSIX time zone string generation (#4087)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 20:53:23 +00:00
Mac DeCourcy
869222f3e1
fix: update schema 27 with packet index (#4086) 2025-12-28 14:47:06 -06:00
James Rich
cce41f6671
feat: Refactor back navigation in adaptive screens (#4085)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 18:51:31 +00:00
renovate[bot]
b3aa2b63d2
chore(deps): update co.touchlab:kermit to v2.0.8 (#4084)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-28 15:15:40 +00:00
James Rich
703308da87
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4082) 2025-12-28 14:30:22 +00:00
James Rich
0776e029f3
feat(logging): Replace Timber with Kermit for multiplatform logging (#4083)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 14:30:15 +00:00
James Rich
a927481e4d
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4081) 2025-12-28 13:47:30 +00:00
James Rich
9fd92691a9
refactor: Migrate to Android Gradle Plugin 9.0 (#4072)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 13:47:12 +00:00
James Rich
2070c267c5
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4080) 2025-12-28 01:57:32 +00:00
Mac DeCourcy
3177609620
perf: add node list indicies (#4056) 2025-12-27 17:24:33 +00:00
Mac DeCourcy
d5475a0e0a
fix: internal regression; if hardware model is unset keep long/short names null (#4079) 2025-12-27 17:24:18 +00:00
James Rich
09961b500f
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4076) 2025-12-27 07:28:21 -06:00
Camerin Figueroa
250caa7c99
Implements#4054 - Add channel name to channel message notification (#4069) 2025-12-27 13:02:16 +00:00
James Rich
55754b1612
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4073) 2025-12-27 12:54:29 +00:00
Dane Evans
458b2f2fe1
fix unstaged file for altitude on compass (#4074) 2025-12-27 12:37:48 +00:00
Dane Evans
2f347bbd9b
Add elevation to places where LatLong is listed. (#4071) 2025-12-27 10:27:52 +00:00
James Rich
04ee221a2c
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4068) 2025-12-26 15:00:50 +00:00
James Rich
ec0250f71b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4067) 2025-12-26 12:24:18 +00:00
James Rich
846c02e3a0
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4066) 2025-12-25 18:24:25 +00:00
James Rich
81a1f4d288
Revert "chore(deps): update ruby to v4" (#4064) 2025-12-25 10:20:05 -06:00
renovate[bot]
955fef2f53
chore(deps): update ruby to v4 (#4062)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-25 15:31:29 +00:00
James Rich
bdb3342cfc
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4060) 2025-12-25 15:31:12 +00:00
Mac DeCourcy
a1139b681f
fix: fixes to improve chat view reliability, eliminates stutter (#4053)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-24 19:46:56 +00:00
James Rich
934fc9bb0b
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4058) 2025-12-24 19:46:36 +00:00
James Rich
b996415ca9
feat: Add ability to request telemetry from a remote node (#4059) 2025-12-24 14:11:29 -06:00
James Rich
79fe6416b3
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4051) 2025-12-23 09:33:13 +00:00
Mac DeCourcy
87760f4a0d
perf: add missing index to optimize message list (#4055) 2025-12-23 09:30:54 +00:00
renovate[bot]
5feee83701
chore(deps): update core/proto/src/main/proto digest to c474fd3 (#4050)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-21 23:02:02 +00:00
James Rich
52bf9fcd58
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4049) 2025-12-21 23:01:33 +00:00
Dane Evans
d33229c50f
Feat request neighbours (#3709)
Signed-off-by: Dane Evans <dane@goneepic.com>
2025-12-21 20:45:06 +00:00
renovate[bot]
3e3dfe08e6
chore(deps): update markdown renderer (mike penz) (#4048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 14:16:17 +00:00
James Rich
8d134ebf63
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4045) 2025-12-19 14:01:33 +00:00
James Rich
fd2372c386
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4044) 2025-12-19 09:50:19 +00:00
renovate[bot]
42ce8b3cf7
chore(deps): update io.nlopez.compose.rules:detekt to v0.5.3 (#4041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 23:58:01 +00:00
James Rich
efe325b765
chore: Scheduled updates (Firmware, Hardware, Translations) (#4040) 2025-12-18 23:36:25 +00:00
James Rich
99cc024ee4
fix: app README.md header (#4043) 2025-12-18 17:35:52 -06:00
James Rich
42bc85b6fc
feat(build): add module dependency graph generation (#4042) 2025-12-18 17:30:36 -06:00
James Rich
85435d7cb8
refactor: Add LONG_TURBO ChannelOption and validation test (#4039) 2025-12-18 16:57:49 +00:00
emp3r0r7
d8a1f88bda
fix : avoid our node to be a relaynode candidate (#4037) 2025-12-18 14:25:18 +00:00
Jord
9833795864
Traceroute map position snapshots (#4035)
Signed-off-by: Jord <650645+DivineOmega@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-18 14:14:03 +00:00
renovate[bot]
03fd2bf9ba
chore(deps): update fastlane to v2.230.0 (#4038)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 14:10:29 +00:00
James Rich
df40ea67cf
chore: Scheduled updates (Firmware, Hardware, Translations) (#4034) 2025-12-18 13:26:53 +00:00
renovate[bot]
59a0ad601e
chore(deps): update google maps compose to v7 (major) (#4032)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 01:01:21 +00:00
renovate[bot]
fa5ff78f08
chore(deps): update actions/cache action to v5 (#4031)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 00:19:20 +00:00
James Rich
17825d3b98
ci: Cache AVD snapshots to speed up Android tests (#4030)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-17 23:40:52 +00:00
renovate[bot]
aff0a49756
chore(deps): update core/proto/src/main/proto digest to 62ef17b (#4029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 22:56:41 +00:00
renovate[bot]
7ef9a581ea
chore(deps): update kotlin ecosystem to v2.3.0 (#4015)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-17 22:47:31 +00:00
Mac DeCourcy
81654a095b
fix: nodes seen before full user exchange not being updated in phone NodeDB (#3996)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-17 20:30:25 +00:00
James Rich
212bcfd945
feat(ui): Animate icon changes with Crossfade (#4028) 2025-12-17 20:16:56 +00:00
renovate[bot]
16700bfffb
chore(deps): update androidx.compose:compose-bom-alpha to v2025.12.01 (#4027)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 20:10:48 +00:00
James Rich
61bc9bfdd2
refactor(build): Migrate core/common to KMP and cleanup build logic (#4026)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-17 19:48:01 +00:00
James Rich
506cba254c
refactor(analytics): Only plant DebugTree in debug builds (#4025)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-17 16:20:32 +00:00
renovate[bot]
380de5edb0
chore(deps): update ruby to v3.4.8 (#4023)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 13:53:29 +00:00
renovate[bot]
08fdf1e1a5
chore(deps): update plugin protobuf to v0.9.6 (#4022)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 13:53:20 +00:00
James Rich
832220e7c1
chore: Scheduled updates (Firmware, Hardware, Translations) (#4021) 2025-12-17 13:53:11 +00:00
Eugene Selifonov
0a0e5e7c9f
fix: correctly check for local or pre-db-update reaction via RSSI == 0 (#4024) 2025-12-17 13:52:46 +00:00
Phil Oliver
a4148c952d
Restructure node filters (#4020) 2025-12-16 22:09:49 +00:00
Phil Oliver
4b3ae721a0
Remove ktorfit (#4019) 2025-12-16 21:52:29 +00:00
renovate[bot]
3783a1e885
chore(deps): update devtools.ksp to v2.3.4 (#4018)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 19:52:08 +00:00
James Rich
44a18aef8c
chore: Scheduled updates (Firmware, Hardware, Translations) (#4017) 2025-12-16 19:09:28 +00:00
Jord
3dbc5108c2
feat: Traceroute map visualisation (#4002) 2025-12-16 16:53:28 +00:00
Eugene
24f40b2005
feat: add SNR/RSSI/Hops Away metrics and timestamp to the reaction dialog (#3964)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-16 15:56:30 +00:00
James Rich
8d858de00a
chore: Scheduled updates (Firmware, Hardware, Translations) (#4013) 2025-12-16 14:37:46 +00:00
renovate[bot]
b639815dfa
chore(deps): update core/proto/src/main/proto digest to 9beb80f (#4014)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 14:37:28 +00:00
James Rich
9804c38fb8
feat(settings): add about screen with open source licenses (#4012)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-15 20:56:43 +00:00
Texas
42e78f8f2f
Allow using custom tile server via HTTP (#3976) 2025-12-15 20:53:35 +00:00
James Rich
537b793999
chore: Scheduled updates (Firmware, Hardware, Translations) (#4008) 2025-12-15 20:05:00 +00:00
b8b8
6a91e78111
Update strings for small meshes.xml (#4009)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
2025-12-15 20:04:33 +00:00
James Rich
40ba6ffed4
chore: Scheduled updates (Firmware, Hardware, Translations) (#4006) 2025-12-15 13:15:25 +00:00
James Rich
298d469ad1
chore: Scheduled updates (Firmware, Hardware, Translations) (#4004) 2025-12-14 19:25:26 +00:00
James Rich
b3f872e41d
chore: Scheduled updates (Firmware, Hardware, Translations) (#4003) 2025-12-14 15:43:41 +00:00
James Rich
4e3a57d9b6
chore: Scheduled updates (Firmware, Hardware, Translations) (#4001) 2025-12-14 00:22:34 +00:00
James Rich
727a946831
chore: Scheduled updates (Firmware, Hardware, Translations) (#3999) 2025-12-13 23:05:44 +00:00
James Rich
5dfaa147fe
fix(build): disable more analytics tasks for F-Droid builds (#4000)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-13 23:03:45 +00:00
renovate[bot]
483ec67195
chore(deps): update core/proto/src/main/proto digest to 4095e59 (#3998)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 21:17:04 +00:00
James Rich
cdad764579
chore: Scheduled updates (Firmware, Hardware, Translations) (#3997) 2025-12-13 21:10:01 +00:00
Mac DeCourcy
f51b7fb0f2
chore: enhance bluetooth and wifi connection logging (#3960) 2025-12-13 20:44:23 +00:00
renovate[bot]
3a74389eaa
chore(deps): update actions/checkout action to v6 (#3991)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-12 17:46:11 -06:00
James Rich
a1cf92d676
refactor: consolidate F-Droid task disabling to convention plugin (#3990) 2025-12-12 23:29:04 +00:00
James Rich
775bf84c40
chore: Scheduled updates (Firmware, Hardware, Translations) (#3989) 2025-12-12 23:06:20 +00:00
renovate[bot]
11acf7b18f
chore(deps): update github artifact actions (major) (#3987)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-12 23:06:06 +00:00
James Rich
dded4f529f
refactor(ui): refactor glow effect drawing (#3988) 2025-12-12 22:04:08 +00:00
James Rich
daf6b5d36b
chore: Update VERSION_NAME_BASE to 2.7.10 (#3986)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 20:27:20 +00:00
James Rich
5759fb33bf
feat: Optimize message list node lookup (#3981)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 20:22:16 +00:00
James Rich
22240a4517
chore: Scheduled updates (Firmware, Hardware, Translations) (#3985) 2025-12-12 20:07:16 +00:00
James Rich
8690b5acc0
feat: Mark database models and protobufs as stable (#3982) 2025-12-12 19:02:27 +00:00
James Rich
4aea88877a
refactor(concurrent): Introduce SequentialJob to manage service setup (#3983)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 19:02:17 +00:00
James Rich
6d827e9004
chore: Scheduled updates (Firmware, Hardware, Translations) (#3984) 2025-12-12 19:02:09 +00:00
Jake Vis
d3cd9674c9
Port “Compass view” bottom sheet from Meshtastic-Apple PR #1504 (#3896)
Signed-off-by: Jake Vis <github@jv.ag>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 18:51:34 +00:00
James Rich
1a78745e6e
chore: Scheduled updates (Firmware, Hardware, Translations) (#3980) 2025-12-12 17:17:04 +00:00
James Rich
f32266083d
refactor: Move byte utilities to core:common module (#3977)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 14:46:43 +00:00
James Rich
d2b15c73b5
refactor(di): Introduce @ProcessLifecycle qualifier for di (#3978)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 14:23:35 +00:00
James Rich
1bbb4aca62
repo: Add 'refactor' to required PR labels
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-12 08:16:34 -06:00
James Rich
d6a20c6a9f
chore: Add labeler rule for refactor branch naming (#3979) 2025-12-12 08:15:08 -06:00
renovate[bot]
22513e4ca0
chore(deps): update io.nlopez.compose.rules:detekt to v0.5.2 (#3975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-12 11:39:44 +00:00
renovate[bot]
c74e47774d
chore(deps): update ktorfit to v2.7.1 (#3974)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-12 00:48:55 +00:00
James Rich
540814da01
feat(messaging): Add double-tap to react with 👍 (#3972)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-11 23:37:38 +00:00
renovate[bot]
f95c2962dd
chore(deps): update com.google.firebase:firebase-bom to v34.7.0 (#3973)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 23:37:17 +00:00
renovate[bot]
5006fa37fa
chore(deps): update agp to v8.13.2 (#3967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 13:39:54 +00:00
renovate[bot]
04b0e99150
chore(deps): update com.android.tools:common to v31.13.2 (#3968)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 13:07:24 +00:00
renovate[bot]
314a093304
chore(deps): update datadog to v3.4.0 (#3969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 13:06:54 +00:00
James Rich
919901e905
fix(nodes): Correctly filter ignored nodes (#3966)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-11 05:13:24 +00:00
James Rich
c21dcddf94
chore: Scheduled updates (Firmware, Hardware, Translations) (#3965) 2025-12-11 04:58:11 +00:00
James Rich
fdff7315fe
refactor(build): Create a dedicated analytics convention plugin (#3961)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-11 04:47:25 +00:00
James Rich
ce732203ae
chore(build-logic): Apply Spotless and Detekt to build-logic module (#3962)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 20:30:52 +00:00
James Rich
14f6a46769
fix(strings): correct settings interval templating (#3959)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 18:05:50 +00:00
renovate[bot]
2c9f79e5d8
chore(deps): update core/proto/src/main/proto digest to 4095e59 (#3958)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 17:42:00 +00:00
James Rich
51e8d96570
chore: Scheduled updates (Firmware, Hardware, Translations) (#3957) 2025-12-10 17:12:08 +00:00
Mac DeCourcy
6e280417b5
fix: back button respects navigation history in detail screens (#3956) 2025-12-10 17:11:48 +00:00
renovate[bot]
ea26d09bc0
chore(deps): update mikepenz/release-changelog-builder-action action to v6 (#3953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 16:38:26 +00:00
renovate[bot]
b933a0948d
chore(deps): update actions/upload-artifact action to v5 (#3955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 10:39:20 -06:00
James Rich
b1c580c626
ci(workflow): Improve release tag detection and artifact changelog (#3954) 2025-12-10 10:35:24 -06:00
James Rich
34225cdfe3
chore: Use repeatOnLifecycle for lifecycle-aware coroutine launch (#3952)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 16:15:25 +00:00
James Rich
431c7bc3b2
chore(ci): generate changelog on pushes to main (#3951)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 16:03:10 +00:00
renovate[bot]
44632d05bb
chore(deps): update plugin com.gradle.develocity to v4.3 (#3950)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 15:33:35 +00:00
James Rich
03ed85decd
feat(navigation): Navigate back to list view on tab reselection (#3948)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 15:09:47 +00:00
James Rich
8c9b5f7cb8
fix(map): Remove liteMode from inline map (#3949)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 15:03:13 +00:00
James Rich
ba90c5996b
chore: Scheduled updates (Firmware, Hardware, Translations) (#3945) 2025-12-10 14:58:57 +00:00
James Rich
05dae2e830
chore: Scheduled updates (Firmware, Hardware, Translations) (#3944) 2025-12-10 11:30:59 +00:00
James Rich
6be1d16a67
chore: Scheduled updates (Firmware, Hardware, Translations) (#3943) 2025-12-10 00:41:39 +00:00
James Rich
a3b44352f8
chore: Schedule documentation deployment on Sundays (#3942)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 00:07:27 +00:00
James Rich
f2004fbeea
repo: Add Contributor Covenant Code of Conduct (#3941)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-10 00:03:23 +00:00
James Rich
6eb3097c19
chore: Scheduled updates (Firmware, Hardware, Translations) (#3940) 2025-12-09 22:56:59 +00:00
renovate[bot]
ab237dd3dd
chore(deps): update peter-evans/create-pull-request action to v8 (#3939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 21:48:17 +00:00
James Rich
1d8ae61ac2
refactor(settings): Use string resources for update intervals (#3937)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-09 21:07:07 +00:00
renovate[bot]
b0b83ca55b
chore(deps): update plugin kover to v0.9.4 (#3938)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 20:39:38 +00:00
James Rich
7bd0a1c4c0
fix(maps): Enable lite mode and fix recomposition for inline maps (#3936)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-09 17:09:25 +00:00
James Rich
db0ae13d5e
refactor: improve node DB state management and readiness logic (#3932)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-08 20:27:56 +00:00
Wessel
2ad703c5f8
Set socket timeout to 5s (#3929)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-08 20:26:54 +00:00
James Rich
03232047fd
refactor: Remove unused connection transport state (#3933)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-08 20:22:17 +00:00
James Rich
9246b3b6c1
repo: Add AI Community Moderator workflow (#3931)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-08 15:41:12 +00:00
James Rich
026f9f352c
chore: Scheduled updates (Firmware, Hardware, Translations) (#3928) 2025-12-08 11:19:26 +00:00
Dane Evans
73f1ff0f1a
fix #3838 : message deletion count on the contacts page. (#3924) 2025-12-07 12:42:48 +00:00
James Rich
c62ab6094c
chore: Scheduled updates (Firmware, Hardware, Translations) (#3927) 2025-12-07 12:37:55 +00:00
Dane Evans
8f6f2477d1
update internal report name to reorder . (#3925) 2025-12-07 02:19:53 +00:00
James Rich
a242d99ad8
chore: Scheduled updates (Firmware, Hardware, Translations) (#3922) 2025-12-07 00:15:58 +00:00
James Rich
5e4128d45f
Revert "block creation or sending of duplicate channels. " (#3921) 2025-12-06 16:14:23 +00:00
James Rich
50394b9df0
chore: Scheduled updates (Firmware, Hardware, Translations) (#3920) 2025-12-06 16:06:56 +00:00
James Rich
6c40527d08
chore: Scheduled updates (Firmware, Hardware, Translations) (#3918) 2025-12-06 13:18:28 +00:00
James Rich
e7616b23a3
chore: Update VERSION_NAME_BASE to 2.7.9 (#3917)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-06 12:54:42 +00:00
Dane Evans
7db7f61386
block creation or sending of duplicate channels. (#3913) 2025-12-06 12:47:33 +00:00
James Rich
499ed58311
feat(firmware): Implement USB DFU updates for supported devices (#3901)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-06 12:36:54 +00:00
Dane Evans
f322eb31a0
Fix/3894 talkback confusion (#3914) 2025-12-06 12:29:38 +00:00
James Rich
00d678c42d
chore: Scheduled updates (Firmware, Hardware, Translations) (#3893) 2025-12-06 12:24:01 +00:00
renovate[bot]
c63fd95cbb
chore(deps): update core/proto/src/main/proto digest to 4095e59 (#3905)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-06 12:23:21 +00:00
renovate[bot]
ba9721d260
chore(deps): update protobuf runtime to v4.33.2 (#3908)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-06 12:22:54 +00:00
renovate[bot]
6fb29e9161
chore(deps): update com.github.mik3y:usb-serial-for-android to v3.10.0 (#3906)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-06 12:22:37 +00:00
Dane Evans
689c53fbc3
reduce triggers when unneeded (#3915) 2025-12-06 09:55:40 +00:00
Dane Evans
fd02f72caf
Repo - drop completeness check for feature requests (#3910) 2025-12-06 00:46:29 +00:00
renovate[bot]
dbc5fd74f6
chore(deps): update androidx (general) (#3895)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 16:04:04 +00:00
renovate[bot]
5627458917
chore(deps): update io.nlopez.compose.rules:detekt to v0.5.1 (#3900)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 15:43:39 +00:00
James Rich
f791c04b2a
chore: Scheduled updates (Firmware, Hardware, Translations) (#3892) 2025-12-03 12:50:24 +00:00
renovate[bot]
c9ca5631c4
chore(deps): update io.nlopez.compose.rules:detekt to v0.5.0 (#3891)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 12:46:43 +00:00
renovate[bot]
f09de72732
chore(deps): update actions/stale action to v10.1.1 (#3890)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 12:46:31 +00:00
James Rich
5fb77cb0a5
chore: Scheduled updates (Firmware, Hardware, Translations) (#3887) 2025-12-03 02:59:02 +00:00
renovate[bot]
b078d63b40
chore(deps): update actions/github-script action to v8 (#3889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 01:57:20 +00:00
renovate[bot]
ab5d68b484
chore(deps): update actions/ai-inference action to v2 (#3888)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 01:57:05 +00:00
James Rich
92733e6368
chore: Add GitHub Actions for AI-powered issue and PR management (#3886) 2025-12-03 01:45:10 +00:00
James Rich
3648f2d54b
chore: Scheduled updates (Firmware, Hardware, Translations) (#3879) 2025-12-02 20:34:49 +00:00
James Rich
0c127bc6b3
feat(model): Make NetworkDeviceHardware robust to unknown JSON keys (#3880)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-02 20:34:39 +00:00
James Rich
7e3d5c0619
chore: Scheduled updates (Firmware, Hardware, Translations) (#3872) 2025-12-02 02:27:15 +00:00
renovate[bot]
11b05c5e93
chore(deps): update ktorfit to v2.6.5 (#3875)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-02 02:23:28 +00:00
James Rich
a5b77397d6
chore: Scheduled updates (Firmware, Hardware, Translations) (#3871) 2025-12-01 12:06:56 +00:00
James Rich
0aed3a1eb0
chore: Scheduled updates (Firmware, Hardware, Translations) (#3864) 2025-12-01 11:55:11 +00:00
Mac DeCourcy
b81147d413
fix: system back button exiting from node detail page (#3870) 2025-12-01 11:54:59 +00:00
Mac DeCourcy
f3d030527a
fix: autofocus in message threads (#3869) 2025-12-01 11:54:44 +00:00
Mac DeCourcy
c27df15d0a
fix: contact list ordering (#3863) 2025-11-30 17:40:10 +00:00
Mac DeCourcy
e18f72dbf2
feat: add infrastructure shutdown safeguards and enhance shutdown dialog text (#3858) 2025-11-30 12:59:05 +00:00
James Rich
2a39118aa5
chore: Scheduled updates (Firmware, Hardware, Translations) (#3861) 2025-11-30 12:58:49 +00:00
Mac DeCourcy
89e82ede59
feat: per device persistant dismissal of bootloader nags (#3859) 2025-11-30 02:03:25 +00:00
James Rich
ebab2ee9ad
refactor(navigation): Simplify adaptive back nav and state (#3860)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-30 01:28:44 +00:00
James Rich
1d17f4074d
chore: Scheduled updates (Firmware, Hardware, Translations) (#3852) 2025-11-29 20:08:45 +00:00
Mac DeCourcy
ccbdb7bbf3
fix: prevent text fields from auto-focusing on screen load (#3857) 2025-11-29 19:52:17 +00:00
James Rich
d83c83cb81
chore: Scheduled updates (Firmware, Hardware, Translations) (#3851) 2025-11-29 13:52:37 +00:00
Mac DeCourcy
d4a30c0b24
feat: firmware bootloader ota warnings (#3846) 2025-11-29 04:17:40 +00:00
renovate[bot]
b18ad56113
chore(deps): update no.nordicsemi.kotlin.ble:client-android to v2.0.0-alpha12 (#3849)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-29 02:07:23 +00:00
James Rich
78274c7923
feat(navigation): Implement adaptive list-detail for contacts and nodes (#3850)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-29 02:05:07 +00:00
James Rich
d60e84fa4d
chore: Scheduled updates (Firmware, Hardware, Translations) (#3848) 2025-11-29 02:00:57 +00:00
Mac DeCourcy
923624fbfa
fix: further fixes for fdroid json fallbacks (#3847) 2025-11-29 02:00:36 +00:00
Mac DeCourcy
5a413d07e3
fix: fdroid device hardware fallback using bundled JSON for incomplete cache entries (#3844) 2025-11-28 20:45:22 +00:00
Mac DeCourcy
d1e7bd1ad5
feat: prevent QR imports from overriding local TX power (#3845) 2025-11-28 20:45:09 +00:00
James Rich
7227957f0a
chore: Scheduled updates (Firmware, Hardware, Translations) (#3843) 2025-11-28 19:12:57 +00:00
James Rich
6c8c7682b2
chore: Scheduled updates (Firmware, Hardware, Translations) (#3836) 2025-11-28 17:47:48 +00:00
Mac DeCourcy
af9a837511
fix: duplicate LazyColumn keys for broadcast contacts (#3840) 2025-11-28 17:47:27 +00:00
Mac DeCourcy
1c0dc486e2
fix: node search by keeping denormalized name columns up to date and backfilling existing nodes (#3839) 2025-11-28 17:38:30 +00:00
Dane Evans
ef9c0dc844
add 'ci' to autolabel for repo. (#3835) 2025-11-27 06:02:38 +00:00
James Rich
77cfcc03c1
chore: Scheduled updates (Firmware, Hardware, Translations) (#3834) 2025-11-27 02:14:47 +00:00
Mac DeCourcy
1c3784235e
fix: Multiple bugs - settings text fields, dropdowns, missing override duty cycle, and MQTT icon display (#3833) 2025-11-27 01:45:09 +00:00
Mac DeCourcy
9bc1b87e75
fix: Prevent message list jumping during pagination updates (#3829) 2025-11-27 01:05:38 +00:00
renovate[bot]
7d9762f99e
chore(deps): update plugin dependency-analysis to v3.5.1 (#3831)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-27 00:51:42 +00:00
James Rich
a90e9e7360
chore: Scheduled updates (Firmware, Hardware, Translations) (#3832) 2025-11-27 00:45:58 +00:00
Mac DeCourcy
500ae49b2c
fix: loadCachedDb() before backfill to ensure in-mem nodedb isn't stale, show filtered count in nodelist (#3827) 2025-11-26 23:44:35 +00:00
James Rich
4cecc578d8
chore: Scheduled updates (Firmware, Hardware, Translations) (#3828) 2025-11-26 16:48:38 +00:00
Benjamin Faershtein
7fd1f19e18
Fix add qr acting like replace instead of add (#3823)
Co-authored-by: Dane <dane@goneepic.com>
2025-11-26 14:25:55 +00:00
renovate[bot]
13452edba6
chore(deps): update ktor to v3.3.3 (#3825)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 13:37:07 +00:00
James Rich
4f0ee618d5
chore: Scheduled updates (Firmware, Hardware, Translations) (#3826) 2025-11-26 12:57:33 +00:00
James Rich
f75d74c617
chore: Scheduled updates (Firmware, Hardware, Translations) (#3824) 2025-11-26 11:38:36 +00:00
Dane Evans
fb2aebf637
fix: allow forgetting of network nodes (#3820) 2025-11-26 07:25:23 +00:00
Dane Evans
e9383e20dc
fix stop the connections screen from jumping during connections (#3821) 2025-11-26 07:22:23 +00:00
Mac DeCourcy
f966ab1307
fix: skip default nodeinfo upsert in handleReceivedUser for live packets (#3819) 2025-11-26 07:20:23 +00:00
Mac DeCourcy
07ade75f72
fix: message list paged lifecycle resulting in notifications being cleared (#3815) 2025-11-26 05:17:15 +00:00
Dane Evans
142412e771
tweak bug reports (#3818) 2025-11-26 04:25:24 +00:00
James Rich
6d0bd61d53
chore: Scheduled updates (Firmware, Hardware, Translations) (#3810) 2025-11-25 14:17:59 +00:00
James Rich
a2345dae28
feat: Keep screen on during firmware update (#3806)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-25 14:17:11 +00:00
Dane Evans
d3b33a5f27
fix token value (#3811) 2025-11-25 08:28:33 +00:00
Dane Evans
74f51acafb
dupe internal builds to an alt repo to allow obtanium (#3809) 2025-11-25 05:08:23 +00:00
Benjamin Faershtein
022652efe5
Added relays count (#3773)
Signed-off-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-25 00:30:44 +00:00
James Rich
0d00c838b0
chore: Scheduled updates (Firmware, Hardware, Translations) (#3803) 2025-11-24 17:26:47 -06:00
James Rich
f781cab31f
refactor(connections): Improve RSSI reading robustness (#3804) 2025-11-24 17:25:52 -06:00
renovate[bot]
9d7af544a4
chore(deps): update ruby to v3.4.7 (#3802)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 21:01:10 +00:00
renovate[bot]
d319328e48
chore(deps): update fastlane to v2.229.1 (#3801)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 20:39:42 +00:00
James Rich
528a0d10f4
chore: Scheduled updates (Firmware, Hardware, Translations) (#3800) 2025-11-24 14:32:04 -06:00
James Rich
3efbcaab8b
feat(settings): Add RTTTL ringtone playback in settings (#3799)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-24 19:48:52 +00:00
James Rich
4b93065c7e
feat: Add firmware update module for Nordic nRF devices (#3782)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-24 19:02:53 +00:00
James Rich
3e4e9d5f29
refactor: Improve RSSI reading robustness in connection info (#3798)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-24 18:57:23 +00:00
renovate[bot]
02dda17a87
chore(deps): update androidx (general) to v3.3.6 (#3797)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 18:55:25 +00:00
James Rich
9aef9a2dab
chore: Scheduled updates (Firmware, Hardware, Translations) (#3794) 2025-11-24 14:14:45 +00:00
Mac DeCourcy
5e8c9794eb
feat: Add Jetpack Paging 3 support for messages and threads/contacts (#3795)
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-24 14:14:05 +00:00
Mac DeCourcy
552097888f
fix: skip nodeinfo upsert when we recieve defaults from the node (#3796) 2025-11-24 14:13:31 +00:00
James Rich
5d61e78f37
chore: Scheduled updates (Firmware, Hardware, Translations) (#3791) 2025-11-23 11:08:51 +00:00
James Rich
3b7bf9e711
chore: Scheduled updates (Firmware, Hardware, Translations) (#3790) 2025-11-23 10:47:20 +00:00
renovate[bot]
12c6cae676
chore(deps): update fastlane to v2.229.0 (#3783)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-22 14:58:42 +00:00
renovate[bot]
283dc60ec2
chore(deps): update io.nlopez.compose.rules:detekt to v0.4.28 (#3781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-22 14:58:19 +00:00
Mac DeCourcy
15481dd004
fix: unread count racecondition (#3784) 2025-11-22 14:57:39 +00:00
James Rich
f9575a2aec
chore: Update VERSION_NAME_BASE to 2.7.8 (#3779)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-21 15:08:11 +00:00
renovate[bot]
9f07a79623
chore(deps): update core/proto/src/main/proto digest to 52fa252 (#3775)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 14:54:34 +00:00
renovate[bot]
7a28babbf1
chore(deps): update no.nordicsemi.kotlin.ble:client-android to v2.0.0-alpha11 (#3776)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 14:54:11 +00:00
James Rich
4bb35dba42
chore(ci): Use dedicated token for Crowdin workflow (#3778)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-21 14:29:47 +00:00
github-actions[bot]
a7034928b6
chore: Scheduled updates (Firmware, Hardware, Translations) (#3766)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-11-21 07:58:57 -06:00
James Rich
21bb6ad866
fix: typo (#3777) 2025-11-21 07:45:33 -06:00
James Rich
7069706293
ci: check workflow status on scheduled updates (#3774) 2025-11-21 07:42:44 -06:00
James Rich
20d62e056f
chore(renovate): Configure more aggressive automerge (#3772)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-21 03:25:19 +00:00
James Rich
dc6539f74f feat: Downgrade actions/checkout from v6 to v5
This reverts the `actions/checkout` action to version 5 in the scheduled-updates workflow. The `persist-credentials` option has also been removed as it is not needed with `checkout@v5`.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-20 20:42:48 -06:00
James Rich
e95705ffc9 chore(ci): Add preserve-hierarchy to Crowdin download
This commit updates the `scheduled-updates.yml` workflow to use the `--preserve-hierarchy` argument when downloading translations from Crowdin. This ensures that the directory structure of the translation files is maintained.

Additionally, the now-default `export_only_approved` and `skip_untranslated_strings` options have been removed for cleanup.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-20 20:37:00 -06:00
renovate[bot]
f594f4f974
chore(deps): update devtools.ksp to v2.3.3 (#3759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 00:39:35 +00:00
James Rich
7dcdc711cc
fix(ci): localization branch name (#3765) 2025-11-20 19:05:50 -06:00
James Rich
2f4bb66329
chore(crowdin): Remove preserve_hierarchy option (#3764) 2025-11-20 18:58:24 -06:00
James Rich
40a447b22e
ci(workflows): Preserve hierarchy when uploading sources to Crowdin (#3763) 2025-11-20 18:54:47 -06:00
James Rich
895efd6a09
chore(ci): preserve translation hierarchy (#3762) 2025-11-20 18:23:30 -06:00
James Rich
c73ff95d93
chore(ci): Use CROWDIN_GITHUB_TOKEN for scheduled updates PR (#3761) 2025-11-20 18:10:17 -06:00
James Rich
0109be4a11
chore(ci): Add Crowdin sync to scheduled updates (#3760) 2025-11-20 17:59:19 -06:00
renovate[bot]
a2285a87af
chore(deps): update androidx datastore to v1.2.0 (#3756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 20:03:28 +00:00
James Rich
1b512c6f58
docs: Overhaul and rename agent guide (#3757) 2025-11-20 14:17:36 -06:00
renovate[bot]
8bd8783944
chore(deps): update actions/checkout action to v6 (#3755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 19:46:23 +00:00
renovate[bot]
8a73073a2e
chore(deps): update plugin dependency-analysis to v3.5.0 (#3751)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 19:26:08 +00:00
James Rich
566c775ae9
New Crowdin updates (#3752) 2025-11-20 17:57:35 +00:00
renovate[bot]
295753d975
chore(deps): update androidx.navigation3:navigation3-runtime to v1.0.0 (#3747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:50:35 -06:00
renovate[bot]
74df21aacb
chore(deps): update androidx lifecycle to v2.10.0 (#3748)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:49:03 -06:00
renovate[bot]
06af50c86b
chore(deps): update androidx room to v2.8.4 (#3746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:48:15 -06:00
renovate[bot]
c3c1271c49
chore(deps): update androidx (general) (#3745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:48:01 -06:00
James Rich
e2aca10091
refactor(ble): Improve BLE connection stability and error handling (#3744)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-19 18:36:52 +00:00
James Rich
5120644349
chore: Scheduled updates (Firmware, Hardware) (#3743)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-11-19 18:31:06 +00:00
renovate[bot]
0cc74f0287
chore(deps): update datadog to v3.3.0 (#3742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 18:30:01 +00:00
renovate[bot]
565313023c
chore(deps): update com.diffplug.spotless:spotless-plugin-gradle to v8.1.0 (#3737)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:41:42 +00:00
renovate[bot]
dc462ddcb3
chore(deps): update plugin spotless to v8.1.0 (#3738)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:41:29 +00:00
renovate[bot]
391e1fb370
chore(deps): update core/proto/src/main/proto digest to 7eb3258 (#3736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 12:41:19 +00:00
James Rich
0f716dc49a
New Crowdin updates (#3739) 2025-11-19 12:41:03 +00:00
James Rich
bdf9dc375b
refactor(service): Simplify boot-time service startup (#3730)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-18 18:42:20 +00:00
renovate[bot]
f84747cea6
chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.2 (#3733)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-18 18:42:06 +00:00
James Rich
c8d22697c3
New Crowdin updates (#3734) 2025-11-18 18:38:31 +00:00
James Rich
7feab79da3
feat(nsd): Add support for Android 14+ NSD resolving (#3731)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-18 18:12:52 +00:00
Mac DeCourcy
deedd00995
feat: polish jump to unread message (#3710) 2025-11-18 13:27:11 +00:00
James Rich
7e8a4262f2
feat(ui): Improve scan status text display (#3725)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-18 13:26:15 +00:00
renovate[bot]
37e9c21a82
chore(deps): update gradle to v9.2.1 (#3723)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-17 15:55:16 -06:00
James Rich
05222c1b79
feat(bluetooth): Request location permission for BLE scan pre S (#3724) 2025-11-17 15:46:45 -06:00
James Rich
a497086c77
feat(ui): Display BLE signal strength for connected device (#3721)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-17 21:15:44 +00:00
James Rich
73d933fe14
feat(connections): Connecting state refactor (#3722)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-17 21:15:22 +00:00
James Rich
12ccb34553
fix(bluetooth): Check for permissions before accessing bonded devices (#3720)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-17 12:35:33 +00:00
Dane Evans
d6f39fdcb5
feat #3642: Add infrastructure to the list of filters. (#3716) 2025-11-17 00:52:25 +00:00
renovate[bot]
4015e67b2b
chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.1 (#3718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 15:50:49 +00:00
Dane Evans
12d96b76db
fix #3509: MQTT reporting interval not being selected, and sent to node (#3717) 2025-11-16 15:37:44 +00:00
James Rich
4a46908ddd
chore: Update VERSION_NAME_BASE to 2.7.7 (#3715) 2025-11-15 22:45:35 -06:00
James Rich
9bf4b237dd
refactor(coroutines): Use SupervisorJobs (#3714)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-16 04:33:41 +00:00
James Rich
0f8e475388
refactor(ble): Migrate to Nordic BLE Library for scanning and bonding (#3712)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-16 04:29:22 +00:00
Dane Evans
a22513660a
add back arrow to the channelConfig screen (#3713) 2025-11-16 04:29:00 +00:00
b8b8
54d89c37cc
Update strings.xml (#3711)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-15 22:32:17 +00:00
renovate[bot]
e06a598291
chore(deps): update google maps compose to v6.12.2 (#3706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-15 02:04:16 +00:00
James Rich
123d6f1d62
feat(build): Add distinct names for debug builds (#3707)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-15 02:03:32 +00:00
Mac DeCourcy
7369a9bf5d
fix: address backfill issue on tcp connections; add logging (#3676)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-14 19:22:48 +00:00
Mac DeCourcy
2a081f3c1f
feat: jump to oldest unread message upon opening a thread, display divider between read/unread (#3693) 2025-11-14 19:03:46 +00:00
renovate[bot]
427fb33e7e
chore(deps): update com.google.firebase:firebase-bom to v34.6.0 (#3704)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-14 16:18:50 +00:00
James Rich
4a5c63a295
chore: Fix unescaped apostrophes in translations (#3700) 2025-11-13 16:31:55 -06:00
James Rich
5e79786095
New Crowdin updates (#3699) 2025-11-13 22:09:23 +00:00
James Rich
3c41e072c0
fix(strings): Correct format specifiers for plurals and integers (#3698)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-13 21:28:16 +00:00
James Rich
bf076e8d64
feat: Add pre-commit run configuration (#3696)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-13 20:46:43 +00:00
James Rich
7ba2b23479
fix: Explicitly set Crowdin project type to Android (#3694) 2025-11-13 14:39:54 -06:00
renovate[bot]
d9752f710d
chore(deps): update protobuf runtime to v4.33.1 (#3692)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-13 19:54:26 +00:00
James Rich
d58b51021e
chore: Scheduled updates (Firmware, Hardware) (#3690)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-11-13 19:54:10 +00:00
James Rich
6590ea0ef0
feat(ble): Add support for LogRadio characteristic, enhance logs (#3691)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-13 19:53:37 +00:00
Phil Oliver
ac5412b499
Attempt to disable crowdin single quote escapes (#3687) 2025-11-12 19:55:50 -05:00
Phil Oliver
43305b9b5b
Attempt to disable crowdin escapes (#3685) 2025-11-12 19:50:02 -05:00
Phil Oliver
8c1643be97
Remove escaped single quotes and fix format args (translations) (#3682) 2025-11-13 00:16:56 +00:00
Mac DeCourcy
e421d6708a
fix: clear in mem cached values on nodedb, factory reset (#3680) 2025-11-13 00:05:50 +00:00
Mac DeCourcy
bc8ff26167
feat: Add bottom-nav scroll-to-top handling for nodes and conversations (#3674) 2025-11-12 22:22:21 +00:00
James Rich
00276bc5d4
New Crowdin updates (#3675) 2025-11-12 19:56:14 +00:00
James Rich
4602300565
New Crowdin updates (#3673) 2025-11-12 03:09:24 +00:00
renovate[bot]
65775fd8be
chore(deps): update com.google.zxing:core to v3.5.4 (#3670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-12 00:21:58 +00:00
Phil Oliver
57ef889caa
Kmp strings cleanup (#3669) 2025-11-11 23:40:09 +00:00
Mac DeCourcy
bde7c47931
fix: enforce LRU only over device-specific DBs, add one-time deletion of legacy DB on switch (guarded by prefs flag) (#3648) 2025-11-11 16:14:12 +00:00
James Rich
8b7d032d23
New Crowdin updates (#3666) 2025-11-11 13:35:59 +00:00
James Rich
7c7ac0af51
refactor: Improve log export logic for decoded payloads (#3663)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-11 13:20:29 +00:00
James Rich
cab3b0a0e9 Update Crowdin configuration file 2025-11-11 07:31:55 -06:00
James Rich
6a04d6499d
chore: temporarily remove translations to allow crowdin to repopulate (#3664) 2025-11-11 07:28:37 -06:00
James Rich
cfa2ff80ce
New Crowdin updates (#3660) 2025-11-11 03:44:15 +00:00
renovate[bot]
e701ad6aee
feat(#3508): Optionally preserve Favorites on nodeDb reset (#3633)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-11 02:38:45 +00:00
renovate[bot]
81dc625c70
chore(deps): update plugin compose-multiplatform to v1.9.3 (#3654)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-11 01:30:33 +00:00
James Rich
3a6834329a
refactor(ble): Refactor NordicBleInterface for clarity and stability (#3653)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-11 01:11:29 +00:00
Phil Oliver
28590bfcdf
Make :core:strings a Compose Multiplatform library (#3617) 2025-11-11 00:58:38 +00:00
renovate[bot]
d7fff4add2
chore(deps): update com.android.tools:common to v31.13.1 (#3652)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-11 00:22:10 +00:00
renovate[bot]
53a0ce44ac
chore(deps): update agp to v8.13.1 (#3651)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-11 00:22:00 +00:00
James Rich
32ec28e1a2
New Crowdin updates (#3650) 2025-11-10 17:59:52 +00:00
James Rich
1728f94d02
New Crowdin updates (#3646) 2025-11-10 13:43:26 +00:00
Mac DeCourcy
cb8d1871c9
feat: per device DB manager (#3641) 2025-11-09 16:54:21 +00:00
James Rich
f0b9a0ff75
fix: bt notif subscription race condition (#3645)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-09 16:43:30 +00:00
James Rich
23db9f2443
fix: Add delays around heartbeat on connection (#3643)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-09 15:50:36 +00:00
James Rich
86e4d1b1da
fix: Update ignored status in nodeDB on toggle (#3638) 2025-11-07 10:34:43 -06:00
renovate[bot]
3fa0007df1
chore(deps): update devtools.ksp to v2.3.2 (#3635)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 20:59:34 +00:00
James Rich
421e35a19c
fix: Clear packet database alongside node database (#3634)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-06 20:16:59 +00:00
James Rich
6d1f49f6bc
New Crowdin updates (#3631) 2025-11-06 19:11:18 +00:00
James Rich
9e8ffaa0ba
refactor(ble): Replace custom BLE implementation with Nordic (#3595)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-06 18:27:21 +00:00
James Rich
6cbecdd25e
New Crowdin updates (#3630) 2025-11-06 03:51:43 +00:00
Phil Oliver
a2da943ed7
Clean up string access (#3629) 2025-11-06 01:00:09 +00:00
renovate[bot]
4e033d422d
chore(deps): update androidx navigation to v1.0.0-rc01 (#3628)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 21:11:47 +00:00
James Rich
94b9904397
refactor: Update protobuf keep rule for new package name (#3627) 2025-11-05 13:59:14 -06:00
renovate[bot]
f62b6d1700
chore(deps): update androidx (general) (#3626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 18:42:22 +00:00
renovate[bot]
9162679528
chore(deps): update androidx navigation to v2.9.6 (#3625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 18:19:13 +00:00
renovate[bot]
95a527d3ed
chore(deps): update ktor to v3.3.2 (#3624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 18:10:35 +00:00
James Rich
1f26c25fe9
fix(#3622): Do not favorite node when sending a dm from a CLIENT_BASE device (#3623) 2025-11-05 17:44:20 +00:00
Phil Oliver
c170ff6a4b
Relocate proto utils (#3621) 2025-11-05 08:27:13 +00:00
Phil Oliver
8b83273a4f
Use Resources for string access (#3620) 2025-11-05 05:59:45 +00:00
Phil Oliver
0833a6767e
Alias strings R to Res (#3619) 2025-11-05 03:32:42 +00:00
Phil Oliver
a687328f08
Remove stringResource() id named argument (#3618) 2025-11-05 02:36:26 +00:00
James Rich
828edc653f
chore: Scheduled updates (Firmware, Hardware) (#3616)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-11-04 20:16:49 +00:00
renovate[bot]
739936c99a
chore(deps): update com.google.android.gms:play-services-maps to v19.2.0 (#3613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 17:11:17 +00:00
James Rich
e348946552
New Crowdin updates (#3608) 2025-11-04 13:17:27 +00:00
renovate[bot]
87bab7a7f1
chore(deps): update devtools.ksp to v2.3.1 (#3612)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 13:17:21 +00:00
James Rich
6e06d27701
feat(map): Persist Google Maps camera position (#3605)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-04 13:14:50 +00:00
Phil Oliver
78a10118a0
Re-enable debug application IDs (#3607) 2025-11-04 02:32:17 +00:00
Phil Oliver
e9bc9c9b15
Move SettingsNavigation back to :app module (#3604) 2025-11-04 00:31:24 +00:00
James Rich
e147025528
chore(deps): Bump aws-sdk-s3 and related dependencies (#3603)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-03 21:44:28 +00:00
James Rich
b5f8c0420a
refactor: Comment out debug applicationId overrides (#3601)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-03 21:41:46 +00:00
James Rich
acdd67cb79
ci: Enable Renovate for Bundler (#3602) 2025-11-03 15:16:20 -06:00
James Rich
f1844030df
New Crowdin updates (#3597) 2025-11-03 19:43:25 +00:00
James Rich
954c1cb16a
chore: Scheduled updates (Firmware, Hardware) (#3600)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-11-03 19:43:16 +00:00
Phil Oliver
315950b7c6
Modularize remaining nodes code (#3599) 2025-11-03 19:43:02 +00:00
Phil Oliver
89bc9528c5
Remove UiViewModel snackbar logic (#3598) 2025-11-03 19:42:28 +00:00
Phil Oliver
4a5f69458c
Enable parallel installation of debug and release builds (#3596) 2025-11-02 23:26:50 +00:00
James Rich
64dd71bf11
New Crowdin updates (#3591) 2025-11-02 21:55:27 +00:00
James Rich
66ed607bd9
chore: Scheduled updates (Firmware, Hardware) (#3593)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-11-02 21:55:08 +00:00
renovate[bot]
82f1927b6c
chore(deps): update markdown renderer (mike penz) to v0.38.1 (#3594)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 21:54:30 +00:00
James Rich
88ba47cc9b
Update VERSION_NAME_BASE to 2.7.6 (#3588)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-31 16:40:05 +00:00
James Rich
5712a3bdb6
New Crowdin updates (#3587) 2025-10-31 16:28:57 +00:00
renovate[bot]
0394fe6457
chore(deps): update core/proto/src/main/proto digest to fbe1538 (#3584)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 14:45:07 +00:00
James Rich
202985502a
New Crowdin updates (#3581) 2025-10-31 14:05:21 +00:00
renovate[bot]
dafd12acae
chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.0 (#3579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 12:17:43 +00:00
James Rich
3c16ed2ea4
New Crowdin updates (#3577) 2025-10-30 23:09:18 +00:00
James Rich
4e60b62af4
feat: Enable minification and add ProGuard rules (#3576)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-30 22:47:18 +00:00
James Rich
453dd398d4
feat: Display relay node information for messages (#3574)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-30 22:25:34 +00:00
James Rich
7d1c5cba4c
New Crowdin updates (#3573) 2025-10-30 22:16:12 +00:00
renovate[bot]
1f1dac7323
chore(deps): update firebase (#3571)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 21:55:21 +00:00
renovate[bot]
c5181f167c
chore(deps): update plugin dependency-analysis to v3.4.1 (#3572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 21:55:10 +00:00
Artemii Vishnevskii
75c262f94d
Fix #3542 Conversations list item layout. (#3553)
Signed-off-by: Artemii Vishnevskii <temaa.mann@gmail.com>
2025-10-30 21:54:52 +00:00
James Rich
5838e205f3
New Crowdin updates (#3569) 2025-10-30 21:30:00 +00:00
Dane Evans
2b79590881
fix #2062: Remap channels when rearranged (#3561) 2025-10-30 14:55:37 +00:00
Dane Evans
4f6140c1d6
fix #3566: rangetest export not having distances (#3566) 2025-10-30 14:53:34 +00:00
James Rich
01d1f64a48
New Crowdin updates (#3568) 2025-10-30 13:12:07 +00:00
James Rich
fee1f56260
New Crowdin updates (#3563) 2025-10-30 11:34:12 +00:00
James Rich
6f723ff11d
New Crowdin updates (#3560) 2025-10-30 07:59:32 +00:00
Dane Evans
7497ef71c0
feat #3436 - add current IP address' to the settings > network panel. (#3537) 2025-10-30 05:54:07 +00:00
Dane Evans
54104b00ed
Fix #3468 - Timed Mute (#3544) 2025-10-30 05:48:06 +00:00
Dane Evans
c482bd0aaf
Feat/improve debug decoding (#3554) 2025-10-30 03:10:06 +00:00
Dane Evans
213cb78491
fix #3528 Handle duplicate values in the broadcast interval enum (#3538) 2025-10-30 02:33:57 +00:00
renovate[bot]
9d3f903492
chore(deps): update gradle to v9.2.0 (#3558)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 02:25:27 +00:00
renovate[bot]
e3b1f1f0bd
chore(deps): update plugin dependency-analysis to v3.4.0 (#3540)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 00:29:34 +00:00
James Rich
b8f55a15a5
New Crowdin updates (#3559) 2025-10-30 00:26:51 +00:00
James Rich
b5081bd211
New Crowdin updates (#3557) 2025-10-29 22:04:21 +00:00
James Rich
7247a6102e
New Crowdin updates (#3552) 2025-10-29 00:18:26 +00:00
neimadTL
66937e2c78
Add node's name to CSV export file (#3555) 2025-10-29 00:17:31 +00:00
James Rich
ce6e2eba93
New Crowdin updates (#3546) 2025-10-28 03:36:25 +00:00
James Rich
93404fc616
New Crowdin updates (#3543) 2025-10-26 00:16:00 +00:00
renovate[bot]
c7ed629076
chore(deps): update github artifact actions (major) (#3541)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 23:46:24 +00:00
James Rich
e52ba92e98
New Crowdin updates (#3539) 2025-10-24 22:55:29 +00:00
renovate[bot]
7372a3c7b0
chore(deps): update kotlin ecosystem to v2.2.21 (#3531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-23 12:48:58 +00:00
James Rich
ba36aa979a
New Crowdin updates (#3529) 2025-10-23 12:48:45 +00:00
renovate[bot]
8287203db4
chore(deps): update androidx navigation to v1.0.0-beta01 (#3523)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 22:06:01 +00:00
James Rich
30660db028
chore: Update VERSION_NAME_BASE to 2.7.5 (#3527)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-22 21:59:59 +00:00
renovate[bot]
fe48396f69
chore(deps): update devtools.ksp to v2.3.0 (#3516)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 21:33:54 +00:00
renovate[bot]
8b0fbfdd39
chore(deps): update androidx (general) (#3522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 21:29:30 +00:00
renovate[bot]
022232183c
chore(deps): update androidx.compose.material3.adaptive:adaptive to v1.2.0 (#3525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 21:10:17 +00:00
renovate[bot]
21ebcb7ad0
chore(deps): update androidx room to v2.8.3 (#3524)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 21:10:01 +00:00
James Rich
fb39c9636a
New Crowdin updates (#3513) 2025-10-22 21:03:56 +00:00
Phil Oliver
6864dd0729
Organize channel config files (#3526) 2025-10-22 20:48:46 +00:00
Steve Bliss
58fda3d990
fix: Allow BLE reconnection after connection drop (#3518)
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-22 20:20:28 +00:00
Phil Oliver
e4ba6d6136
Generate a POSIX timezone string from a ZoneID (#3514) 2025-10-22 20:10:09 +00:00
renovate[bot]
58eeef38a9
chore(deps): update plugin dependency-analysis to v3.2.0 (#3515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 04:33:19 +00:00
James Rich
894da7a02a
feat: Remove Bluetooth RSSI feature (#3504)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-20 13:17:34 +00:00
James Rich
ead69c7085
New Crowdin updates (#3505) 2025-10-20 13:17:19 +00:00
James Rich
fecb84dd69
feat(position): Update position broadcast intervals (#3500)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-19 19:28:47 +00:00
renovate[bot]
3c01e08b1a
chore(deps): update core/proto/src/main/proto digest to bf149bb (#3501)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-19 04:49:34 +00:00
James Rich
9b2dc431e0
New Crowdin updates (#3498) 2025-10-19 02:14:15 +00:00
b8b8
ed022a4fcc
Update strings.xml - Remove "seconds" (#3497)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
2025-10-18 21:31:31 +00:00
James Rich
411a8b5dbb
feat(map): Add pulsing animation to recently heard nodes (#3495)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-18 14:13:38 +00:00
renovate[bot]
c2ccd18959
chore(deps): update core/proto/src/main/proto digest to 4a61838 (#3493)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-18 12:32:19 +00:00
Phil Oliver
e889975987
Fix app cold start jank (#3492) 2025-10-17 20:12:13 +00:00
James Rich
9f91b73ea0
Revert "chore(deps): update ruby to v3.4.7" (#3490) 2025-10-17 06:23:02 -05:00
James Rich
6e74d40d32
chore: Scheduled updates (Firmware, Hardware) (#3488)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-10-17 02:31:44 +00:00
James Rich
3dbfd81b43
feat(bluetooth): conditional RSSI polling (#3489)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-17 02:08:41 +00:00
renovate[bot]
c3ede38b4c
chore(deps): update ruby to v3.4.7 (#3416)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-16 22:23:08 +00:00
renovate[bot]
cc51a41f15
chore(deps): update devtools.ksp to v2.2.20-2.0.4 (#3428)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-16 22:22:49 +00:00
James Rich
0c2d58bb9c
feat(#3474): Move lock icon on ContactItem.kt, tweak layout. (#3487)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-16 20:38:16 +00:00
renovate[bot]
1df58b2cae
chore(deps): update plugin kover to v0.9.3 (#3485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-16 19:09:47 +00:00
James Rich
08cdc23633
feat(ble): Refactor SafeBluetooth and add modern Android API support (#3483)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-16 18:57:13 +00:00
Phil Oliver
2a4ab2f49f
Fix lint in Main.kt (#3484) 2025-10-16 18:30:00 +00:00
Phil Oliver
88ba0aa449
Align CoroutineDispatchers usage (#3481) 2025-10-16 16:12:20 +00:00
James Rich
50b02efcee
New Crowdin updates (#3479) 2025-10-16 12:26:40 +00:00
renovate[bot]
112414a638
chore(deps): update protobuf runtime to v4.33.0 (#3475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-16 12:26:33 +00:00
James Rich
cc5e2164a6
New Crowdin updates (#3477) 2025-10-16 08:09:24 +00:00
James Rich
abb0928112
New Crowdin updates (#3473) 2025-10-15 21:35:12 +00:00
ChrisDeardeuff
f6487518f8
Enhancement - Add 'show all meanings' to node key encryption dialog (#3437)
Co-authored-by: ChrisDeardeuff <chris.deardeuff@proton.me>
2025-10-15 20:04:18 +00:00
renovate[bot]
241b46da3d
chore(deps): update plugin dokka to v2.1.0 (#3472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 20:03:56 +00:00
renovate[bot]
8b53b1476f
chore(deps): update org.jetbrains.dokka:android-documentation-plugin to v2.1.0 (#3471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 20:03:44 +00:00
James Rich
d6615c976e
New Crowdin updates (#3470) 2025-10-15 13:05:23 +00:00
Phil Oliver
73b37c17dc
Add dividers to node details (#3466) 2025-10-15 02:06:45 +00:00
renovate[bot]
d64825f4f4
chore(deps): update datadog to v3.2.0 (#3462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 01:41:14 +00:00
James Rich
81ce79db4b
New Crowdin updates (#3463) 2025-10-15 01:39:22 +00:00
Phil Oliver
51ccc59b24
Clean up list item component API (#3465) 2025-10-14 18:37:59 +00:00
James Rich
1b9f0f9736
Modify stale.yml for issue management (#3460)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-14 01:10:31 +00:00
James Rich
4e02f15bf4
New Crowdin updates (#3459) 2025-10-14 00:59:51 +00:00
Phil Oliver
273772b214
Tweak settings footer button style/visibility (#3458) 2025-10-13 21:40:55 +00:00
James Rich
43400f8d61
chore(repo): Update VERSION_NAME_BASE to 2.7.4 (#3457)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-13 20:39:18 +00:00
Phil Oliver
3a232fc33f
Add stateInWhileSubscribed extension (#3456) 2025-10-13 20:04:29 +00:00
Phil Oliver
5c745bdd90
Decouple settings screens from NavHostController (#3450) 2025-10-13 17:52:44 +00:00
Phil Oliver
d4a6c8b7cb
Move maps manifest to :feature:map (#3444) 2025-10-13 14:54:17 +00:00
renovate[bot]
437de91ea3
chore(deps): update plugin com.gradle.develocity to v4.2.2 (#3453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-13 14:53:42 +00:00
James Rich
fa9314cabb
New Crowdin updates (#3455) 2025-10-13 14:53:32 +00:00
James Rich
03ab04fb83
Revert "chore: Add workflows permission to GitHub Actions" (#3454) 2025-10-13 08:08:57 -05:00
James Rich
7cfb1d0923
chore: Add workflows permission to GitHub Actions (#3452) 2025-10-13 07:53:14 -05:00
Phil Oliver
e691981207
Modularize ScannedQrCodeDialog (#3446) 2025-10-13 00:18:23 +00:00
Ken Piper
b4c8873484
Sets keyboard sentence capitalization on chat text inputs (#3445) 2025-10-12 21:53:09 +00:00
Phil Oliver
e81d30706c
Remove unused UiViewModel code (#3442) 2025-10-12 20:41:48 +00:00
Phil Oliver
3984c97e39
Move NodeMapScreen to :feature:map (#3443) 2025-10-12 20:27:27 +00:00
Sebastian Rutofski
e4ecf1d483
remove default value for onDismiss from SimpleAlertDialog (#3441) 2025-10-12 17:10:26 +00:00
Phil Oliver
886e9cfede
Modularize messaging code (#3435) 2025-10-12 17:07:03 +00:00
Phil Oliver
cd1a54f506
Add unread count badge to bottom nav (#3440) 2025-10-12 12:22:46 +00:00
James Rich
91470667fb
chore: Scheduled updates (Firmware, Hardware) (#3438)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-10-12 12:20:23 +00:00
renovate[bot]
7f8ffb1615
chore(deps): update core/proto/src/main/proto digest to 38638f1 (#3433)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-12 12:20:14 +00:00
James Rich
fbd069db58
New Crowdin updates (#3431) 2025-10-10 14:33:07 +00:00
James Rich
8163fbcc5e
feat(workflows): Allow promotions from any channel (#3432) 2025-10-10 09:33:37 -05:00
renovate[bot]
1e19660e1e
chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.2.1 (#3430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 12:41:26 +00:00
renovate[bot]
6097570c89
chore(deps): update core/proto/src/main/proto digest to cd5c83a (#3429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 12:40:50 +00:00
renovate[bot]
6f996fdfad
chore(deps): update com.google.firebase:firebase-bom to v34.4.0 (#3427)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 22:14:07 +00:00
James Rich
c6be5be72f
feat(settings): replace interval inputs with dropdowns (#3352)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-09 19:03:06 +00:00
renovate[bot]
e5a28d6942
chore(deps): update plugin google-services to v4.4.4 (#3426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 18:43:05 +00:00
renovate[bot]
e365059347
chore(deps): update com.google.gms.google-services:com.google.gms.google-services.gradle.plugin to v4.4.4 (#3425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 18:28:24 +00:00
James Rich
cdb97ebe2b
ci(github-actions): Remove tag step for promotions (#3422) 2025-10-09 06:46:53 -05:00
James Rich
be0d4cdff4
feat(ci): Use gh release edit to retag releases (#3421) 2025-10-09 06:30:59 -05:00
James Rich
f09b522f97
ci(workflow): Calculate release increment based on target channel (#3420) 2025-10-09 06:19:04 -05:00
James Rich
df37f3e030
feat(ci): Checkout code in promotion workflow (#3419) 2025-10-09 06:11:00 -05:00
James Rich
30ba9f1829
feat(ci): Refactor release promotion logic (#3418) 2025-10-09 05:42:06 -05:00
James Rich
7be6d96f43
New Crowdin updates (#3417) 2025-10-09 05:40:10 -05:00
James Rich
f789497562
Revert "chore(deps): update ruby to v3.4.7" (#3415) 2025-10-09 04:46:48 -05:00
renovate[bot]
a633e3bae2
chore(deps): update ruby to v3.4.7 (#3414)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 04:40:28 -05:00
James Rich
10a0f78b8d
New Crowdin updates (#3412) 2025-10-09 09:20:49 +00:00
renovate[bot]
6bc36f1dd5
chore(deps): update core/proto/src/main/proto digest to ef173e3 (#3411)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 02:38:00 +00:00
James Rich
f2c9d05968
feat(#3409): Add analytics notice to welcome screen (#3410)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-09 01:04:34 +00:00
renovate[bot]
82b9c2e979
chore(deps): update core/proto/src/main/proto digest to ef173e3 (#3403)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 01:02:13 +00:00
renovate[bot]
b158e5c846
chore(deps): update plugin dependency-analysis to v3.1.0 (#3408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 21:44:38 +00:00
renovate[bot]
ae58bdb08d
chore(deps): update androidx (general) (#3407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 19:11:47 +00:00
renovate[bot]
db1897b157
chore(deps): update androidx navigation to v1.0.0-alpha11 (#3404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 19:08:01 +00:00
renovate[bot]
ca04668774
chore(deps): update androidx.compose.material3.adaptive:adaptive to v1.2.0-rc01 (#3406)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 18:51:54 +00:00
renovate[bot]
fef93d2731
chore(deps): update androidx room to v2.8.2 (#3405)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 18:51:38 +00:00
Phil Oliver
0fd3c4ca05
Protobuf package change (#3291) 2025-10-08 18:20:09 +00:00
Phil Oliver
e6c8a2fc21
Fix share channels crash (#3401) 2025-10-08 16:23:45 +00:00
James Rich
bb72cd7b8c
feat(node): Always show exchange position action (#3400)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 16:19:08 +00:00
James Rich
318d63411f
feat(ci): Configure staged rollouts for Android releases (#3399)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 12:44:58 +00:00
James Rich
c122561df7
ci(github-actions): Check for null tagName in post-release-cleanup (#3398) 2025-10-08 07:21:39 -05:00
renovate[bot]
91d482e421
chore(deps): update ktor to v3.3.1 (#3397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 12:01:28 +00:00
James Rich
f2349822aa
New Crowdin updates (#3393) 2025-10-08 11:40:48 +00:00
Phil Oliver
36f1aabcb5
Remove remaining unused dependencies across the project (#3390) 2025-10-08 03:04:20 +00:00
James Rich
5c6c83d31c
ci: fix release cleanup (#3392)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 03:02:54 +00:00
James Rich
29434c4cf4
fix: Change fallback node name format (#3391)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 03:01:26 +00:00
James Rich
8e28dbcc2d
feat(ui): Simplify connection status message (#3389)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 01:50:34 +00:00
James Rich
8baf8714d0
feat(ui): Refactor node position details into separate section (#3382)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 00:50:53 +00:00
James Rich
b2ff4483c8
New Crowdin updates (#3388) 2025-10-08 00:47:36 +00:00
James Rich
38c50799cb
fix: service status notification refactor (#3386)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-08 00:13:49 +00:00
Phil Oliver
da65dfdd15
Remove remaining unused dependencies in :core:* (#3387) 2025-10-08 00:08:48 +00:00
renovate[bot]
ecbe17f61c
chore(deps): update ruby to v3.4.7 (#3384)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 22:07:51 +00:00
Phil Oliver
185c3ab5eb
Remove unused :core:database dependencies (#3383) 2025-10-07 21:37:03 +00:00
Phil Oliver
83531eeba9
Remove unused :core:analytics dependencies (#3381) 2025-10-07 19:35:44 +00:00
renovate[bot]
633c1f6010
chore(deps): update devtools.ksp to v2.2.20-2.0.3 (#3380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 19:31:26 +00:00
renovate[bot]
e30162f6b3
chore(deps): update google maps compose to v6.12.1 (#3379)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 19:31:16 +00:00
renovate[bot]
781ed4881f
chore(deps): update github/codeql-action action to v4 (#3376)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 17:05:51 +00:00
renovate[bot]
e50a57dee2
chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.2.0 (#3378)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 17:05:41 +00:00
Phil Oliver
9a6c78fcd1
Move tests to appropriate modules (#3377) 2025-10-07 16:23:41 +00:00
James Rich
e1da9fda01
New Crowdin updates (#3369) 2025-10-07 10:23:27 +00:00
Phil Oliver
59916a4cbe
Remove version catalog bundles (#3370) 2025-10-07 10:23:12 +00:00
Phil Oliver
7287ebbf49
Fix google build (#3371) 2025-10-07 10:22:32 +00:00
Phil Oliver
ef0ac5220d
Consistent catalog naming for AndroidX dependencies (#3368) 2025-10-07 03:51:32 +00:00
James Rich
ec81101a31
chore: Update VERSION_NAME_BASE to 2.7.3 (#3367)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-07 02:33:28 +00:00
James Rich
daa8785709
ci: Use tag_name input in release and promote workflows (#3366)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-07 02:30:20 +00:00
James Rich
3f923ae5c6
refactor(ui): Refactor SettingsItem component (#3364)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-07 02:23:34 +00:00
Phil Oliver
4d7ad96a09
Remove unused dependencies in :app (#3365) 2025-10-07 02:14:25 +00:00
James Rich
ff9d621978
feat: Add contentColor parameter to info components (#3363)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-06 22:02:44 +00:00
James Rich
6a71891790
feat: Always Display voltage (#3362)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-06 21:31:43 +00:00
James Rich
c98e74d804
feat(ble): Implement keep-alive and improve connection stability (#3359)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-06 19:45:11 +00:00
James Rich
cc64abfc5c
refactor: Switch to compileOnly for convention plugins (#3357)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-06 18:59:07 +00:00
Phil Oliver
1fb79d8887
Inject PlatformAnalytics directly (#3358) 2025-10-06 18:30:18 +00:00
Phil Oliver
95ec4877df
Modularize settings code (#3355)
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2025-10-06 17:20:03 +00:00
James Rich
4613a26c9d
New Crowdin updates (#3351) 2025-10-06 12:47:14 +00:00
James Rich
13e2796760
refactor(build-logic): Apply kotlinx-serialization plugin for compose (#3353)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-05 15:16:45 +00:00
James Rich
f92e002d83
New Crowdin updates (#3350) 2025-10-05 13:07:59 +00:00
James Rich
ab18e99bd5
fix(ci): update draft release query to use tagName instead of url (#3349)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-05 01:26:37 +00:00
Phil Oliver
dcbf664f38
Move app intro to :feature:intro (#3348) 2025-10-05 01:15:55 +00:00
James Rich
8562073d44
feat(ci): add post-release cleanup workflow (#3346)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-05 00:59:40 +00:00
James Rich
bab9920cc9
New Crowdin updates (#3347) 2025-10-05 00:59:23 +00:00
James Rich
6fc23bc988
ci(release): correct case for 'NewAlpha' track in Play Store promotion (#3345) 2025-10-04 18:05:20 -05:00
James Rich
d56e9f3ff6
fix(promote): update track name from 'alpha' to 'newAlpha' (#3344) 2025-10-04 17:58:32 -05:00
James Rich
7e7b9115c0
ci(release): include version code in GitHub release name (#3343) 2025-10-04 17:36:46 -05:00
James Rich
cf0fae09e6
feat(fastlane): copypasta typo (#3342) 2025-10-04 16:55:53 -05:00
James Rich
6adb7c392e
fix(ci): replace build lanes (#3341) 2025-10-04 16:30:47 -05:00
James Rich
e8e80e6201
ci: Add environment specification for promote-release job (#3340) 2025-10-04 16:26:03 -05:00
James Rich
a3183fad91
Rename workflow from 'Make Release' to 'Promote Release'
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 16:18:28 -05:00
James Rich
7d827dc9f9
refactor(ci): separate release and promotion workflows (#3339)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 21:08:55 +00:00
James Rich
be518bb60b
chore: Scheduled updates (Firmware, Hardware) (#3335)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-10-04 21:01:59 +00:00
James Rich
be6155c4ac
New Crowdin updates (#3334) 2025-10-04 21:01:50 +00:00
James Rich
54f7d9ecdf
fix(release): update track names for Google Play promotion (#3338) 2025-10-04 14:20:15 -05:00
James Rich
0f8bd84ecb
Refactor build steps to check channel input (#3337) 2025-10-04 14:04:57 -05:00
James Rich
4b42cc1419
fix(release): simplify build condition for internal channel (#3336) 2025-10-04 13:51:31 -05:00
James Rich
1a91223e89
feat(workflow): update permissions for release workflow (#3333) 2025-10-04 12:37:04 -05:00
James Rich
015bf123b2
ci(release): refactor release workflow to be callable (#3330)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 17:13:05 +00:00
James Rich
f2b4b87944
fix: update foreground service type to manifest (#3332)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 17:05:08 +00:00
James Rich
603276ee0a
feat(chat): (re)allow multi-line messages in text input (#3329)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 16:52:01 +00:00
James Rich
5ac43cd1af
New Crowdin updates (#3331) 2025-10-04 16:11:23 +00:00
James Rich
f903d3fa35
Revert markdown message rendering (#3328)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 15:01:26 +00:00
renovate[bot]
03cf9817fe
chore(deps): update core/proto/src/main/proto digest to a1b8c3d (#3326)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-04 13:24:58 +00:00
James Rich
0dfc76172a
New Crowdin updates (#3327) 2025-10-04 13:24:21 +00:00
Phil Oliver
ff95bc5311
Decouple NodeMapScreen from MetricsViewModel (#3323)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-04 13:17:00 +00:00
James Rich
8b4397a825
Revert (#3325) 2025-10-04 06:07:43 -05:00
James Rich
28de377068
ci(release): refine promotion logic and enhance Datadog integration (#3322) 2025-10-03 21:03:33 -05:00
Phil Oliver
51fa634e11
More map modularization (#3319) 2025-10-04 00:19:37 +00:00
James Rich
bc114c618a
ci(promote-release): enhance stage promotion logic (#3321) 2025-10-03 19:08:51 -05:00
renovate[bot]
f8dc71898e
chore(deps): update actions/stale action to v10.1.0 (#3317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 21:29:41 +00:00
Phil Oliver
e24292494e
Add BuildConfigProvider (#3318) 2025-10-03 21:24:52 +00:00
James Rich
c1f411b2ad
ci(release): check for existing versionCode on Google Play before build (#3320) 2025-10-03 16:29:16 -05:00
James Rich
be2719d365
chore(ci): remove release environment from prepare-build-info job (#3316) 2025-10-03 13:33:29 -05:00
James Rich
cbeecd5385
ci(release): trigger release workflow from promotion and internal builds (#3315) 2025-10-03 13:30:40 -05:00
James Rich
a3d058962c
New Crowdin updates (#3312) 2025-10-03 17:46:06 +00:00
James Rich
14a5b3ea3e
ci(github-actions): move release environment to correct workflow (#3314) 2025-10-03 12:45:54 -05:00
James Rich
be6dbd565d
ci(workflows): configure git user for release workflows (#3311) 2025-10-03 12:18:17 -05:00
James Rich
7c70b7faee
ci(github-actions): add Release environment to workflows (#3310)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-03 16:46:02 +00:00
James Rich
7b3b794bbe
New Crowdin updates (#3306) 2025-10-03 16:16:59 +00:00
Phil Oliver
47f3961f3a
Finish migration away from global app bar (#3297) 2025-10-03 16:06:51 +00:00
James Rich
ee74d4700a
refactor(release)!: simplify and streamline release workflow (#3309) 2025-10-03 10:46:31 -05:00
b8b8
a7183cc8ca
Update strings.xml - PKI required for DMs (#3301)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
2025-10-03 15:01:19 +00:00
James Rich
7bc9469df5
feat(ci): overhaul release workflow for hotfixes and promotions (#3307) 2025-10-03 09:33:09 -05:00
renovate[bot]
87f7ea3f47
chore(deps): update core/proto/src/main/proto digest to c1e31a9 (#3305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 12:11:55 +00:00
James Rich
7a2d4c6421
New Crowdin updates (#3304) 2025-10-03 11:26:25 +00:00
Phil Oliver
5d95dca354
Fix shared contact deeplink (#3302)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-03 10:42:52 +00:00
James Rich
2accdd7f77
New Crowdin updates (#3303) 2025-10-03 10:16:16 +00:00
Phil Oliver
4a8cd6fb41
Decouple ScannedQrCodeDialog from UiViewModel (#3300) 2025-10-03 10:12:40 +00:00
James Rich
f854cafe6f
New Crowdin updates (#3299) 2025-10-03 00:40:45 +00:00
Phil Oliver
502e417338
ConnectionsScreen available BLE devices (#3298) 2025-10-03 00:18:09 +00:00
James Rich
526ca9b854
New Crowdin updates (#3296) 2025-10-02 20:31:03 +00:00
James Rich
c42cb44b10
feat(settings): add link to system app settings (#3293)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-02 18:48:20 +00:00
Phil Oliver
a5cd2d6bbc
Decouple ChannelScreen from UIViewModel (#3295) 2025-10-02 18:25:47 +00:00
renovate[bot]
309ec5a6b4
chore(deps): update datadog to v1.21.0 (#3292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 17:08:43 +00:00
James Rich
0dbc628378
chore(repo): Update VERSION_NAME_BASE to 2.7.2 (#3294) 2025-10-02 12:06:55 -05:00
James Rich
24f0417b28
feat(contact): add manually verified shared contact support (#3283)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-02 16:46:12 +00:00
James Rich
04991dbc5a
feat(network): add http cache to OkHttpClient (#3290)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-02 11:03:01 +00:00
renovate[bot]
94cd088c62
chore(deps): update plugin com.gradle.develocity to v4.2.1 (#3288)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 10:29:31 +00:00
James Rich
ceb3dea420
chore: Scheduled updates (Firmware, Hardware) (#3285)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-10-02 10:01:12 +00:00
Phil Oliver
fe9491121c
Modularize common composables (#3286) 2025-10-02 09:56:49 +00:00
Phil Oliver
81804500bd
Move MapViewExtensions to :feature:map (#3284) 2025-10-02 01:21:51 +00:00
Phil Oliver
d553cdfee6
Add :feature:node (#3275) 2025-10-01 23:26:41 +00:00
James Rich
5a6cd5acbc
fix(debug): replace top app bar with actions (delete) (#3276)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 20:32:50 +00:00
James Rich
31d4ef67ed
chore: Scheduled updates (Firmware, Hardware) (#3280)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-10-01 20:31:31 +00:00
renovate[bot]
1a10c1d002
chore(deps): update core/proto/src/main/proto digest to 60c3e66 (#3279)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 20:31:21 +00:00
Phil Oliver
7a899528bf
Fix NodeChip click handling (#3278) 2025-10-01 20:12:26 +00:00
James Rich
0847598d38
refactor(ui)!: update NodeItem display with new components (#3273)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 19:31:08 +00:00
James Rich
a3009c9c84
feat(analytics): Set session sample rate for RUM (#3277)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 19:22:03 +00:00
renovate[bot]
83260963aa
chore(deps): update google maps compose to v6.12.0 (#3274)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 19:21:59 +00:00
James Rich
18b25d0f53
New Crowdin updates (#3271) 2025-10-01 18:51:58 +00:00
James Rich
ff8a13f3af
New Crowdin updates (#3269) 2025-10-01 12:29:39 +00:00
renovate[bot]
ec688e3c4f
chore(deps): update gradle/actions action to v5 (#3270)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 12:07:51 +00:00
James Rich
b4448ce83c
ci(release): simplify artifact paths for GitHub Release (#3267)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 11:59:45 +00:00
James Rich
668b44d3b5
chore(fdroid): Configure F-Droid build variant (#3265) 2025-09-30 21:56:16 -05:00
James Rich
0b4104fedf
chore(analytics): Disable Google services for F-Droid builds (#3264)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 02:25:04 +00:00
Phil Oliver
7593560bba
Modularize more maps files (#3262) 2025-10-01 01:37:17 +00:00
Ben Meadors
bd0812f0d7
Remove noisy error disconnected toast (#3263) 2025-10-01 01:16:21 +00:00
James Rich
8b01cd70ce
fix(deps): update Kotlin Serialization plugin version (#3261)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 00:45:28 +00:00
James Rich
75513f7835
New Crowdin updates (#3247) 2025-10-01 00:26:04 +00:00
James Rich
ae722790b1
feat(map): set minimum cluster size to 10 (#3260)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-01 00:25:43 +00:00
James Rich
cad88d277b
refactor(analytics)!: modularize analytics - remove Logging (#3256)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-30 23:22:22 +00:00
Phil Oliver
9aa0cf9335
Decouple NodeMapScreen from UIViewModel (#3257) 2025-09-30 22:46:31 +00:00
renovate[bot]
51ada3d6ff
chore(deps): update core/proto/src/main/proto digest to 394268b (#3252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 21:42:16 +00:00
Phil Oliver
db2ef75e08
Add :core:service (#3253) 2025-09-30 20:55:56 +00:00
Phil Oliver
cf59033c49
Clearer node filter options (#3250) 2025-09-30 03:47:06 +00:00
James Rich
6abe0124d2
fix(service): Update foreground service type and error handling (#3246)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-29 20:59:00 +00:00
James Rich
38332b346e
fix(ui): handle ActivityNotFoundException when opening firmware links (#3245)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-29 20:55:08 +00:00
James Rich
1ac5a0c7ec
New Crowdin updates (#3242) 2025-09-29 20:55:01 +00:00
James Rich
3f3182ad82
fix(crash): pass in navcontroller and specify viewmodel type (#3244)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-29 20:54:56 +00:00
Phil Oliver
a878373d14
Remove node card expansion (#3243) 2025-09-29 20:54:28 +00:00
James Rich
9ed0f5e0a7
New Crowdin updates (#3239) 2025-09-29 16:58:17 +00:00
Phil Oliver
32b73f7f15
Migrate node sort prefs to datastore (#3241) 2025-09-29 16:57:47 +00:00
James Rich
e3dd4325fd
fix(build): apply Datadog and Firebase plugins _only_ to google flavor (#3240)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-29 16:51:07 +00:00
Phil Oliver
48a27ba022
Remove NodeChip long-click (#3220) 2025-09-29 14:31:55 +00:00
James Rich
98ef72d240
New Crowdin updates (#3237) 2025-09-29 13:07:42 +00:00
James Rich
e3b9869374
New Crowdin updates (#3236) 2025-09-29 12:44:38 +00:00
James Rich
92202e3ebf
feat(bluetooth): expose and display bluetooth signal strength (RSSI) (#3235)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-29 12:44:12 +00:00
James Rich
00e9be0919
New Crowdin updates (#3229) 2025-09-28 19:51:20 +00:00
James Rich
c5da2c4e13
build: use git commit count for versionCode (#3233)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-28 19:49:12 +00:00
James Rich
ac51c1b9f6
fix(service): clear nodeDB when device address changes (#3232)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-28 19:45:10 +00:00
Dane Evans
cd010c4967
add colour coding to traceroutes (#3227) 2025-09-28 16:53:33 +00:00
Phil Oliver
3951ebb375
Spruce up LoRaConfigScreen (#3224) 2025-09-28 16:52:42 +00:00
James Rich
8c16052229
New Crowdin updates (#3221) 2025-09-28 14:54:13 +00:00
James Rich
e31bba2a1e
chore: Scheduled updates (Firmware, Hardware) (#3218)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-28 14:53:59 +00:00
renovate[bot]
2d2544338c
chore(deps): update core/proto/src/main/proto digest to 082bb7c (#3223)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-28 14:53:50 +00:00
James Rich
f3d34ed8a9
feat(map): Add last heard filter for node tracks (#3222)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-27 21:56:19 +00:00
James Rich
61c6d6c76e
feat(map): add last heard filter for map nodes (#3219)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-27 18:40:41 +00:00
James Rich
ab18e424b1
ci(release): add build provenance and streamline release process (#3217)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-27 01:06:56 +00:00
Phil Oliver
a8b0327c41
Decouple MainAppBar from UiViewModel (#3216) 2025-09-27 00:11:57 +00:00
Phil Oliver
6d5e56b34f
Decouple contacts nav graph from UiViewModel (#3215) 2025-09-26 23:54:31 +00:00
Phil Oliver
3e83e61a1a
Move some repo classes to :core:data (#3214) 2025-09-26 21:45:11 +00:00
Phil Oliver
af8e1daa5d
Decouple MapView from UiViewModel (#3213) 2025-09-26 20:34:36 +00:00
Phil Oliver
3d94391bb1
Decouple NodeDetail from UiViewModel (#3212) 2025-09-26 19:24:37 +00:00
James Rich
ed032c66b9
New Crowdin updates (#3211) 2025-09-26 18:52:15 +00:00
Phil Oliver
4deed11343
Decouple MessageScreen from UiViewModel (#3210) 2025-09-26 18:46:49 +00:00
James Rich
6c0b2c55a0
feat(db): introduce transactional config installation (#3209)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-26 01:39:26 +00:00
Phil Oliver
01290278e9
Decouple NodeScreen from UiViewModel (#3207) 2025-09-26 01:09:17 +00:00
renovate[bot]
1ba8c536e2
chore(deps): update dagger & hilt to v2.57.2 (#3208)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 01:09:09 +00:00
Phil Oliver
0cf7b93f28
Less state held by MeshService (#3205) 2025-09-25 21:22:14 +00:00
Phil Oliver
c5360086b7
Add :core:ui (#3203) 2025-09-25 21:01:53 +00:00
James Rich
b139c7edd7
New Crowdin updates (#3202) 2025-09-25 20:26:51 +00:00
James Rich
fb707e6218
chore(release): remove update-github-release step from workflow (#3204) 2025-09-25 13:53:00 -05:00
James Rich
f7ba7dcb41
refactor(service): unify config and node info request flow (#3201)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-25 14:02:55 +00:00
Phil Oliver
8317b704ea
Redundant methods in RadioConfigRepository (#3198) 2025-09-25 13:57:26 +00:00
James Rich
8be9c38ae6
New Crowdin updates (#3200) 2025-09-25 13:56:56 +00:00
James Rich
b0f6d4d775
refactor(ui): improve UX for saving node notes (#3197)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-24 23:35:11 +00:00
James Rich
cd3f6713c6
New Crowdin updates (#3196) 2025-09-24 23:02:17 +00:00
James Rich
39f12ff32c
New Crowdin updates (#3195) 2025-09-24 20:53:35 +00:00
Phil Oliver
613714cdb4
Modularize database classes (#3192) 2025-09-24 20:23:05 +00:00
renovate[bot]
989a6bc820
chore(deps): update androidx navigation (#3188)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-24 20:15:48 +00:00
James Rich
80774954b6
New Crowdin updates (#3194) 2025-09-24 19:39:26 +00:00
James Rich
108e9a8c01
chore: Scheduled updates (Firmware, Hardware) (#3193)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-24 19:39:11 +00:00
renovate[bot]
bb698577ba
chore(deps): update androidx adaptive ui to v1.2.0-beta03 (#3187)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 19:10:32 +00:00
renovate[bot]
3470983230
chore(deps): update androidx room to v2.8.1 (#3189)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 18:40:51 +00:00
James Rich
588d86347d
New Crowdin updates (#3184) 2025-09-24 18:36:00 +00:00
renovate[bot]
07e024e2c1
chore(deps): update plugin spotless to v8 (#3191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 18:35:46 +00:00
renovate[bot]
0232029d8c
chore(deps): update com.diffplug.spotless:spotless-plugin-gradle to v8 (#3190)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 18:35:33 +00:00
renovate[bot]
2561747978
chore(deps): update androidx (general) (#3186)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 18:35:17 +00:00
b8b8
1c3dddf903
Update strings.xml (#3180)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
2025-09-24 17:45:25 +00:00
Phil Oliver
4eba3e9daf
Modularize more models/utils (#3182) 2025-09-24 15:43:46 +00:00
Phil Oliver
5bb3f73e0d
Modularize CustomTileProviderRepository (#3181) 2025-09-24 14:20:35 +00:00
James Rich
84d1888bae
chore: Scheduled updates (Firmware, Hardware) (#3183)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-24 13:04:58 +00:00
James Rich
2a583e6d8f fix: release fixes (#3179) 2025-09-23 17:26:08 -05:00
Phil Oliver
c37925fed8
Move common dispatchers to :core:di (#3178) 2025-09-23 21:48:16 +00:00
Phil Oliver
f63d1ea54e
Remove design/ git submodule (#3177) 2025-09-23 21:29:33 +00:00
Phil Oliver
a1d9f926cb Pref fixes (#3175) 2025-09-23 15:04:44 -05:00
James Rich
c5c433c165
New Crowdin updates (#3174) 2025-09-23 14:27:53 +00:00
James Rich
61ca39667f chore: remove Firebase Performance Monitoring
Removes the Firebase Performance Monitoring plugin and associated dependencies.

this was causing issues with conflicting protobuf libs

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-23 09:24:05 -05:00
James Rich
bf8453705b release(2.7.1): bump version name base
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-23 08:16:43 -05:00
James Rich
19e3b260a5
New Crowdin updates (#3173) 2025-09-23 12:15:12 +00:00
James Rich
ce8bd943d8
feat(settings): add device telemetry toggle (#3166)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-23 11:26:35 +00:00
Phil Oliver
b98e533123
Modularize prefs classes (#3171) 2025-09-23 09:51:03 +00:00
Phil Oliver
53fdda3a9c
Add core data modules (#3169) 2025-09-23 03:49:28 +00:00
James Rich
bb2e6b9a7d
New Crowdin updates (#3170) 2025-09-23 03:00:18 +00:00
James Rich
ddb19b959f
refactor(settings)!: standardize radio config screens (#3167)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-23 02:59:33 +00:00
James Rich
d2db37e0d4
refactor(R): Move R file imports to core UI module (#3159)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-23 01:59:39 +00:00
renovate[bot]
e8e7608e52
chore(deps): update google maps compose to v6.11.0 (#3168)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 21:53:51 +00:00
renovate[bot]
a54f8c8ea3
chore(deps): update actions/github-script action to v8 (#3165)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 15:32:39 +00:00
renovate[bot]
ea6acb2309
chore(deps): update actions/download-artifact action to v5 (#3164)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 15:32:10 +00:00
James Rich
d18824e65d
chore: Scheduled updates (Firmware, Hardware) (#3162)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-22 15:15:56 +00:00
James Rich
f9e47535b3
ci: streamline release process and artifact handling (#3163)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-22 15:15:41 +00:00
James Rich
419c39204e
New Crowdin updates (#3155) 2025-09-20 09:51:13 +00:00
James Rich
0bdafb0afc
2.7.0 (#2900)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: DaneEvans <dane@goneepic.com>
2025-09-20 02:12:34 +00:00
Phil Oliver
8b2e1e8b02
Modularize some map-related files (#3154) 2025-09-19 23:12:26 +00:00
James Rich
00ee0db78a
feat(settings): align config screens copy and order with iOS (#3144)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-19 22:58:49 +00:00
Phil Oliver
8fb41aab74
Modularize some model classes (#3153) 2025-09-19 19:53:43 +00:00
Phil Oliver
ab2fff219d
Modularize protos (#3152) 2025-09-19 19:09:08 +00:00
renovate[bot]
58adf41510
chore(deps): update meshtastic protobufs to 6a8b80a (#3149)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 16:10:33 +00:00
Phil Oliver
e604942beb
Launch system language picker for API 33+ (#3145) 2025-09-19 12:16:45 +00:00
Phil Oliver
0d2c1f1516
New core modules for :model, :navigation, :network, :prefs (#3147) 2025-09-19 12:16:36 +00:00
renovate[bot]
bb707526f9
chore(deps): update datadog to v3.1.0 (#3150)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 12:12:51 +00:00
James Rich
7dc9b82a0e
chore: Scheduled updates (Firmware, Hardware) (#3148)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-19 12:12:35 +00:00
renovate[bot]
b66bf96f7e
chore(deps): update com.google.firebase:firebase-bom to v34.3.0 (#3146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 03:23:07 +00:00
renovate[bot]
51ca6af10f
chore(deps): update gradle to v9.1.0 (#3143)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 03:22:49 +00:00
Phil Oliver
8b34a69d62
Add MapScreen (#3142) 2025-09-18 16:31:17 +00:00
Phil Oliver
f2d29d4582
Flatten BluetoothViewModel (#3138) 2025-09-18 16:08:10 +00:00
Phil Oliver
eedc3ef963
Decouple SettingsScreen from UiViewModel (#3137) 2025-09-18 11:40:33 +00:00
James Rich
48da34ce1a
New Crowdin updates (#3134) 2025-09-18 00:30:58 +00:00
James Rich
b30088b813
refactor(map): use hiltViewModel for MapViewModel (#3135)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-17 23:42:09 +00:00
Phil Oliver
fed3ebbd36
Start migration away from global top app bar (#3132) 2025-09-17 22:38:22 +00:00
James Rich
e4bfce0989
refactor(build): simplify lint, spotless, and detekt configurations (#3133)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-17 21:43:23 +00:00
Phil Oliver
df90256959
Re-add "set region" CTA (#3129) 2025-09-17 21:05:59 +00:00
renovate[bot]
e7b01da8c2
chore(deps): update androidx lifecycle to v2.9.4 (#3130)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 18:59:54 +00:00
renovate[bot]
e821c7f784
chore(deps): update plugin dependency-analysis to v3.0.4 (#3131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 18:59:45 +00:00
Phil Oliver
1d30367ddc
Decouple ConnectionsScreen from UiViewModel (#3126) 2025-09-17 15:10:43 +00:00
Phil Oliver
7afab16011
Move nav routes to new :navigation project module (#3124) 2025-09-17 10:46:43 +00:00
Phil Oliver
299dac415d
Example project: Appease Detekt (#3125) 2025-09-16 23:38:54 +00:00
renovate[bot]
07d798d506
chore(deps): update plugin kover to v0.9.2 (#3123)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 20:29:57 +00:00
renovate[bot]
4d7f364809
chore(deps): update plugin com.gradle.develocity to v4.2 (#3121)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 19:25:53 +00:00
Phil Oliver
bec5dac9d4
Use Ktor/Ktorfit for API calls (#3122) 2025-09-16 18:45:59 +00:00
renovate[bot]
d600d182b5
chore(deps): update ruby to v3.4.6 (#3120)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 13:06:21 +00:00
James Rich
d202fdbdf2
chore: Scheduled updates (Firmware, Hardware) (#3117)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-16 09:49:40 +00:00
renovate[bot]
5e3825d9c8
chore(deps): update plugin dependency-analysis to v3.0.3 (#3115)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 22:24:00 +00:00
renovate[bot]
303bf46d27
chore(deps): update androidx.compose.runtime:runtime-tracing to v1.9.1 (#3116)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 22:23:23 +00:00
James Rich
22a5521b9d
feat(build-logic): modularize build-logic & update dependencies (#3110)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-15 21:48:27 +00:00
renovate[bot]
91da327e16
chore(deps): update meshtastic protobufs to 945b796 (#3114)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 21:26:38 +00:00
renovate[bot]
437e8f864c
chore(deps): update markdown renderer (mike penz) to v0.37.0 (#3087)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Phil Oliver <3497406+poliver@users.noreply.github.com>
2025-09-15 21:13:19 +00:00
renovate[bot]
42b2847505
chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v2.4.0 (#3113)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 20:35:17 +00:00
renovate[bot]
83472f1eaa
chore(deps): update plugin dependency-analysis to v3.0.3 (#3112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 20:32:19 +00:00
Phil Oliver
3e4a5d4a5d
More ConnectionsScreen screen breakup (#3108) 2025-09-15 19:54:10 +00:00
Phil Oliver
58344c1c0f
Convert sample project to Kotlin (#3111) 2025-09-15 19:50:36 +00:00
renovate[bot]
be6e9ad5ec
chore(deps): update plugin datadog to v1.20.0 (#3105)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 12:51:23 +00:00
Dane Evans
57630326c1
#2803 Waypoints with line breaks (#3101)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-15 12:20:45 +00:00
James Rich
be0fd20710
ci: add coverage status configuration to codecov.yml (#3104) 2025-09-15 06:59:55 -05:00
renovate[bot]
b141a5b741
chore(deps): update androidx (general) (#3103)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 11:29:32 +00:00
renovate[bot]
2b028cc756
chore(deps): update com.google.protobuf:protoc to v4.32.1 (#3102)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 11:29:08 +00:00
Dane Evans
9a9b5935e9
add internal bug report with ch_testing tags (#3099) 2025-09-15 10:50:00 +00:00
James Rich
d5b7488ff3
chore: Scheduled updates (Firmware, Hardware) (#3098)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-15 10:47:52 +00:00
James Rich
295e0aa298
feat(build): Convention Plugins (#3081)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Dane Evans <dane@goneepic.com>
2025-09-15 10:47:03 +00:00
James Rich
9f2c76d33d
New Crowdin updates (#3093) 2025-09-15 01:02:34 +00:00
James Rich
a8821eb343
ci(release): update artifact paths in release workflow (#3097) 2025-09-14 16:18:21 -05:00
James Rich
6d51fbee5b
fix: detekt (#3096) 2025-09-14 14:12:03 -05:00
James Rich
0634859742 revert(safebluetooth): reverts changes to SafeBluetooth.kt (#3095) 2025-09-14 13:53:27 -05:00
James Rich
a8b5b4a62d
New Crowdin updates (#3092) 2025-09-14 15:34:03 +00:00
James Rich
efbcdcee19 fix: missed commas
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-14 10:30:48 -05:00
James Rich
193a99c5b4 chore(fastlane): skip uploading metadata and screenshots to Play Store
Skips uploading metadata, changelogs, images, and screenshots to the Play Store for all lanes. This is to prevent Fastlane from overriding changes made directly in the Play Console.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-14 10:26:24 -05:00
James Rich
0076822e9c Update Crowdin configuration file 2025-09-14 10:14:19 -05:00
James Rich
ba003487c1
fix: detekt (#3090) 2025-09-14 08:26:21 -05:00
James Rich
7905334f1b refactor(radio): connection state tweaks (#3089)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-14 08:10:52 -05:00
James Rich
4dbbcd222d fix(mqtt): enable TLS when using official mqtt server (#3088)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-14 08:10:52 -05:00
James Rich
0467647676
New Crowdin updates (#3086) 2025-09-14 12:35:20 +00:00
James Rich
15357d6841
New Crowdin updates (#3084) 2025-09-13 11:58:31 +00:00
James Rich
a3399471ec
New Crowdin updates (#3080) 2025-09-13 01:52:12 +00:00
James Rich
ac259f3b1c
chore: Scheduled updates (Firmware, Hardware) (#3075)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-12 12:37:30 +00:00
James Rich
70eaab42a8
New Crowdin updates (#3076) 2025-09-12 12:37:11 +00:00
renovate[bot]
79d14acd2e
chore(deps): update protobuf runtime to v4.32.1 (#3078)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-12 12:36:59 +00:00
James Rich
30be662bee
chore: Scheduled updates (Firmware, Hardware) (#3073)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-11 12:25:12 +00:00
James Rich
6bb39b9d6e
New Crowdin updates (#3074) 2025-09-11 03:39:51 +00:00
James Rich
2af017113b
New Crowdin updates (#3072) 2025-09-10 23:17:53 +00:00
renovate[bot]
d353f3a5ab
chore(deps): update com.google.devtools.ksp to v2.2.20-2.0.2 (#3067)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 21:34:55 +00:00
James Rich
75827a3f5b Update Crowdin configuration file 2025-09-10 16:42:54 -05:00
James Rich
3c726457eb
repo(release): merge changes from 2.7.0 to main (#3070)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: DaneEvans <dane@goneepic.com>
2025-09-10 15:59:57 -05:00
renovate[bot]
94f30ef540
chore(deps): update androidx.hilt:hilt-navigation-compose to v1.3.0 (#3068)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 20:28:06 +00:00
renovate[bot]
ba824fd57e
chore(deps): update androidx (general) (#3056)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 20:26:29 +00:00
renovate[bot]
f54f60be35
chore(deps): update androidx navigation (#3059)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 20:26:15 +00:00
renovate[bot]
acb462cccc
chore(deps): update androidx room to v2.8.0 (#3060)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 20:25:44 +00:00
renovate[bot]
456e482fe3
chore(deps): update androidx adaptive ui to v1.2.0-beta02 (#3057)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 20:25:23 +00:00
renovate[bot]
8ada70a087
chore(deps): update codecov/codecov-action action to v5 (#3069)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 20:25:14 +00:00
James Rich
8bb3f4fadb
ci: upload Android test results to Codecov (#3055)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-10 20:06:30 +00:00
James Rich
5dbc519943
ci: add CODECOV_TOKEN to merge-queue workflow (#3066) 2025-09-10 15:06:12 -05:00
James Rich
00b56a4a6b
fix(merge-queue): add CODECOV_TOKEN to secrets (#3064) 2025-09-10 14:38:17 -05:00
James Rich
a949fc4c9b
New Crowdin updates (#3054) 2025-09-10 15:46:49 +00:00
James Rich
0659d38438
feat(ci): add kover for test coverage reporting (#3041)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-10 15:30:47 +00:00
b8b8
72c5284e2e
Update strings.xml - Include GeoJSON (#3052)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
2025-09-10 14:18:45 +00:00
James Rich
71e7c6b7e9 chore(release): Automate changelog generation for pre-releases
This commit introduces a new step in the release workflow to automatically generate a changelog file for pre-releases (closed and open testing tracks).

The changelog file will contain a link to the GitHub release notes for detailed information.
Additionally, the GitHub release is no longer created as a draft.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-10 09:07:11 -05:00
James Rich
5011e413b2 fix(fastlane): change Play Store release status to draft (#3051) 2025-09-10 08:29:40 -05:00
renovate[bot]
3d0cdea091
chore(deps): update kotlin ecosystem to v2.2.20 (#3050)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 11:27:32 +00:00
James Rich
fdc999a831
New Crowdin updates (#3049) 2025-09-10 10:35:32 +00:00
renovate[bot]
b05a6b38b1
chore(deps): update ruby to v3.4.5 (#3045)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 03:18:02 +00:00
renovate[bot]
3595289ea8
chore(deps): update actions/download-artifact action to v5 (#3046)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-10 03:17:42 +00:00
James Rich
99983a8655
docs: update app store metadata (#3048)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-10 03:16:56 +00:00
James Rich
3833fe2de1 fix(fastlane): add skip_upload_apk option to Play Store upload tasks (#3047) 2025-09-09 21:23:36 -05:00
James Rich
d66c0bd61a fix(fastlane): Align assemble_beta task with fastlane documentation (#3044) 2025-09-09 20:49:49 -05:00
James Rich
4653712e6d chore(build): prioritize injected version properties (#3043) 2025-09-09 20:17:38 -05:00
James Rich
43caf3c226 feat(fastlane): return AAB path from build lane (#3042) 2025-09-09 20:01:10 -05:00
James Rich
5fbab14098
chore: Scheduled updates (Firmware, Hardware) (#3039)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-09 22:07:11 +00:00
James Rich
a0fd407d23
docs(RELEASE_PROCESS): update release finalization steps (#3040) 2025-09-09 17:06:53 -05:00
James Rich
5cfa44cb64
feat(ci): migrate to fastlane for release management (#3038)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-09 21:08:11 +00:00
renovate[bot]
d4976f380f
chore(deps): update google maps compose to v6.10.0 (#3036)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 19:55:50 +00:00
James Rich
9598f2e70b
New Crowdin updates (#3037) 2025-09-09 19:55:38 +00:00
James Rich
6ba3d70a4e
fix(docs): dokka path (#3034) 2025-09-09 07:23:44 -05:00
James Rich
e7c0a7c656
New Crowdin updates (#3032) 2025-09-09 06:39:03 +00:00
James Rich
97eb579d3e
feat(docs): migrate configs to dokka 2 (#3031)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-09 03:14:16 +00:00
James Rich
46282c3aec
fix(release): Simplify Play Store deployment to upload-only (#3027)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-09 01:52:34 +00:00
James Rich
15cdb04dba
chore: Scheduled updates (Firmware, Hardware) (#3030)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-09 01:51:57 +00:00
renovate[bot]
dff6d9af07
chore(deps): update actions/upload-pages-artifact action to v4 (#3029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-08 18:55:15 -05:00
James Rich
e490b036be
ci: add Dokka for kdoc documentation generation and deployment (#3024)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-08 23:31:53 +00:00
renovate[bot]
bd29d0c55c
chore(deps): update meshtastic protobufs to 8caf423 (#3025)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-08 22:38:35 +00:00
James Rich
a8bb160dad
New Crowdin updates (#3026) 2025-09-08 22:38:18 +00:00
James Rich
69f0f0f184
New Crowdin updates (#3022) 2025-09-08 21:38:04 +00:00
DaneEvans
f2680d37ad
Feat/node notes (#3014) 2025-09-08 21:37:56 +00:00
James Rich
363764c5ce ci(release): promote from NewAlpha to beta for open builds (#3023) 2025-09-08 16:24:15 -05:00
James Rich
7823413d31 ci(release): Remove build caching and set user fraction for promotions (#3021) 2025-09-08 14:56:14 -05:00
James Rich
3f2444bb2d ci(release): Cache build artifacts to speed up release workflow (#3020)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-08 14:23:42 -05:00
James Rich
e8bdc5936d fix(ci): full version for promotion action
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-08 13:52:33 -05:00
James Rich
05056c5ad6 ci(release): use correct promote action (#3019) 2025-09-08 13:28:22 -05:00
James Rich
f6eff0bc55
docs: update release process for promotion strategy (#3017)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-08 17:05:14 +00:00
James Rich
62a64589e2 ci(release): improve Google Play release automation (#3016) 2025-09-08 11:37:52 -05:00
James Rich
6dc4bdd462
New Crowdin updates (#3013) 2025-09-08 01:45:21 +00:00
James Rich
e72a83c626
chore(issues): overhaul issue templates (#3012)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: DaneEvans <dane@goneepic.com>
2025-09-07 15:39:27 +00:00
James Rich
8e66360b60
fix(service): increase config wait time (#3006)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-07 11:55:07 +00:00
b8b8
188f60ada6
Update EnvironmentMetrics.kt - μR/h (#3008)
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
2025-09-06 23:35:05 +00:00
James Rich
ce60d490b7
fix: map regressions (#3004)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-06 19:33:06 +00:00
James Rich
5e462c9fd7
chore: Scheduled updates (Firmware, Hardware) (#3005)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-06 19:09:33 +00:00
renovate[bot]
50545e1c1a
chore(deps): update meshtastic protobufs to a84657c (#3001)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-06 19:06:30 +00:00
James Rich
d5e53e2639
feat(map): keep screen on when location tracking is enabled (#3003)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-06 19:06:02 +00:00
James Rich
91ce6c5b93
feat(map): allow map to follow phone bearing (#3002)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-06 18:24:06 +00:00
DaneEvans
93e7eb3aa0
feat #2810 - fix export config file name (#3000) 2025-09-06 14:40:37 +00:00
DaneEvans
266379c979
Feat/2932 env metrics radiation (#2993) 2025-09-06 13:34:15 +00:00
DaneEvans
99938e97bd
add times to traceroute displays. (#2999) 2025-09-06 13:34:03 +00:00
James Rich
80a7b9e081
chore: Scheduled updates (Firmware, Hardware) (#2998)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-06 13:06:14 +00:00
James Rich
e37cc5112d
New Crowdin updates (#2997) 2025-09-06 09:03:00 +00:00
DaneEvans
6123f5de24
repo: update label check so it doesn't need help (#2995) 2025-09-06 06:26:38 +00:00
James Rich
c0dc9fdf3e
New Crowdin updates (#2994) 2025-09-06 06:01:44 +00:00
DaneEvans
3a9e5ffbbe
move debug export to using URI (#2991) 2025-09-06 05:17:04 +00:00
DaneEvans
82b6266f0e
feat #2570, Add ExportAll to csv (#2989) 2025-09-06 05:16:53 +00:00
Dane Evans
4dd519456b Revert "align strategies for display, add missing entries, clean up display when everything is present,"
This reverts commit 2f1a3fabb9.
2025-09-06 15:03:15 +10:00
Dane Evans
2f1a3fabb9 align strategies for display, add missing entries, clean up display when everything is present, 2025-09-06 14:54:05 +10:00
James Rich
0f34946941
New Crowdin updates (#2988) 2025-09-06 02:27:20 +00:00
James Rich
2ac96a9516
New Crowdin updates (#2987) 2025-09-06 00:22:11 +00:00
renovate[bot]
0b34943f25
chore(deps): update google maps compose to v6.9.0 (#2986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 20:00:45 +00:00
Phil Oliver
08ced48652
Move remaining 3-dot menu items to Settings (#2985) 2025-09-05 19:51:09 +00:00
Phil Oliver
4ab588cdaa
Migrate App Intro to Navigation 3 (#2983) 2025-09-05 17:44:54 +00:00
Phil Oliver
0cb0b19128
Move "show app intro" to phone settings (#2984) 2025-09-05 17:24:41 +00:00
DaneEvans
f78c440c61
Fix/2640 rangetest hops (#2979) 2025-09-05 16:53:39 +00:00
DaneEvans
fd40f8679b
drop the glitchy animation (#2981) 2025-09-05 16:47:48 +00:00
James Rich
be4862882e
New Crowdin updates (#2982) 2025-09-05 16:47:22 +00:00
Robert-0410
dc9c325e1e
Improvements to Channel management (#2935)
Co-authored-by: DaneEvans <dane@goneepic.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-05 13:14:32 +00:00
DaneEvans
653f7a1b3a
fix units on current (#2980) 2025-09-05 13:01:09 +00:00
James Rich
4f49e98dd6
chore: Scheduled updates (Firmware, Hardware) (#2978)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-05 12:16:40 +00:00
James Rich
9d0c9d7a24
New Crowdin updates (#2975) 2025-09-05 11:29:50 +00:00
James Rich
b06ebd4436
refactor(map): fix scalebar and compass (#2973)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-05 03:18:26 +00:00
James Rich
755038219b
fix(service): set node time after config completion (#2970)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-05 03:14:11 +00:00
renovate[bot]
f900ff682f
chore(deps): update datadog to v3 (major) (#2962)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Phil Oliver <3497406+poliver@users.noreply.github.com>
2025-09-05 03:05:02 +00:00
James Rich
7802f614da
feat(theme): add expressive motion to theme (#2967)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-05 02:58:23 +00:00
Phil Oliver
161c38f8ee
Align syle of admin settings (#2969) 2025-09-05 02:53:44 +00:00
Phil Oliver
804b1a878e
Relocate debug panel to Settings nav graph (#2971) 2025-09-05 01:47:39 +00:00
James Rich
0645e4855f
refactor(map): replace VerticalFloatingToolbar with Horizontal (#2968)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-05 01:04:26 +00:00
Phil Oliver
2583b3fcf1
Componentize traceroute button (#2965) 2025-09-05 00:34:28 +00:00
renovate[bot]
79eb62edac
chore(config): migrate renovate config (#2964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 22:48:06 +00:00
renovate[bot]
20c87cdafd
chore(deps): update actions/labeler action to v6 (#2963)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 21:29:27 +00:00
renovate[bot]
05d2ade9f7
chore(deps): update actions/github-script action to v8 (#2961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 21:29:13 +00:00
James Rich
ab3c0184c6
New Crowdin updates (#2959) 2025-09-04 21:28:50 +00:00
James Rich
6b1ce27594
fix: Set 'google' as default product flavor (#2960) 2025-09-04 20:17:21 +00:00
Ben Meadors
d6b8f07c57
Fix compass / orient north button (#2958) 2025-09-04 13:16:55 +00:00
James Rich
026f1607a9
chore: Scheduled updates (Firmware, Hardware) (#2957)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-04 12:27:50 +00:00
renovate[bot]
652c8c24ba
chore(deps): update meshtastic protobufs to 07d6573 (#2956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 06:52:41 -05:00
Phil Oliver
7bffcb1fd6
Make Nodes screen the root of the nav graph (#2954) 2025-09-04 11:13:17 +00:00
renovate[bot]
04c6b1d0ca
chore(deps): update actions/stale action to v10 (#2955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 11:08:56 +00:00
Ben Meadors
4574a8b09b
Add active tracking functionality to gmaps (#2953) 2025-09-04 11:05:50 +00:00
James Rich
4735830653
chore: Scheduled updates (Firmware, Hardware) (#2952)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-04 11:04:01 +00:00
James Rich
46d6abb345
chore: Scheduled updates (Firmware, Hardware) (#2951)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-04 01:58:23 +00:00
renovate[bot]
6c44dba158
chore(deps): update com.google.android.material:material to v1.13.0 (#2950)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-03 23:45:24 +00:00
James Rich
de4ac5e3a1
fix(ui): Prevent FAB from obscuring NodeScreen content (#2949)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-09-03 22:10:11 +00:00
renovate[bot]
af4806c8c3
chore(deps): update meshtastic protobufs to 34f0c81 (#2946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-03 22:01:47 +00:00
James Rich
39705ef303
chore: Scheduled updates (Firmware, Hardware) (#2947)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-03 22:01:31 +00:00
Ben Meadors
48679f4436
Fix Bluetooth reconnection logic (#2948) 2025-09-03 21:37:08 +00:00
James Rich
76ddd29114
feat: Support the add export method on channel url/qr (#2934)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
2025-09-02 19:12:32 +00:00
renovate[bot]
251aa6cabd
chore(deps): update google maps compose to v6.8.0 (#2945)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-02 19:00:29 +00:00
renovate[bot]
0c1e438316
chore(deps): update agp to v8.13.0 (#2943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-02 17:53:03 +00:00
James Rich
2fed2a0d15
chore: Scheduled updates (Firmware, Hardware) (#2940)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-09-02 02:10:18 +00:00
James Rich
39bb597860
New Crowdin updates (#2937) 2025-09-01 01:34:41 +00:00
James Rich
4dce566519
New Crowdin updates (#2929) 2025-08-30 06:15:00 +00:00
DaneEvans
f8377589aa
Fix #2918 crash on hw model (#2927) 2025-08-30 03:00:51 +00:00
James Rich
e03bd34ae5
chore(deps): group all the things (#2928)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-30 02:48:35 +00:00
James Rich
d0b2c7a532
chore: Scheduled updates (Firmware, Hardware) (#2926)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-30 02:30:08 +00:00
DaneEvans
1e0b2f3e6c
Fix #2906 - remove Lora.ignore_incoming (#2925) 2025-08-30 00:18:01 +00:00
renovate[bot]
b2f34c9b69
chore(deps): update meshtastic protobufs to 4c4427c (#2924)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 23:20:48 +00:00
James Rich
36159bec05
chore(deps): group meshtastic protobuf updates (#2923) 2025-08-29 18:11:04 -05:00
James Rich
b948e8e068
New Crowdin updates (#2922) 2025-08-29 21:52:13 +00:00
James Rich
04405df8e3
New Crowdin updates (#2917) 2025-08-29 13:17:56 +00:00
James Rich
2f2697a5bb
refactor(l10n): start from scratch (#2914) 2025-08-29 07:44:31 -05:00
James Rich
7e6aff6dd5 Update Crowdin configuration file 2025-08-29 07:34:07 -05:00
renovate[bot]
9d380b41c4
chore(deps): update com.google.firebase:firebase-bom to v34.2.0 (#2907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 02:01:54 +00:00
renovate[bot]
013a5c513a
chore(deps): update actions/attest-build-provenance action to v3 (#2908)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 02:01:49 +00:00
James Rich
2b771abc57
New Crowdin updates (#2905) 2025-08-29 01:53:48 +00:00
renovate[bot]
9e2a322751
chore(deps): update agp to v8.12.2 (#2904)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-29 01:52:01 +00:00
James Rich
c9771ab116
New Crowdin updates (#2902) 2025-08-28 20:04:57 +00:00
James Rich
222436b92c
chore: Scheduled updates (Firmware, Hardware) (#2901)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-28 20:04:38 +00:00
Phil Oliver
177138ac8f
More migration to top-level Settings (#2903) 2025-08-28 20:04:27 +00:00
James Rich
b08691bda6
New Crowdin updates (#2899) 2025-08-28 12:26:55 +00:00
DaneEvans
84df584c7c
#2887 Fix Paxcounter thresholds to take ints (#2898) 2025-08-28 12:03:14 +00:00
James Rich
8a9d9a881c
chore: Scheduled updates (Firmware, Hardware) (#2897)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-28 11:33:17 +00:00
James Rich
008593acb7
New Crowdin updates (#2892) 2025-08-28 11:05:12 +00:00
DaneEvans
908fd4a263
#2894 - add responsiveness to the map scalebar (#2895) 2025-08-28 09:52:38 +00:00
DaneEvans
161582141a
2712 add format types note to custom layers (#2891) 2025-08-28 09:43:56 +00:00
James Rich
99c016c7e9
New Crowdin updates (#2888) 2025-08-28 03:24:03 +00:00
DaneEvans
2a2696314a
#2711 move map controls up (#2886) 2025-08-28 03:21:44 +00:00
James Rich
61d45367a2
chore(datadog): Disable automatic compose instrumentation (#2884)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-28 03:01:30 +00:00
renovate[bot]
3f55d0f225
chore(deps): update androidx.compose.material3:material3 to v1.5.0-alpha03 (#2881)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-28 02:25:17 +00:00
James Rich
20530874b4
chore: Scheduled updates (Firmware, Hardware) (#2883)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-28 02:25:02 +00:00
James Rich
ad736116a7
refactor(analytics): consolidate consent logic, move to Settings (#2885)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-28 02:21:06 +00:00
renovate[bot]
86ce659bc6
chore(deps): update lifecycle to v2.9.3 (#2882)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-28 01:30:06 +00:00
James Rich
4377ba2a04
New Crowdin updates (#2874) 2025-08-28 01:09:42 +00:00
renovate[bot]
df9d443e9e
chore(deps): update adaptive to v1.2.0-beta01 (#2879)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-28 01:09:30 +00:00
renovate[bot]
a30fef2538
chore(deps): update androidx.compose:compose-bom to v2025.08.01 (#2880)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-28 01:09:19 +00:00
renovate[bot]
fc0a0de452
chore(deps): update dd.sdk.android to v2.26.0 (#2871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-27 16:26:06 +00:00
James Rich
02abba43a0
fix(release): use correct GitHub release URL for Play Store whatsnew (#2870) 2025-08-27 08:44:28 -05:00
James Rich
05c46f326f
chore(release): simplify changelog generation for Play Store (#2869) 2025-08-27 07:20:37 -05:00
James Rich
dd6f60a0e0
fix(ci): release notes 3 (#2868) 2025-08-27 06:33:23 -05:00
James Rich
c7356678fa
New Crowdin updates (#2866) 2025-08-27 10:36:31 +00:00
James Rich
a6cc3191c2
fix(ci): releasenotes path? (#2867) 2025-08-27 05:35:48 -05:00
James Rich
86c0285f69
Revert "refactor: clean up deprecations using recommendations" (#2864) 2025-08-26 20:37:05 -05:00
James Rich
e89bcda299
fix(ci): release whatsnew path (#2863) 2025-08-26 20:24:09 -05:00
Benjamin Faershtein
799933fcfb
Added Markdown Text (#2860) 2025-08-27 00:27:21 +00:00
James Rich
41cfc316f2
fix(ci): release status condition in workflow (#2862) 2025-08-26 19:37:20 -05:00
James Rich
1fc52466b0
fix(release): release notes path (#2861) 2025-08-26 19:09:33 -05:00
James Rich
89cc9e8844
refactor: clean up deprecations using recommendations (#2859)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 22:02:53 +00:00
James Rich
2ea2f6e5ab
build: centralize repository declarations in settings.gradle.kts (#2858)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 22:00:32 +00:00
James Rich
f3338e3f0d
fix(ci): improve release workflow and proguard setup (#2857)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 19:18:51 +00:00
James Rich
49677bb38f
New Crowdin updates (#2856) 2025-08-26 16:57:26 +00:00
James Rich
a11a9346fc
docs!: update release process to reflect automation enhancements (#2852)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 16:27:16 +00:00
James Rich
523abfc208
fix(ci): Update track values in release workflow (#2853)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 16:03:24 +00:00
James Rich
e4cecc9858
New Crowdin updates (#2854) 2025-08-26 15:58:41 +00:00
James Rich
31a5b293ba
ci(release): fix secrets handling in release workflow (#2851)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 14:30:30 +00:00
James Rich
bcad1d4a7f
feat(analytics): enable datadog user interaction tracking (#2848)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 13:48:29 +00:00
James Rich
4ad80b019c
refactor(connections): use collectAsStateWithLifecycle for UI state (#2850)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 13:28:38 +00:00
renovate[bot]
64efcf8211
chore(deps): update r0adkll/upload-google-play action to v1.1.3 (#2849)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-26 13:20:22 +00:00
James Rich
6b3f1236b1
ci(release): update release workflow to tag based versioning (#2838)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 12:36:58 +00:00
James Rich
40395c7c69
New Crowdin updates (#2845) 2025-08-26 11:56:49 +00:00
James Rich
1c9e14e87c
refactor(UI): Use animateFloatingActionButton for FAB animations (#2844)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-26 01:56:53 +00:00
Phil Oliver
b2a8d7a934
NodeDetail list items (#2839) 2025-08-26 01:55:45 +00:00
James Rich
34fd7e173e feat(contacts): hide share QR code FAB when not connected
The Floating Action Button for sharing a QR code is now only visible when the device is connected to the mesh.

This change also ensures the FAB is hidden when in selection mode.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 20:11:18 -05:00
James Rich
889061dddd
New Crowdin updates (#2837) 2025-08-25 20:31:24 +00:00
Phil Oliver
f1bb020203
Relocate radio config to new top-level Settings screen (#2834) 2025-08-25 19:44:32 +00:00
James Rich
af6066d788
feat(ui): display app version in connections screen (#2835)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 19:43:34 +00:00
James Rich
23d0688fba
feat(logging): Remove redundant Report Bug button and related functionality (#2836)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 19:43:12 +00:00
James Rich
9fd184d3ac
refactor(service): initialize PacketHandler lazily (#2833)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 16:26:57 +00:00
James Rich
6895af1653
fix(sharing): don't auto-launch scanner after perm check (#2832)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 14:25:28 +00:00
James Rich
f21ea1161e
2.6.35 (#2697)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 12:15:19 +00:00
James Rich
9d1f5f48ec
fix(contact-import): streamline shared contact handling (#2828)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-25 11:58:50 +00:00
James Rich
a2b89d7a91
New Crowdin updates (#2829) 2025-08-25 01:07:27 +00:00
Phil Oliver
c26d76f60b
MeshService: extract basic packet handling (#2813) 2025-08-24 12:15:32 +00:00
James Rich
ce54f42988
New Crowdin updates (#2824) 2025-08-24 12:14:52 +00:00
James Rich
06c83313c5
feat(map): add support for GeoJSON map layers (#2827)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-24 12:14:41 +00:00
James Rich
e6dfc8a595
refactor(map)!: move initial map zoom logic to onMapLoaded (#2821)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-23 19:53:30 +00:00
James Rich
3fceb1fae1
feat(navigation): Add deep links to other screens (#2811)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-23 19:35:57 +00:00
James Rich
7d33365095
New Crowdin updates (#2820) 2025-08-23 19:31:25 +00:00
Phil Oliver
380a69f63e
Fix label: Messages -> Conversations (#2822) 2025-08-23 19:30:57 +00:00
James Rich
f09a46ebad
New Crowdin updates (#2819) 2025-08-22 22:04:51 +00:00
Phil Oliver
ccad2a1c97
Add share FAB button to conversations screen (#2818) 2025-08-22 21:23:10 +00:00
James Rich
4cfb6a008b
New Crowdin updates (#2817) 2025-08-22 19:18:11 +00:00
Phil Oliver
2d5e73c410
Clean up Connections UI, fix some friction with Bluetooth (#2807) 2025-08-22 18:33:11 +00:00
Phil Oliver
268be3e4f9
Improve top-level nav icons/labels (#2790) 2025-08-22 18:02:08 +00:00
renovate[bot]
a885f68ecf
chore(deps): update actions/setup-java action to v5 (#2808)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-21 11:33:11 +00:00
renovate[bot]
5dbfa16fc4
chore(deps): update hilt to v2.57.1 (#2806)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-20 23:19:44 +00:00
Phil Oliver
75561e06bd
Add SnackBarHost (#2800) 2025-08-20 22:49:06 +00:00
James Rich
4f6fc7d345
New Crowdin updates (#2798) 2025-08-20 22:47:03 +00:00
James Rich
835ebd1a72
chore: Scheduled updates (Firmware, Hardware) (#2797)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-20 22:44:24 +00:00
Phil Oliver
1a9771ea28
Add modern battery info component (#2801) 2025-08-20 22:44:04 +00:00
Phil Oliver
7e55729ee1
Don't change nav graph start destination (#2799) 2025-08-20 22:43:14 +00:00
renovate[bot]
6aa0a26806
chore(deps): update app/src/main/proto digest to 8985852 (#2794)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-20 12:10:39 +00:00
renovate[bot]
bb26ab9d80
chore(deps): update mesh_service_example/src/main/proto digest to 8985852 (#2795)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-20 12:10:35 +00:00
James Rich
6c3d252f2e
chore: Scheduled updates (Firmware, Hardware) (#2792)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-20 12:06:01 +00:00
renovate[bot]
8ea4e34eab
chore(deps): update maps.compose to v6.7.2 (#2791)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-20 03:28:01 +00:00
James Rich
023390ae41
docs: add release process documentation (#2774)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-20 03:04:49 +00:00
Phil Oliver
da1932fae0
Extract MainAppBar to its own file (#2788) 2025-08-19 23:55:10 +00:00
James Rich
68545a7bab
chore: Scheduled updates (Firmware, Hardware) (#2789)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-19 22:15:23 +00:00
James Rich
8e297b884c
chore: Scheduled updates (Firmware, Hardware) (#2787)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-19 17:13:52 +00:00
James Rich
48d7e54b07
New Crowdin updates (#2785) 2025-08-19 17:13:45 +00:00
renovate[bot]
4d61c8717e
chore(deps): update com.datadoghq:dd-sdk-android-gradle-plugin to v1.19.0 (#2786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 17:13:25 +00:00
James Rich
dee22e8e69
chore: Scheduled updates (Firmware, Hardware) (#2783)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-19 15:21:41 +00:00
renovate[bot]
9cd9f0f626
chore(deps): update mesh_service_example/src/main/proto digest to be51376 (#2781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 12:59:46 +00:00
renovate[bot]
22c13c46e7
chore(deps): update app/src/main/proto digest to be51376 (#2780)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 12:19:58 +00:00
James Rich
d000dae50a
New Crowdin updates (#2779) 2025-08-19 11:59:33 +00:00
Phil Oliver
c913bb0472
Migrate remaining prefs usages to repo (#2777) 2025-08-19 11:17:22 +00:00
renovate[bot]
5f10e9590e
chore(deps): update plugin com.gradle.develocity to v4.1.1 (#2778)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-19 11:15:13 +00:00
Phil Oliver
6cb0196a6e
Migrate (mostly) maps prefs to repo (#2776) 2025-08-18 21:45:23 +00:00
Phil Oliver
4be0cd7f81
Migrate UiState prefs to repo (#2775) 2025-08-18 21:44:44 +00:00
Phil Oliver
d574ba738d
Migrate 'MainActivity' prefs to repo pattern (#2770) 2025-08-18 18:20:23 +00:00
renovate[bot]
05e19a4740
chore(deps): update com.android.tools.build:gradle to v8.12.1 (#2773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-18 18:14:31 +00:00
Phil Oliver
b2f316b00d
Migrate MeshService prefs to repo pattern (#2769) 2025-08-18 17:47:36 +00:00
Phil Oliver
6ec66bfaea
Migrate map consent prefs to repo pattern (#2771) 2025-08-18 17:46:57 +00:00
Phil Oliver
ae9b5f4db3
Migrate RadioInterfaceService prefs to repo pattern (#2768) 2025-08-18 17:45:58 +00:00
Phil Oliver
daa5afe8ee
Migrate SharedPreferencesCustomTileProviderRepository prefs to repo pattern (#2772) 2025-08-18 17:45:11 +00:00
Phil Oliver
d5a840cc18
Migrate analytics prefs to repo pattern (#2766) 2025-08-18 17:37:02 +00:00
Phil Oliver
e29003c79d
Migrate custom emoji prefs to repo pattern (#2767) 2025-08-18 17:36:35 +00:00
Phil Oliver
a46065865f
Add prefs repos and DI providers (#2760) 2025-08-18 14:57:05 +00:00
James Rich
b6a24ec470
feat(map): persist and restore selected map type (#2758)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-18 12:33:03 +00:00
Phil Oliver
2173a53567
Run Spotless (#2762) 2025-08-18 11:51:06 +00:00
Phil Oliver
1044f4b61c
Fix CI badge in README (#2761) 2025-08-18 01:37:12 +00:00
Phil Oliver
8429f35c1e
MVVM-ify logic to display app intro (#2748) 2025-08-16 18:58:21 +00:00
Phil Oliver
acc3e3f636
Decouple mesh service bind from MainActivity (#2743) 2025-08-16 11:52:15 +00:00
Phil Oliver
69841ebd59
Backport splash screen to API 26 (#2747) 2025-08-16 01:33:30 +00:00
Copilot
e9a03e5658
Add comprehensive .github/copilot-instructions.md for improved coding agent efficiency (#2745)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-08-16 00:34:05 +00:00
James Rich
b0e9d17aac
New Crowdin updates (#2746) 2025-08-16 00:33:48 +00:00
DaneEvans
14e893b32c
Feat/debug log export filtering & redaction of keys (#2739)
Signed-off-by: DaneEvans <dane@goneepic.com>
2025-08-16 00:33:27 +00:00
renovate[bot]
caafec861a
chore(deps): update app/src/main/proto digest to 5dd723f (#2741)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 22:21:44 +00:00
renovate[bot]
3a4b7a6aba
chore(deps): update mesh_service_example/src/main/proto digest to 5dd723f (#2742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 22:21:36 +00:00
James Rich
9983e8d90e
New Crowdin updates (#2735) 2025-08-15 18:25:49 +00:00
Phil Oliver
570f323328
fix(UI): Apply window insets on welcome screens (#2734) 2025-08-15 18:25:25 +00:00
DaneEvans
14422cd2c0
Fix/debug panel - remove redundant saveOne (#2737) 2025-08-15 18:21:39 +00:00
DaneEvans
69b2a6229c
add new crowdIn branch to the bypass list (#2736) 2025-08-15 09:18:15 +00:00
renovate[bot]
605e8aa7d9
chore(deps): update protobuf.kotlin to v4.32.0 (#2733)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 01:53:57 +00:00
renovate[bot]
16b911c4b0
chore(deps): update com.google.devtools.ksp to v2.2.10-2.0.2 (#2732)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-15 01:51:26 +00:00
James Rich
11ba883f08
New Crowdin updates (#2726) 2025-08-14 17:19:40 -05:00
James Rich
7eebcacb36
chore(ci): back out pr workflow change
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-14 17:18:29 -05:00
James Rich
3c2e29ec0c
chore(ci): remove custom commit message for Crowdin updates (#2731) 2025-08-14 16:57:58 -05:00
James Rich
837c8a856c
chore: remove fragment dependencies (#2729)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-14 21:35:25 +00:00
James Rich
25e50e74cf
chore(ci): remove custom commit message for Crowdin updates (#2730) 2025-08-14 16:45:39 -05:00
James Rich
418fa2a3cd
Update pull-request.yml (#2727) 2025-08-14 15:47:31 -05:00
Phil Oliver
aafb118148
chore(cleanup): App launcher and non-vector asset cleanup (#2721) 2025-08-14 19:34:13 +00:00
James Rich
b2151d93be
New Crowdin updates (#2725) 2025-08-14 14:49:45 -05:00
James Rich
c203d18c7c
chore: configure Crowdin integration (#2724) 2025-08-14 14:44:31 -05:00
James Rich
2d851ddbf0
ci(release): add GOOGLE_MAPS_API_KEY to release workflow (#2720) 2025-08-14 07:46:11 -05:00
James Rich
b824fa23d3
chore: Scheduled updates (Firmware, Hardware) (#2719)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-14 12:19:48 +00:00
James Rich
341add78e9
New Crowdin updates (#2716) 2025-08-14 12:19:35 +00:00
renovate[bot]
36b53894a0
chore(deps): update kotlin to v2.2.10 (#2718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 12:19:25 +00:00
DaneEvans
380f41dc5c
Fix/#2701 NodeId annotation in debug panel (#2709) 2025-08-14 12:19:14 +00:00
DaneEvans
7ec0d2c1a0
update repobeats link to target main (#2713) 2025-08-14 05:26:36 +00:00
James Rich
c5535b9a1c
chore(ci): remove Crowdin integration from scheduled updates (#2708)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-14 02:47:47 +00:00
renovate[bot]
10c1befa2b
chore(deps): update androidx.core:core-ktx to v1.17.0 (#2705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 02:23:42 +00:00
James Rich
2e4740d301
New Crowdin updates (#2707) 2025-08-14 02:15:53 +00:00
renovate[bot]
f936a3b65f
chore(deps): update androidx.compose:compose-bom to v2025.08.00 (#2703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 01:46:06 +00:00
renovate[bot]
23d9f264a3
chore(deps): update androidx.fragment:fragment-ktx to v1.8.9 (#2702)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 01:42:03 +00:00
renovate[bot]
873105080e
chore(deps): update androidx.compose.material3:material3 to v1.5.0-alpha02 (#2700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 01:41:58 +00:00
renovate[bot]
4db311ce95
chore(deps): update adaptive to v1.2.0-alpha11 (#2699)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-14 01:38:40 +00:00
James Rich
071eb4e71a
chore: Scheduled updates (Firmware, Hardware, Translations) (#2698) 2025-08-14 01:24:17 +00:00
James Rich
8ea021922f Update Crowdin configuration file 2025-08-13 20:46:26 -05:00
James Rich
689046e586 Update Crowdin configuration file 2025-08-13 20:30:59 -05:00
James Rich
05c51ab7a4
Delete crowdin.yml
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-13 20:29:04 -05:00
James Rich
8ce0a34982 Update Crowdin configuration file 2025-08-13 20:11:07 -05:00
James Rich
cc185abcfa
chore: Scheduled updates (Firmware, Hardware, Translations) (#2693)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-13 18:11:24 +00:00
James Rich
87e50e03ea
refactor: maps (#2097)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-13 17:51:19 +00:00
James Rich
c05f434ff2
fix(crowdin): correct update_option typo and update workflow (#2695)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-13 11:48:02 +00:00
Aleksandr Lozhkovoi
aeeba7f731
feat(notifications): hide message sensitive content on lockscreen (#2694) 2025-08-13 06:55:13 +00:00
James Rich
a35e43d979
revert(service): reverts a bunch of changes to MeshService.kt (#2692)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-12 22:19:40 +00:00
James Rich
1923b6d6d4
chore: Scheduled updates (Firmware, Hardware, Translations) (#2687)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-12 22:03:26 +00:00
DaneEvans
66ea72e5b3
add access. labels to node chips (#2688) 2025-08-12 22:03:00 +00:00
James Rich
8e9def7566
ci: release workflow perms
contents write

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-11 13:06:31 -05:00
James Rich
5d2d0e3d64
Update release.yml
fix config

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-11 12:21:16 -05:00
James Rich
3e66f187be
2.6.34 (#2686) 2025-08-11 11:20:47 -05:00
James Rich
12ca691c28
chore: Scheduled updates (Firmware, Hardware, Translations) (#2683)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-11 16:02:19 +00:00
James Rich
e0feee7bb8
ci: add build provenance attestation (#2685)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-11 16:01:54 +00:00
renovate[bot]
4da518d9bc
chore(deps): update actions/checkout action to v5 (#2684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 14:45:24 +00:00
James Rich
07cdbacf8f
refactor(repository)!: improve api caching and error handling (#2680)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-10 22:55:15 +00:00
Joshua Soberg
9bde1f6357
chore: Only run dependency submission workflow for the main repository (#2679) 2025-08-10 21:50:02 +00:00
James Rich
4dfa71155b
refactor(service): improve state management and concurrency in MeshSe… (#2678)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-10 03:48:45 +00:00
James Rich
ed30cbdb18
refactor(ui): make traceroute response scrollable (#2677)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-09 20:55:45 +00:00
Robert-0410
079767c4f8
Fix: Display the modem preset name when no channel name is present. (#2668) 2025-08-09 20:37:40 +00:00
renovate[bot]
70a4e3c5a1
chore(deps): update app/src/main/proto digest to e2c0831 (#2673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-09 20:37:00 +00:00
renovate[bot]
cdf1781211
chore(deps): update mesh_service_example/src/main/proto digest to e2c0831 (#2674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-09 20:36:48 +00:00
James Rich
fcff015527
chore: Scheduled updates (Firmware, Hardware, Translations) (#2676)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-09 20:36:38 +00:00
James Rich
e471636dd1
fix(regression): replace lost ringtone and canned message handling (#2672)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-09 16:55:42 +00:00
James Rich
a83724a5a8
feat(radioconfig): Remove light sleep duration setting (#2671)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-09 16:34:10 +00:00
renovate[bot]
c29c5975ec
chore(deps): update app/src/main/proto digest to 13d8946 (#2669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-09 15:49:32 +00:00
renovate[bot]
2e3196bb14
chore(deps): update mesh_service_example/src/main/proto digest to 13d8946 (#2670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-09 15:49:25 +00:00
James Rich
e0207f11f4
chore: Scheduled updates (Firmware, Hardware, Translations) (#2667)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-09 15:49:18 +00:00
James Rich
d444275c18
fix(UI): update send and receive colors (#2666)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-08 22:40:29 +00:00
James Rich
8491f8a60e
feat(deps): add Datadog session replay libraries (#2665)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-08 22:14:01 +00:00
James Rich
4a7e3e35e0
feat(service)!: refactor configuration, nodedb, and connection states (#2661)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-08 21:59:54 +00:00
James Rich
4548a3ec7b
chore: Scheduled updates (Firmware, Hardware, Translations) (#2658)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-08 19:44:25 +00:00
renovate[bot]
e678471793
chore(deps): update com.google.firebase:firebase-bom to v34.1.0 (#2660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-08 19:44:14 +00:00
James Rich
33c5391a67
feat(radioconfig): use current location for position config (#2644)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-07 19:31:10 +00:00
renovate[bot]
da1fbc7963
chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.6 (#2655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 19:24:15 +00:00
James Rich
ad59edd8d2
feat(ui): add mesh activity modem lights (#2656)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-07 19:17:01 +00:00
James Rich
da42d67486
docs: add AGENT.md (#2657)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-07 18:55:42 +00:00
DaneEvans
ad060cdbef
#2650 - make the catch all on the labeler less generic (#2651) 2025-08-07 05:22:03 +00:00
DaneEvans
40a1aab7d4
closes #2646: fix UI overlap on traceroute delete (#2652) 2025-08-07 04:47:32 +00:00
James Rich
4dc571d178
chore: Scheduled updates (Firmware, Hardware, Translations) (#2647)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-07 02:56:00 +00:00
renovate[bot]
bf1fb737a4
chore(deps): update actions/download-artifact action to v5 (#2642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-06 00:04:50 +00:00
James Rich
24ebc6b887
feat(service): handle DeviceUIConfig and FileInfo packets (#2641)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-05 23:41:03 +00:00
James Rich
e8da93fa81
chore: Scheduled updates (Firmware, Hardware, Translations) (#2638)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-05 11:56:28 +00:00
DaneEvans
85d390b43f
add howto get logs (#2637) 2025-08-05 11:56:10 +00:00
James Rich
77b09bd7b1
2.6.33 (#2634)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-05 01:34:35 +00:00
James Rich
2199fcc29a
chore(ci): remove job level env vars (#2635)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-05 01:27:34 +00:00
James Rich
23c87fb48c
feat(analytics): Integrate _more_ Datadog (#2633)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-04 20:27:45 +00:00
James Rich
cde871de91
chore: Scheduled updates (Firmware, Hardware, Translations) (#2626)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-04 01:31:13 +00:00
DaneEvans
76160e5818
Add Types to the templates (#2625) 2025-08-03 03:54:08 +00:00
DaneEvans
0cbc4b3a9e
2618 make node sort more bold (#2624) 2025-08-03 02:24:21 +00:00
James Rich
5db2aac84a
chore: Scheduled updates (Firmware, Hardware, Translations) (#2623)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-02 23:12:18 +00:00
James Rich
4da8b221e7
docs: add information about spotless for code formatting (#2622)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-02 16:10:04 +00:00
DaneEvans
2daf1ba67b
labeler tweaks (#2617) 2025-08-02 16:08:45 +00:00
Joshua Soberg
f7eb10c17b
fixes #2609: Use a Bundle-persistable type for remembering replyTo message (#2620) 2025-08-02 15:40:26 +00:00
DaneEvans
3076f457b5
Make overflows on Connections bar nice, and add previews (#2615) 2025-08-02 14:06:22 +00:00
DaneEvans
7a109a747e
Feat/2594 contact shortname on click (#2614) 2025-08-02 13:44:24 +00:00
James Rich
4b182be500
feat(datadog): datadog init tweaks (#2613)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-02 12:50:44 +00:00
James Rich
e35b8cdaab
chore: Scheduled updates (Firmware, Hardware, Translations) (#2612)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-02 08:57:22 +00:00
DaneEvans
3639365ee3
Fix regression of deviceMetrics (#2607) 2025-08-02 06:01:26 +00:00
DaneEvans
56d0ff0a27
apparently I took out the labeler (#2608)
Fix labeler, and make it run ok from fork.
2025-08-02 15:47:59 +10:00
James Rich
ab22a655c4
feat(analytics): Integrate Datadog for RUM and Logging (#2578)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-01 21:54:46 +00:00
James Rich
f5478b42c3
chore: Scheduled updates (Firmware, Hardware, Translations) (#2601)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-01 21:11:12 +00:00
James Rich
2b35746fea
refactor(service): special nonces ( ͡° ͜ʖ ͡°) (#2600)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-01 21:10:57 +00:00
James Rich
3646438a62
feat(radioconfig): add clean node database screen (#2592)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-08-01 15:45:33 +00:00
James Rich
7c561ae4f8
refactor(bluetooth): exponential backoff for BLE reconnects (#2591)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: DaneEvans <dane@goneepic.com>
2025-08-01 15:45:11 +00:00
James Rich
f02a2be362
chore: Scheduled updates (Firmware, Hardware, Translations) (#2599)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-01 15:44:55 +00:00
renovate[bot]
0248a237fa
chore(deps): update gradle to v9 (#2598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-01 15:44:25 +00:00
DaneEvans
446cf81bd0
move label checker into same pipeline (#2597) 2025-08-01 00:58:22 +00:00
James Rich
99b4baf9a1
chore: Scheduled updates (Firmware, Hardware, Translations) (#2595)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-08-01 00:40:54 +00:00
renovate[bot]
852499df41
chore(deps): update com.android.tools.build:gradle to v8.12.0 (#2596)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-01 00:04:07 +00:00
DaneEvans
7b4a4d9ae0
Feat/2586 pr labeler (#2587) 2025-07-31 14:19:23 +00:00
James Rich
bbc74cc116
chore: Scheduled updates (Firmware, Hardware, Translations) (#2589)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-31 11:53:38 +00:00
James Rich
ef85906d61
chore: Scheduled updates (Firmware, Hardware, Translations) (#2588)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-31 10:08:20 +00:00
renovate[bot]
d0695f1a67
chore(deps): update androidx.test.ext:junit to v1.3.0 (#2585)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-31 04:31:15 +00:00
renovate[bot]
4c0c1b0579
chore(deps): update androidx.test.espresso:espresso-core to v3.7.0 (#2584)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-31 04:31:04 +00:00
James Rich
6e526a93f0
chore: Scheduled updates (Firmware, Hardware, Translations) (#2583)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-31 04:30:54 +00:00
DaneEvans
1ba70ca547
Fix/2523 redundant soil metrics (#2556)
Signed-off-by: DaneEvans <dane@goneepic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-30 20:54:14 +00:00
James Rich
edcf0f11eb
chore: Scheduled updates (Firmware, Hardware, Translations) (#2577)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-30 20:52:41 +00:00
renovate[bot]
08342cec06
chore(deps): update navigation to v2.9.3 (#2582)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 20:52:29 +00:00
renovate[bot]
a63acdf54c
chore(deps): update androidx.work:work-runtime-ktx to v2.10.3 (#2581)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 20:52:18 +00:00
renovate[bot]
2694f9521b
chore(deps): update androidx.compose.material3:material3 to v1.4.0-beta01 (#2580)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-30 20:52:08 +00:00
renovate[bot]
a91aae11c0
chore(deps): update adaptive to v1.2.0-alpha10 (#2579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 20:51:54 +00:00
James Rich
9f94370d25
fix(ci): release.yml
java setup

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-30 09:40:52 -05:00
James Rich
29698e1975
2.6.32 (#2560)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-30 13:11:24 +00:00
James Rich
a2adf0f753
chore: Scheduled updates (Firmware, Hardware, Translations) (#2576)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-30 13:49:10 +00:00
renovate[bot]
ca5f46c131
chore(deps): update app/src/main/proto digest to 1ecf94d (#2574)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 12:38:13 +00:00
renovate[bot]
9fff155efa
chore(deps): update mesh_service_example/src/main/proto digest to 1ecf94d (#2575)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-30 12:33:27 +00:00
James Rich
9501799950
fix(metrics): correct load progress calculation and user string (#2573)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-30 12:29:59 +00:00
DaneEvans
edd40890be
Fix/2558 rangetest (#2569) 2025-07-30 11:50:25 +00:00
DaneEvans
00898d64be
fix/2542 pair up the power metric icons (#2572) 2025-07-30 11:50:16 +00:00
James Rich
e66f6c3433
chore: Scheduled updates (Firmware, Hardware, Translations) (#2567)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-30 10:25:21 +00:00
DaneEvans
d336f23486
Run spotless ahead of 2523 to make the diff easier (#2571) 2025-07-30 08:42:34 +00:00
James Rich
64ead16d83
chore: Scheduled updates (Firmware, Hardware, Translations) (#2562)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-30 01:35:08 +00:00
DaneEvans
2d65e1c954
Change Export All to a txt file. (#2566) 2025-07-30 01:26:29 +00:00
DaneEvans
78b38f8e1c
Release notes - add automation (and get it out of the main block) (#2564) 2025-07-30 00:54:09 +00:00
DaneEvans
6c7edf8132
repo_ Add more categories to the rchangelog for releases (#2563) 2025-07-30 00:27:06 +00:00
Tristan Waddington
ca02624ad0
fix/2552 Calculate initial mapView from filtered node list (#2553) 2025-07-29 18:00:08 +00:00
James Rich
2b5a2be48d
chore: Scheduled updates (Firmware, Hardware, Translations) (#2561)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-29 16:07:34 +00:00
James Rich
9418dceeef
refactor: clean up unused resources and update color references (#2559)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-29 15:31:59 +00:00
James Rich
ff9e0bdde4
chore: Scheduled updates (Firmware, Hardware, Translations) (#2550)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-29 15:02:51 +00:00
Nikolay Minaev
65d8d81157
use autoscale for voltage on PowerMetrics graph (#2557) 2025-07-29 14:56:14 +00:00
James Rich
2c6751a574
feat: onboarding refresh (#2551)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-29 14:42:36 +00:00
DaneEvans
c1408816a4
Fix Debug panel: Decoded payload not showing (#2555) 2025-07-29 09:13:06 +00:00
James Rich
ceabafb545
refactor(connections)!: Use sealed class for device list entries (#2538)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-29 01:49:17 +00:00
James Rich
aa6a048084
chore: Scheduled updates (Firmware, Hardware, Translations) (#2548)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-29 01:13:06 +00:00
DaneEvans
eed3e10f7b
Fix/2530 temp scaling (#2546)
Signed-off-by: DaneEvans <dane@goneepic.com>
2025-07-29 01:11:14 +00:00
Tristan Waddington
d02909df5e
Replaced a few hardcoded string values with string resources (#2544) 2025-07-29 01:10:02 +00:00
James Rich
fe97cbc0ac
chore: Scheduled updates (Firmware, Hardware, Translations) (#2543)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-28 10:26:50 +00:00
James Rich
e723376ed4
chore: Scheduled updates (Firmware, Hardware, Translations) (#2537)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-27 22:10:11 +00:00
James Rich
26530cbe18
feat(message): add overflow menu to message screen (#2540)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-27 22:09:41 +00:00
James Rich
bbaac9e143
fix(ui): improve traceroute button cooldown animation and logic (#2539)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-27 15:18:44 +00:00
Pedro
f8aa6ebff5
feat(ui): move quick chat menu to topBar (#2535) 2025-07-27 14:13:25 +00:00
James Rich
712ff946f5
feat(ui): display firmware edition icon (#2533)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-26 22:03:49 +00:00
renovate[bot]
a375606e06
chore(deps): update mesh_service_example/src/main/proto digest to 9bac288 (#2532)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 21:41:43 +00:00
renovate[bot]
626ab3e23c
chore(deps): update app/src/main/proto digest to 9bac288 (#2531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 21:35:47 +00:00
Pedro
400f3bfe14
Add new region: NP_865 "Nepal 865MHz" (#2521) 2025-07-26 21:19:56 +00:00
Pedro
5c7dad506f
feat(MessageItem): add bell emoji to message if it contains BEL char (#2524) 2025-07-26 21:01:57 +00:00
James Rich
062e8fd80d
chore: Scheduled updates (Firmware, Hardware, Translations) (#2527)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-26 01:33:40 +00:00
James Rich
924bd25f60
feat(firmware): add firmware edition handling (#2508)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-25 12:07:01 +00:00
Benjamin Faershtein
45ad973d35
Added lora config changes to ScannedQrCodeDialog (#2519)
Signed-off-by: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-25 11:50:11 +00:00
James Rich
b40963e7c6
chore: Scheduled updates (Firmware, Hardware, Translations) (#2522)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-25 11:41:35 +00:00
James Rich
2724b5875c
chore: Scheduled updates (Firmware, Hardware, Translations) (#2517)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-25 02:27:42 +00:00
James Rich
6fd444c077
refactor(colors): consolidate colors in UI components (#2520)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-25 02:27:33 +00:00
James Rich
c61d31c3b8
refactor(build): update Spotless config (#2516)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-23 19:45:46 +00:00
James Rich
35f5779483
chore: Scheduled updates (Firmware, Hardware, Translations) (#2509)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-23 16:22:02 +00:00
James Rich
20fbb27e87
ci: configure Gradle actions and JDK setup (#2514)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-23 16:21:48 +00:00
James Rich
d369a63faf
refactor(spotless): configure spotless via editorconfig (#2513)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-23 15:38:03 +00:00
James Rich
74beda36e1
fix(ui): correct scroll direction for FAB visibility in message list (#2503)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-22 20:31:08 +00:00
James Rich
90d937f894
refactor(BTScanModel): migrate recent IP addresses to DataStore (#2507)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-22 20:28:06 +00:00
Pedro
d3990f216e
Add new region: BR_902 "Brazil 902Mhz" (#2504) 2025-07-22 20:26:22 +00:00
renovate[bot]
8633a5dd98
chore(deps): update mesh_service_example/src/main/proto digest to d31cd89 (#2506)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-22 20:13:40 +00:00
renovate[bot]
f48aaf1eee
chore(deps): update app/src/main/proto digest to d31cd89 (#2505)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-22 20:12:28 +00:00
James Rich
6d1f630ba3
chore: Scheduled updates (Firmware, Hardware, Translations) (#2501)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-22 20:11:41 +00:00
James Rich
1ff7610f0f
chore(ktlint): ignore function naming for composables (#2502)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-22 19:44:22 +00:00
renovate[bot]
415f18d4f8
chore(deps): update coil to v3.3.0 (#2500)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-22 12:41:22 +00:00
James Rich
87c37f8dee
chore: Scheduled updates (Firmware, Hardware, Translations) (#2497)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-22 10:40:02 +00:00
James Rich
aeed84be6c
2.6.31 (#2485)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 21:16:57 -05:00
Pedro
f1d2dacf4f
rename region (#2476)
Signed-off-by: DaneEvans <dane@goneepic.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: DaneEvans <dane@goneepic.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-22 01:52:30 +00:00
renovate[bot]
94187c5098
chore(deps): update com.diffplug.spotless to v7.2.1 (#2495)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-22 00:11:44 +00:00
James Rich
024dc9ec34
chore(spotless): apply code style improvements and formatting (#2459)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 23:31:35 +00:00
renovate[bot]
df2b709b54
chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.5 (#2490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-21 23:14:12 +00:00
James Rich
c3934ffb8e
chore: Scheduled updates (Firmware, Hardware, Translations) (#2494)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 23:11:55 +00:00
James Rich
6ddaa7be8f
Fix: Soil temperature shows air temperature when Fahrenheit is selected (#2492)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 22:39:35 +00:00
James Rich
c31592c53c
chore: Scheduled updates (Firmware, Hardware, Translations) (#2493)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 21:44:06 +00:00
renovate[bot]
e07a388168
chore(deps): update com.google.firebase:firebase-bom to v34 (#2491)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-21 21:35:17 +00:00
James Rich
7120b4b476
feat(nodes): display firmware details and release notes (#2489)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 20:34:13 +00:00
James Rich
debc684dda
chore: Scheduled updates (Firmware, Hardware, Translations) (#2487)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 19:36:29 +00:00
James Rich
36ba4efe46
chore: Scheduled updates (Firmware, Hardware, Translations) (#2486)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 15:25:28 +00:00
DaneEvans
c665b5528c
feat/2482 Make decoded payload accessible to filters/search/copies (#2483) 2025-07-21 14:26:25 +00:00
James Rich
d208314758
chore: Scheduled updates (Firmware, Hardware, Translations) (#2484)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 14:23:11 +00:00
James Rich
de68813bb8
Revert "Revert "Feat/1919 pax graphs"" (#2480)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 14:07:25 +00:00
James Rich
de9bdbc635
chore: Scheduled updates (Firmware, Hardware, Translations) (#2481)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 13:31:06 +00:00
James Rich
fd15515648
feat: add rate limit exceeded error message (#2461)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 13:17:54 +00:00
DaneEvans
085ccf566f
add decoded payload to debug panel (#2472) 2025-07-21 13:15:21 +00:00
James Rich
9339958398
Revert "Feat/1919 pax graphs" (#2479) 2025-07-21 08:14:43 -05:00
James Rich
ce3450dc33
feat: match fw RegionCode freq precision (#2466)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-21 12:45:29 +00:00
DaneEvans
5a6a1cb44a
Feat/2412 ignored nodes (#2470)
Signed-off-by: DaneEvans <dane@goneepic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 12:45:03 +00:00
DaneEvans
ee99d79574
Feat/1919 pax graphs (#2477)
Signed-off-by: DaneEvans <dane@goneepic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 12:44:29 +00:00
James Rich
d6354f7d0f
chore: Scheduled updates (Firmware, Hardware, Translations) (#2478)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-21 12:43:44 +00:00
renovate[bot]
d5589c6c0a
chore(deps): update app/src/main/proto digest to fa02e14 (#2474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-21 11:07:36 +00:00
renovate[bot]
83d5c3896d
chore(deps): update mesh_service_example/src/main/proto digest to fa02e14 (#2475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-21 11:04:35 +00:00
renovate[bot]
1242ec441d
chore(deps): update mesh_service_example/src/main/proto digest to 15c1fbd (#2468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-20 22:19:55 +00:00
renovate[bot]
8baf4e8aa4
chore(deps): update app/src/main/proto digest to 15c1fbd (#2467)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-20 22:19:42 +00:00
James Rich
09d6d22d22
chore: Scheduled updates (Firmware, Hardware, Translations) (#2464)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-20 21:10:46 +00:00
James Rich
9d7dcf2def
refactor(BTScanModel): improve recent IP address parsing and migration (#2465)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-20 18:36:47 +00:00
DaneEvans
be30757720
allow deleting of recent nodes, use long name (#2456)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-20 14:48:34 +00:00
renovate[bot]
5e5fc19fc0
chore(deps): update mesh_service_example/src/main/proto digest to 330a6a1 (#2462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-20 14:21:23 +00:00
renovate[bot]
e3411b9fdb
chore(deps): update app/src/main/proto digest to 330a6a1 (#2460)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-20 14:15:11 +00:00
James Rich
7a8e73542e
refactor(Main): Simplify top-level destination check (#2458)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-20 14:13:48 +00:00
DaneEvans
206f23131b
fix #2442 - fix bad replyId causing crash (#2454) 2025-07-20 13:11:19 +00:00
DaneEvans
aa8edf642e
Fix wind direction icon being out by 180 deg. (#2453) 2025-07-20 13:11:04 +00:00
James Rich
95579a8139
refactor(message): refactor message screen, enforce byte limit (#2451)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-20 13:10:06 +00:00
James Rich
87330da8c7
chore: Scheduled updates (Firmware, Hardware, Translations) (#2452)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-20 10:13:01 +00:00
James Rich
299fdbc059
feat(#2394): add security icon descriptions dialog (#2450)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-20 00:00:43 +00:00
James Rich
42efc2e809
chore: Scheduled updates (Firmware, Hardware, Translations) (#2447)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-20 00:00:31 +00:00
DaneEvans
f5d9c361fe
Mqttflag (#2421) 2025-07-20 00:00:23 +00:00
James Rich
162f9e4492
chore: Scheduled updates (Firmware, Hardware, Translations) (#2445)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-18 17:14:50 +00:00
renovate[bot]
c5bf26c479
chore(deps): update hilt to v2.57 (#2444)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-17 12:11:06 +00:00
renovate[bot]
ca7a5fae0e
chore(deps): update androidx.compose:compose-bom to v2025.07.00 (#2443)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-17 12:10:59 +00:00
renovate[bot]
6bae7e1d3c
chore(deps): update navigation to v2.9.2 (#2441)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-17 12:10:51 +00:00
renovate[bot]
e3e6dac784
chore(deps): update lifecycle to v2.9.2 (#2440)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-17 12:10:43 +00:00
renovate[bot]
f536ff0740
chore(deps): update adaptive to v1.2.0-alpha09 (#2438)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-17 12:10:36 +00:00
renovate[bot]
1e62652c85
chore(deps): update androidx.compose.material3:material3 to v1.4.0-alpha18 (#2439)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-16 22:04:35 +00:00
James Rich
c89aa4cee1
chore: Scheduled updates (Firmware, Hardware, Translations) (#2435)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-16 22:04:10 +00:00
renovate[bot]
3b5605b1f5
chore(deps): update plugin com.gradle.develocity to v4.1 (#2432)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 23:53:50 +00:00
James Rich
2897ce0938
chore: Scheduled updates (Firmware, Hardware, Translations) (#2428)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-15 23:53:41 +00:00
renovate[bot]
4702279ee4
chore(deps): update mesh_service_example/src/main/proto digest to f6448be (#2427)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 23:53:33 +00:00
renovate[bot]
0e5f87e394
chore(deps): update app/src/main/proto digest to f6448be (#2426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 23:53:27 +00:00
James Rich
d1c5723d98
chore: Scheduled updates (Firmware, Hardware, Translations) (#2425)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-12 22:46:00 +00:00
Justin E. Mann
fbd62cbf10
Add soil temperature and soil moisture environmental metrics to app (#2419)
Co-authored-by: DaneEvans <dane@goneepic.com>
2025-07-12 13:52:06 +00:00
DaneEvans
8a0ad26d4e
Cleanup CI - remove the skip_tests call, general cleanup. (#2423) 2025-07-12 12:12:39 +00:00
James Rich
dbbec88c4d
chore: Scheduled updates (Firmware, Hardware, Translations) (#2418)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-12 01:49:01 +00:00
DaneEvans
f038081e13
single check (#2422) 2025-07-12 02:54:07 +00:00
DaneEvans
91cc999523
add a skip value, so we can run and skip tests at the same level. (#2413) 2025-07-12 01:31:58 +00:00
James Rich
929dc5e6f0
Fix: Satisfy merge queue check for scheduled updates (#2420)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-11 22:54:19 +00:00
renovate[bot]
226502932d
chore(deps): update mesh_service_example/src/main/proto digest to fd19e4c (#2415)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-11 20:00:55 +00:00
renovate[bot]
3a6d533f32
chore(deps): update com.android.tools.build:gradle to v8.11.1 (#2416)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 15:33:12 +00:00
renovate[bot]
8db92840ab
chore(deps): update app/src/main/proto digest to fd19e4c (#2414)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 15:33:12 +00:00
James Rich
94aec0cd18
chore: Scheduled updates (Firmware, Hardware, Translations) (#2409)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-11 00:17:38 +00:00
James Rich
209a8e67de
Refactor: Improve version code and name generation for builds (#2407)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-10 01:27:25 +00:00
James Rich
48d2690a8c
chore: Scheduled updates (Firmware, Hardware, Translations) (#2406)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-09 19:55:37 +00:00
James Rich
1bad58a889
Refactor: Simplify back stack entry retrieval and navigation (#2405)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-09 15:16:29 +00:00
James Rich
9259e21aed
refactor: Improve node public key handling and security (#2395)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-09 14:43:10 +00:00
James Rich
93dc691625
chore: Scheduled updates (Firmware, Hardware, Translations) (#2404)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-09 11:33:54 +00:00
James Rich
8623b9b9c2
chore: Scheduled updates (Firmware, Hardware, Translations) (#2396)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-09 00:01:39 +00:00
James Rich
9a16b54375
fix: remove unused ExpireChecker.kt and update default versionCode (#2397)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-08 23:09:53 +00:00
James Rich
516739f5b0
Refactor: Update Gradle cache keys and task execution in CI (#2398)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-08 23:09:41 +00:00
DaneEvans
a083af8d3f
skip test and lint on automated branch (#2375) 2025-07-08 17:19:05 +00:00
James Rich
1893efd88a
chore: Scheduled updates (Firmware, Hardware, Translations) (#2391)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-08 17:18:18 +00:00
James Rich
1f0beb0fdd
chore(ci): Decouple versioncode (#2393)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-08 17:12:16 +00:00
James Rich
db17815576
fix(ci): Gradle cache and auth requests for setup-java (#2392)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-08 15:56:32 +00:00
DaneEvans
a8094f6ca4
add uvlux card (#2366)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-08 15:07:08 +00:00
James Rich
4fbd2ce28a
chore: Scheduled updates (Firmware, Hardware, Translations) (#2390)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-08 13:33:34 +00:00
DaneEvans
9884229a7b
fix 2198 - graphs scale to farenheit (#2384) 2025-07-08 12:22:06 +00:00
DaneEvans
eadf0ffc75
Closing popup navs back to settings page (#2389) 2025-07-08 12:19:55 +00:00
DaneEvans
f416cd1c44
2387: change config pages footer to "clear changes" (#2388) 2025-07-08 12:18:03 +00:00
James Rich
3d251a7c96
chore: Scheduled updates (Firmware, Hardware, Translations) (#2386)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-08 11:48:42 +00:00
DaneEvans
e4061d9e3e
#2381: Change the factories - theoretically makes the CI not fail (#2385) 2025-07-08 11:28:16 +00:00
renovate[bot]
49270aca2e
chore(deps): update mesh_service_example/src/main/proto digest to 0302caa (#2383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-08 05:51:25 +00:00
renovate[bot]
7dd2f911d1
chore(deps): update app/src/main/proto digest to 0302caa (#2382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-08 02:41:33 +00:00
renovate[bot]
39c46d3e50
chore(deps): update okhttp to v5.1.0 (#2380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-07 22:10:51 +00:00
James Rich
3afd2cc912
chore: Scheduled updates (Firmware, Hardware, Translations) (#2379)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-07 22:10:38 +00:00
James Rich
8374bc54a5
chore: Scheduled updates (Firmware, Hardware, Translations) (#2378)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-07-07 19:28:17 +00:00
James Rich
fbfffc13eb
chore(ci): Use Personal Access Token for scheduled updates workflow (#2377)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-07 17:30:42 +00:00
James Rich
1368cf4a14
2.6.30 (#2372)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-07 15:07:35 +00:00
github-actions[bot]
5d790b4358
chore: Scheduled updates (Firmware, Hardware, Translations) (#2376)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-07 14:43:33 +00:00
DaneEvans
a832ed50c5
Fix/2207 node details respects units (#2374) 2025-07-07 13:57:34 +00:00
github-actions[bot]
43503cd0ce
chore: Scheduled updates (Firmware, Hardware, Translations) (#2370)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-07 12:42:25 +00:00
James Rich
9ced5d0c03
Revert "skip test and lint on scheduled-updates" (#2371) 2025-07-07 07:28:49 -05:00
DaneEvans
ac03055342
add missing region info (433 ANZ, both KZ) (#2369) 2025-07-07 12:01:38 +00:00
DaneEvans
47044eb25a
skip test and lint on scheduled-updates (#2367) 2025-07-07 11:44:11 +00:00
github-actions[bot]
a3a68faa47
chore: update device hardware list from Meshtastic API (#2362)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-07-07 07:30:36 +00:00
github-actions[bot]
217ca4bb70
chore(l10n): New Crowdin Translations (#2357)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: DaneEvans <dane@goneepic.com>
2025-07-07 06:50:58 +00:00
DaneEvans
6f82dd7e86
Ci fixes (#2364) 2025-07-07 06:08:13 +00:00
James Rich
053e527ce2
refactor(ci): Consolidate GitHub Actions workflows (#2361)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-07 03:46:34 +00:00
DaneEvans
aa9ce9dfdf
Feat/2334 channel indicators (#2356)
Signed-off-by: DaneEvans <dane@goneepic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-07 02:31:36 +00:00
Joshua Soberg
ffd399f44d
chore: Optimize node screen while scrolling (#2355) 2025-07-06 17:32:42 +00:00
github-actions[bot]
fcf5ad250c
chore(l10n): New Crowdin Translations (#2345)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-05 23:01:10 +00:00
James Rich
fa0679b3f2
Refactor: Improve connection state display in UI (#2353)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-05 22:32:03 +00:00
James Rich
5fdf383539
chore (deps): Update Gradle wrapper to 8.14.3 (#2354)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-05 22:31:06 +00:00
DaneEvans
756dfc5c49
redo the beta program links. (#2350) 2025-07-05 12:42:19 +00:00
DaneEvans
599268e09a
add some extra sim packets (#2306) 2025-07-05 12:41:29 +00:00
James Rich
152b2d27c9
Update Crowdin config (#2346)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-04 20:54:46 +00:00
github-actions[bot]
c7c62815ed
chore(l10n): New Crowdin Translations (#2340)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-04 16:31:30 +00:00
github-actions[bot]
e853ea27af
chore: update firmware releases list from Meshtastic API (#2342)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-07-04 12:47:25 +00:00
renovate[bot]
5522cba115
chore(deps): update okhttp to v5 (major) (#2341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-04 12:22:12 +00:00
github-actions[bot]
6a82752abd
chore(l10n): New Crowdin Translations (#2337)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-03 08:26:53 -05:00
renovate[bot]
6e33cad6ef
chore(deps): update app/src/main/proto digest to 584f0a3 (#2338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-03 12:55:01 +00:00
renovate[bot]
346696ae83
chore(deps): update mesh_service_example/src/main/proto digest to 584f0a3 (#2339)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-03 12:44:24 +00:00
James Rich
25111552eb
feat: Add support for sharing contacts via deeplink (#2336)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-03 12:42:04 +00:00
James Rich
91dd6dbef4
Refactor: Replace AppIntro library with Compose implementation (#2332)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-03 11:27:08 +00:00
Łukasz Kosson
cca51e765a
feat: remember recently entered IPs (#2242) (#2319) 2025-07-03 11:26:59 +00:00
James Rich
c3483db7f3
2.6.29 (#2331)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-02 22:57:38 +00:00
github-actions[bot]
25bee2d972
chore(l10n): New Crowdin Translations (#2327)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-02 22:34:12 +00:00
renovate[bot]
93bab202fe
chore(deps): update navigation to v2.9.1 (#2330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 22:06:26 +00:00
renovate[bot]
a5691bc734
chore(deps): update app/src/main/proto digest to 854bb24 (#2328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 21:02:03 +00:00
renovate[bot]
6d89fd71a1
chore(deps): update adaptive to v1.2.0-alpha08 (#2325)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 19:49:03 +00:00
renovate[bot]
721deff74f
chore(deps): update mesh_service_example/src/main/proto digest to 854bb24 (#2329)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 19:48:54 +00:00
renovate[bot]
676529084d
chore(deps): update androidx.compose.material3:material3 to v1.4.0-alpha17 (#2326)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 19:48:41 +00:00
James Rich
a813d0a549
ci: split workflows for PR and merge queue (#2322) 2025-07-02 15:59:47 -05:00
Jeremiah K
23b2dbbeef
Improved detection of emulator environments (#2323) 2025-07-02 18:59:31 +00:00
James Rich
eda25a0ee4
chore (repo): Add README.md for mesh_service_example (#2324)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-02 18:24:11 +00:00
github-actions[bot]
31e4ca52cc
chore(l10n): New Crowdin Translations (#2320)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-02 17:57:03 +00:00
renovate[bot]
8b631947c6
chore(deps): update mesh_service_example/src/main/proto digest to 5ef7aec (#2318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 16:43:30 +00:00
renovate[bot]
ef34c0d3c0
chore(deps): update app/src/main/proto digest to 5ef7aec (#2313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 16:43:18 +00:00
James Rich
859387b331
Refactor: Display scanning indicator during Bluetooth scan (#2321)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-02 16:43:04 +00:00
DaneEvans
58546a9d3d
fix/2305 don't use filtered logs for availiable presets (#2317) 2025-07-02 16:42:48 +00:00
github-actions[bot]
86d7bb8a6c
chore(l10n): New Crowdin Translations (#2315)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-02 08:23:14 -05:00
renovate[bot]
dc80a2c2fe
chore(deps): update mesh_service_example/src/main/proto digest to 86c738e (#2314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 04:21:31 +00:00
DaneEvans
ee544d3bd0
Feat/2303 contributor docs (#2304)
Signed-off-by: DaneEvans <dane@goneepic.com>
Co-authored-by: rcarteraz <robert.l.carter2@gmail.com>
2025-07-02 04:20:42 +00:00
github-actions[bot]
02fa1dd358
chore(l10n): New Crowdin Translations (#2295)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-01 16:22:27 +00:00
James Rich
128aceb4b7
Refactor: Remove dispatcher and use conditional start destination (#2309)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-01 15:55:22 +00:00
James Rich
8b095aba09
Refactor NsdManager and improve service display (#2292)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-29 14:18:14 +00:00
James Rich
ec74bbfe19
2.6.28
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-29 07:45:53 -05:00
James Rich
deb36b6647
fix: Refactor BLE exceptions and handle ServiceAction exceptions (#2294) 2025-06-29 07:45:09 -05:00
James Rich
a0f614808c
2.6.27 (#2293)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-29 03:19:16 +00:00
DaneEvans
3d9b69eda5
Feat/2061 public ind (#2284) 2025-06-29 02:45:12 +00:00
github-actions[bot]
80723c59cc
chore(l10n): New Crowdin Translations (#2291)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-28 23:21:16 +00:00
James Rich
9819a89b97
fix: crash in charts, nav (#2290)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 22:32:44 +00:00
Joshua Soberg
4500ba0c0a
ui update/cleanup: Message padding updates (#2289) 2025-06-28 22:23:33 +00:00
github-actions[bot]
72b1ebca56
chore(l10n): New Crowdin Translations (#2287)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-28 14:20:43 -05:00
DaneEvans
f1f7e32e43
Reduces available filter list to only those that will do something. (#2278)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 18:32:25 +00:00
github-actions[bot]
d05485d857
chore(l10n): New Crowdin Translations (#2285)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 15:18:33 +00:00
James Rich
c1bcd0613d
feat(#2080): Add scroll to bottom button in message list (#2283)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 14:58:50 +00:00
James Rich
3fddf0fd06
Fix unmessageable toggle (#2282)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 14:58:18 +00:00
James Rich
7e6bf21e2d
fix: Clear notifications on device switch (#2281)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 14:50:05 +00:00
James Rich
9cde2f1b1a
chore(ci): fix merge_group
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 09:56:53 -05:00
github-actions[bot]
52bb8c40a8
chore(l10n): New Crowdin Translations (#2280)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-28 07:51:58 -05:00
DaneEvans
b2f5d8f301
2269 - CI testing not failing correctly (#2279) 2025-06-27 21:04:59 -05:00
github-actions[bot]
fd6f0552c2
chore(l10n): New Crowdin Translations (#2273)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-27 19:20:31 -05:00
github-actions[bot]
c2e2b56b5d
chore: update firmware releases list from Meshtastic API (#2276)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-28 00:01:41 +00:00
James Rich
fda82da668
chore(ci): Update dependency-submission.yml (#2277) 2025-06-27 18:35:05 -05:00
James Rich
9fd31c550c
chore(ci): android.yml updates (#2275) 2025-06-27 16:57:25 -05:00
James Rich
129dcac9b4
chore(repo): Enable merge queue (#2274) 2025-06-27 14:52:54 -05:00
James Rich
b28de3d927
2.6.25 (#2272) 2025-06-27 10:46:29 -05:00
renovate[bot]
30c8b42c88
chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.9.0 (#2271)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 10:19:52 -05:00
github-actions[bot]
9418e1786a
chore(l10n): New Crowdin Translations (#2253)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-27 10:19:32 -05:00
DaneEvans
dd50cf230e
feat(debug): add a toggle to AND/OR all filters. (#2265) 2025-06-27 08:13:21 -05:00
DaneEvans
ea25a8198a
fix: Make search escape regex, so '.' and similar behave properly. (#2263) 2025-06-27 08:12:15 -05:00
DaneEvans
55a2bda513
fix : quickchat add button being behind list (#2267) 2025-06-27 06:35:20 -05:00
DaneEvans
84281e284e
feat: add warning dialog before clearing logs (#2262) 2025-06-27 06:34:46 -05:00
James Rich
53cd893df1
Refactor: Improve network device selection UI and logic (#2268) 2025-06-27 06:29:27 -05:00
renovate[bot]
d709b2d2d0
chore(deps): update mesh_service_example/src/main/proto digest to 2097da9 (#2256)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-27 06:16:06 -05:00
renovate[bot]
51b70f7333
chore(deps): update app/src/main/proto digest to 2097da9 (#2255)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 06:15:38 -05:00
renovate[bot]
b0bc6951f5
chore(deps): update com.google.firebase:firebase-bom to v33.16.0 (#2261)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 06:15:25 -05:00
renovate[bot]
598db0d916
chore(deps): update com.google.gms:google-services to v4.4.3 (#2260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-27 06:14:50 -05:00
James Rich
eb81ded56a
Refactor: Use JVM toolchain and disable Crashlytics for F-Droid (#2252)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-26 00:18:59 +00:00
James Rich
11edd9a8d2
fix release.yml
back off jdk 24

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-25 18:20:10 -05:00
James Rich
496de47766
Refactor: Improve GitHub release workflow and build configuration (#2251) 2025-06-25 18:16:55 -05:00
James Rich
d507161bde
2.6.25 (#2245) 2025-06-25 15:49:17 -05:00
James Rich
0e03a181aa
Refactor: Improve network availability observation (#2247) 2025-06-25 15:45:39 -05:00
renovate[bot]
caf367c12d
chore(deps): update mesh_service_example/src/main/proto digest to 386fa53 (#2249)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-25 15:04:12 -05:00
renovate[bot]
1b9e48ca51
chore(deps): update app/src/main/proto digest to 386fa53 (#2248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-25 15:04:00 -05:00
James Rich
3c6067c93c
chore(deps): ksp 2.2.0-2.0.2 (#2246) 2025-06-25 13:23:18 -05:00
renovate[bot]
492b8162a4
chore(deps): update com.android.tools.build:gradle to v8.11.0 (#2243)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-25 10:58:55 -05:00
Benjamin Faershtein
0abc6e03b9
fix: non-expiring waypoints (#2237) 2025-06-25 10:58:07 -05:00
github-actions[bot]
cd05fd1ccf
chore(l10n): New Crowdin Translations (#2238)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-25 10:56:36 -05:00
renovate[bot]
a1cba18696
chore(deps): update kotlin to v2.2.0 (#2234)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-25 10:55:22 -05:00
Jeremiah K
40807bc69a
fix: unread message count not updating when opening conversations (#2239) 2025-06-25 10:52:22 -05:00
github-actions[bot]
9b041b8819
chore(l10n): New Crowdin Translations (#2232)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-23 18:32:20 -05:00
James Rich
8d32638902
Refactor Connections screen and add new strings (#2236) 2025-06-23 15:13:09 -05:00
James Rich
ee03213a3a
2.6.24
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-22 21:28:17 -05:00
James Rich
833861eb20
Refactor message input to use BasicTextField2 (#2231) 2025-06-22 20:58:08 -05:00
github-actions[bot]
a253464b8a
chore(l10n): New Crowdin Translations (#2221)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-22 18:40:39 -05:00
James Rich
ca3c787e71
Refactor: Inject BluetoothViewModel into ConnectionsScreen (#2228) 2025-06-22 18:26:04 -05:00
James Rich
1d165a5dc3
Refactor: Improve UI consistency and animations (#2226) 2025-06-22 14:26:36 -05:00
James Rich
0b19f842bb
Refactor: Extract MessageActions components (#2225) 2025-06-22 12:26:05 -05:00
James Rich
7ae1ab921a
Refactor: Navigate to NodeDetail with singleTop (#2223) 2025-06-22 10:30:47 -05:00
James Rich
0f56e8af1f
Fix string formatting issues (#2222) 2025-06-22 10:23:01 -05:00
James Rich
65cf08d89a
2.6.23
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-22 09:10:27 -05:00
github-actions[bot]
a7944c5160
chore(l10n): New Crowdin Translations (#2215)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-22 09:09:47 -05:00
James Rich
1f1a468f64
Refactor DebugSearch.kt (#2219) 2025-06-22 08:53:09 -05:00
Łukasz Kosson
20f5888380
feat: split message notifications into direct- and broadcast messages (#2217) 2025-06-22 07:41:17 -05:00
James Rich
89ad4dc350
Fix/2100 graph labels (#2188)
Co-authored-by: Dane Evans <dane@goneepic.com>
2025-06-22 07:40:01 -05:00
James Rich
65ab9eb40d
Refactor node count display in MainAppBar (#2210) 2025-06-21 23:31:07 -05:00
James Rich
3efd463a5b
Refactor: Use default FAB shape for MapButton (#2211) 2025-06-21 23:19:54 -05:00
James Rich
c4c115b901
feat: show online and total node count in the title bar (#2209) 2025-06-21 21:10:36 -05:00
github-actions[bot]
450014a0f6
chore(l10n): New Crowdin Translations (#2200)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-21 21:09:31 -05:00
github-actions[bot]
2c34c9703b
chore: update firmware releases list from Meshtastic API (#2204)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-21 20:23:32 -05:00
Łukasz Kosson
9b0dcfdeab
fix: ignore non-local localStats telemetry (#2206) 2025-06-21 20:21:14 -05:00
Jeremiah K
3e3e4919bd
fix: message input clearing with proper state management (#1474 & #2150) (#2208) 2025-06-21 20:20:42 -05:00
James Rich
6f70aabfd4
feat: Add send message service example (#2203) 2025-06-21 11:39:01 -05:00
github-actions[bot]
a693ee5c81
chore(l10n): New Crowdin Translations (#2189)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-21 07:15:28 -05:00
renovate[bot]
448fcf9468
chore(deps): update mesh_service_example/src/main/proto digest to 6791138 (#2197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-21 07:15:09 -05:00
renovate[bot]
cd8ebd1ea3
chore(deps): update app/src/main/proto digest to 6791138 (#2196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-21 07:14:53 -05:00
James Rich
86a35603d5
refactor: Add remote node indicator and node chip to app bar (#2195) 2025-06-21 07:14:33 -05:00
Łukasz Kosson
d24a501f06
fix: unintended line break in node chip (#2199) 2025-06-21 06:29:00 -05:00
James Rich
bcc3a0f107
feat: Allow unlocking excluded modules (#2180)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-20 18:19:51 -05:00
James Rich
8639228721
refactor: message item actions and reactions (#2191) 2025-06-20 16:30:41 -05:00
James Rich
45f28b31f0
fix: template typo
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-20 15:02:22 -05:00
James Rich
b5a503c0cb
fix: clear public key when private key edited (#2190) 2025-06-20 18:47:52 +00:00
github-actions[bot]
7acc5ef8e8
chore(l10n): New Crowdin Translations (#2171)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-20 13:00:31 -05:00
James Rich
ebba4e638c
Revert "Fix/2100 graph labels" (#2187) 2025-06-20 12:56:13 -05:00
github-actions[bot]
2cc34c9f35
chore: update firmware releases list from Meshtastic API (#2181)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-20 11:37:56 -05:00
renovate[bot]
17d4db778f
chore(deps): update mesh_service_example/src/main/proto digest to b818a00 (#2179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-20 10:48:47 -05:00
renovate[bot]
2a93d3b744
chore(deps): update app/src/main/proto digest to b818a00 (#2178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-20 10:48:02 -05:00
Jeremiah K
5d68ecdc76
fix: add workflow_dispatch to enable manual CI runs & readme fix (#2186) 2025-06-20 10:47:04 -05:00
DaneEvans
1be3979c84
Fix/2100 graph labels (#2182)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-20 15:14:06 +00:00
DaneEvans
03ae071548
feat:add extra filters, including own address (#2183) 2025-06-20 09:57:39 -05:00
DaneEvans
931d3320e2
fix: Drop text buttons in favor of icons (#2185)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-20 14:55:56 +00:00
James Rich
46332c95a4
fix: Use string template for hops away (#2184) 2025-06-20 09:20:40 -05:00
James Rich
15ba57bb3a
2.6.22
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-19 18:36:57 -05:00
renovate[bot]
46359f795b
chore(deps): update androidx.compose:compose-bom to v2025.06.01 (#2176)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-19 18:20:54 -05:00
James Rich
38b949f9c1
fix: Propagate reply ID for DataPackets (#2177) 2025-06-19 18:20:07 -05:00
James Rich
d66b7d5d0f
fix (#2172): replace string template for Hops Away: (#2173) 2025-06-19 17:10:47 -05:00
Jeremiah K
67ffaca01c
fix (#2165): position exchange not working (#2169)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-19 16:42:48 +00:00
James Rich
44100c955d
2.6.21
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-19 11:37:47 -05:00
github-actions[bot]
2699830b59
chore(l10n): New Crowdin Translations (#2168)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-19 11:33:26 -05:00
Joshua Soberg
2d6180f609
[chore] Restrict GH action runs to the main repository (#2170) 2025-06-19 10:34:08 -05:00
github-actions[bot]
1a8276ccbc
chore(l10n): New Crowdin Translations (#2166)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-19 14:19:40 +00:00
DaneEvans
17e3e1a257
feat (#2105): debug panel (#2148)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-19 14:04:58 +00:00
Jeremiah K
e9f95dbf8c
fix (#2076): hidden client freeze issue when viewing node details (#2164) 2025-06-19 07:38:57 -05:00
github-actions[bot]
68b029d6a2
chore(l10n): New Crowdin Translations (#2163)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-19 06:25:49 -05:00
Jeremiah K
7e0999fdc0
fix (#2150): text input not clearing after sending message (#2161) 2025-06-19 06:25:19 -05:00
James Rich
1928fb64fa
fix: Ensure valid private key generation (#2160) 2025-06-18 20:30:08 -05:00
James Rich
1556019803
2.6.20 2025-06-18 16:39:24 -05:00
James Rich
ca69051075
detekt cleanup (#2159) 2025-06-18 16:19:41 -05:00
James Rich
e205f1d6d6
feat: Add key export functionality (#2158) 2025-06-18 16:03:33 -05:00
renovate[bot]
9b045cee5f
chore(deps): update room to v2.7.2 (#2157)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 16:03:03 -05:00
renovate[bot]
135854363a
chore(deps): update androidx.work:work-runtime-ktx to v2.10.2 (#2156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 16:01:41 -05:00
renovate[bot]
8e6b68774e
chore(deps): update androidx.compose.material3:material3 to v1.4.0-alpha16 (#2155)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 15:59:46 -05:00
renovate[bot]
0e5e802c23
chore(deps): update adaptive to v1.2.0-alpha07 (#2154)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 15:57:52 -05:00
James Rich
83e6c6cc31
fix: refactor MainActivity to use lifecycleScope for coroutines (#2153) 2025-06-18 14:30:00 -05:00
github-actions[bot]
8d82e526f0
chore: update firmware releases list from Meshtastic API (#2151)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-18 11:18:17 -05:00
James Rich
468c4ab6b7
fix: Fetch original message when displaying a reply (#2152) 2025-06-18 16:05:02 +00:00
James Rich
0799122c9e
2.6.19 2025-06-17 21:25:50 -05:00
github-actions[bot]
ca099fa79a
chore(l10n): New Crowdin Translations (#2144)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-17 20:19:00 -05:00
James Rich
357efa9028
feat: Implement message reply functionality (#2147) 2025-06-17 20:15:07 -05:00
rcarteraz
7497540f80
fix: remove TAK from unmessageble roles(#2146) 2025-06-17 16:56:15 -05:00
James Rich
27aacd1fbc
fix(#2094): remove redundant mapView.onDetach() call (#2143) 2025-06-17 03:13:00 +00:00
James Rich
6b3ae27c67
2.6.18 2025-06-16 18:10:34 -05:00
github-actions[bot]
ada0e10111
chore(l10n): New Crowdin Translations (#2138)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-16 18:01:35 -05:00
James Rich
5ba9fe4716
Refactor: Improve MessageItem layout and display of reactions (#2141) 2025-06-16 22:55:06 +00:00
James Rich
41885c84aa
Increase MIN_SDK_VERSION to 26 (#2140) 2025-06-16 17:43:49 -05:00
James Rich
8681711946
2.6.17 2025-06-16 12:39:36 -05:00
James Rich
8822f7529d
feat: generate random PSK on clear (#2136) 2025-06-16 12:38:14 -05:00
James Rich
3ef504c567
feat: prompt user to regenerate compromised keys (#2131) 2025-06-16 17:06:23 +00:00
James Rich
86905942de
fix (#2128): MQTT map reporting interval input (#2135) 2025-06-16 11:54:55 -05:00
github-actions[bot]
0b368ce0b1
chore(l10n): New Crowdin Translations (#2117)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-16 11:54:34 -05:00
github-actions[bot]
d02ff38415
chore: update firmware releases list from Meshtastic API (#2130)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-16 11:54:14 -05:00
renovate[bot]
981fb79ba4
chore(deps): update mesh_service_example/src/main/proto digest to c758376 (#2124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 11:53:56 -05:00
renovate[bot]
3109a7f753
chore(deps): update app/src/main/proto digest to c758376 (#2123)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 11:53:35 -05:00
Jeremiah K
3e81a4dd34
Fix bottom navigation back stack accumulation (#2133) 2025-06-16 11:53:14 -05:00
Jeremiah K
00295c969e
Fix node removal hang by adding navigation callback (#2134) 2025-06-16 11:52:57 -05:00
James Rich
a5ade9252a
Refactor: Implement global cooldown for Traceroute button (#2129) 2025-06-16 11:48:08 +00:00
DaneEvans
4683f5b9f2
feat: add copy button to pbk for node status icon (#2119) 2025-06-15 05:51:32 -05:00
Łukasz Kosson
69f2e8c839
feat: show distance to the node on node details screen (#2122) 2025-06-15 05:50:58 -05:00
James Rich
446ddab469
refactor: NodeDetail screen and firmware version display (#2120) 2025-06-15 03:30:43 +00:00
github-actions[bot]
1f56263643
chore(l10n): New Crowdin Translations (#2107)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-14 14:47:12 -05:00
github-actions[bot]
4c330f5af1
chore: update firmware releases list from Meshtastic API (#2106)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-14 14:46:48 -05:00
James Rich
a5d204db46
Refactor: Remove unused dependencies (#2116) 2025-06-14 14:46:31 -05:00
Jeremiah K
eaa149a0e9
Persist node sort preference across app restarts (#2115) 2025-06-14 18:22:16 +00:00
James Rich
46501649c8
Refactor: unwrap map graph (#2111) 2025-06-14 13:12:26 -05:00
James Rich
d7bd3ecaa7
Refactor: Use Alt+Enter to send messages (#2108) 2025-06-13 13:00:14 -05:00
James Rich
e403a96b22
2.6.16 2025-06-13 07:25:37 -05:00
Łukasz Kosson
82dce30739
feat: show node details by long-pressing a node marker on map (#2104) 2025-06-13 06:50:28 -05:00
github-actions[bot]
634907d708
chore(l10n): New Crowdin Translations (#2101)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-13 11:35:38 +00:00
James Rich
eaef459fde
Refactor: split position precision constants (#2099)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-13 11:35:21 +00:00
github-actions[bot]
0cc3080e63
chore: update firmware releases list from Meshtastic API (#2096)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-13 11:35:10 +00:00
Jeremiah K
4de1b1516f
Fix: Device selection lags (#2086) 2025-06-13 11:34:44 +00:00
Benjamin Faershtein
faf9f7b0e1
Added connection indicator (#2073)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-13 11:34:15 +00:00
James Rich
95224c20ef
feat: adaptive nav (#2079) 2025-06-13 02:34:01 +00:00
James Rich
606d1520d8
refactor: Client Notification Support (#2095) 2025-06-12 20:00:28 -05:00
renovate[bot]
2a274e259b
chore(deps): update app/src/main/proto digest to 0c11288 (#2084)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-12 16:23:08 -05:00
renovate[bot]
9d9d40c6ab
chore(deps): update mesh_service_example/src/main/proto digest to 0c11288 (#2085)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-12 16:22:48 -05:00
github-actions[bot]
7ba775642c
chore: update device hardware list from Meshtastic API (#2081)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-12 16:22:11 -05:00
github-actions[bot]
3394d4ff28
chore(l10n): New Crowdin Translations (#2074)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-12 16:21:36 -05:00
Benjamin Faershtein
39590b75ee
Fixed nodeDB reset even on remote nodeDB reset (#2087) 2025-06-12 16:20:49 -05:00
Łukasz Kosson
7a5813ebb3
feat: filter node list by user id or node number (#2078)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-12 16:20:26 -05:00
James Rich
6408b22c6d
2.6.15 2025-06-10 13:39:53 -05:00
github-actions[bot]
76bdccdd98
chore(l10n): New Crowdin Translations (#2071)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-10 10:23:21 -05:00
James Rich
ad8f91482e
refactor: ClientNotification messages as an alert dialog (#2072) 2025-06-10 15:15:58 +00:00
James Rich
607e5fd7c4
2.3.14 2025-06-10 07:11:49 -05:00
Benjamin Faershtein
e7657c4763
feat: Added map filter + small waypoint fix (#2065)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-10 12:03:30 +00:00
github-actions[bot]
67b7ccfe06
chore(l10n): New Crowdin Translations (#2070)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-10 11:34:32 +00:00
renovate[bot]
651edf61a1
chore(deps): update mesh_service_example/src/main/proto digest to b448d4a (#2069)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 11:34:21 +00:00
renovate[bot]
6f02be4bb1
chore(deps): update app/src/main/proto digest to b448d4a (#2068)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 11:34:10 +00:00
renovate[bot]
9c7019d866
chore(deps): update com.google.devtools.ksp to v2.1.21-2.0.2 (#2066)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 11:33:55 +00:00
James Rich
c20c212e49
docs: Updated screenshots for Fdroid (#2067) 2025-06-09 21:18:31 -05:00
github-actions[bot]
ddea111088
chore(l10n): New Crowdin Translations (#2054)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-09 15:52:15 -05:00
James Rich
4767e48fe2
feat(#2060): Enforce valid names for UserConfig (#2063) 2025-06-09 12:46:22 -05:00
Łukasz Kosson
f5b34d6408
fix: cancel new message notification when message is marked as read (#2057)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-09 12:45:20 -05:00
Łukasz Kosson
e781d6774b
feat: allow hiding offline and/or non-direct nodes from list and map (#2052)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-06-09 12:44:53 -05:00
James Rich
6becdf137b
refactor: Consolidate DropdownMenu into RegularPreference (#2059) 2025-06-08 19:38:30 +00:00
James Rich
72ab461661
fix: update start destination to NodesGraph when connected (#2058) 2025-06-08 14:28:48 -05:00
github-actions[bot]
22109e59a6
chore(l10n): New Crowdin Translations (#2053)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-07 18:13:09 -05:00
renovate[bot]
9278f58636
chore(deps): update mesh_service_example/src/main/proto digest to db60f07 (#2049)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 22:09:07 +00:00
github-actions[bot]
d076b05789
chore(l10n): New Crowdin Translations (#2047)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-07 16:56:44 -05:00
renovate[bot]
fd171adb18
chore(deps): update app/src/main/proto digest to db60f07 (#2048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-07 16:52:34 -05:00
Benjamin Faershtein
5b6c8483e8
feat: add waypoint expiration picker (#2051) 2025-06-07 20:50:30 +00:00
James Rich
89462be97a
fix: ensure bg loc permissions, unbind service (#2050) 2025-06-07 15:42:29 -05:00
James Rich
d8e9c30399
2.6.13 2025-06-07 06:02:10 -05:00
James Rich
8d279afb10
Refactor: Migrate app build.gradle to Kotlin DSL (#2046) 2025-06-07 05:43:50 -05:00
renovate[bot]
5cce554e82
chore(deps): update gradle to v8.14.2 (#2044)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-06 16:33:26 -05:00
renovate[bot]
8881e86fad
chore(deps): update mesh_service_example/src/main/proto digest to cec9223 (#2043)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-06 16:32:55 -05:00
renovate[bot]
382aa741f1
chore(deps): update design digest to 90014f4 (#2037)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-06 16:32:31 -05:00
renovate[bot]
2ca17ea9f9
chore(deps): update app/src/main/proto digest to cec9223 (#2036)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-06 16:32:10 -05:00
renovate[bot]
ae2db636fe
chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.4 (#2041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-06 16:31:52 -05:00
renovate[bot]
53112b7cdf
chore(deps): update com.google.firebase:firebase-bom to v33.15.0 (#2045)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-06 16:31:19 -05:00
James Rich
94cdc1c17a
fix: detekt 2025-06-06 16:04:44 -05:00
James Rich
2a05fc072d
refactor: organize navigation (#2042) 2025-06-06 15:45:26 -05:00
James Rich
c757224269
feat: add MeshServiceExample project to repo (#2038)
Co-authored-by: niccellular <79813408+niccellular@users.noreply.github.com>
2025-06-06 15:43:32 -05:00
github-actions[bot]
833e6f04dd
chore(l10n): New Crowdin Translations (#2033)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-06 15:43:06 -05:00
Łukasz Kosson
9a371ee9cd
feat: show per-message SNR, RSSI and hop count (#2040)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2025-06-06 15:41:25 -05:00
James Rich
639213145b
2.6.12 2025-06-05 11:21:13 -05:00
github-actions[bot]
c3f554a562
chore(l10n): New Crowdin Translations (#2030)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-05 09:48:17 -05:00
renovate[bot]
93116e9301
chore(deps): update lifecycle to v2.9.1 (#2026)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 20:24:31 +00:00
renovate[bot]
26acbf4c3f
chore(deps): update androidx.fragment:fragment-compose to v1.8.8 (#2023)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 20:13:17 +00:00
renovate[bot]
b6c7956b8d
chore(deps): update androidx.fragment:fragment-ktx to v1.8.8 (#2024)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 20:07:53 +00:00
renovate[bot]
7c233f981e
chore(deps): update appcompat to v1.7.1 (#2025)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 20:01:50 +00:00
renovate[bot]
07787865c3
chore(deps): update androidx.compose:compose-bom to v2025.06.00 (#2027)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 14:54:01 -05:00
James Rich
6153cfdab1
Refactor: Use FLAG_ACTIVITY_SINGLE_TOP for MainActivity intents (#2022) 2025-06-04 19:20:30 +00:00
James Rich
a05c48479d
2.6.11 2025-06-04 09:38:00 -05:00
github-actions[bot]
4e6e11a2ed
chore(l10n): New Crowdin Translations (#2017)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-04 09:35:29 -05:00
James Rich
858fb9dd4c
Refactor: Nest NodeDetailScreen and related routes in a NodeDetailGraph (#2018) 2025-06-04 09:33:23 -05:00
James Rich
0645096e28
2.6.10 2025-06-04 06:54:32 -05:00
James Rich
3216559035
fix: connections ui and unmessageable logic (#2016) 2025-06-04 06:53:22 -05:00
github-actions[bot]
b7f5ba78b7
chore(l10n): New Crowdin Translations (#2014)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-04 06:34:13 -05:00
github-actions[bot]
5392c458d1
chore: update firmware releases list from Meshtastic API (#2015)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-04 06:33:58 -05:00
github-actions[bot]
f0f1a13bfd
chore(l10n): New Crowdin Translations (#1998)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-03 20:00:48 -05:00
github-actions[bot]
06cea5976b
chore: update device hardware list from Meshtastic API (#2005)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-06-03 20:00:28 -05:00
James Rich
8bbc5bfc56
revert: do not clear databases on disconnect (#2011)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-03 19:58:52 -05:00
James Rich
38982bc37b
refactor: recommended and required firmware updates (#2012) 2025-06-03 19:58:21 -05:00
James Rich
868d705b2d
fix: per-device location sharing (#2010) 2025-06-03 21:04:24 +00:00
James Rich
ff5cc55a60
fix: refactor node detail navigation (#2009)
resolves #2004
2025-06-03 15:19:50 -05:00
James Rich
3115bbe58d
feat: add MQTT Map Reporting consent (#2006)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-03 15:39:58 +00:00
Robert-0410
e4313e0bd3
feat: Provide Navigation to Input Timezone (#2003) 2025-06-03 10:31:08 -05:00
James Rich
43b6e54bbb
2.6.9 2025-05-31 22:03:41 -05:00
github-actions[bot]
6e87fbbccb
chore(l10n): New Crowdin Translations (#1997)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-31 21:48:11 -05:00
James Rich
4d6eb3dfe9
feat: Allow direct message replies from notifications (#1994)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-31 20:48:24 -05:00
James Rich
6915249121
refactor: Move version checks to Main.kt (#1995) 2025-05-31 20:36:35 -05:00
James Rich
8d231ff125
refactor: Update notification and service handling (#1993) 2025-05-31 20:02:23 +00:00
James Rich
34e10b0032
fix: Only show DM button if node is messageable (#1992) 2025-05-31 17:19:12 +00:00
James Rich
88d74642ae
refactor: FirmwareReleaseDao to return non-nullable lists (#1991) 2025-05-31 12:09:57 -05:00
James Rich
7f4f52b6c9
2.6.8 2025-05-31 11:20:19 -05:00
github-actions[bot]
9a15615715
chore(l10n): New Crowdin Translations (#1986)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-31 11:19:25 -05:00
James Rich
569b2767b4
Fix: Update isUnmessageable based on userInput.role for older firmware (#1990) 2025-05-31 10:21:22 -05:00
James Rich
72900a7909
feat: add Direct Message button to Node Detail screen (#1988) 2025-05-31 06:35:25 -05:00
Robert-0410
5edc2a8d57
refactor: channel qr clean (#1983) 2025-05-30 19:50:45 -05:00
James Rich
7dc2147169
feat: add cooldown to Traceroute action button (#1987) 2025-05-30 17:55:53 -05:00
github-actions[bot]
fcf1851b4b
chore(l10n): New Crowdin Translations (#1976)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-30 13:26:27 -05:00
James Rich
25ecdc912e
fix: clear data when changing devices (#1985) 2025-05-30 13:17:09 -05:00
github-actions[bot]
ead0c43381
chore: update device hardware list from Meshtastic API (#1975)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-05-30 12:57:58 -05:00
James Rich
b861d07aba
Refactor: Settings to Connections, ui updates (#1984)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-30 12:56:49 -05:00
James Rich
ad1897c564
Refactor: organize ui screens to separate packages (#1982) 2025-05-29 18:18:45 -05:00
James Rich
32d9f29d7e
2.6.7 2025-05-28 17:59:57 -05:00
github-actions[bot]
085b2f5cb6
chore(l10n): New Crowdin Translations (#1974)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-28 17:58:29 -05:00
renovate[bot]
3cc7d2812a
chore(deps): update com.android.tools.build:gradle to v8.10.1 (#1971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 21:45:27 +00:00
renovate[bot]
b08cd49398
chore(deps): update protobuf.kotlin to v4.31.1 (#1973)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 21:29:25 +00:00
renovate[bot]
5e5ae7fb1f
chore(deps): update app/src/main/proto digest to 24c7a3d (#1970)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 21:20:20 +00:00
James Rich
f48e127019
feat: host metrics part 2 (#1972) 2025-05-28 16:10:35 -05:00
James Rich
e31d4170b6
feat: add Host Metrics Log screen (#1969) 2025-05-28 20:57:38 +00:00
James Rich
ef1c71722a
fix: respect keyboard, edgeToEdge tweaks (#1968) 2025-05-28 12:33:00 -05:00
James Rich
091607da08
Fix: Handle null or empty release list in getLatestRelease (#1967) 2025-05-28 12:32:42 -05:00
James Rich
1f2254f98b
fix: update LoraSignalIndicator GOOD color (#1966) 2025-05-28 12:32:26 -05:00
James Rich
0a91464cfc
refactor: use is_unmessagable flag (#1965) 2025-05-28 12:32:08 -05:00
James Rich
dcae34a786
2.6.6 2025-05-28 10:22:56 -05:00
James Rich
808992e3b3
Refactor: clean up sharedTransition from more places (#1963) 2025-05-28 09:47:28 -05:00
renovate[bot]
950dacddea
chore(deps): update app/src/main/proto digest to 24c7a3d (#1960)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-28 09:36:32 -05:00
github-actions[bot]
e4d7fe90d3
chore(l10n): New Crowdin Translations (#1956)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-28 09:35:55 -05:00
github-actions[bot]
9ab937714d
chore: update device hardware list from Meshtastic API (#1961)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-05-28 09:35:26 -05:00
James Rich
3eefe4b66c
refactor: edgeToEdge tweaks, chip elevation (#1962) 2025-05-28 09:34:08 -05:00
James Rich
9f0765526d
refactor: settings screen ui updates (#1955) 2025-05-28 01:02:53 +00:00
renovate[bot]
653c9e4f26
chore(deps): update app/src/main/proto digest to 022ea79 (#1953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 21:30:00 +00:00
James Rich
41349ad9cc
refactor(#1940): Improve firmware version comparison (#1952) 2025-05-27 16:19:03 -05:00
github-actions[bot]
6e4a5b2812
chore(l10n): New Crowdin Translations (#1951)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-27 13:50:28 -05:00
James Rich
011affcb1b
chore(crowdin): run download action every hour (#1950) 2025-05-27 13:41:49 -05:00
James Rich
753ffae434
2.6.5 2025-05-27 13:31:07 -05:00
renovate[bot]
f7f1d079c8
chore(deps): update app/src/main/proto digest to 0b815a6 (#1949)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 13:30:24 -05:00
James Rich
179a6f8981
fix(#1947): Disable Crashlytics for fdroid builds (#1948) 2025-05-27 18:26:12 +00:00
renovate[bot]
ff96d4e0ce
chore(deps): update app/src/main/proto digest to 9148453 (#1943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 09:10:53 -05:00
James Rich
77ca2d62f0
refactor: Move MIN_DEVICE_VERSION to build config (#1946) 2025-05-27 08:45:57 -05:00
James Rich
6ee7b6e12d
2.6.4 2025-05-26 21:31:05 -05:00
James Rich
b7c0bc874c
chore(build): Refactor Gradle build scripts to Kotlin DSL (#1944) 2025-05-26 21:26:46 -05:00
James Rich
6332b3bd42
feat(node): consolidate node chip and menu (#1941) 2025-05-26 19:36:32 -05:00
James Rich
62e2368887
refactor: Support Meshtastic URL deep link scheme in HTTPS only (#1942) 2025-05-26 19:20:53 -05:00
github-actions[bot]
42156faaef
chore(l10n): New Crowdin Translations (#1931)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-26 12:19:16 +00:00
emp3r0r7
f6f3cf5c20
fix : prevent crash on geo: intent when no compatible map app is inst… (#1936)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-05-26 07:09:56 -05:00
James Rich
ac22ac3f28
Create codeql.yml 2025-05-25 22:27:48 -05:00
James Rich
bdf87d263f
Delete .github/workflows/codeql.yml 2025-05-25 22:08:49 -05:00
James Rich
df35d1b0bf
chore(codeql): java 2025-05-25 22:04:05 -05:00
James Rich
d5b418ea76
chore(codeql): no daemon 2025-05-25 22:00:12 -05:00
James Rich
503ac6cfb6
chore(codeql): manual build mode w/ gradle command 2025-05-25 21:54:31 -05:00
James Rich
fcf944f1c6
chore(codeql): manual build mode w/ gradle command 2025-05-25 21:19:47 -05:00
James Rich
55eba003c7
chore(codeql): manual build mode w/ gradle command 2025-05-25 21:12:54 -05:00
James Rich
cfad21c286
chore(codeql): manual build mode w/ gradle command 2025-05-25 21:04:52 -05:00
James Rich
5e510d43a1
chore(codeql): Update codeql.yml 2025-05-25 20:57:12 -05:00
renovate[bot]
893c9b2e2c
chore(deps): update app/src/main/proto digest to 9148453 (#1935)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 20:44:37 -05:00
github-actions[bot]
0de0cca225
chore: update firmware releases list from Meshtastic API (#1937)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-05-25 20:43:39 -05:00
James Rich
afc089d830
chore(codeql): Update codeql.yml (#1939) 2025-05-25 20:42:58 -05:00
James Rich
139a17f22f
fix: Distinguish between an empty response and a network error (#1938) 2025-05-26 01:41:49 +00:00
James Rich
be437ebb91
chore: Update workflow files to update workflows to 'main' (#1927) 2025-05-24 07:00:01 -05:00
James Rich
9b1f27cf17
refactor: add tooltips, unmessageable tweaks (#1925) 2025-05-23 18:08:45 -05:00
James Rich
8326798383
2.6.3
bump versionCode 30603, versionName 2.6.3
2025-05-23 14:16:33 -05:00
Benjamin Faershtein
3982497f94
refactor: Improved Node List Items (#1904)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-05-23 14:14:47 -05:00
James Rich
b1281197eb
chore: Update zxing-core to version 3.5.3 (#1923) 2025-05-23 13:44:06 -05:00
James Rich
4545777b8a
feat: Update osmdroid-android to 6.1.20 and adjust map view (#1922) 2025-05-23 17:47:46 +00:00
James Rich
03a9b34190
chore: Upgrade minSdkVersion to 23 (#1921) 2025-05-23 12:35:19 -05:00
James Rich
f3ec093caf
chore(codeql): run only weekly (#1920) 2025-05-23 09:49:24 -05:00
James Rich
46ba3eb3fd
feat(#1755): Add setting to display time in 12h format (#1918) 2025-05-23 14:44:14 +00:00
James Rich
d04378a026
feat: filter visibility, add unmessageable toggle (#1915) 2025-05-23 02:39:46 +00:00
James Rich
4c805666a8
Potential fix for code scanning alert no. 30: Improper verification of intent by broadcast receiver (#1914)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-05-22 15:54:09 -05:00
James Rich
ffe8d20f7c
chore(codeql): manual build mode w/ gradle command 2025-05-22 15:08:39 -05:00
github-actions[bot]
c71aab55bb
chore(l10n): New Crowdin Translations (#1909)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-22 14:53:55 -05:00
renovate[bot]
8fe2dd3bfa
chore(deps): update gradle to v8.14.1 (#1910)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 14:53:36 -05:00
James Rich
11224b84cb
Refactor: Move ApiModule to flavor specific directories (#1913) 2025-05-22 14:53:00 -05:00
James Rich
a62788d4ba
chore(codql): Update codeql.yml
comment out build steps - what if we just don't build?
2025-05-22 14:38:52 -05:00
James Rich
d091e549a1
feat(mqtt): Generate more specific client ID for MQTT proxy (#1912) 2025-05-22 14:32:28 -05:00
github-actions[bot]
374d673107
chore: update firmware releases list from Meshtastic API (#1908)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-05-22 16:32:53 +00:00
James Rich
75378a9fb3
chore(codeql): remove autobuild
remove autobuild
2025-05-22 11:21:57 -05:00
James Rich
f1d078ee1b
chore(codeql): Add submodule checkout and Gradle setup to CodeQL workflow (#1911) 2025-05-22 11:03:33 -05:00
James Rich
3761ae835b
chore(repo): advanced codeql.yml
adds jdk setup step
2025-05-22 10:17:30 -05:00
renovate[bot]
e8783f258c
chore(deps): update retrofit to v3 (major) (#1907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 13:55:09 +00:00
renovate[bot]
5da086b50b
chore(deps): update retrofit to v2.12.0 (#1906)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-22 13:49:32 +00:00
James Rich
02bb3f02e4
feat: network module (#1905) 2025-05-22 08:30:08 -05:00
James Rich
520d058546
Update release.yml 2025-05-21 15:00:40 -05:00
James Rich
5f0b366726
Update release.yml 2025-05-21 14:57:25 -05:00
James Rich
f07b84a1cd
Delete .github/workflows/parallel-release.yml 2025-05-21 13:37:35 -05:00
James Rich
688c9af1ce
Rename parallel-release to parallel-release.yml 2025-05-21 13:16:53 -05:00
James Rich
db8ceaefe1
Update parallel-release 2025-05-21 13:13:01 -05:00
James Rich
b1ae4dc569
chore(repo): Create parallel-release action (#1901) 2025-05-21 13:10:26 -05:00
James Rich
5188512d25
2.6.2 (#1900) 2025-05-21 17:58:31 +00:00
James Rich
76cdb83406
feat: Add node to favorites when sending a direct message (#1899) 2025-05-21 17:48:02 +00:00
James Rich
e99c31d418
Refactor: Adjust padding and sizes in MessageItem and Reaction compon… (#1898) 2025-05-21 17:38:18 +00:00
James Rich
0057a6f2de
feat: Add request metadata action to NodeDetail (#1896) 2025-05-21 15:50:33 +00:00
James Rich
6fa329751d
fix: NodeMenu hiding details action (#1894) 2025-05-21 09:05:49 -05:00
James Rich
fa3852ab6b
2.6.1 (#1892) 2025-05-21 04:49:10 +00:00
James Rich
2f13aee171
feat: Use node colors for contact chip (#1891) 2025-05-21 04:30:11 +00:00
renovate[bot]
01fb50647a
chore(deps): update app/src/main/proto digest to 0b32ce2 (#1887)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 23:17:04 -05:00
github-actions[bot]
417a4fe454
chore(l10n): New Crowdin Translations (#1870)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-20 23:16:44 -05:00
James Rich
9e2fb3792f
fix(#1874): Check that Meshtastic URL is for a channel set (#1890) 2025-05-21 03:42:29 +00:00
James Rich
e1c1cef79b
fix: Ensure handleReceivedUser is called when adding contacts (#1886) 2025-05-21 03:34:52 +00:00
James Rich
f6e75e970b
Refactor: Remove "include unmessageable" filter (#1889) 2025-05-21 03:08:40 +00:00
James Rich
990cd103d7
Refactor: Improve shared contact import dialog (#1888) 2025-05-20 21:57:14 -05:00
Robert-0410
5a52239721
feat: Channel Configuration ui (#1873) 2025-05-20 21:22:30 -05:00
renovate[bot]
71446f61d6
chore(deps): update datastore to v1.1.7 (#1884)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 23:18:01 +00:00
renovate[bot]
76d2f38cff
chore(deps): update androidx.fragment:fragment-ktx to v1.8.7 (#1883)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 23:12:47 +00:00
renovate[bot]
980f496fb2
chore(deps): update com.google.firebase:firebase-bom to v33.14.0 (#1885)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 18:04:19 -05:00
James Rich
87076321ba
feat: Unmessageable (#1858) 2025-05-20 21:05:40 +00:00
renovate[bot]
f74855be95
chore(deps): update androidx.fragment:fragment-compose to v1.8.7 (#1882)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 19:03:57 +00:00
renovate[bot]
dfd7741a78
chore(deps): update androidx.compose:compose-bom to v2025.05.01 (#1881)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-20 18:51:55 +00:00
James Rich
c99fe642b5
feat: Add Contact Sharing via QR code (#1859) 2025-05-20 13:36:11 -05:00
James Rich
38b9515fca
refactor: Move "provide location" preference to DataStore (#1877) 2025-05-19 21:23:29 +00:00
Benjamin Faershtein
de49f6a48b
feat: Create a resend option for failed messages (#1876)
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-05-19 16:11:05 -05:00
James Rich
6941b6f9df
fix: M3 bug squashing (#1872) 2025-05-19 07:03:01 -05:00
Slush
e90aa6c5ed
fix #1567: Allow using a different TCP port than default 4403 (#1861) 2025-05-19 06:30:23 -05:00
James Rich
a603dcb91e
2.6.0 (#1866) 2025-05-17 12:45:53 -05:00
renovate[bot]
ab96d8963f
chore(deps): update app/src/main/proto digest to d8b709a (#1868)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-17 17:32:20 +00:00
github-actions[bot]
293d667c53
chore(l10n): New Crowdin Translations (#1867)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-17 17:06:39 +00:00
renovate[bot]
dc058ae877
chore(deps): update app/src/main/proto digest to 475694e (#1865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-17 16:51:43 +00:00
James Rich
4cba13ea14
feat: material3 (#1862) 2025-05-17 11:39:53 -05:00
James Rich
8db9665ff3
2.5.27 (#1857) 2025-05-15 18:20:01 +00:00
James Rich
d5a5efdcf4
fix: Messages UI Tweaks (#1856) 2025-05-15 18:09:46 +00:00
James Rich
fc38a1a441
2.5.26 (#1852) 2025-05-15 11:00:13 -05:00
github-actions[bot]
61f7806e53
chore(l10n): New Crowdin Translations (#1853)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-15 15:11:10 +00:00
James Rich
15ab9e918d
chore(repo): let stale-bot have more operations (#1851) 2025-05-15 14:47:37 +00:00
renovate[bot]
d0eb8ae717
chore(deps): update actions/stale action to v9.1.0 (#1850)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-15 09:07:25 -05:00
James Rich
01d0743995
chore(repo): stale.yml (#1849) 2025-05-15 13:58:38 +00:00
github-actions[bot]
845b93012c
chore(l10n): New Crowdin Translations (#1837)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-05-15 13:47:54 +00:00
James Rich
8cde47bdf9
refactor: migrate to Compose navigation (#1835)
Co-authored-by: andrekir <andrekir@pm.me>
2025-05-15 08:05:30 -05:00
renovate[bot]
79c77ab1d5
chore(deps): update app/src/main/proto digest to 4eb0aeb (#1839)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-15 07:17:52 -05:00
renovate[bot]
176b9e22b5
chore(deps): update com.google.devtools.ksp to v2.1.21-2.0.1 (#1842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-14 21:27:24 -05:00
renovate[bot]
dd857efeeb
chore(deps): update kotlin to v2.1.21 (#1841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-15 00:40:29 +00:00
renovate[bot]
0645aeedb2
chore(deps): update org.jetbrains.kotlinx:kotlinx-collections-immutable to v0.4.0 (#1844)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-14 23:53:56 +00:00
renovate[bot]
cc9280946b
chore(deps): update coil to v3.2.0 (#1840)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-14 23:34:23 +00:00
renovate[bot]
05a9266b41
chore(deps): update protobuf.kotlin to v4.31.0 (#1847)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-14 18:24:52 -05:00
James Rich
0c823df285
chore(renovate): Auto-merge minor and patch updates (#1846) 2025-05-14 12:23:27 -05:00
James Rich
8677420462
chore(i18n): Upload translations workflow (#1845) 2025-05-14 12:14:25 -05:00
Robert-0410
cd9167f19f
refactor: Node detail work (#1836) 2025-05-10 08:03:14 -05:00
James Rich
6bb282f901
2.5.25 (#1831) 2025-05-08 11:26:02 -05:00
github-actions[bot]
7f42ffcda7
chore(l10n): New Crowdin Translations by GitHub Action (#1832)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-08 11:12:17 -05:00
github-actions[bot]
b81a485b2f
chore: update device hardware list from Meshtastic API (#1830)
Co-authored-by: jamesarich <2199651+jamesarich@users.noreply.github.com>
2025-05-08 10:39:07 -05:00
github-actions[bot]
87f084e3ce
chore(l10n): New Crowdin Translations by GitHub Action (#1811)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-08 10:38:51 -05:00
Robert-0410
309ce27268
refactor(graphs): Missing iaq (#1752) 2025-05-08 10:31:07 -05:00
renovate[bot]
64c13ac57d
chore(deps): update lifecycle to v2.9.0 (#1829)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-07 16:46:13 -05:00
renovate[bot]
e052e61c53
chore(deps): update androidx.navigation:navigation-compose to v2.9.0 (#1828)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-07 16:45:53 -05:00
renovate[bot]
d724018cae
chore(deps): update androidx.datastore:datastore to v1.1.6 (#1826)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-07 16:13:41 -05:00
renovate[bot]
977bf04752
chore(deps): update androidx.compose:compose-bom to v2025.05.00 (#1827)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-07 16:13:23 -05:00
James Rich
d9f9756c4b
fix(gradle): resourceConfigurations replaces resconfigs (#1824) 2025-05-07 09:31:54 -05:00
renovate[bot]
84566b8e2a
chore(deps): update com.android.tools.build:gradle to v8.10.0 (#1823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-06 20:04:11 -05:00
James Rich
cc88487500
chore: extract string resources for import and export config (#1822) 2025-05-05 18:20:49 -05:00
renovate[bot]
3f70df87ab
chore(deps): update design digest to 2a39241 (#1818)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-04 17:11:07 -05:00
renovate[bot]
db0a942fdf
chore(deps): update app/src/main/proto digest to 078ac8d (#1817)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-04 17:10:55 -05:00
James Rich
d5255e079d
chore(submodules): Add changelog URLs and package rules to renovate config (#1820) 2025-05-04 17:04:19 -05:00
James Rich
3ee32ad887
chore(submodules): Enable submodule support in renovate config (#1816) 2025-05-04 11:44:58 -05:00
James Rich
0bb584445b
Refactor: Split Crowdin Action into Upload and Download Workflows (#1815) 2025-05-03 13:35:28 -05:00
James Rich
9648d0af77
refactor: extract more hardcoded strings (#1814) 2025-05-01 19:05:32 -05:00
James Rich
e9588c74b4
refactor: Remove automatic short name generation from long name. (#1813) 2025-05-01 18:15:22 -05:00
renovate[bot]
12ff11f54d
chore(deps): update com.google.devtools.ksp to v2.1.20-2.0.1 (#1809)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-01 09:50:56 -05:00
github-actions[bot]
7279b286d5
chore(l10n): New Crowdin Translations by GitHub Action (#1807)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-04-30 18:21:19 -05:00
James Rich
105f2ac723
Update crowdin.yml
labels and commit message
2025-04-30 18:19:09 -05:00
github-actions[bot]
ab711cc06e
chore: update device hardware list from Meshtastic API (#1806)
Co-authored-by: jamesarich <jamesarich@users.noreply.github.com>
2025-04-30 17:04:16 -05:00
renovate[bot]
f8e573d3d7
chore(deps): update peter-evans/create-pull-request action to v7 (#1805)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-30 17:03:36 -05:00
renovate[bot]
09c04763c4
chore(deps): update node to v22 (#1804)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-30 17:02:54 -05:00
github-actions[bot]
fbf9f0075c
chore(l10n): New Crowdin translations by GitHub Action (#1803)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-04-30 16:59:25 -05:00
James Rich
abe49ff12c
Update update-hardware-list.yml
correct the base branch for PR
2025-04-30 16:52:45 -05:00
James Rich
8b4be69163
Update update-hardware-list.yml
fix path
2025-04-30 16:49:27 -05:00
James Rich
551f7cb1c4
feat: Add GitHub workflow to update hardware list (#1802) 2025-04-30 16:47:55 -05:00
James Rich
ace756b96a
fix (#1647): Satellite icon sizing 2025-04-29 15:45:31 -05:00
Ben Meadors
09e795540e
Merge pull request #1800 from meshtastic/l10n_crowdin_translations
chore(l10n): New Crowdin Translations
2025-04-29 13:22:58 -05:00
Crowdin Bot
8e21ab69dc New Crowdin translations by GitHub Action 2025-04-29 18:00:55 +00:00
James Rich
0e0721c65c
Update crowdin.yml
fix github token var
2025-04-29 13:00:34 -05:00
James Rich
9a875dcfd0
fix: correct base path in crowdin.yml (#1799) 2025-04-29 12:54:04 -05:00
James Rich
17cd4cdc19
chore(l10n): Add Crowdin localization workflow and configuration (#1798) 2025-04-29 12:35:02 -05:00
James Rich
0f9f00843f
Update version to 2.5.24, versionCode 30524 (#1795) 2025-04-28 18:25:47 -05:00
James Rich
9c51245003
refactor (i18n): extract string resources from config for translation (#1794) 2025-04-28 18:09:16 -05:00
James Rich
2a710ba85f
Fix: actually copy public key (#1793) 2025-04-28 14:57:15 -05:00
James Rich
fd709addc8
2.5.23 (#1792) 2025-04-28 13:48:54 -05:00
James Rich
5da7c66ea5
chore(translations): update crowdin translations (#1791) 2025-04-28 13:32:46 -05:00
James Rich
1bd6173f9f
fix(#1787): handle unknown hardware details crash (#1789) 2025-04-26 19:37:49 -05:00
renovate[bot]
00ac8d504c
chore(deps): update gradle to v8.14 (#1785)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 16:40:48 -05:00
renovate[bot]
6199640f8c
chore(deps): update com.google.firebase:firebase-bom to v33.13.0 (#1783)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 16:40:26 -05:00
James Rich
53a8fd2579
feat: Add copy button to public/private key fields (#1782) 2025-04-25 16:39:35 -05:00
renovate[bot]
9bc29f25ef
chore(deps): update androidx.work:work-runtime-ktx to v2.10.1 (#1779)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:49:30 -05:00
renovate[bot]
de5c6630df
chore(deps): update room to v2.7.1 (#1780)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:48:34 -05:00
renovate[bot]
a7b7e3ebbc
chore(deps): update androidx.datastore:datastore to v1.1.5 (#1778)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:47:55 -05:00
renovate[bot]
34b74ab75f
chore(deps): update androidx.compose:compose-bom to v2025.04.01 (#1777)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-23 21:47:27 -05:00
James Rich
18c204741a
feat: Update connected count string in strings.xml and MeshService.kt (#1776) 2025-04-22 09:54:10 -05:00
renovate[bot]
f4b47ad7e7
chore(deps): update com.android.tools.build:gradle to v8.9.2 (#1774)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 17:12:15 -05:00
Joshua Soberg
edb514af64
Remove imePadding modifier to internal scaffold box (#1771) 2025-04-21 17:11:56 -05:00
James Rich
d3cfc46148
2.5.22 (#1775) 2025-04-21 15:05:55 -05:00
James Rich
5d5a4938a2
fix: clear local DB after reset (#1746) 2025-04-21 13:52:41 -05:00
renovate[bot]
a28b03fde7
chore(deps): update com.google.devtools.ksp to v2.1.20-2.0.0 (#1756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-04-19 02:33:27 -05:00
renovate[bot]
30d432cc92
chore(deps): update hilt to v2.56.2 (#1768)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:31:01 -05:00
renovate[bot]
180f033a5e
chore(deps): update kotlinx.coroutines.android to v1.10.2 (#1754)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:30:17 -05:00
renovate[bot]
ab5109e771
chore(deps): update room to v2.7.0 (#1759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:13:15 -05:00
renovate[bot]
043bb71304
chore(deps): update androidx.core:core-ktx to v1.16.0 (#1758)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:12:39 -05:00
renovate[bot]
ba59c6873f
chore(deps): update androidx.compose:compose-bom to v2025.04.00 (#1757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:11:56 -05:00
renovate[bot]
f700febb75
chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.8.1 (#1747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:09:31 -05:00
renovate[bot]
b7a179a382
chore(deps): update com.google.protobuf:protobuf-gradle-plugin to v0.9.5 (#1745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:09:06 -05:00
renovate[bot]
bd2092b6a7
chore(deps): update com.google.firebase:firebase-bom to v33.12.0 (#1743)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-18 20:08:18 -05:00
Robert-0410
25fe0a1e05
fix: avoiding NaN values for temperature readings (#1744) 2025-04-05 12:22:53 -04:00
James Rich
b6876bba64
fix: disable editing of Public Key field (#1737) 2025-03-31 12:18:13 -05:00
James Rich
d0816d3495
fix: Remove nodeDb size from status string (#1734) 2025-03-31 12:17:33 -05:00
James Rich
e9d6916529
fix: remove notification grouping (#1735) 2025-03-31 12:16:22 -05:00
James Rich
4548434b7e
chore (repo): Add release configuration (#1731) 2025-03-29 15:43:34 -05:00
James Rich
ba1416e95a
2.5.21 (#1729) 2025-03-29 07:01:12 -05:00
renovate[bot]
86ea315f15
chore(deps): update com.google.devtools.ksp to v2.1.20-1.0.32 (#1699)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-28 16:03:55 -05:00
James Rich
b20fb93e8f
fix: udp toggle display logic (#1728) 2025-03-27 20:40:25 -05:00
renovate[bot]
690e05affc
chore(deps): update androidx.compose:compose-bom to v2025.03.01 (#1723)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 20:37:33 -05:00
renovate[bot]
ba74c1d3c2
chore(deps): update protobuf.kotlin to v4.30.2 (#1727)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 20:37:03 -05:00
renovate[bot]
bd6ccc95f8
chore(deps): update androidx.datastore:datastore to v1.1.4 (#1724)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 20:36:20 -05:00
renovate[bot]
64dd9e6b78
chore(deps): update hilt to v2.56.1 (#1721)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 20:35:57 -05:00
renovate[bot]
cb543bbf5f
chore(deps): update com.android.tools.build:gradle to v8.9.1 (#1717)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 20:35:19 -05:00
Robert-0410
5379f9dede
fix: use the appropriate min when scaling the barometric pressure data (#1719) 2025-03-27 20:27:30 -05:00
James Rich
a28dc377ae
fix: Handle node public key mismatch and show warning (#1720)
* Handle node public key mismatch and show warning

- Add a mismatchKey flag to Node and MessageTopBar to indicate a public key mismatch.
- Set the public key to a default error value (all zeros) when a node's public key changes.
- Display a warning in the MessageTopBar when a key mismatch is detected in PKC.
- Only clear all nodes when a different mynode number is present.

* feat: Add key mismatch detection to NodeInfoDao

This commit introduces a new feature to the `NodeInfoDao` that detects and handles public key mismatches for existing nodes.

-   A new function `upsertCheckKeyMatch` is added to `NodeInfoDao` that checks for public key changes when upserting a node. If a mismatch is detected, the public key is set to `ERROR_BYTE_STRING`, and a warning is logged.
- The function `upsertCheckKeyMatch` is used instead of `upsert` in `NodeRepository` and in `putAll` inside of `NodeInfoDao`.
-   A new test `testPkcMismatch` is added to `NodeInfoDaoTest` to verify the key mismatch detection.
- Changed `testNodes` to have unique public keys.
- Added `mismatchKey` state to the node model.

* detekt spacing

* Refactor: Correctly handle different node installations in NodeRepository

The logic for detecting different node installations in `NodeRepository.kt` was inverted, this commit fixes the logic to use `!=` instead of `==` to detect if the node number has changed.
2025-03-27 15:58:43 -05:00
James Rich
53c240198c
2.5.20 2025-03-23 22:26:20 -05:00
James Rich
7effb9f73c
chore(dependencies): Upgrade Kotlin to 2.1.20 and KSP to 2.1.20-1.0.31 (#1711)
The Kotlin version has been bumped to 2.1.20 and Kotlin Symbol Processing (KSP) has been updated to version 2.1.20-1.0.31 in the `libs.versions.toml` file.
2025-03-23 22:09:54 -05:00
James Rich
34542fa6cf
chore(renovate): revert grouping (#1710) 2025-03-23 21:55:59 -05:00
James Rich
e055e76584
chore(renovate): Update Renovate config to group Kotlin and KSP dependencies(take 2). (#1708) 2025-03-23 21:39:32 -05:00
James Rich
e9bebf3828
chore(renovate): Update Renovate config to group Kotlin and KSP dependencies. (#1706) 2025-03-23 21:00:44 -05:00
renovate[bot]
1728dc58ba
chore(deps): update com.google.firebase:firebase-bom to v33.11.0 (#1698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-23 20:28:14 -05:00
renovate[bot]
0538e73d7d
chore(deps): update hilt to v2.56 (#1695)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-23 20:27:36 -05:00
todd2982
7902e21a4a
feat #1632: Accessibility updates (#1705)
* Add description for node sort option button

* Add description for location view button

* Update description for channel url copy button

* appease detekt

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-23 20:26:28 -05:00
niccellular
3bc4454c0e
Expose wantAck in Mesh Packet (#1703)
* Expose wantAck in Mesh Packet

* Update DataPacket.kt

* Update DataPacket.kt

* Update DataPacket.kt

* Update DataPacket.kt

* Refactor: Change wantAck field type in DataPacket

- Changed the `wantAck` field in `DataPacket` from `Int` to `Boolean`.
- Updated read/write and equals/hashcode functions accordingly.

* Update MeshService.kt

* Update MeshService.kt

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-21 20:51:52 -05:00
todd2982
123b296b6c
fix #1692: Clarify request options to exchange. (#1701) 2025-03-21 16:21:58 -05:00
todd2982
0a7d0ff4be
feat: Allow sorting by favorite nodes (#1700) 2025-03-21 16:16:54 -05:00
James Rich
8a8ee27ad9
fix: Conditionally show UDP settings (#1702)
Only show UDP settings if the device has both Ethernet and WiFi.
2025-03-21 15:33:32 -05:00
Ken Piper
373cfe7838
feat: Add a bit more info to the node marker popup (#1691) 2025-03-19 10:02:58 -05:00
James Rich
08c69f3cf2
feat: Update README.md to add repository statistics (#1694)
analytics from https://repobeats.axiom.co/
2025-03-19 10:01:03 -05:00
James Rich
c4ef442037
chore(protos): Meshtastic Protobufs v2.6.2 (#1693) 2025-03-19 10:00:32 -05:00
Ken Piper
ff261c2304
fix: Add some smarts to low battery notification triggers (#1686)
* Add some smarts to low battery notification triggers

* Always bypass cooldown on critically-low battery

* thx detekt

* revert whitespace changes

* Switch newer timestamp code to more widely-compatible version

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-19 04:39:52 -05:00
Robert-0410
e839c43542
feat: Graph Barometric Pressure (#1684)
* refactor: condensed the process of drawing the lines in the env metrics

* feat: only include iaq in the env metric graph when we have actual values

* feat: plotting barometric pressure when we have actual values

* detekt: spacing after (

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-18 19:37:16 -05:00
Andrew Reitz
903e304964
Update README.md (#1687)
Added info about using Obtainum for getting latest updates directly from github releases.
2025-03-18 19:36:14 -05:00
James Rich
451be0b98c
feat #1688: Add UDP mesh toggle (#1689)
Adds a toggle to enable or disable mesh via UDP.
2025-03-18 18:44:39 -05:00
Andre K
6720764ed4
feat: support custom ports in TCP interface (#1534) 2025-03-17 18:13:27 -05:00
James Rich
f3ba084d5b
fix #1678: Update MeshService.kt to store the channel for received packets. (#1683)
* Update MeshService.kt to store the channel for received packets.

The channel for received packets is now stored, allowing for better tracking and management.

* Update node info creation to include channel data

- Updates `getOrCreateNodeInfo` to accept a channel parameter and to save the channel to the node info during instantiation of a new/unknown node.
- Updates `updateNodeInfo` to accept a channel parameter and pass it to the updated function.
- Updates call to `updateNodeInfo` in `handleReceivedData` to pass the packet channel data to it.
2025-03-17 17:47:48 -05:00
James Rich
8e5accd518
fix #1484: Filter out ignored nodes from map (#1676)
* fix #1484: Filter out ignored nodes from map

- Created a new `filteredNodeList` `StateFlow` in `UIState.kt` that filters out nodes marked as ignored.
- Updated `MapFragment.kt` to use `filteredNodeList` instead of `nodeList`, ensuring that ignored nodes are not displayed on the map.

* Refactor: Remove ExperimentalCoroutinesApi opt-in and add it to compiler args

- Removes the `@OptIn(ExperimentalCoroutinesApi::class)` annotation from multiple files.
- Adds `-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi` to the `freeCompilerArgs` in the `build.gradle` file, enabling the use of Experimental Coroutines API project-wide without the need for per-file opt-ins.
- The coroutine api is now applied globally.

Signed-off-by: James Rich <james.a.rich@gmail.com>

* detekt

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>

---------

Signed-off-by: James Rich <james.a.rich@gmail.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-17 11:40:08 -05:00
renovate[bot]
559b47355d
chore(deps): update com.github.mik3y:usb-serial-for-android to v3.9.0 - abandoned (#1666)
* chore(deps): update com.github.mik3y:usb-serial-for-android to v3.9.0

* fix: Use SerialInputOutputManager.start() according to change https://github.com/mik3y/usb-serial-for-android/releases/tag/v3.9.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-03-14 06:14:24 -05:00
James Rich
f2355f5a32
chore(proto): Meshtastic Protobufs v2.6.1 (#1677)
updates Meshtastic Protobufs to v2.6.1
2025-03-13 19:34:26 -05:00
renovate[bot]
3f54051cb2
chore(deps): update protobuf.kotlin to v4.30.1 (#1642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-13 19:06:17 -05:00
renovate[bot]
18d5f1cfb3
chore(deps): update androidx.compose:compose-bom to v2025.03.00 (#1673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-13 17:33:20 -05:00
renovate[bot]
ee6d481b72
chore(deps): update navigation to v2.8.9 (#1672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-13 17:32:53 -05:00
Robert-0410
7189d44b9c
feat: Updated the env metrics graph to use the latest graph feature (#1667)
refactor: removed unused constants and function
2025-03-13 15:29:50 -05:00
James Rich
5846bf5ee4
feat: Improve (battery) notification behavior (#1661)
* feat: Improve notification behavior

- Changes low battery notifications to be non-cancelable
- Cancel low battery notifications when battery level is no longer low.
- Add notification groups and improve notification settings.
- Add vibration to low battery notifications.

* Improve low battery notification

Add battery level progress bar to the low battery notification.
2025-03-12 05:02:14 -05:00
James Rich
e0cedc5e01
Update app versionCode to 30519 and versionName to 2.5.19 (#1659)
This increments the app's internal version code and the user-facing version name in the build.gradle file.

Signed-off-by: James Rich <james.a.rich@gmail.com>
2025-03-08 05:17:23 -06:00
Ken Piper
c7c29cb1c1
feat: Initial implementation of low battery notifications for nodes (#1653)
* Add initial implementation of low battery notifications for locally-connected and favorite nodes

* Hopefully make detekt happy

* detekt pls.

* Deduplicate some of the code

* detekt'd
2025-03-08 04:52:30 -06:00
James Rich
f7731f0c98
chore: Update minimum required firmware version (#1658)
Updated the minimum required firmware version to 2.3.15.
2025-03-07 14:27:28 -06:00
James Rich
6dfb6a56d6
feat: expand role confirmation to include REPEATER (#1657)
* Clarify role change behavior

The role change logic was modified to show a confirmation dialog when the role is set to `ROUTER`, `ROUTER_CLIENT`, or `REPEATER`. Previously, the dialog was only displayed when setting the role to `ROUTER`.

* Implement router role confirmation dialog

- Added a confirmation dialog when changing the device role to ROUTER, ROUTER_CLIENT, or REPEATER.
- The confirmation dialog ensures users are aware of the implications of selecting a role used for infrastructure.
- Updated the logic to set the selected role only after confirmation.
- Only show dialog when changing to infrastructure roles.

* remove deprecated ROUTER_CLIENT to avoid confusion
2025-03-07 14:26:57 -06:00
James Rich
d40672df40
fix #1654: Move the app rating dependency to googleImplementation (#1656)
* Move the app rating dependency to googleImplementation

The `awesome.app.rating` dependency is now under `googleImplementation` instead of `implementation` in `app/build.gradle`.

* Refactor alert DND dialog padding

Use `dpToPx` for padding in the alert DND dialog for better consistency.
2025-03-07 14:25:46 -06:00
James Rich
3d86dc349e
fix #1645: Ensure test run completion on Android by killing crashpad_handler (#1646) 2025-03-05 20:35:26 -06:00
James Rich
a9df1da44f
fix: add crashlytics version reference (#1644)
Signed-off-by: James Rich <james.a.rich@gmail.com>
2025-03-05 19:00:58 -06:00
James Rich
5045bcd2b7
2.5.18 (#1643) 2025-03-05 17:48:36 -06:00
James Rich
68cd540f9e
fix #1634 #1552: Update Paxcount display condition (#1635)
Modify the Paxcount display logic to show the string if either `ble` or `wifi` is not zero, rather than requiring both to be non-zero.

Signed-off-by: James Rich <james.a.rich@gmail.com>
2025-03-05 07:59:28 -06:00
James Rich
d78bea2365
feat: Show ALERT_APP notifications and override DND (#1515)
* feat: Show alert notifications and override silent mode

This commit adds support for showing alert notifications with high priority and the ability to override silent mode to ensure they are delivered to the user.

The changes include:
- Adding `showAlertNotification` function which overrides silent mode and configures a custom volume, shows a notification with high priority.
- Creating a new notification channel for alerts.
- Adding the alert app port number to the list of remembered data types.
- Modifying `rememberDataPacket` to check for alert app messages and show alert notification.

* Add notification policy access permission and DND override for alerts

This commit adds the `ACCESS_NOTIFICATION_POLICY` permission to the manifest and requests this permission from the user. It also adds a check for notification policy access in the MainActivity, and if it's not granted, shows a rationale dialog.

Additionally, the commit adds a notification override to the `showAlertNotification` function in `MeshServiceNotifications` to temporarily disable DND for alert notifications and restore the original ringer settings afterwards.

* Refactor: Enhance Android Notification and DND Handling

-   **Notification Channel Improvements:**
    -   Added `notificationLightColor` for better customization.
    -   Set `enableLights` and `enableVibration` in the alert channel.
    -   Use `alert.mp3` sound for alert channel.
-   **DND Permission Request:**
    -   Introduced a new permission request flow for Do Not Disturb (DND) access.
    -   Show a rationale dialog before requesting permission.
    -   Persist if rationale was shown to avoid re-prompting.
    - Added a `notificationPolicyAccessLauncher` to handle the permission request result.
-   **Critical Alert Text**
    - Added critical alert text in strings.
    - Used critical alert text if the alert message is empty.
-   **Other Changes**
    - Removed unused imports and constants.
    - Updated snackbar to support action.

* Refactor alert notification logic

- Change `notificationLightColor` to be lazy initialized.
- Update alert notification to use `CATEGORY_ALARM`.
- Use `dataPacket.alert` instead of `dataPacket.text` for alert content.
- Add `alert` property to `DataPacket` to handle alert messages.

* Set notification light color back to blue.

* Request notification permissions on grant

The app now checks for notification policy access after notification permissions are granted.

* make detekt happy

* updates dnd dialog text

* Refactor notification channel creation and critical alerts

- Initialize notification channels on service creation.
- Remove `ACCESS_NOTIFICATION_POLICY` permission.
- Modify the logic for requesting "Do Not Disturb" override permission to align with channel settings.
- Add new string resources for Alerts Channel Settings.
- Update wording for critical alert DND override.
- Update DND override request flow.
- Create notification channels on the service creation using `initChannels`.
- Adjust logic to check for "Do Not Disturb" override permission to align with notification channel settings.
- Ensure notification channels are created only if they do not already exist.

* refactor: Update DnD dialog with instructions for Samsung

- Renamed "Alerts Channel Settings" to "Channel Settings".
- Added Samsung-specific instructions and a link to Samsung's support page for Do Not Disturb mode in the alerts dialog.
- Updated the dialog to display Samsung-specific instructions when on a Samsung device.

* Refactor critical alerts instructions

- Updated the critical alerts instructions to include a link to Samsung's support page directly within the alert dialog.
- Removed the separate "Samsung Instructions" string and incorporated the information into the main instruction text, improving clarity and reducing redundancy.
- Made improvements to the UI.
2025-03-05 07:28:52 -06:00
James Rich
2859bed416
feat #1611: Add confirmation dialog when changing to router role (#1636)
* Add confirmation dialog for changing to router role

Introduced a confirmation dialog that will be shown when changing the device role to "router".
The confirmation dialog includes links to the "Device Role Documentation" and "Choosing The Right Device Role" blog post.
The user must check a checkbox to confirm.

* Update router role handling

Modified the handling of the router role in `DeviceConfigItemList.kt` to avoid returning prematurely from the `onItemSelected` lambda. This ensures that the role is updated properly when a user selects the "ROUTER" role.

* removes konami code check, remove testing code

* Refactor router role confirmation text

- Moves the router role confirmation text to strings.xml.
- Updates to use `AnnotatedString.fromHtml` instead of `buildAnnotatedString` and `withLink`.
- Changes from hard-coded strings to string resources.
2025-03-05 07:26:19 -06:00
renovate[bot]
888688176c
chore(deps): update com.android.tools.build:gradle to v8.9.0 (#1639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-04 14:41:23 -06:00
Joshua Soberg
749c4b4918
fix #1616: Calculate DP to pixel value for map label offset (#1637) 2025-03-04 14:40:57 -06:00
Joshua Soberg
c597b3b000
fix #1554 (a11y): Add content description to tabs for screen reader support (#1631) 2025-03-02 09:22:24 -06:00
Joshua Soberg
d8f67e011a
fix #1615: Add explicit signed int editing preference (#1629) 2025-03-02 09:20:27 -06:00
Joshua Soberg
5da827473a
fix #1616 (a11y): Use SP font size for marker labels on the map (#1630)
* Use and SP font size for marker labels on the map

* Fix detekt issue
2025-03-02 09:14:12 -06:00
James Rich
1a11c3351b
Refactor NodeDetail.kt to use has*() functions (#1627)
Modified NodeDetail.kt to replace direct comparisons with 0f or 0 for sensor values with corresponding has*() functions.
This change improves code readability by clearly indicating the presence or absence of sensor data.
2025-03-02 06:12:07 -06:00
Ken Piper
b316e066ad
fix: Add the "When" to new message notifications (#1628) 2025-03-02 06:11:33 -06:00
renovate[bot]
24f218ef2c
chore(deps): update com.google.firebase:firebase-bom to v33.10.0 (#1623)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:24:16 -06:00
renovate[bot]
b58c674de8
chore(deps): update navigation to v2.8.8 (#1620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:23:48 -06:00
renovate[bot]
1a333dbd4a
chore(deps): update com.google.devtools.ksp to v2.1.10-1.0.31 (#1622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:23:26 -06:00
renovate[bot]
6a0ce49aa3
chore(deps): update com.android.tools.build:gradle to v8.8.2 (#1619)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:22:49 -06:00
renovate[bot]
4cf2b74bcc
chore(deps): update androidx.datastore:datastore to v1.1.3 (#1618)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:22:13 -06:00
renovate[bot]
1ae57a1693
chore(deps): update androidx.constraintlayout:constraintlayout to v2.2.1 (#1617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:21:40 -06:00
renovate[bot]
2cc66d6b57
chore(deps): update gradle to v8.13 (#1614)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-27 16:19:09 -06:00
Joshua Soberg
2f48e8e68a
chore: Unused code cleanup (#1612)
* Remove unused SoftwareUpdateService code and commented out service reg in manifest

* Remove unused methods that had unnecessary version checks

* Regenerate baseline to remove detekt issues that are no longer present
2025-02-27 16:18:42 -06:00
James Rich
4242afef9c
feat: Introduce Version Catalog for Dependency Management (#1607)
* feat: Introduce Version Catalog for Dependency Management

This commit introduces a version catalog via `libs.versions.toml` to centralize and manage project dependencies. It replaces the previous hardcoded dependency versions in `app/build.gradle` with references to the version catalog. This change enhances maintainability and organization by centralizing dependency management.

- Added `gradle/libs.versions.toml` to define dependencies and their versions.
- Updated `app/build.gradle` to utilize dependencies from the version catalog.

* chore: migrate plugins to version catalog

* chore: sort lines in `libs.versions.toml`

-Sorts `versions`, `dependencies`, and `plugins` references alphabetically.

* feat: pin ZXing Core dependency

*   Suppressed warning about updating zxing-core to avoid confusion.
*   Added a note to avoid updating zxing-core.

* refactor: Enforce consistent `implementation()` calls in `build.gradle`

-   Ensures all library dependencies are called with `implementation(libs.xxx)` instead of `implementation libs.xxx` in `build.gradle`.

* feat: use version catalog bundles

- Updated dependencies in the app build.gradle to use bundles where possible.

* fix: fix ui test dependency declarations

* chore: comments for clarity

* fix: remove material3 from this PR
2025-02-24 18:42:37 -06:00
Joshua Soberg
1e9b1c2bc3
feat: PR screenshot template(#1606) 2025-02-22 14:55:53 -06:00
Joshua Soberg
ef64df3515
fix: Stop overriding surface/onSurface in theme (#1605)
Fixes #1604
* Stop overriding surface/onSurface in theme

* Wrap preview in AppTheme to get a better representation of what it'll look like on-device
2025-02-22 14:06:56 -06:00
Joshua Soberg
8fee9dbc45
fix: Accommodate large font for node filter (#1602)
Fixes #1561

* Add large font preview

* Adjust default min size such that the filter input will accomodate larger fonts. Also, align the dropdown icon and use body1 typography for input text

* Add license and newline to fix detekt issues
2025-02-22 12:57:30 -06:00
renovate[bot]
84d916f410
chore(deps): update plugin io.gitlab.arturbosch.detekt to v1.23.8 (#1600)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-22 11:07:53 -06:00
renovate[bot]
9a026a8b6c
chore(deps): update io.gitlab.arturbosch.detekt:detekt-formatting to v1.23.8 (#1599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-22 11:07:10 -06:00
Robert-0410
85d6e0ccdf
feat: Graphs Blue Color (#1597)
* Changed the humidity color on the graph to the same blue used for current in the power graph.

* Refactor: Centralized the blue used in both the Env and Pow metrics in CommonCharts.kt.

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-22 09:39:46 -06:00
Joshua Soberg
3e74373617
chore(devex): Update project name and icon (#1601)
* Update project name from "Mesh Util" to "Meshtastic Android"

* Add project icon for Android Studio/IntelliJ/Jetbrains Toolbox
2025-02-22 09:17:50 -06:00
James Rich
7ef396bf3b
2.5.17 2025-02-16 17:59:36 -06:00
Joshua Soberg
5430169830
Add an animation to user node list items to animate on details expansion (#1590) 2025-02-16 14:37:49 -06:00
James Rich
8ddd553753
chore: update proto submodule to v2.5.22 (#1589) 2025-02-16 10:48:30 -06:00
Joshua Soberg
ed52a5360f
Apply a background to the filter search sticket header so that list items don't show behind it when scrolling (#1588) 2025-02-16 10:22:06 -06:00
Joshua Soberg
37489604f0
Introduction of stable Compose UI State and some simple animations in Debug Panel (#1575)
* Add dependency to KotlinX immutable collections

* Build a Compose-stable UI state vs using a database model. Move appropriate mapping logic for converting database model -> UI state into the view model. Introduce animations to new log placement and automated scroll.

* Center the top card row vertically

* Move log message generation into separate method

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-16 06:09:41 -06:00
Ken Piper
e15ad23c46
feat: Initial implementation of adding nodes to favorites (#1520)
* Implement initial support for adding and removing nodes from favorites

* Make favorite nodes' names show up bold in the node list

* Forgot to add this here when I was fixing the previous merge conflicts. Whoops!

* Make detekt happy

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-16 06:02:02 -06:00
James Rich
584fe8d6f8
fix: limit quick chat append, prevent duplicates (#1522)
Limits quick chat append to 200 characters and prevents duplicate appends.
Also sets a constant for the max message size.

fixes #1511
2025-02-16 05:51:54 -06:00
Robert-0410
b067a0c0b3
feat: Power graph (#1556)
* Refactor: We can draw the horizontal lines for the graphs independent of min and max entries.

* Added navigation to the PowerMetrics log with a skeleton screen.

* Drew channel 1 voltage.

* Refactor: Assigned colors for the data within the enum instead of a list-ordinal combo.

* Plotted Ch1 current line.

* Refactor: Did not need the parameters being used to get the desired ui in the TimeLabels composable.

* Added a row to help distinguish between units.

* Refactor: MetricsTimeSelector.kt to SlidingSelector.kt; the new version allows for generic options.

* Added a sliding selector to choose between power channels and changed the legend data to instead display current and voltage.

* We now plot the line for which the user has selected a power channel option.

* Don't need the current line to be dotted anymore.

* Don't think we need to display an info dialog for voltage and current.

* Wrote card to display the power channel data entries.

* detekt

* Refactor: current color change to accommodate the themes better

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-15 22:37:05 -06:00
Joshua Soberg
24abd1ac4a
fixes #1557: Filter out emojis when creating short names (#1578)
* Filter out emojis from text when finding initials

* Confirm non-English non-emoji unicde isn't filtered

* Remove unused example unit test

---------

Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-02-15 22:25:35 -06:00
James Rich
e11d726e27
feat: Add RAK2560 hardware model and graphic (#1543)
Adds the RAK2560 to the list of supported devices and associates it with the corresponding vector drawable.
2025-02-15 22:17:57 -06:00
Ken Piper
86128a19c8 Add missing units to node details info cards 2025-02-15 22:07:49 -06:00
James Rich
0aff35b560
chore(deps): update plugin com.google.devtools.ksp to v2.1.10-1.0.30
chore(deps): update plugin com.google.devtools.ksp to v2.1.10-1.0.30
2025-02-15 21:43:46 -06:00
renovate[bot]
b281e9fe54
chore(deps): update plugin com.google.devtools.ksp to v2.1.10-1.0.30 2025-02-16 03:32:03 +00:00
James Rich
da8f5aad94
chore(deps): update com.android.tools.build:gradle to v8.8.1
chore(deps): update com.android.tools.build:gradle to v8.8.1
2025-02-15 21:31:29 -06:00
renovate[bot]
8aaaf33bc4
chore(deps): update com.android.tools.build:gradle to v8.8.1 2025-02-16 03:21:51 +00:00
James Rich
7180291593
chore(deps): update androidx.fragment:fragment-ktx to v1.8.6
chore(deps): update androidx.fragment:fragment-ktx to v1.8.6
2025-02-15 21:11:38 -06:00
renovate[bot]
bc2fffd810
chore(deps): update androidx.fragment:fragment-ktx to v1.8.6 2025-02-16 03:01:04 +00:00
James Rich
d79d529e35
chore(deps): update androidx.datastore:datastore to v1.1.2
chore(deps): update androidx.datastore:datastore to v1.1.2
2025-02-15 20:58:57 -06:00
renovate[bot]
04f27dda40
chore(deps): update androidx.datastore:datastore to v1.1.2 2025-02-16 02:51:38 +00:00
James Rich
97002266c7
chore(deps): update nav_version to v2.8.7
chore(deps): update nav_version to v2.8.7
2025-02-15 20:50:24 -06:00
renovate[bot]
6f07e33a0e
chore(deps): update nav_version to v2.8.7 2025-02-16 02:20:15 +00:00
James Rich
8a961fa7b8
chore(deps): update com.suddenh4x.ratingdialog:awesome-app-rating to v2.8.0
chore(deps): update com.suddenh4x.ratingdialog:awesome-app-rating to v2.8.0
2025-02-15 20:15:50 -06:00
renovate[bot]
481b724a3b
chore(deps): update com.suddenh4x.ratingdialog:awesome-app-rating to v2.8.0 2025-02-16 02:01:47 +00:00
James Rich
349b933869
chore(deps): update coroutines_version to v1.10.1
chore(deps): update coroutines_version to v1.10.1
2025-02-15 19:59:29 -06:00
renovate[bot]
b30cfdfdae
chore(deps): update coroutines_version to v1.10.1 2025-02-15 23:41:48 +00:00
James Rich
93cf7f2059
chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.8.0
chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.8.0
2025-02-15 17:40:46 -06:00
renovate[bot]
fbde8b9548
chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.8.0 2025-02-15 23:24:13 +00:00
James Rich
323470506b
chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.3
chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.3
2025-02-15 17:22:18 -06:00
renovate[bot]
a068a76fb1
chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.3 2025-02-15 23:12:07 +00:00
James Rich
f167b82c3b
chore(deps): update hilt_version to v2.55
chore(deps): update hilt_version to v2.55
2025-02-15 17:05:03 -06:00
renovate[bot]
ee79a0aacc
chore(deps): update hilt_version to v2.55 2025-02-15 22:50:24 +00:00
James Rich
7ea67ef09c
chore(deps): update com.google.firebase:firebase-bom to v33.9.0
chore(deps): update com.google.firebase:firebase-bom to v33.9.0
2025-02-15 16:48:42 -06:00
renovate[bot]
016effeaba
chore(deps): update com.google.firebase:firebase-bom to v33.9.0 2025-02-15 22:40:30 +00:00
James Rich
a6a3c95d28
chore(deps): update protobuf_version to v4.29.3
chore(deps): update protobuf_version to v4.29.3
2025-02-15 16:39:04 -06:00
renovate[bot]
bb0d581590
chore(deps): update protobuf_version to v4.29.3 2025-02-15 22:10:39 +00:00
James Rich
206169e230
chore(deps): update kotlin_version to v2.1.10
chore(deps): update kotlin_version to v2.1.10
2025-02-15 12:56:05 -06:00
renovate[bot]
c1c9168bfc
chore(deps): update kotlin_version to v2.1.10 2025-02-15 18:43:43 +00:00
James Rich
d3937b4f72
chore(deps): update androidx.compose:compose-bom to v2025
chore(deps): update androidx.compose:compose-bom to v2025
2025-02-15 12:38:45 -06:00
renovate[bot]
d9a06012e4
chore(deps): update androidx.compose:compose-bom to v2025 2025-02-15 18:26:01 +00:00
James Rich
29694a72b9
Merge pull request #1563 from meshtastic/renovate/gradle-8.x
chore(deps): update gradle to v8.12.1
2025-02-15 12:19:47 -06:00
renovate[bot]
ca199c7a12
chore(deps): update gradle to v8.12.1 2025-02-15 17:14:55 +00:00
James Rich
4f94e7a72f
feat: Add 'dependencies' label to Renovate PRs 2025-02-15 11:06:46 -06:00
James Rich
cdb4246e3f Add 'dependencies' label to Renovate PRs 2025-02-15 10:47:22 -06:00
andrekir
a3a3958dfb refactor: move NavGraph to navigation package 2025-01-11 09:29:48 -03:00
andrekir
e196bfb683 refactor: encapsulate NodeDetail navigation 2025-01-11 09:29:48 -03:00
andrekir
0d5157eb36 refactor: extract Routeto navigation package 2025-01-11 09:29:48 -03:00
andrekir
ad9a3a5e49 refactor: move RadioConfig files to separate package 2025-01-11 08:02:54 -03:00
andrekir
7794c08190 refactor: replace Scaffold with internal component 2025-01-06 19:50:25 -03:00
andrekir
1c863f35f6 refactor: migrate ShareFragment to Compose 2025-01-06 19:16:40 -03:00
andrekir
0635b25e1c refactor: remove deprecated AppCompatTheme 2025-01-06 18:38:49 -03:00
andrekir
7bb0d424ad refactor: group power metrics by channel 2025-01-05 21:41:22 -03:00
andrekir
3a68b5dc7c 2.5.16 2025-01-04 16:20:43 -03:00
andrekir
c1ca8f919d fix: switch preference bottom padding 2025-01-04 16:20:16 -03:00
andrekir
41b067bad2 chore: update Crowdin localization strings 2025-01-04 15:48:15 -03:00
andrekir
e73a67909a refactor: replace message chip with user avatar 2025-01-04 15:34:26 -03:00
Robert-0410
70a08c9d31
feat: Scrollable Signal Chart (#1505)
* Removed repeated calculation.

* Centralized the radius used to plot points and draw lines within GraphUtil.kt.

* Updated the signal metrics chart to use the scroll features.

* SignalMetricsChart long method warning suppression.
2025-01-03 09:02:32 -03:00
andrekir
d14a8de78e chore: update Crowdin localization strings 2025-01-02 08:13:08 -03:00
andrekir
5dcfe0e68a feat: add ROUTER_LATE role description 2025-01-02 08:05:40 -03:00
andrekir
cf95dd0711 chore: update device_hardware.json 2025-01-02 07:39:54 -03:00
renovate[bot]
a0b75f5968 chore(deps): update hilt_version to v2.54 2025-01-02 07:38:18 -03:00
renovate[bot]
6bc15f026f chore(deps): update gradle to v8.12 2025-01-02 07:25:15 -03:00
renovate[bot]
7b656dcd79 chore(deps): update protobuf_version to v4.29.2 2025-01-02 07:13:16 -03:00
andrekir
13b615a470 chore: update license header 2025-01-02 07:00:51 -03:00
Andre K
60e7e18116
feat(config): implement excluded modules validation (#1460)
* feat(config): implement excluded modules validation

* feat: hide excluded configs from metadata

* refactor: save local metadata from WantConfig

* refactor: delete metadata from deleted nodes

* fix: always request metadata for admin routes

* feat: show node firmware when metadata is available

* refactor: rename filter function

* feat: add `ServiceAction` request metadata
2025-01-02 06:38:33 -03:00
andrekir
bdefbc3ce2 chore: update proto submodule to v2.5.18 2025-01-02 06:30:38 -03:00
Andre K
b3ae36a91a ci: add Gradle configuration-cache encryption key 2024-12-28 09:07:12 -03:00
Robert-0410
16a8503207
refactor: Line breaks for time separations linked to TimeFrame (#1502) 2024-12-23 07:34:22 -03:00
Robert-0410
45e50b829a
refactor: 24H and 48H intervals (#1500) 2024-12-23 07:26:58 -03:00
andrekir
ed45d0ff96 fix: replace TODO with debug message for unhandled admin payload 2024-12-22 07:14:53 -03:00
andrekir
e924f274f1 fix: allow auto-capitalization for message input field 2024-12-22 07:14:52 -03:00
andrekir
366a3d585f chore: update discussions link 2024-12-22 07:05:19 -03:00
andrekir
93ffc5f838 chore: update device_hardware.json 2024-12-22 07:05:02 -03:00
James Rich
f3c59710f5
fix: Use case version of Heltec V3 and RAK4631 board images (#1497) 2024-12-22 07:04:19 -03:00
James Rich
43561cabe9
refactor: Improve device details layout (#1489)
- Device details section visible only if device hardware is available.
- Added spacing between icon, label, and value in node details rows.
- Right-aligned the values in node details rows for better readability.
2024-12-22 06:56:40 -03:00
Andre K
5854f91b7a
feat: add Serbian (sr) locale and translations (#1499) 2024-12-22 06:47:54 -03:00
andrekir
74497488a7 refactor: remove getString() from RadioConfigViewModel 2024-12-22 06:34:19 -03:00
andrekir
b05768df98 2.5.15 2024-12-18 08:31:02 -03:00
andrekir
b0ccde9117 feat: update Crowdin localization strings 2024-12-18 08:30:16 -03:00
andrekir
6daf3d8508 feat: update device_hardware.json 2024-12-18 08:29:31 -03:00
andrekir
38c61a1803 chore: update proto submodule to v2.5.17 2024-12-18 08:16:31 -03:00
Tavis
1f0092bbe1
fix: handle GATT_CONNECTION_TIMEOUT status in Bluetooth connection state change (#1463)
* Trap code 147 on BT disconnect

If we trap code 147 on BT disconnect and then call lostConnection(), the app will attempt reconnect every 30 seconds and autoreconnect works even after prolonged disconnect.
2024-12-18 08:14:16 -03:00
andrekir
8226207dbf fix: node key status dialog public key selection 2024-12-17 12:31:16 -03:00
andrekir
33f86dcf61 feat: add user longName and userId to messages
closes #1479
2024-12-17 12:27:34 -03:00
andrekir
5693874db1 fix: message text is not always cleaned when sending
fixes #1474
2024-12-17 12:25:54 -03:00
renovate[bot]
066e44ae00 chore(deps): update androidx.compose:compose-bom to v2024.12.01 2024-12-15 08:23:52 -03:00
renovate[bot]
84e4183918 chore(deps): update nav_version to v2.8.5 2024-12-15 08:15:59 -03:00
renovate[bot]
7a321ecc91 chore(deps): update hilt_version to v2.53.1 2024-12-15 08:06:13 -03:00
renovate[bot]
d2a70b15c0 chore(deps): update protobuf_version to v4.29.1 2024-12-14 06:17:59 -03:00
renovate[bot]
ef9a1e49ac chore(deps): update com.google.firebase:firebase-bom to v33.7.0 2024-12-14 06:09:31 -03:00
andrekir
193ee727b5 feat(serial): send heartbeat to keep connection alive
closes #456
2024-12-14 05:59:41 -03:00
andrekir
22fafe8033 refactor: remove protobuf dependency from HardwareModel 2024-12-13 16:00:38 -03:00
andrekir
6506de9ab1 2.5.14 2024-12-12 06:59:52 -03:00
andrekir
0f9c1fc4bf feat: update Crowdin localization strings 2024-12-11 12:31:47 -03:00
Robert-0410
06bf9e5ecd
feat: device metrics time breaks (#1456)
* The battery line is only drawn from point to point when we don't have a significant break in time.

* Implemented GraphUtil.plotPoint

* Implemented GraphUtil.createPath

* Added licence to GraphUtil.kt.
2024-12-11 11:48:15 -03:00
rcarteraz
5d0b0e7d72
chore: Remove Discourse Links, Replace with Discussions (#1455)
* Update README.md

* update discourse links to discussions
2024-12-11 11:40:46 -03:00
andrekir
a642e6a62e feat: add NodeMenu options to messages
closes #682
2024-12-10 16:21:19 -03:00
andrekir
a19a28c4b3 feat: trigger channel scan dialog when users paste a new valid URL 2024-12-10 13:00:44 -03:00
andrekir
a475280b86 chore: update Triple-T phone-screenshots 2024-12-10 12:59:27 -03:00
andrekir
d6a7a60a3c fix: node detail mismatch key layout 2024-12-10 12:58:05 -03:00
andrekir
2110183d2b fix: keyboard flicker after sending messages
replaces `keyboardController.hide()` with `focusManager.clearFocus()`
2024-12-10 12:56:53 -03:00
andrekir
1a67ea8ad4 refactor: add DTO mapper for DeviceHardware 2024-12-10 12:55:48 -03:00
andrekir
165f5a2b49 chore: enable detekt license header template 2024-12-10 12:14:21 -03:00
James Rich
993f659742
feat: add support for Device Hardware json and svg graphics (#1449)
* feat: add support for Device Hardware json and svg graphics

Allows for better hardware device display names, graphics, and indication of support.

* make detekt happy

* Fix: Use first image name to find vector drawable

Use the first image name from the `images` list (after removing the ".svg" suffix) to find the corresponding vector drawable resource.

* Refactor: Update device detail layout

Updated the device detail layout to group device-specific information under a "Device" category.
Added a circular background with device-specific color behind the device icon.
Moved hardware, support status details to the Device section.

* Refactor: Move device hardware logic to MetricsViewModel

Moves the logic for retrieving device hardware information and image resources from NodeDetail to MetricsViewModel.

Also replaces id lookup with when statement for image resource id mapping.

* fix: cache deviceHardwareList, add exception handling

* refactor: mutable list unnecessary

* default to hw_unknown device image
2024-12-10 12:02:57 -03:00
renovate[bot]
f08916764c chore(deps): update nav_version to v2.8.4 2024-12-07 08:49:41 -03:00
renovate[bot]
6d629b4985 chore(deps): update com.android.tools.build:gradle to v8.7.3 2024-12-07 08:39:54 -03:00
andrekir
1ea55b2209 refactor: move ignore node to is_ignored field in NodeInfo 2024-12-07 08:18:18 -03:00
andrekir
4a1319a645 refactor: replace user with node in Message model 2024-12-05 19:50:15 -03:00
andrekir
746f155a99 feat: add Public Key to node key status dialog 2024-12-05 19:45:34 -03:00
andrekir
94dc3dead1 feat: add EnvironmentMetrics radiation to node detail 2024-12-05 19:39:37 -03:00
andrekir
7c63d0fe2b chore: stop tracking Project_Default.xml 2024-12-05 09:48:21 -03:00
andrekir
b4aa4896d8 2.5.13 2024-12-03 19:21:43 -03:00
andrekir
bf2d8c99d8 feat: update Slovak localization strings 2024-12-03 19:21:07 -03:00
andrekir
dd3a77e2f7 feat: add reaction dialog with grouped emojis and user list 2024-12-03 17:47:22 -03:00
andrekir
797fc67982 refactor: move reaction button to MessageItem 2024-12-03 15:58:43 -03:00
andrekir
f9424f2abc feat: add Alert Bell to Quick Chat actions
closes #972
2024-12-03 10:23:27 -03:00
andrekir
ca8a49d862 fix: enforce single-line NodeSignalQuality text 2024-12-03 10:23:27 -03:00
andrekir
9cb7f89315 refactor: start DeviceMetrics chart at current time 2024-12-03 10:23:26 -03:00
andrekir
76454cc802 fix: missing radio config import/export buttons 2024-12-03 09:21:06 -03:00
andrekir
49ac8a432d fix: hide keyboard on send text message 2024-12-03 09:17:54 -03:00
andrekir
96087cca59 refactor: move message files to separate package 2024-12-03 09:14:32 -03:00
James Rich
2234f5a713
feat: add emoji reactions to message bubbles (#1421)
* Add tapback emojis to message bubbles

Added TapBackEmojiItem composable to display tapback emojis.
Included it in MessageItem composable for incoming messages.
Added a FlowRow to show tapback emojis below the message bubble.

* feat: Add EmojiPicker View

* feat: show emojis for local messages

* feat: Add emoji tapbacks to messages

This commit introduces the ability to send and receive emoji tapbacks for messages.

- Adds emoji and replyId fields to DataPacket.
- Adds emoji tapback support to the MeshService
- Modifies UIState to handle emojis in message lists.

* feat: store tapbacks in database

Store tapbacks in the database and display them in the message list.
- Add a new table to the database to store tapbacks.
- Add a new DAO method to insert and retrieve tapbacks.
- Update the message list UI to display tapbacks.

* refactor: relation db and other changes

---------

Co-authored-by: Andre K <andrekir@pm.me>
2024-12-03 08:57:35 -03:00
Robert-0410
b3f4929cf4
feat: Scrollable x axis (#1445)
* Started horizontal scrolling for DeviceMetrics. Drawing lines based on the TimeFrame and setting the dp.

* Wrote YAxisLabels(), it will replace the Y labels portion of the ChartOverlay(). The composable works for either side of the graph.

* Wrote HorizontalLinesOverlay(), it will replace the horizontal lines portion of the ChartOverlay().

* Updated the data points to use their actual x values.

* Based the width of the scrollable graph on time.

* Added a date label to the TimeAxisOverlay.
2024-12-01 07:22:54 -03:00
Andre K
3c581f81a8
refactor: migrate MessagesFragment to Compose (#1444) 2024-11-30 23:20:09 -03:00
andrekir
5d3b36532f refactor: move dialog into NodeKeyStatusIcon component 2024-11-30 21:10:54 -03:00
andrekir
c02a30cff9 2.5.12 2024-11-30 15:12:18 -03:00
andrekir
6117862e01 feat: update Crowdin localization strings 2024-11-30 15:11:24 -03:00
andrekir
f4c24dbfff fix: enforce SignalInfo single-line layout
closes #1441
2024-11-30 14:19:39 -03:00
draen
e412faecb9
feat: Copy message to clipboard (#1443) 2024-11-30 14:19:01 -03:00
Espié.R
d76eac258b
feat: add text/plain intent to send message (#1389) 2024-11-30 14:12:08 -03:00
andrekir
716a3f535f refactor: decouple NavGraph from ViewModel and NodeEntity 2024-11-30 08:05:48 -03:00
andrekir
6678df78b0 fix: text messages sent from connected standalone devices 2024-11-30 07:43:56 -03:00
andrekir
08b280d68b chore: update proto submodule to v2.5.15 2024-11-30 07:41:14 -03:00
andrekir
44d195a4a5 refactor: Messages navigation to single contactKey argument 2024-11-28 08:45:44 -03:00
andrekir
1c42bd262f fix: notification intents with immutable flags 2024-11-28 08:41:58 -03:00
andrekir
06f09c4d7d 2.5.11 2024-11-26 09:59:30 -03:00
andrekir
174a4d0771 refactor: ensure node database flows on IO thread 2024-11-26 09:57:23 -03:00
andrekir
1d1b2bc542 feat: update Crowdin localization strings 2024-11-26 09:22:25 -03:00
andrekir
6230f13bff refactor: add custom formatting to LocalStats fields 2024-11-26 09:00:44 -03:00
andrekir
1219d3037e chore: add GPL-3.0 license headers to source files 2024-11-26 08:54:18 -03:00
andrekir
4e9055c9b1 fix: update channel URL to match channel selection 2024-11-25 20:09:50 -03:00
Tom Fifield
65d832ef99
Change max message length to 200 (#1429) 2024-11-25 19:57:10 -03:00
andrekir
c4b07af408 feat: add EnvironmentMetrics distance, lux, wind and weight to node detail
closes #1399
2024-11-23 07:16:35 -03:00
andrekir
80f8f2a591 refactor: implement repository pattern replacement for AIDL methods 2024-11-21 20:30:25 -03:00
andrekir
f73d909cd0 refactor: consolidate QR code scanning methods 2024-11-21 10:32:37 -03:00
Robert-0410
75003bb6f0
feat: Signal Quality in NodeItem (#1425)
* Composable that provides the snr and rssi within a row, along with docs for the two exposed functions in LoraSignalIndicator.kt.

* Fancied up the signal data within the NodeItem.
2024-11-21 07:52:54 -03:00
renovate[bot]
c7841b18e7 chore(deps): update gradle to v8.11.1 2024-11-21 07:41:29 -03:00
renovate[bot]
f9c9bc7611 chore(deps): update plugin com.google.devtools.ksp to v2.0.21-1.0.28 2024-11-21 07:30:58 -03:00
andrekir
e33cf85df6 refactor: migrate DebugPanel to Compose 2024-11-19 17:07:51 -03:00
andrekir
91c8c7809a fix: six-month comparison logic in PositionLog 2024-11-19 15:18:51 -03:00
andrekir
ab613d07b4 2.5.10 2024-11-19 12:10:39 -03:00
andrekir
34936708f9 feat: update Crowdin localization strings 2024-11-19 12:07:09 -03:00
Andre K
475e9fc22c
refactor: migrate QuickChat to Compose (#1419) 2024-11-19 11:59:28 -03:00
andrekir
4855576248 refactor: ensure NetworkRepository flows on IO thread 2024-11-19 10:53:27 -03:00
andrekir
c70b0d512a fix: remove SelectionContainer from NodeItem
Removes `SelectionContainer` from `LazyColumn` items causing a crash when calculating positions between nodes that are no longer part of the same layout hierarchy, resulting in:

Fatal Exception: java.lang.IllegalArgumentException: layouts are not part of the same hierarchy
       at androidx.compose.ui.node.NodeCoordinator.findCommonAncestor$ui_release(NodeCoordinator.kt:1210)
...

closes #1408
2024-11-19 10:43:17 -03:00
James Rich
158e67f859
Fix: Deduplicate position logs (#1417)
Deduplicate position logs by filtering out duplicates based on time and location.
2024-11-19 10:41:33 -03:00
James Rich
fb04805255
Fix: Show 'unknown' for position logs older than 6 months (#1416)
* Fix: Show 'unknown' for position logs older than 6 months

Display 'unknown' instead of the timestamp for position logs older than 6 months. This addresses an issue where unknown timestamps were incorrectly shown as 1970 (unix epoch).

* Fix: make detekt happy

* Replace "Unknown" with "Unknown Age" in position logs

The text displayed for positions older than six months in position logs has been changed from "Unknown" to "Unknown Age". This update adds clarity and context to the age of positions in the log.
2024-11-19 10:29:44 -03:00
renovate[bot]
2bef2ee5bd chore(deps): update androidx.compose:compose-bom to v2024.11.00 2024-11-19 10:23:28 -03:00
renovate[bot]
3dea4cf605 chore(deps): update gradle to v8.11 2024-11-19 10:03:17 -03:00
renovate[bot]
cc24154d4e chore(deps): update androidx.work:work-runtime-ktx to v2.10.0 2024-11-19 09:59:44 -03:00
renovate[bot]
b3654a00a3 chore(deps): update androidx.core:core-ktx to v1.15.0 2024-11-19 09:50:59 -03:00
andrekir
bcc131e369 fix: missing string resource positional arguments 2024-11-15 08:13:38 -03:00
andrekir
9accbd2181 2.5.9 2024-11-15 07:51:47 -03:00
andrekir
0aa29e15ce feat: update Crowdin localization strings 2024-11-15 07:41:01 -03:00
andrekir
ee75ba3392 feat: pass users preferred tile source to MapViews 2024-11-15 07:10:01 -03:00
andrekir
aeedd4de43 feat: add tile source parameter to MapViewWithLifecycle 2024-11-15 06:52:45 -03:00
andrekir
30b7cc90ce feat: add new NeighborInfo config 2024-11-15 06:51:32 -03:00
andrekir
02af81aeb0 fix: nodelist sort by viaMqtt 2024-11-15 06:49:40 -03:00
andrekir
1a86de224d chore: update proto submodule to v2.5.13 2024-11-15 06:22:55 -03:00
Robert-0410
013e3de792
refactor: Conducting time filter at the component lvl to avoid metric nav cards from being disabled when we don't have recent data (#1402) 2024-11-13 07:24:40 -03:00
Abdelkader Boudih
f6af9b8782
fix: rename to quadraticTo for consistancy (#1397) 2024-11-13 07:21:22 -03:00
Andre K
a6e7a0ef4f
feat: add meshtastic service type to mDNS service discovery (#1401) 2024-11-12 17:14:58 -03:00
andrekir
d324f77d63 refactor: simplify ElevationInfo component 2024-11-12 09:40:57 -03:00
andrekir
f38a7ac0de refactor: maintain NodeMenu item order for consistency 2024-11-12 09:24:37 -03:00
andrekir
cfdb245da2 refactor: convert connectionState to StateFlow 2024-11-12 09:15:45 -03:00
andrekir
a980441fd1 refactor: move ignoreIncoming logic to ViewModel 2024-11-12 08:47:17 -03:00
andrekir
417523967e fix: move device list sorting to ViewModel 2024-11-11 18:31:26 -03:00
Robert-0410
7e54ad950c
feat: Metrics time selection (#1396) 2024-11-11 17:54:26 -03:00
andrekir
5480174ec9 fix(config): respect enabled parameter for Send button 2024-11-11 17:27:03 -03:00
andrekir
683b354dd4 feat: add optional summary text to SwitchPreference 2024-11-11 17:08:24 -03:00
andrekir
1d992d5caf fix: convert SNR values to Float for decimal precision 2024-11-11 16:41:06 -03:00
andrekir
1ae65ef267 refactor: pass nav args to ViewModel using SavedStateHandle 2024-11-10 07:45:25 -03:00
andrekir
296f1944b7 refactor: migrate Compose navigation to type-safe args 2024-11-10 07:45:25 -03:00
andrekir
e72940245c feat: persist node filters to SharedPreferences
closes #1392
2024-11-10 06:18:21 -03:00
James Rich
2d2d94924b
refactor: Migrate Node dropdown menu to Compose (#1386) 2024-11-09 08:14:40 -03:00
renovate[bot]
3f9b56a97d chore(deps): update plugin com.google.devtools.ksp to v2.0.21-1.0.27 2024-11-09 08:04:37 -03:00
renovate[bot]
cdee578e08 chore(deps): update com.android.tools.build:gradle to v8.7.2 2024-11-09 07:55:18 -03:00
andrekir
75f4427b72 revert: unintended library version bump
reverts d7e2505182
2024-11-09 06:52:21 -03:00
andrekir
d7e2505182 2.5.8 2024-11-09 06:09:47 -03:00
andrekir
d1d224377f feat: update Crowdin localization strings 2024-11-09 06:09:10 -03:00
andrekir
b053f1afda refactor: extract map defaults to MapViewWithLifecycle 2024-11-09 05:34:14 -03:00
Andre K
227c65f191
feat: node map position history log (#1384) 2024-11-06 11:00:38 -03:00
andrekir
a8c810bae2 feat: add DeviceConfig RebroadcastMode descriptions 2024-11-06 10:22:31 -03:00
andrekir
336b05236c refactor: position log text size and weight 2024-11-06 10:22:31 -03:00
andrekir
da77cf515f refactor: hide true 0 hopsAway text 2024-11-06 10:22:30 -03:00
andrekir
2f7b5aa22b chore: update proto submodule to v2.5.11 2024-11-06 09:07:19 -03:00
James Rich
80e915a36c
feat: show unique messaging notifications per contact (#1381)
* Show unique notifications per contact

Instead of a single notification for all messages, each contact now has its own, unique notification. This uses the `NotificationCompat.MessagingStyle` and the contact's name to create distinct notifications, enhancing message organization.

* feat: Add notification tap action to open contacts tab

This is done by:
- Adding an intent extra to the notification with the contact key for future use to navigate to the message thread.
- Adding a new action to the MainActivity to handle the intent.
- Updating the message notification to include the intent.

* Open message notification to the correct conversation

Adds an extra to the message notification intent to open the correct conversation. This ensures that when a user taps on a message notification, they are taken to the conversation with the sender of that message.
2024-11-04 19:05:39 -03:00
andrekir
eea62e6533 feat: add map ScaleBarOverlay 2024-11-04 17:52:27 -03:00
andrekir
c6cc33e16c refactor: extract MapView extensions from MapFragment 2024-11-04 17:50:34 -03:00
andrekir
63513a56a1 chore: update compileSdk to API 35 2024-11-04 13:00:04 -03:00
andrekir
d4137a7dc4 refactor: scale requiredZoomLevel() by 0.8 to improve fit 2024-11-04 12:57:00 -03:00
andrekir
45d3741124 refactor: map buttons 2024-11-04 12:52:32 -03:00
andrekir
3bfbe12fd9 fix: PowerMetrics voltage to display 2 decimals 2024-11-04 12:25:57 -03:00
andrekir
4e30172f3c 2.5.7 2024-11-03 07:46:15 -03:00
andrekir
1e12298f3a feat: update Crowdin localization strings 2024-11-03 07:05:45 -03:00
andrekir
1c91df4e67 fix: check for admin key before enabling managed mode 2024-11-03 06:57:29 -03:00
andrekir
414e0bb544 fix: clear public keys if the user is licensed 2024-11-03 06:48:32 -03:00
andrekir
adbe5952fc feat: position logs 2024-11-02 17:22:54 -03:00
andrekir
26f210047d refactor: split MetricsViewModel state updates
- Consolidates `MetricViewModel` back to a single state flow
- Introduces a `MutableStateFlow` for state updates, allowing more independent control
- Moves `Telemetry`, `MeshPacket`, and config updates into separate coroutines
2024-11-02 09:46:15 -03:00
andrekir
dcd5ca1c8e fix: add missing PortNum for traceroute results 2024-11-02 06:21:32 -03:00
andrekir
b321e5393d refactor(contacts): move padding to contentPadding in LazyColumn 2024-11-02 06:18:40 -03:00
andrekir
f2511f814c fix: getNumber exception for unrecognized RegionCode entries
Fatal Exception: java.lang.IllegalArgumentException: Can't get the number of an unknown enum value.
2024-11-02 06:16:33 -03:00
andrekir
605ef120c9 fix: remove build timestamp (breaking reproducible builds)
reverts 9f099f3edf
2024-11-02 06:13:36 -03:00
andrekir
1aa0b138fc refactor(config): extract components from NavGraph to screens 2024-10-31 19:45:27 -03:00
andrekir
74ae3fd594 refactor(config): move connectionState to RadioConfigState 2024-10-31 19:45:27 -03:00
renovate[bot]
150249ab3e chore(deps): update androidx.compose:compose-bom to v2024.10.01 2024-10-31 19:36:09 -03:00
renovate[bot]
92d658d88f chore(deps): update androidx.constraintlayout:constraintlayout to v2.2.0 2024-10-31 19:27:12 -03:00
renovate[bot]
f0d84c81ed chore(deps): update lifecycle_version to v2.8.7 2024-10-31 19:20:06 -03:00
renovate[bot]
d56af044eb chore(deps): update androidx.fragment:fragment-ktx to v1.8.5 2024-10-31 19:12:24 -03:00
renovate[bot]
8cb5b6a05a chore(deps): update com.github.mik3y:usb-serial-for-android to v3.8.1 2024-10-31 19:04:56 -03:00
andrekir
b668a21b68 refactor: move node detail logs to shared ViewModel 2024-10-30 18:53:44 -03:00
MrLinusMeow
e7b30597b7
docs: Updated build instructions in README.md (#1337)
Removed '#Build instructions' and '#Analytics setup'. It was replaced with link to "Building the Android App" to make it more centralized;
2024-10-29 13:36:39 -03:00
andrekir
6526c91f3a fix: contact placeholder date when time is zero 2024-10-29 08:15:50 -03:00
andrekir
be445d7ed7 2.5.6 2024-10-29 07:42:32 -03:00
andrekir
1e081b4b30 refactor: improve handling for old firmware 2024-10-29 07:41:39 -03:00
andrekir
0832803c84 feat: update Crowdin localization strings 2024-10-29 07:24:40 -03:00
andrekir
f721f3b423 chore: update proto submodule to v2.5.8 2024-10-29 07:19:33 -03:00
andrekir
b91a6d8388 refactor(traceroute): unified route methods for consistency 2024-10-27 10:31:58 -03:00
andrekir
8af31bb0d0 fix(traceroute): route lists cleared before use are always empty
fixes #1355
2024-10-27 10:16:17 -03:00
andrekir
6f7a847957 chore: remove unused resources 2024-10-26 06:31:15 -03:00
andrekir
d19b86b3a5 2.5.5 2024-10-26 05:58:21 -03:00
andrekir
cfb38e9951 feat: add option to delete traceroute log 2024-10-26 05:57:18 -03:00
L. Pereira
abb4db8faf
feat: Short duration for the "notification permissions denied" snackbar (#1346) 2024-10-26 05:55:21 -03:00
andrekir
26ca4af568 refactor: move Message date formatting to ViewModel 2024-10-26 05:44:59 -03:00
andrekir
76ea419313 feat: update Crowdin localization strings 2024-10-26 05:42:53 -03:00
andrekir
e682254fe3 chore: remove unused resources 2024-10-26 05:42:25 -03:00
James Rich
6447485199 fix: set user.id in NodeDb getUser
This commit updates the `getUser` function in `NodeDB` to set the ID of the user when creating a new `User` object, ensuring that the user ID is always populated.

Additionally, it refactors the `Message` class to use the proto `User` object instead of the `MeshUser` class. This change simplifies the code and improves consistency by utilizing the proto definition for user information.
2024-10-26 05:32:30 -03:00
andrekir
61906839af 2.5.4 2024-10-25 08:16:12 -03:00
Andre K
a557bff3d7
feat: traceroute log (#1348) 2024-10-25 08:14:32 -03:00
andrekir
a3b4b70db9 fix(metrics): replace telemetry times with receive time 2024-10-25 07:55:47 -03:00
andrekir
5cf9741b13 refactor: unified getUser repository call for convention 2024-10-25 07:50:34 -03:00
renovate[bot]
e05c35afc2 chore(deps): update plugin com.google.devtools.ksp to v2.0.21-1.0.26 2024-10-25 07:32:31 -03:00
renovate[bot]
c455646f2b chore(deps): update protobuf_version to v4.28.3 2024-10-25 07:24:24 -03:00
renovate[bot]
095f1189c5 chore(deps): update com.google.firebase:firebase-bom to v33.5.1 2024-10-25 07:16:55 -03:00
andrekir
9f099f3edf feat: replace invalid MeshPacket times (earlier than build time) 2024-10-23 19:20:28 -03:00
andrekir
199b9a29d5 refactor: extract traceroute text from MeshService 2024-10-23 19:05:43 -03:00
andrekir
eb80d419eb refactor(logs): add optional portNum parameter to getMeshPacketsFrom 2024-10-23 18:10:08 -03:00
andrekir
fa24dd43b8 refactor: update signalMetrics filter for 0 hop packets 2024-10-23 17:49:47 -03:00
Robert-0410
bb345e7437
feat: Signal Metrics (#1340) 2024-10-23 17:31:31 -03:00
andrekir
551f5c9fc5 refactor: replace InfoCard Painter with ImageVector icons 2024-10-22 12:14:02 -03:00
andrekir
7289896956 refactor: remove largeIcon from notifications 2024-10-22 12:13:34 -03:00
andrekir
3ac0e8c28e refactor: extract NavGraph from RadioConfig 2024-10-21 06:07:28 -03:00
renovate[bot]
b748c124ab chore(deps): update androidx.compose:compose-bom to v2024.10.00 2024-10-20 07:44:42 -03:00
renovate[bot]
4eddf95af1 chore(deps): update androidx.core:core-location-altitude to v1.0.0-alpha03 2024-10-20 07:37:45 -03:00
renovate[bot]
8b08749747 chore(deps): update com.android.tools.build:gradle to v8.7.1 2024-10-20 07:28:19 -03:00
renovate[bot]
93043f7cea chore(deps): update plugin com.google.devtools.ksp to v2.0.21-1.0.25 2024-10-20 07:18:59 -03:00
renovate[bot]
65863542d1 chore(deps): update kotlin_version to v2.0.21 2024-10-20 07:07:26 -03:00
andrekir
8df1634fd6 fix: metrics field validation and current unit (mA) 2024-10-20 06:39:27 -03:00
andrekir
97238ce9ab 2.5.3 2024-10-19 13:46:12 -03:00
andrekir
8af78bc2eb fix(config): show error when radio disconnects before receiving confirmation 2024-10-19 13:29:39 -03:00
andrekir
abcc2e89ec fix(config): move confirmation dialog back to NavHost 2024-10-19 13:29:09 -03:00
andrekir
c98a5c7caf feat: add info cards for environment and power metrics 2024-10-19 13:28:16 -03:00
andrekir
46b3146d6d feat: update Czech localization strings 2024-10-19 05:08:43 -03:00
andrekir
1b1f454b72 feat: add RegionCode for Philippines
https://github.com/meshtastic/firmware/pull/4951
2024-10-19 05:03:43 -03:00
andrekir
d19ddc2d94 feat: add icons to config navigation cards 2024-10-19 05:02:37 -03:00
andrekir
7d08f28118 chore: update proto submodule to v2.5.7 2024-10-19 05:01:17 -03:00
andrekir
6be44675e2 feat: add NodeDetailsScreen with metrics and remote admin navigation 2024-10-18 20:09:37 -03:00
James Rich
b73c53bc11
feat: Add Chronometer and Timestamp to Service Notification (#1327)
Adds a chronometer to the service notification, counting down to the next stats update.
Also adds timestamps to the service notification, message notification, and new node seen notification.
2024-10-18 12:46:56 -03:00
andrekir
85b0cda109 refactor(config): move DeviceProfile data to local variable 2024-10-18 12:39:23 -03:00
andrekir
d10b58073c refactor(config): extract screen logic from NavHost 2024-10-18 12:39:23 -03:00
andrekir
42f9ef24fd refactor(config): move destination node logic to ViewModel 2024-10-18 12:39:23 -03:00
andrekir
2fab9d83f8 refactor(config): move navigation route logic to ViewModel 2024-10-18 12:39:23 -03:00
andrekir
700d8d3460 2.5.2 2024-10-15 06:36:21 -03:00
andrekir
cd5481b549 refactor: remove Scaffold from ChannelFragment 2024-10-15 06:12:35 -03:00
James Rich
f6ec3e8bab
feat: Add notification for new node seen (#1316)
* Add notification for new node seen

This change adds a new notification that is displayed when a new node is seen.
The notification includes the node's
 name.
It also updates the message notification to include the node name.

* Show individual notification for each new node

* Add new nodes notifications

Adds a new notification channel for new nodes seen.
This channel is set to high importance with sound and light.
2024-10-15 06:07:22 -03:00
andrekir
af56fff216 fix: position packet want_response handling
Process valid position broadcasts with `want_response` true except from position requests with an empty payload (latitude and longitude are zeroes).
2024-10-14 18:26:59 -03:00
andrekir
eacf3a87a0 feat: create NodeEntity.isUnknownUser property 2024-10-14 17:20:06 -03:00
Andre K
2050cd0b4b
chore: simplify mock google-services.json workflow (#1313) 2024-10-14 08:13:35 -03:00
andrekir
fe56d257f5 chore: add detekt formatting rule set
https://detekt.dev/docs/next/rules/formatting/
2024-10-14 07:56:29 -03:00
renovate[bot]
056d4a5829 chore(deps): update com.android.tools.build:gradle to v8.7.0 2024-10-13 08:49:19 -03:00
renovate[bot]
9dabd4a04b chore(deps): update org.jetbrains.kotlinx:kotlinx-coroutines-android to v1.9.0 2024-10-13 08:36:57 -03:00
renovate[bot]
44a98db6c0 chore(deps): update com.google.firebase:firebase-bom to v33.4.0 2024-10-13 08:30:39 -03:00
Matthew Bogner
df7ce09fdb
feat: sort device list while keeping None (Disabled) at the top of the list (#1309)
Signed-off-by: Matthew Bogner <matt@ibogner.net>
2024-10-13 08:23:55 -03:00
James Rich
86dc8f2b1c
Replace "unknown" with "?" for unknown hop count (#1308)
This commit replaces the string "unknown" with a question mark ("?") when displaying the hop count for a
 node if the hop count is unknown (-1). This provides a more concise and visually clear indication of an unknown hop count.
2024-10-13 08:17:21 -03:00
James Rich
38942ec557
Add local device stats to the service notification (#1307)
This commit adds the local device stats to the service notification. This information includes the number of online and total nodes, as well as other local stats. It also updates the notification summary and adds local stats telemetry handling.
2024-10-13 08:10:28 -03:00
andrekir
b503c10789 refactor: finish transition from NodeInfo to NodeEntity 2024-10-12 07:14:59 -03:00
James Rich
ed2703c77a fix: Correctly compare hopStart and hopLimit for received packets
fixes: #1304

The calculation of `hopsAway` was using an incorrect comparison between `hopStart` and `hopLimit`. This commit fixes the logic to correctly determine the number of hops a packet has traveled.
2024-10-12 06:20:46 -03:00
James Rich
cf2315cb66
Sort nodes with unknown hops last (#1302)
Nodes with -1 hops (unknown) are now sorted last when sorting by hops_away. This ensures a more intuitive ordering
 in the UI.
2024-10-11 07:54:06 -03:00
James Rich
9bd84d3fc0
refactor: Improve IAQ display to add ranges, update colors (#1300)
* Refactor: Improve IAQ display and add ranges

Adds IAQ ranges to the `Iaq` enum and updates the display to show the ranges alongside the
 descriptions, improving clarity for users.

This change enhances the indoor air quality information by providing context for the different IAQ levels.

* Refactor: Improve IAQ color scheme and add range to description

This commit refactors the Indoor Air Quality (IAQ) component by:

- Updating the color scheme to better reflect air quality levels, using a more standardized and recognizable color palette.
- Adding the IAQ range to the description, providing more context and clarity to the user.
- Adding a preview for the IAQ scale.
- Minor code cleanup and improvements.
2024-10-11 07:46:54 -03:00
andrekir
b857cdda01 2.5.1 2024-10-10 11:06:06 -03:00
andrekir
ad3c0d15ba feat: update Crowdin localization strings 2024-10-10 11:01:43 -03:00
andrekir
45730838e5 feat: adjust map MaxClusteringZoomLevel and zoomOnCluster scale 2024-10-10 11:01:43 -03:00
andrekir
8ab6611ad6 fix(map): boxOverlayListener handling 2024-10-10 11:01:43 -03:00
andrekir
54b59fdb97 fix: DropDownPreference exception when item is not found 2024-10-10 11:01:42 -03:00
andrekir
aa84d47375 feat: add fixed_position to config import/export 2024-10-10 10:54:14 -03:00
andrekir
0062d38c8b feat: add option for 3 admin keys in SecurityConfig 2024-10-09 19:26:48 -03:00
James Rich
ebe0aeec14
Adds support for known 0 hopsAway (#1295) 2024-10-09 17:04:05 -03:00
andrekir
9cce785556 feat: add RegionCode descriptions to region selection
closes #987
2024-10-09 16:43:05 -03:00
andrekir
23f05c109b fix: remote admin backward compatibility
- only use PKC encryption when the remote node has a public key (2.5 -> 2.5)
- fall back to legacy admin if public key is not available (2.5 -> 2.4)
2024-10-08 08:29:23 -03:00
Robert-0410
3473ef343a
Small improvement to the pi approximation (#1292) 2024-10-08 07:10:34 -03:00
andrekir
921f5eb880 chore: add @Preview for IndoorAirQuality 2024-10-06 11:14:06 -03:00
andrekir
0e161d64b3 style: unify AlertDialog shape, background and buttons 2024-10-06 08:52:00 -03:00
andrekir
8af225b998 feat: add new remote admin routing errors 2024-10-06 08:36:22 -03:00
andrekir
fe79c9f33d fix: DetectionSensorConfig trigger protobuf change
reference: https://github.com/meshtastic/protobufs/pull/582
2024-10-06 07:27:02 -03:00
andrekir
45991c40be chore: update proto submodule to latest 2024-10-06 07:18:43 -03:00
andrekir
c6e72206ea 2.5.0 2024-10-06 05:49:11 -03:00
andrekir
4658e562d5 fix: background, title and buttons for EditWaypointDialog 2024-10-06 05:43:44 -03:00
andrekir
d9a9d750de fix: map cluster initialization and marker updates
- prevents duplicate `RadiusMarkerClusterer` overlays
- adds cluster `invalidate()` after marker updates
2024-10-06 05:43:27 -03:00
andrekir
be6ea79c04 refactor(map): set fixed maxZoomLevel (20.0) 2024-10-05 10:06:04 -03:00
andrekir
625bc6837b fix(map): generateBoxOverlay event listener 2024-10-05 09:30:40 -03:00
andrekir
ed1ce77608 refactor(map): wrap variables with remember 2024-10-05 09:26:25 -03:00
danwelch3
48365218e2
feat(map): implement marker clustering (#1287) 2024-10-05 08:59:35 -03:00
James Rich
f689d772d6
fix: Add elevation to NodeItem card (#1286)
This commit adds elevation to the NodeItem card to visually distinguish it.
2024-10-03 19:55:42 -03:00
andrekir
7da2dd8bb7 fix: lock icon colors for better visibility in light theme 2024-10-03 18:30:00 -03:00
James Rich
f944a236ac
feat: Adds Request user info (#1279)
* Request user info

* safe calls

* Fix: Ensure NodeInfo is sent when requesting user info

The `requestUserInfo` function now correctly sends `NodeInfo` when requesting user info by using the `
toNodeInfo()` method on `ourNodeInfo`. This ensures the recipient receives the necessary information.

* fix: remove unused parameters, use service's node db for our node entity

---------

Co-authored-by: musznik <bymucha@gmail.com>
2024-10-03 05:02:13 -03:00
andrekir
83c3b484ad 2.4.17 2024-10-02 20:51:06 -03:00
andrekir
43ae71b10d feat: update Crowdin localization strings 2024-10-02 20:50:04 -03:00
renovate[bot]
d81407d2c6 chore(deps): update nav_version to v2.8.2 2024-10-02 20:30:18 -03:00
renovate[bot]
027dcf5397 chore(deps): update androidx.fragment:fragment-ktx to v1.8.4 2024-10-02 20:23:05 -03:00
renovate[bot]
9e0048d5a9 chore(deps): update androidx.compose:compose-bom to v2024.09.03 2024-10-02 20:14:54 -03:00
andrekir
c0692b80ec refactor: remove legacy BLE characteristic 2024-10-02 20:00:02 -03:00
andrekir
ffb402acde feat: add demo mode for testing and review purposes
- Activates by tapping "None (disable)" 7 times.
- Displays a confirmation message when `Demo Mode` is enabled.
- Simulates a connection to a Meshtastic device and allows the app to function without requiring real hardware.
2024-10-02 19:58:11 -03:00
andrekir
16e91c0ebf refactor: sync isOnline status with firmware (2 hours) 2024-10-02 17:03:36 -03:00
andrekir
0a1f129403 refactor: add parameter for customizable text link styles 2024-10-02 17:01:11 -03:00
Andre K
c30ee2f55f
refactor: replace MyNodeInfo with MyNodeEntity (#1277) 2024-10-02 06:18:30 -03:00
andrekir
d89d4b7baa refactor: replace AutoLinkText in MessageItem 2024-10-01 20:02:06 -03:00
andrekir
ad55d6a18e refactor: replace AutoLinkText library with component
- replaces deprecated `ClickableText` with `LinkAnnotation`.
- uses LinkifyCompat for URL, email, and phone number detection.

closes #1267
2024-10-01 19:51:48 -03:00
andrekir
cca06784fc feat: add PowerMetrics data to nodes telemetry
closes #994
2024-10-01 19:50:03 -03:00
andrekir
7eca16caeb 2.4.16 2024-09-30 19:42:44 -03:00
andrekir
8c4656e0db feat: update Crowdin localization strings 2024-09-30 19:38:58 -03:00
andrekir
3bd4132089 feat: preserve map center and zoom state in ViewModel
closes #1150
2024-09-30 19:14:22 -03:00
andrekir
bfa2eaef11 fix: PKC channel index in sent MeshPackets 2024-09-30 15:27:55 -03:00
andrekir
cec234b58a refactor: RegularPreference using adaptive layout 2024-09-29 22:24:53 -03:00
andrekir
2897058697 feat: remove deprecated protobufs from DropDownPreference 2024-09-29 19:32:09 -03:00
DJ Holt
a358b8cb11 Complete request future if response is a ClientNotification 2024-09-29 07:28:58 -03:00
andrekir
94c40367f2 2.4.15 2024-09-28 09:14:34 -03:00
renovate[bot]
831dceccb4 chore(deps): update gradle to v8.10.2 2024-09-28 09:13:28 -03:00
renovate[bot]
adfa635ba7 chore(deps): update com.android.tools.build:gradle to v8.6.1 2024-09-28 09:08:50 -03:00
andrekir
2370e8b596 feat: add DeviceConfig Role descriptions
closes #848
2024-09-28 09:00:25 -03:00
andrekir
59e25a7791 feat: update Crowdin localization strings 2024-09-28 08:22:30 -03:00
andrekir
96a69b7398 fix: position handling when fixed_position is enabled
closes #1265
2024-09-28 08:19:09 -03:00
andrekir
3c22272d23 refactor: add option for custom ByteString key generation 2024-09-28 08:19:08 -03:00
andrekir
3c0fd03555 refactor: base preference with horizontal layout and summary 2024-09-27 22:23:53 -03:00
andrekir
717c932ae2 refactor(MeshLog): add fields for query optimization
- Adds `from_num` and `port_num` fields as indices to the `MeshLog` entity to improve query performance.
- Sets default values for new columns for auto-migration and backward compatibility.
2024-09-26 05:55:38 -03:00
andrekir
a075dfbd3a feat: add dialog for message status information 2024-09-24 22:06:15 -03:00
andrekir
056f6b28cf fix: set opaque background for SimpleAlertDialog 2024-09-24 09:33:53 -03:00
andrekir
4f0652ad9f fix: remove node from service database in removeByNodenum 2024-09-24 07:53:09 -03:00
andrekir
e5b229e6ff fix: handle RemoteException in setConfig and setChannel 2024-09-24 07:44:25 -03:00
andrekir
b53a5f2e17 2.4.14 2024-09-23 10:20:51 -03:00
andrekir
22b1cf0f16 feat: add encryption status icon and dialog to node list items 2024-09-23 10:13:27 -03:00
andrekir
587c6c91f4 refactor: ensure backward compatibility for PKC encryption 2024-09-22 23:01:33 -03:00
renovate[bot]
6e2848a54a chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.3 2024-09-22 07:29:42 -03:00
andrekir
83dc389d6d refactor(NodeItem): replace NodeInfo with NodeEntity 2024-09-21 16:47:20 -03:00
andrekir
89a3171b58 fix(config): admin requests confirmation handling 2024-09-21 08:35:21 -03:00
Andre K
f941d32758 chore: add Compose material-icons-extended dependency 2024-09-20 22:14:18 -03:00
renovate[bot]
b05122563a chore(deps): update androidx.compose:compose-bom to v2024.09.02 2024-09-20 22:14:18 -03:00
andrekir
5258bd4f2d 2.4.13 2024-09-20 06:08:25 -03:00
Andre K
36a13d7687
fix(conifg): implement sessionPasskey handling for admin requests (#1263) 2024-09-20 06:07:35 -03:00
andrekir
16b822cec4 2.4.12 2024-09-19 18:24:45 -03:00
andrekir
d277fe07c3 chore: re-enable code shrinking and optimization 2024-09-19 18:17:30 -03:00
andrekir
2f7502d5ad chore: anonymize ConfigProtos.Config logs 2024-09-19 18:17:30 -03:00
andrekir
8c07532995 fix(MeshService): revert nodeDBbyNodeNum to local variable
avoids performance issues causing data loss by reverting `nodeDBbyNodeNum` to a local `ConcurrentHashMap`
2024-09-19 18:17:30 -03:00
andrekir
e5d60003fc fix(PositionConfig): clear changes on cancel button click 2024-09-19 18:17:28 -03:00
DJ Holt
dc9e780663
Fix lat/lng/alt config validation errors when position is null (#1260) 2024-09-19 07:06:31 -03:00
andrekir
7be602d652 fix: remove unused dark mode color 2024-09-18 20:19:43 -03:00
andrekir
4d03bc0ecb fix: detekt errors 2024-09-18 20:09:27 -03:00
andrekir
858868fbbd 2.4.11 2024-09-18 19:52:38 -03:00
andrekir
852c6e1bc2 refactor: enable remote admin to set/remove fixed_position 2024-09-18 19:50:33 -03:00
andrekir
f8898def89 chore: remove unused resources 2024-09-18 19:48:04 -03:00
andrekir
81d8a9f93f fix(MeshService): revert myNodeInfo to local variable
avoids performance issues and simplifies state management as `MyNodeInfo` is only relevant during an active session
2024-09-18 19:46:39 -03:00
andrekir
21c1c1cbd6 refactor(LoRaConfig): add hasPaFan validation 2024-09-18 19:45:09 -03:00
James Rich
98d11115c6
feat: Add ability to display environment metrics in Fahrenheit (#1253)
* feat: Add ability to display environment metrics in Fahrenheit

The temperature values in the environment metrics charts and cards are now displayed in Fahrenheit or Celsius based on the user's preference. Celsius is still used as the base unit for calculations and storage.

* Refactor: Rename environmentDisplayTempInFahrenheit to environmentDisplayFahrenheit

Renamed the variable environmentDisplayTempInFahrenheit to environmentDisplayFahrenheit for better clarity and consistency.

* Refactor: Remove unused ENVIRONMENT_METRICS_COLORS

Removed the unused `ENVIRONMENT_METRICS_COLORS` variable from the `EnvironmentMetrics` component.

* Update: Add support for plotting iaq

Added green to the list of colors used for plotting environment metrics to support the newly added iaq readings.
2024-09-18 19:37:55 -03:00
renovate[bot]
825516e9ac chore(deps): update com.google.protobuf:protoc to v4.28.2 2024-09-18 19:09:22 -03:00
renovate[bot]
d2a548ce6c chore(deps): update nav_version to v2.8.1 2024-09-18 18:59:30 -03:00
renovate[bot]
cd79fa9177 chore(deps): update lifecycle_version to v2.8.6 2024-09-18 18:52:15 -03:00
James Rich
9b90c128fb
feat: Add IAQ to environment metrics (#1258)
Adds Indoor Air Quality (IAQ) to the environment metrics chart and card.

The IAQ is displayed as a green line on the chart and as a dot with a numerical value on the card.
The IAQ scale is available as a legend in the IAQ component.
2024-09-18 18:42:58 -03:00
Robert-0410
843e423648
Device metric lines and info dialog (#1252)
* Removed constants from CommonCharts only used in specific charts.

* Altered CommonCharts.ChartOverlay to take a list of colors for the lines. Adjusted the device metrics line colors for channel utilization.

* Started an info dialog in the device metric chart to help users better understand Meshtastic.
2024-09-18 06:57:01 -03:00
andrekir
f863f00d4a 2.4.10 2024-09-17 07:54:25 -03:00
andrekir
0b72486506 fix: deviceMetrics reference in NodeInfo.toEntity mapper 2024-09-17 07:52:34 -03:00
andrekir
b50e982049 chore: rename Node component to NodeItem for convention 2024-09-16 20:27:13 -03:00
James Rich
858544b0f4
feat: adds UI for unknown node details (#1219) 2024-09-16 20:20:20 -03:00
andrekir
e3c795d856 2.4.9 2024-09-16 19:48:03 -03:00
andrekir
24886994a6 feat: show lock icon for nodes with public keys 🔒 2024-09-16 18:44:18 -03:00
andrekir
092ed32c23 fix(LoraConfig): ensure primaryChannel updates on loraInput changes 2024-09-16 18:20:54 -03:00
andrekir
fcdf74ed94 fix: divide-by-zero in channelNum calculation 2024-09-16 18:19:42 -03:00
Andre K
396195a1b8
refactor: introduce NodeEntity protobuf-based database entity (#1250) 2024-09-16 17:57:30 -03:00
andrekir
2433cbc00a feat: show names with a lock for DMs using PKC 2024-09-16 10:30:15 -03:00
renovate[bot]
7e1ab62568 chore(deps): update protobuf_version to v4.28.1 2024-09-16 09:22:55 -03:00
DJ Holt
610e5f1049
Show results for two-way traceroute, including SNR values between hops (#1248) 2024-09-16 09:16:06 -03:00
Robert-0410
0c52bef43b
Mesh Packet Limit (#1245)
* Separated the device and environment metrics into their own files.

* Place a limit to the amount of MeshPackets we retrieve from the logs table.

* Making detekt happy with the naming.
2024-09-14 18:48:05 -03:00
andrekir
dff7221502 2.4.8 2024-09-14 18:38:31 -03:00
andrekir
ac928b40d4 fix: avoid starting FGS with location type without permission 2024-09-14 18:38:30 -03:00
andrekir
c536679762 feat: update Crowdin localization strings 2024-09-14 17:53:24 -03:00
andrekir
2ce306b5be fix(MeshService): ensure proper handling of NodeInfo user field 2024-09-14 17:48:09 -03:00
Andre K
f228c02e3a
feat: add Estonian (et) locale and translations (#1244) 2024-09-13 19:48:40 -03:00
andrekir
f0f9235223 refactor(NodeMenu): always show remote admin menu item 2024-09-13 19:19:12 -03:00
andrekir
9aaaea1898 2.4.7 2024-09-13 19:09:15 -03:00
andrekir
9a332e8367 refactor(MeshService): remove redundant updateNodeInfo call 2024-09-13 19:08:36 -03:00
andrekir
a98d3899e6 refactor(MeshService): remove discardNodeDB and simplify logic 2024-09-13 19:03:28 -03:00
andrekir
1252b67fce refactor(MeshService): update getNodes() to use nodeDBbyNodeNum 2024-09-13 18:37:10 -03:00
andrekir
52e79da803 fix(MeshService): wait for node db initialization with a timeout 2024-09-13 18:36:30 -03:00
andrekir
2a234458b5 2.4.6 2024-09-13 00:23:40 -03:00
andrekir
80eae23b3d fix: revert VERY_LONG_SLOW removal 2024-09-13 00:20:08 -03:00
andrekir
39a18e6418 refactor: replace service local node db with Room NodeDB 2024-09-13 00:19:21 -03:00
andrekir
84939a74d2 refactor: replace nodeDBbyID with getUser() function 2024-09-11 20:01:16 -03:00
andrekir
a6cfbcbfa7 refactor(saveMessagesCSV): use nodeDBbyNum map directly 2024-09-11 19:04:18 -03:00
andrekir
3a6511b7f9 refactor: unify service node DB into a single source 2024-09-11 18:59:11 -03:00
andrekir
eeb3363a88 refactor: remove NodeDB users StateFlow 2024-09-11 18:53:50 -03:00
andrekir
84cfe4f990 2.4.5 2024-09-09 20:02:35 -03:00
andrekir
41fc43b215 refactor: move ContactsFragment to main activity ViewModel 2024-09-09 20:02:34 -03:00
andrekir
7411455e17 feat: send AdminMessage set_time_only on ConfigComplete 2024-09-09 19:13:13 -03:00
andrekir
e9248c9440 refactor: remove unused firmware update code 2024-09-09 19:03:30 -03:00
andrekir
9a810885da refactor: remove redundant time check in MeshPacket handling 2024-09-09 19:02:21 -03:00
andrekir
2a58fe09c1 refactor: build MyNodeInfo hwModel from DeviceMetadata 2024-09-09 18:57:36 -03:00
andrekir
79823a5fc8 refactor: change menu_nodes item order 2024-09-09 18:54:04 -03:00
andrekir
fbebb52060 feat: add ok_to_mqtt config 2024-09-09 18:53:38 -03:00
renovate[bot]
63797ab97a chore(deps): update gradle to v8.10.1 2024-09-09 18:52:37 -03:00
andrekir
44e0f453a6 fix(SecurityConfig): update admin_key to repeated field 2024-09-09 06:43:26 -03:00
andrekir
cab2c29c25 chore: update proto submodule to v2.5.0 2024-09-09 06:20:55 -03:00
Andre K
9d5cf47762
refactor: migrate MessagesFragment RecyclerView to Compose (#1133) 2024-09-09 06:15:27 -03:00
renovate[bot]
f2b06bd8d8 chore(deps): update plugin io.gitlab.arturbosch.detekt to v1.23.7 2024-09-08 22:36:25 -03:00
renovate[bot]
3514efd189 chore(deps): update io.gitlab.arturbosch.detekt:detekt-formatting to v1.23.7 2024-09-08 22:35:23 -03:00
andrekir
175d1138e9 feat: update Crowdin localization strings 2024-09-08 09:24:00 -03:00
Andre K
51f3a3938d
feat: add Galician (gl) locale and translations (#1233) 2024-09-08 09:23:04 -03:00
andrekir
128ced64db chore(LazyColumnDragAndDropDemo): update to Compose 1.7 APIs 2024-09-08 08:43:52 -03:00
andrekir
a916871596 chore: remove MeshServiceTest 2024-09-08 08:43:50 -03:00
andrekir
8be6d74ed8 refactor: consolidate sort button into NodeFilterTextField component 2024-09-08 08:32:00 -03:00
andrekir
e89f59745d fix(nodes): force clear TextField focus on chip button click
closes #1228
2024-09-08 08:27:38 -03:00
andrekir
4dcce57d44 fix: rangetest.csv Locale formatting
closes #1223
2024-09-08 08:26:09 -03:00
renovate[bot]
469bc479d9 chore(deps): update plugin com.google.devtools.ksp to v2.0.20-1.0.25 2024-09-08 08:24:50 -03:00
renovate[bot]
ab6691c000 chore(deps): update nav_version to v2.8.0 2024-09-08 08:17:01 -03:00
renovate[bot]
d26f3996de chore(deps): update com.google.accompanist:accompanist-themeadapter-appcompat to v0.36.0 2024-09-08 08:10:38 -03:00
renovate[bot]
e3fec88238 chore(deps): update androidx.emoji2:emoji2-emojipicker to v1.5.0 2024-09-08 08:03:35 -03:00
renovate[bot]
fcdfff73f7 chore(deps): update androidx.compose:compose-bom to v2024.09.00 2024-09-08 07:56:40 -03:00
renovate[bot]
f3a1b4f4f7 chore(deps): update lifecycle_version to v2.8.5 2024-09-08 07:50:23 -03:00
renovate[bot]
f1ec4954f4 chore(deps): update androidx.fragment:fragment-ktx to v1.8.3 2024-09-08 07:44:54 -03:00
Robert-0410
2c426d470c
Refactor NodeDetails to Metrics (#1222)
* Synced the string used for ChUtil and AirUtilTX in the NodeInfo and Device Metrics.

* Refactored NodeDetails to Metrics.

* Added string resources for "Hops Away".
2024-09-08 07:36:44 -03:00
renovate[bot]
d788195340 chore(deps): update com.android.tools.build:gradle to v8.6.0 2024-09-08 07:28:28 -03:00
renovate[bot]
287d0178bc chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.2 2024-09-08 07:22:41 -03:00
renovate[bot]
6e5f7b6673 chore(deps): update protobuf_version to v4.28.0 2024-09-08 07:16:21 -03:00
andrekir
716b75c6be feat: implement AdminMessage session_passkey handling 2024-09-04 09:31:15 -03:00
andrekir
3182fad723 refactor: tag LocSource.LOC_EXTERNAL to Android GPS positions 2024-09-04 09:20:51 -03:00
andrekir
c37afe5849 refactor: extract utility functions from Map screen 2024-09-01 12:30:57 -03:00
andrekir
95f2e09217 refactor: update component to use FlowRow for RTL support 2024-09-01 12:21:55 -03:00
andrekir
3e8449ec05 refactor: rename map component to MapButton 2024-09-01 12:17:55 -03:00
andrekir
b17bdd4fb8 feat(NodeDetails): add loading state indicator and pager tabs 2024-09-01 12:03:32 -03:00
andrekir
df2847dd6f fix(MqttConfig): position precision padding 2024-08-31 09:13:54 -03:00
andrekir
888c1aec6d fix: import DeviceProfile Config descriptor 2024-08-31 09:03:19 -03:00
andrekir
300904d337 chore(detekt): enable UnusedImports rule 2024-08-31 09:00:15 -03:00
renovate[bot]
61030019f6 chore(deps): update com.google.firebase:firebase-bom to v33.2.0 2024-08-31 08:41:01 -03:00
renovate[bot]
8dfebe68cd chore(deps): update plugin com.google.devtools.ksp to v2.0.20-1.0.24 2024-08-31 08:31:16 -03:00
renovate[bot]
a4c8dff5fd chore(deps): update kotlin_version to v2.0.20 2024-08-31 08:28:36 -03:00
renovate[bot]
f2e664de39 chore(deps): update androidx.compose:compose-bom to v2024.08.00 2024-08-31 08:23:55 -03:00
Robert-0410
9f136fb31b
feat: Telemetry charts (#1198) 2024-08-31 08:05:42 -03:00
andrekir
cb2ea2804a 2.4.4 2024-08-29 08:10:09 -03:00
andrekir
1712c5074f fix: position precision slider movement 2024-08-29 08:10:09 -03:00
andrekir
3a97e6dbcb refactor: remove BACKGROUND_LOCATION permission 2024-08-29 08:10:09 -03:00
andrekir
b4cdbf0617 feat: add ShortTurbo default channel name 2024-08-25 11:06:14 -03:00
andrekir
dd00f79241 feat: add fromRadio client notification 2024-08-25 10:55:55 -03:00
andrekir
f85bcac5aa feat: add MQTT client proxy PKI topic 2024-08-25 10:44:18 -03:00
andrekir
807ddf4fd6 refactor: update Japan frequency range
reference: https://github.com/meshtastic/firmware/pull/4446
2024-08-25 10:41:43 -03:00
andrekir
d6146a5ab3 fix(SecurityConfig): add missing cancel button action 2024-08-25 10:41:17 -03:00
andrekir
d30a4d146a feat: add SHORT_TURBO modem preset 2024-08-25 10:40:34 -03:00
andrekir
45578d27f8 fix(configRoute): add configType to argument 2024-08-25 09:41:48 -03:00
andrekir
cd05f8d565 feat: add SecurityConfig 2024-08-25 09:32:31 -03:00
andrekir
eba48a4feb chore: update proto submodule to v2.5.0 2024-08-25 07:57:35 -03:00
andrekir
19e0f7d8b3 refactor: update EditDeviceProfileDialog using dynamic fields 2024-08-25 07:54:52 -03:00
andrekir
0b7718f8d5 refactor: write to proto DataStore using dynamic field updates 2024-08-25 06:54:32 -03:00
andrekir
7b44fea81c 2.4.3 2024-08-22 20:14:19 -03:00
Andre K
b5d82ba95b
feat: add Catalan (ca) locale and translations (#1204) 2024-08-22 20:12:41 -03:00
andrekir
fa85955e85 refactor: extract EditBase64Preference from EditChannelDialog
closes #944
2024-08-22 19:58:37 -03:00
andrekir
d387c7bd04 refactor(map): wrap Context functions with remember 2024-08-20 18:23:40 -03:00
andrekir
c0955e7687 feat: add dialog to handle WiFi Credential QR code scan errors 2024-08-20 18:19:38 -03:00
andrekir
0f4377f7b9 fix(ChannelSettingsItemList): add listSaver to rememberSaveable 2024-08-20 18:18:42 -03:00
James Rich
da2a9f82fc
Fix: Colored transparent precision circles around nodes on map (#1190) 2024-08-20 17:04:36 -03:00
andrekir
94ff201822 refactor: use ACTION_TIME_TICK receiver for time updates 2024-08-18 11:38:32 -03:00
andrekir
f5cc7cf4ad feat(NetworkConfig): add QR code scan for WiFi credentials
closes #1192
2024-08-18 10:25:00 -03:00
andrekir
3a11ca9a1c refactor: add shortName to traceroute response
closes #1164
2024-08-18 09:34:47 -03:00
andrekir
ddad40a969 refactor: add more granular Position precision options
closes #1186
2024-08-18 08:32:20 -03:00
andrekir
7e0cfff67b feat: add methods to retrieve MeshPackets and Telemetry from specific nodes 2024-08-18 06:58:44 -03:00
James Rich
efc2a32915 chore: Add issue templates and disable blank issues
This commit adds feature request and bug report templates to the repository. It also disables the ability to create blank issues, requiring
 users to use one of the provided templates.
2024-08-18 06:54:39 -03:00
andrekir
160f02018f fix(config): use rememberSaveable to retain state across configuration changes
closes #1193
2024-08-18 06:42:41 -03:00
andrekir
6d4b0b60f8 refactor: rename admin factory reset method
references:
- https://github.com/meshtastic/protobufs/pull/539
- https://github.com/meshtastic/firmware/pull/4427
2024-08-18 06:36:24 -03:00
andrekir
d1cba7b7b2 chore: update proto submodule to v2.4.3 2024-08-18 06:30:39 -03:00
renovate[bot]
3c7a4b2f5f chore(deps): update gradle to v8.10 2024-08-18 06:27:06 -03:00
andrekir
6b4603af9d 2.4.2 2024-08-10 08:55:12 -03:00
andrekir
ab86e4741f fix: add background location prominent disclosure to address Google Play rejection 2024-08-10 08:52:41 -03:00
andrekir
28a71d89a9 feat: update Crowdin localization strings 2024-08-10 08:49:11 -03:00
James Rich
2109426243
feat: Add role to NodeInfo (#1174) 2024-08-10 08:17:51 -03:00
renovate[bot]
8afa5f9313 chore(deps): update plugin com.google.devtools.ksp to v2.0.10-1.0.24 2024-08-10 08:09:40 -03:00
renovate[bot]
43d1bf14c7 chore(deps): update kotlin_version to v2.0.10 2024-08-10 08:01:49 -03:00
renovate[bot]
2b4b0cbfbb chore(deps): update com.android.tools.build:gradle to v8.5.2 2024-08-10 07:31:12 -03:00
renovate[bot]
5b911f95ba chore(deps): update androidx.work:work-runtime-ktx to v2.9.1 2024-08-10 07:24:35 -03:00
renovate[bot]
ebfcf82a67 chore(deps): update hilt_version to v2.52 2024-08-10 07:17:32 -03:00
andrekir
143dbb29fd chore: update proto submodule to v2.4.2 2024-08-10 07:10:59 -03:00
andrekir
6d01fb4bc4 test: add MeshtasticDatabaseTest 2024-08-04 11:40:33 -03:00
andrekir
8bd8bcaffd 2.4.1 2024-08-04 08:06:00 -03:00
andrekir
6d189dc62c feat: update Ukranian localization strings 2024-08-04 07:55:28 -03:00
renovate[bot]
6433644638 chore(deps): update gradle/actions action to v4 2024-08-04 07:54:42 -03:00
James Rich
1f05886873
Fix: Periodically update last heard time (#1178) 2024-08-04 07:47:48 -03:00
James Rich
acbae6d93d
feat: Add position precision indicator to map (#1177) 2024-08-03 13:08:22 -03:00
andrekir
50eac620a9 chore: update proto submodule to v2.4.1 2024-08-03 11:17:51 -03:00
Andre K
13606ad1f9
refactor: QrCodeScanDialog with single channel list and Add/Remove toggle (#1179) 2024-08-03 10:47:16 -03:00
renovate[bot]
b59db299c7 chore(deps): update protobuf_version to v4.27.3 2024-08-03 08:50:36 -03:00
andrekir
5b5bbf84b0 fix(ScannedQrCodeDialog): "Add" button action 2024-08-03 08:43:22 -03:00
andrekir
0f815e1779 test: add ScannedQrCodeDialogTest 2024-08-03 08:43:22 -03:00
James Rich
556b4a2ae3
fix: NodeInfo chip line wrapping (#1167) 2024-08-03 08:35:00 -03:00
renovate[bot]
4b09e4dc91 chore(deps): update plugin com.google.devtools.ksp to v2.0.0-1.0.24 2024-08-03 08:23:28 -03:00
renovate[bot]
2c780b70a4 chore(deps): update lifecycle_version to v2.8.4 2024-08-03 08:16:59 -03:00
renovate[bot]
c7ca0b9e19 chore(deps): update androidx.fragment:fragment-ktx to v1.8.2 2024-08-03 08:09:20 -03:00
andrekir
bc05280988 refactor: remove Companion Device Pairing
https://developer.android.com/develop/connectivity/bluetooth/companion-device-pairing
2024-08-03 07:53:59 -03:00
andrekir
ca537becd1 fix: register Bluetooth and USB receivers using RECEIVER_EXPORTED flag
https://developer.android.com/develop/background-work/background-tasks/broadcasts#context-registered-receivers

Note from Step 4.:
"Some system broadcasts come from highly privileged apps, such as Bluetooth and telephony, that are part of the Android framework but do not run under the system's unique process ID (UID). To receive all system broadcasts, including broadcasts from highly privileged apps, flag your receiver with RECEIVER_EXPORTED."
2024-08-03 07:47:18 -03:00
andrekir
b4221c7db0 refactor: extract ScannedQrCodeDialog from ChannelFragment 2024-07-30 08:32:20 -03:00
andrekir
ce5643a3ae 2.4.0 2024-07-28 09:53:11 -03:00
andrekir
2e5d6db8b6 feat: add StoreForward is_server config 2024-07-28 09:49:36 -03:00
andrekir
cbd33f2c0c feat: add LoRa pa_fan_disabled config 2024-07-28 09:48:36 -03:00
andrekir
361ce2ef5c chore: update proto submodule to v2.4.0 2024-07-28 09:31:43 -03:00
andrekir
407febc5f8 refactor: replace unMock with Hilt testing 2024-07-28 09:19:29 -03:00
AddisonTustin
e4c6000a10
feat: support add=true in QR codes (#1151) 2024-07-28 08:50:54 -03:00
andrekir
cc5543f4c9 refactor: add try-catch block to handle ChannelSet parsing errors 2024-07-28 08:34:37 -03:00
andrekir
a65cc7699e feat: add adaptive two-pane layout to ChannelScreen 2024-07-28 08:23:14 -03:00
andrekir
df6b0e1949 fix: queued messages not being sent once reconnected 2024-07-28 07:17:06 -03:00
andrekir
9f4f919fe1 refactor: remove ClientProxy MQTT status topic
ref: https://github.com/meshtastic/firmware/pull/4305
2024-07-28 07:11:10 -03:00
James Rich
fc2559f5f5
Expanding node info cards (#1144) 2024-07-28 07:04:50 -03:00
Robert-0410
ed17ae0734
Channel scan select (#1141) 2024-07-28 06:58:41 -03:00
andrekir
81297c46e9 2.3.18 2024-07-25 18:24:05 -03:00
andrekir
921ef709d6 refactor: use PendingIntentCompat for UsbManager 2024-07-25 18:24:03 -03:00
andrekir
4f5c6a5fd1 refactor: implement ServiceCompat.startForeground with error handling
- replaces `Service.startForeground` with `ServiceCompat.startForeground` with support for different API levels;
- adds try-catch block to handle exceptions and report errors if startForeground fails.

references:
- https://issuetracker.google.com/issues/307329994
- https://developer.android.com/develop/background-work/services/foreground-services#start
2024-07-25 18:04:11 -03:00
andrekir
f4016bf9ef 2.3.17 2024-07-23 19:18:58 -03:00
andrekir
b1b5143ee5 chore: declare permission to meet connectedDevice runtime prerequisites
https://developer.android.com/about/versions/14/changes/fgs-types-required#connected-device
2024-07-23 19:17:32 -03:00
andrekir
2ccb0ab4e3 2.3.16 2024-07-21 10:52:08 -03:00
andrekir
734b841cf1 feat: update Crowdin localization strings 2024-07-21 10:49:06 -03:00
andrekir
e31b7d4911 chore: update targetSdk to API 34 2024-07-21 10:43:01 -03:00
renovate[bot]
de180f2d35 chore(deps): update plugin com.google.devtools.ksp to v2.0.0-1.0.23 2024-07-13 09:16:04 -03:00
renovate[bot]
a34a23ece3 chore(deps): update com.github.mik3y:usb-serial-for-android to v3.8.0 2024-07-13 09:15:48 -03:00
andrekir
9083307499 2.3.15 2024-07-13 08:07:10 -03:00
andrekir
64c09b56a5 feat: enable text selection in debug panel
closes #221
2024-07-13 08:00:42 -03:00
andrekir
4fe49a45dc refactor: improve LazyColumn auto-scroll behavior 2024-07-13 08:00:17 -03:00
andrekir
b850805ce3 feat: update Crowdin localization strings 2024-07-13 07:56:45 -03:00
andrekir
101df3555b refactor: ensure QR code contains at least one channel 2024-07-13 07:56:44 -03:00
andrekir
b1bbafcc41 refactor(ContactListView): move selection logic to ContactItem 2024-07-13 07:50:01 -03:00
andrekir
6e84d88299 fix: ContactsFragment ActionMode menu 2024-07-13 07:41:00 -03:00
andrekir
9869c9e861 refactor: validate drag-and-drop by fixed contentType 2024-07-13 07:28:36 -03:00
andrekir
cdf7639c4a refactor: remove coroutineScope in LaunchedEffect 2024-07-13 07:27:29 -03:00
andrekir
a7e7569379 refactor: move LocalLifecycleOwner to androidx.lifecycle.compose package 2024-07-13 07:27:05 -03:00
andrekir
d8ef392ddd refactor: replace light/dark mode previews with @PreviewLightDark 2024-07-13 07:26:45 -03:00
James Rich
8dad5a085e
Feat: Show channel number and name in direct message title (#1131)
* Feat: Show channel number and name in direct message title

This commit updates the message title to include the channel number and name when viewing direct messages.

This improves the user experience by providing more context about the conversation.

* Refactor: Improve message fragment toolbar

Use MaterialToolbar's built-in title and subtitle features to display channel name and number, simplifying the layout and improving UI consistency.
2024-07-13 07:25:22 -03:00
renovate[bot]
7a6ef224f5 chore(deps): update com.google.firebase:firebase-bom to v33.1.2 2024-07-13 07:18:53 -03:00
renovate[bot]
c52fe157b2 chore(deps): update com.android.tools.build:gradle to v8.5.1 2024-07-13 07:09:57 -03:00
renovate[bot]
4e7bc62059 chore(deps): update gradle to v8.9 2024-07-13 07:09:41 -03:00
renovate[bot]
3569b87453 chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.1 2024-07-13 07:08:54 -03:00
andrekir
e9b19ed507 chore: update proto submodule to v2.3.15 2024-07-13 07:02:40 -03:00
andrekir
36e78d1f45 chore(detekt): add @PreviewLightDark to ignore list 2024-07-06 08:57:10 -03:00
andrekir
2b4b1d7683 refactor: handle selected contacts in a local variable 2024-07-06 08:31:52 -03:00
andrekir
56d9f03748 refactor: migrate QuickChatFragment RecyclerView to Compose 2024-07-06 07:43:01 -03:00
andrekir
15861c1389 refactor: dragDropItemsIndexed back to use item index 2024-07-04 09:23:13 -03:00
James Rich
3dd0f8ceed
feat: add detekt Android CI workflow, migrate to ktlint plugin (#1122) 2024-07-02 23:01:51 -03:00
andrekir
70b03d92cb fix: renamed layout reference 2024-07-02 19:06:51 -03:00
James Rich
183b337d61 Fix: Display correct hardware info in NodeInfo
The hardware information displayed in the NodeInfo view was incorrect. This commit fixes the issue by using the correct node
 information to retrieve the hardware model string.
2024-07-02 19:03:57 -03:00
Robert-0410
6e370a9919
Qr channel select (#1051) 2024-07-02 09:53:37 -03:00
andrekir
a543bcbfcd refactor: migrate DebugFragment RecyclerView to Compose 2024-07-01 23:04:15 -03:00
James Rich
c7a3488a78
Adds ktlint gradle plugin and baseline files (#1120) 2024-07-01 22:54:27 -03:00
James Rich
38f26b7128 Adds detekt, generated config, and baseline file. 2024-07-01 22:39:07 -03:00
renovate[bot]
f216543244 chore(deps): update com.github.bjoernq:unmockplugin to v0.8.0 2024-07-01 22:25:53 -03:00
James Rich
a59aaf5c28
Adds hardware model string to NodeInfo card ui if available (#1111) 2024-07-01 22:17:05 -03:00
renovate[bot]
fe651a7cb5 chore(deps): update lifecycle_version to v2.8.3 2024-07-01 22:01:36 -03:00
renovate[bot]
8d2c832528 chore(deps): update gradle to v8.8 2024-06-30 11:37:48 -03:00
renovate[bot]
9c6e88034f chore(deps): update plugin com.google.devtools.ksp to v2 2024-06-30 11:19:59 -03:00
renovate[bot]
eb48eaf9d3
chore(deps): update kotlin_version to v2 (major) (#1050) 2024-06-30 11:11:11 -03:00
andrekir
07e7a40ba0 fix: accidental code changes 2024-06-30 10:34:03 -03:00
andrekir
f622291983 2.3.14 2024-06-30 10:22:18 -03:00
andrekir
4bf2d405ce feat: add drag-and-drop to channel editor 2024-06-30 09:04:27 -03:00
andrekir
66babdf735 feat: add dragDropItemsIndexed extension 2024-06-30 09:04:27 -03:00
andrekir
c95cba097c refactor: use item keys instead of indexes 2024-06-30 09:04:27 -03:00
andrekir
218100e9d5 feat: add LazyColumnDragAndDropDemo 2024-06-30 09:04:27 -03:00
andrekir
4d2dcad50e refactor: raise minimum firmware version to 2.3.2
closes #1031
2024-06-30 08:52:52 -03:00
andrekir
185bf01046 feat: update Dutch localization strings 2024-06-30 08:18:11 -03:00
andrekir
9a71922afc fix: long contact names breaking time layout 2024-06-30 08:11:36 -03:00
andrekir
40edec0a31 feat: add device_logging_enabled config 2024-06-30 08:10:45 -03:00
renovate[bot]
3454bae451 chore(deps): update protobuf_version to v4.27.2 2024-06-30 07:40:58 -03:00
renovate[bot]
59e6fe9c7d chore(deps): update androidx.fragment:fragment-ktx to v1.8.1 2024-06-30 07:40:44 -03:00
renovate[bot]
155158d24b chore(deps): update androidx.test.ext:junit to v1.2.1 2024-06-30 07:37:09 -03:00
renovate[bot]
f12eb4fffe chore(deps): update androidx.test.espresso:espresso-core to v3.6.1 2024-06-30 07:32:23 -03:00
renovate[bot]
5bcbe706c4 chore(deps): update com.google.firebase:firebase-bom to v33.1.1 2024-06-30 07:22:08 -03:00
renovate[bot]
5e2d090ed9 chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3.0.2 2024-06-30 07:21:52 -03:00
andrekir
3c38b484c9 chore: update proto submodule to v2.3.14 2024-06-30 07:07:06 -03:00
andrekir
054538f899 fix: contact Chip modifier 2024-06-23 08:53:43 -03:00
andrekir
f75879603e refactor: extract NodeMenu from UsersFragment 2024-06-23 08:36:40 -03:00
andrekir
db500c5200 refactor: migrate UsersFragment to Compose 2024-06-23 08:24:29 -03:00
andrekir
098c89f45c 2.3.13 2024-06-16 09:01:55 -03:00
andrekir
caff97a5e6 feat: add compassOrientation config 2024-06-16 09:01:30 -03:00
renovate[bot]
89a3ab0e7d chore(deps): update com.android.tools.build:gradle to v8.5.0 2024-06-16 09:00:56 -03:00
renovate[bot]
56aac5a9a5 chore(deps): update androidx.fragment:fragment-ktx to v1.8.0 2024-06-16 09:00:41 -03:00
andrekir
85b2adc81f chore: update proto submodule to v2.3.13 2024-06-16 08:45:12 -03:00
andrekir
0774124603 refactor: unread count from RecyclerView scroll listener 2024-06-16 08:41:53 -03:00
andrekir
e5396524fb fix: getMslAltitudeMeters call when MSL altitude is not available 2024-06-16 08:33:45 -03:00
andrekir
d4f4e4f14a fix: ContactItem background color inconsistency 2024-06-16 07:50:52 -03:00
andrekir
d7013e1386 feat: add unread message count 2024-06-15 12:42:55 -03:00
andrekir
e4f5d9b89c refactor: migrate ContactsFragment to Compose 2024-06-15 12:42:55 -03:00
andrekir
76764b9351 2.3.12 2024-06-13 07:32:55 -03:00
Andre K
001b18be95
feat: implement MSL altitude using AltitudeConverterCompat (#1094)
- Added `androidx.core:core-location-altitude:1.0.0-alpha02`;
- Implemented `AltitudeConverterCompat.addMslAltitudeToLocation(context, location)` to convert `altitude` (above the WGS84 reference ellipsoid) to Mean Sea Level (MSL) and add MSL altitude and accuracy to the location object.

Reference:
- https://issuetracker.google.com/issues/195660815
- Brian Julian and Michael Angermann. "Resource efficient and accurate altitude conversion to Mean Sea Level." [2023 IEEE/ION Position, Location and Navigation Symposium (PLANS)](https://www.ion.org/plans/abstracts.cfm?paperID=12011).
2024-06-13 07:26:56 -03:00
AddisonTustin
8c53908eb5
fix: show maps pin when clicking on node coords (#1093) 2024-06-13 07:20:52 -03:00
renovate[bot]
7a81a92713 chore(deps): update androidx.compose:compose-bom to v2024.06.00 2024-06-13 07:05:42 -03:00
renovate[bot]
36348b63e2 chore(deps): update com.android.tools.build:gradle to v8.4.2 2024-06-13 07:04:29 -03:00
renovate[bot]
13ce649060 chore(deps): update protobuf_version to v4.27.1 2024-06-13 06:56:54 -03:00
renovate[bot]
b172c61a72 chore(deps): update com.github.mik3y:usb-serial-for-android to v3.7.3 2024-06-13 06:56:10 -03:00
andrekir
a5c0103e8a chore: update proto submodule to v2.3.12 2024-06-13 06:44:57 -03:00
andrekir
78b1ca7630 feat: update Portuguese Brazilian localization strings 2024-06-13 06:40:40 -03:00
andrekir
610349d695 feat: update German localization strings 2024-06-13 06:40:16 -03:00
andrekir
75391e443b feat: update Chinese Traditional localization strings 2024-06-12 08:18:36 -03:00
andrekir
3fe4c6057d feat: update Czech localization strings 2024-06-10 19:07:44 -03:00
andrekir
6c8175d291 feat: update Slovak localization strings 2024-06-10 19:07:44 -03:00
andrekir
d399b675ed feat: update Croatian localization strings 2024-06-10 19:07:44 -03:00
andrekir
8e40c84c0d fix: avoid map zoomToNodes with empty nodelist
closes #1079
2024-06-10 19:07:43 -03:00
Andre K
5b3c78316b
feat: support for switching between devices (#1078) 2024-06-08 10:25:47 -03:00
andrekir
9ba44ad087 2.3.11 2024-06-03 10:40:49 -03:00
andrekir
6c27888bf1 feat: update Croatian localization strings 2024-06-03 10:40:49 -03:00
andrekir
1d070f36be feat: update Italian localization strings 2024-06-03 10:40:49 -03:00
andrekir
d98c87cdaf feat: update Slovak localization strings 2024-06-03 10:40:49 -03:00
andrekir
4a9be026e2 chore: prepare new strings for translation 2024-06-03 10:40:49 -03:00
andrekir
95120ee208 fix: AlertDialog button spacing 2024-06-03 10:40:47 -03:00
andrekir
814cf41f90 refactor: simplify wantConfig feedback 2024-06-03 10:17:20 -03:00
andrekir
88a6bcc09d feat: add hops_away sort option 2024-06-03 08:57:29 -03:00
andrekir
4ceb4c5199 feat: add nodelist sort options 2024-06-02 09:24:22 -03:00
andrekir
f84a75569d ci: add workflow for Android tests 2024-06-02 08:46:22 -03:00
renovate[bot]
9e2f6d3d98 chore(deps): update com.google.firebase:firebase-bom to v33.1.0 2024-06-02 08:29:16 -03:00
renovate[bot]
e032ff20a3 chore(deps): update com.google.gms:google-services to v4.4.2 2024-06-02 08:29:02 -03:00
renovate[bot]
b3d0762a55 chore(deps): update appcompat_version to v1.7.0 2024-06-02 08:21:19 -03:00
renovate[bot]
92e8a73700 chore(deps): update protobuf_version to v4.27.0 2024-06-02 08:18:30 -03:00
renovate[bot]
950eff5285 chore(deps): update com.android.tools.build:gradle to v8.4.1 2024-06-02 08:09:34 -03:00
andrekir
561fa8795c chore: update proto submodule to v2.3.11 2024-06-02 08:08:48 -03:00
andrekir
8f8bf8aea4 2.3.10 2024-05-19 08:38:47 -03:00
andrekir
5b64f9eaa5 feat: add paxcounter threshold configs 2024-05-19 08:38:46 -03:00
andrekir
46c0dbd1a5 chore: disable code shrinking and optimization 2024-05-19 08:30:53 -03:00
andrekir
edea515e7a fix: re-add protobuf proguard rule 2024-05-19 08:29:14 -03:00
andrekir
431a280816 chore: update proto submodule to v2.3.10 2024-05-19 08:25:26 -03:00
andrekir
0f011e498e 2.3.9 2024-05-19 06:52:32 -03:00
andrekir
e6a8bc8975 chore: re-enable code shrinking and optimization 2024-05-19 06:52:32 -03:00
andrekir
28a37293ec fix: annotationProcessor build warning
warning: The following options were not recognized by any processor: '[dagger.fastInit, dagger.hilt.android.internal.disableAndroidSuperclassValidation, dagger.hilt.android.internal.projectType, dagger.hilt.internal.useAggregatingRootProcessor***'
2024-05-19 06:52:32 -03:00
andrekir
dd22068c5f fix: clear DeviceProfile state before config export 2024-05-19 06:52:32 -03:00
andrekir
f822080d0c refactor: hide GPS satellites with empty values 2024-05-19 06:52:31 -03:00
andrekir
de3d74b979 refactor: show nodes with unknown user info
closes #912
2024-05-19 06:45:03 -03:00
andrekir
309ace79b6 feat: update Chinese Traditional localization strings 2024-05-19 06:43:08 -03:00
andrekir
c5d6c6efb3 feat: update Slovak localization strings 2024-05-19 06:42:47 -03:00
andrekir
e25c018be0 feat: update Polish localization strings 2024-05-19 06:42:17 -03:00
andrekir
03a19b4db9 chore: update proto submodule to v2.3.9 2024-05-19 06:36:39 -03:00
renovate[bot]
78101c33fe chore(deps): update androidx.fragment:fragment-ktx to v1.7.1 2024-05-19 06:30:52 -03:00
renovate[bot]
71b4679aca chore(deps): update com.github.mik3y:usb-serial-for-android to v3.7.2 2024-05-19 06:26:20 -03:00
renovate[bot]
89ca8c5ea7 chore(deps): update coroutines_version to v1.8.1 2024-05-19 06:23:34 -03:00
renovate[bot]
6932940785 chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3 2024-05-19 06:23:26 -03:00
renovate[bot]
eb62747158 chore(deps): update composeoptions to v1.5.14 2024-05-19 06:14:55 -03:00
renovate[bot]
640c150573 chore(deps): update plugin com.google.devtools.ksp to v1.9.24-1.0.20 2024-05-19 06:14:45 -03:00
renovate[bot]
3c262d7a56 chore(deps): update kotlin_version to v1.9.24 2024-05-19 06:14:37 -03:00
renovate[bot]
93b65c6e21 chore(deps): update androidx.viewpager2:viewpager2 to v1.1.0 2024-05-19 06:07:06 -03:00
renovate[bot]
4cd110e46e chore(deps): update androidx.recyclerview:recyclerview to v1.3.2 2024-05-19 06:06:55 -03:00
andrekir
615d583bae 2.3.8 2024-05-12 09:21:11 -03:00
andrekir
167be6dfc3 fix: navController.navigate() to empty route 2024-05-12 09:20:40 -03:00
andrekir
37df3ce084 refactor: improve import feedback and use begin/commit transactions 2024-05-12 09:19:11 -03:00
andrekir
4047e8aebf feat: update Portuguese localization strings 2024-05-12 09:17:55 -03:00
andrekir
8bcd211a3e feat: update Russian localization strings 2024-05-12 09:16:39 -03:00
andrekir
e246fd9d56 chore: update proto submodule to v2.3.8 2024-05-12 09:14:09 -03:00
andrekir
c8191a899b feat: add Chinese Traditional (zh-TW) locale and translations 2024-05-12 09:11:03 -03:00
Andre K
b814c1d5d1 Revert "chore(deps): update com.google.firebase:firebase-crashlytics-gradle t…"
This reverts commit ecd3be738b.
2024-05-05 07:48:46 -03:00
andrekir
2e2539cf84 2.3.7 2024-05-05 07:34:36 -03:00
andrekir
3c544d4db3 feat: update Portuguese localization strings 2024-05-05 07:34:12 -03:00
andrekir
378c613233 feat: add led_heartbeat_disabled config 2024-05-05 07:22:44 -03:00
renovate[bot]
ecd3be738b chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v3 2024-05-05 07:18:54 -03:00
renovate[bot]
6bbf8cda89 chore(deps): update com.google.firebase:firebase-bom to v33 2024-05-05 07:18:46 -03:00
renovate[bot]
f348f4c35f chore(deps): update com.google.android.material:material to v1.12.0 2024-05-05 07:12:04 -03:00
renovate[bot]
d31d0e61d6 chore(deps): update androidx.fragment:fragment-ktx to v1.7.0 2024-05-05 07:11:54 -03:00
renovate[bot]
eab1e44c0d chore(deps): update androidx.compose:compose-bom to v2024.05.00 2024-05-05 07:05:36 -03:00
renovate[bot]
7b4afb5480 chore(deps): update composeoptions to v1.5.13 2024-05-05 07:05:27 -03:00
renovate[bot]
4f1ccc1700 chore(deps): update androidx.datastore:datastore to v1.1.1 2024-05-05 07:05:15 -03:00
renovate[bot]
677b026918 chore(deps): update androidx.core:core-ktx to v1.13.1 2024-05-05 06:57:21 -03:00
andrekir
a12c5052bc refactor: improve connection status feedback using new wantConfig state 2024-05-05 06:57:04 -03:00
renovate[bot]
78d99e44d0 chore(deps): update com.android.tools.build:gradle to v8.4.0 2024-05-05 06:55:58 -03:00
andrekir
4203b28a45 fix: don't show notifications for sent messages 2024-04-30 19:51:00 -03:00
andrekir
2ee1adb4b5 docs: update naming convention 2024-04-30 19:50:16 -03:00
andrekir
1b40a14aa1 chore: update proto submodule to v2.3.7 2024-04-30 19:45:39 -03:00
andrekir
0cec08a6a4 2.3.6 2024-04-29 18:14:43 -03:00
andrekir
1e168bff9b feat: update Slovak localization strings 2024-04-29 18:13:31 -03:00
andrekir
40d62dd390 feat: update Czech localization strings 2024-04-29 18:13:16 -03:00
renovate[bot]
7b85786394 chore(deps): update com.github.mik3y:usb-serial-for-android to v3.7.1 2024-04-29 18:11:03 -03:00
renovate[bot]
e71679fa07 chore(deps): update protobuf_version to v4 2024-04-29 18:10:47 -03:00
Andre K
ecaf35d7f3
feat: add ActionMenu option to mute contacts (#1003) 2024-04-28 16:18:16 -03:00
andrekir
b409c17fe8 chore: update proto submodule to v2.3.6 2024-04-21 09:31:24 -03:00
andrekir
ab31d1d4c5 2.3.5 2024-04-21 09:07:24 -03:00
andrekir
280896c08e refactor: simplify SignalInfo string separator 2024-04-21 09:03:40 -03:00
andrekir
0187bc4c72 refactor: simplify position requests 2024-04-21 08:49:09 -03:00
andrekir
d7812c5777 fix #973: ignore data from traceroute requests 2024-04-21 08:48:40 -03:00
prokrypt
a84d77e4ae
Make sure IP Address radio button stays enabled for valid IP (#984) 2024-04-21 08:46:19 -03:00
Dayle Drinkwater
0d6e7a3a24
Forget node menu changes (#983)
* Move 'Forget Node' option to move it away from Traceroute.

Add confirmation dialog to 'Forget Node'

* Move debug for 'Forget Node'
2024-04-21 08:45:37 -03:00
renovate[bot]
f72c4116ae chore(deps): update androidx.datastore:datastore to v1.1.0 2024-04-21 08:35:01 -03:00
renovate[bot]
f3d5c93307 chore(deps): update androidx.core:core-ktx to v1.13.0 2024-04-21 08:34:26 -03:00
renovate[bot]
bc5ad38b26 chore(deps): update composeoptions to v1.5.12 2024-04-21 08:28:07 -03:00
renovate[bot]
f2f1349bab chore(deps): update androidx.compose:compose-bom to v2024.04.01 2024-04-21 08:27:59 -03:00
renovate[bot]
db54785a76 chore(deps): update com.google.firebase:firebase-bom to v32.8.1 2024-04-21 08:20:28 -03:00
renovate[bot]
ab45fe75e6 chore(deps): update com.android.tools.build:gradle to v8.3.2 2024-04-21 08:20:13 -03:00
Dayle Drinkwater
47b2ecc8aa
Hops Away implementation (#966)
* Initial Hops Away feature

* Generate our own hopsAway, comparing hopStart to hopLimit

* Remove import of hopsAway from device nodeInfo, as this only shows 0 when hopStart isn't included on packets (with this info, we can't differentiate between a node which is Hops Away but on old firmware, or nodes which are on new firmware but direct. Both are 0)

Check if hopStart is 0 but hopLimit is not 0, if true set hopsAway to -1.

Show nodes with hopsAway with -1 with a (!) appended to the RSSI details, to show this probably isn't true. (eg they are using old firmware)

Change the default of hopsAway to -1, until we know it is direct (0) or hops away (1+)

* tidy up: move from nested if else to when

* Revert Project_Default.xml

* Move hopsAway when block in to updateNodeInfo() block above it.

Move hopsAway var to end of NodeInfo Class.

Schema update due to change above.

* hopsAway now follows firmware implementation.
hopsAway now imported from radio (installNodeInfo)

* reformat

---------

Co-authored-by: andrekir <andrekir@pm.me>
2024-04-21 08:14:35 -03:00
andrekir
261af4be62 chore: update proto submodule to v2.3.5 2024-04-21 08:04:06 -03:00
andrekir
2a9914c44b feat: update Icelandic localization strings 2024-04-21 08:00:55 -03:00
andrekir
a90681b2ff feat: update Slovak localization strings 2024-04-21 08:00:34 -03:00
andrekir
f1d8b0846c ci: replace gradle/wrapper-validation-action with gradle/actions/wrapper-validation
As of `v3` this action has been superceded by `gradle/actions/wrapper-validation`. Any workflow that uses `gradle/wrapper-validation-action@v3` will transparently delegate to `gradle/actions/wrapper-validation@v3`.

Users are encouraged to update their workflows, replacing:
```
uses: gradle/wrapper-validation-action@v3
```

with
```
uses: gradle/actions/wrapper-validation@v3
```

See the [wrapper-validation documentation](https://github.com/gradle/actions/tree/main/wrapper-validation) for up-to-date documentation for `gradle/actions/wrapper-validation`.
2024-04-15 18:18:32 -03:00
andrekir
664a4d2d51 ci: replace gradle/gradle-build-action with gradle/actions/setup-gradle
As of `v3` this action has been superceded by `gradle/actions/setup-gradle`. Any workflow that uses `gradle/gradle-build-action@v3` will transparently delegate to `gradle/actions/setup-gradle@v3`.

Users are encouraged to update their workflows, replacing:

```
uses: gradle/gradle-build-action@v3
```

with

```
uses: gradle/actions/setup-gradle@v3
```

See the [setup-gradle documentation](https://github.com/gradle/actions/tree/main/setup-gradle) for up-to-date documentation for `gradle/actions/setup-gradle`.
2024-04-15 18:17:41 -03:00
andrekir
c15c3d8c09 refactor(config): pass destNum via setFragmentResultListener 2024-04-15 17:56:47 -03:00
andrekir
e6e85d6403 2.3.4 2024-04-09 07:29:04 -03:00
andrekir
4f29e7a3ff feat: add new timezone device config
closes #957
2024-04-09 07:26:32 -03:00
Andre K
19553b56e3
feat: update Slovenian localization strings (#961) 2024-04-09 07:19:07 -03:00
Jonathan Bennett
828696aca7
Add option to delete single node from nodeDB (#958) 2024-04-09 07:18:38 -03:00
andrekir
2ebfc05200 chore: update proto submodule to v2.3.4 2024-04-09 06:54:25 -03:00
andrekir
5b43089392 refactor: simplify RadioConfigViewModel packet processing 2024-04-07 19:50:27 -03:00
andrekir
54435fc031 refactor: move DebugFragment to separate ViewModel 2024-04-07 17:41:18 -03:00
andrekir
76151e153f refactor: move error message handling to ServiceRepository 2024-04-07 16:44:45 -03:00
andrekir
cf239e3634 refactor: move tracerouteResponse logic to service 2024-04-07 16:26:47 -03:00
Davis
e887336da3
Long press node in map jumps to node in node list (#955)
* Fix scrolling to node and blinking

* Show node in list, instead of opening DM
2024-04-06 08:36:01 -03:00
renovate[bot]
80e9bbbe56 chore(deps): update plugin com.google.devtools.ksp to v1.9.23-1.0.20 2024-04-06 08:25:37 -03:00
renovate[bot]
4c5112399a chore(deps): update mil.nga:mgrs to v2.1.3 2024-04-06 08:16:14 -03:00
renovate[bot]
9f7b4f583f chore(deps): update androidx.compose:compose-bom to v2024.04.00 2024-04-06 08:15:56 -03:00
andrekir
b9d7e35207 feat: update Spanish localization strings 2024-04-06 08:03:25 -03:00
andrekir
ed0658b353 feat: update Chinese localization strings 2024-04-06 08:01:45 -03:00
andrekir
e794655df7 feat: update German localization strings 2024-04-06 08:01:19 -03:00
andrekir
a7a9d543da docs: add tx_power unit (dBm) 2024-04-06 07:58:06 -03:00
andrekir
d18589ea1a docs: update contact email 2024-04-06 07:58:05 -03:00
andrekir
7386dd23eb ci: add version_info.txt to release assets 2024-04-06 07:53:50 -03:00
andrekir
0ff19c8396 docs: add F-Droid banner 2024-04-06 07:53:03 -03:00
andrekir
f633ed74cb refactor: align channel PSK Base64 flags with other platforms
closes #937
2024-04-01 22:55:21 -03:00
andrekir
d3d4b960c8 2.3.3 2024-04-01 19:47:40 -03:00
andrekir
9024d36985 refactor: handle ActivityNotFoundException when opening URIs 2024-04-01 19:45:56 -03:00
andrekir
6e3e173096 refactor: add fixed position admin messages 2024-04-01 19:32:28 -03:00
andrekir
2c916f88ca refactor: node popup menu param from position to NodeInfo 2024-04-01 18:34:32 -03:00
andrekir
c746ca0fa0 feat: update Slovak localization strings 2024-04-01 18:24:05 -03:00
andrekir
f6f38435ff feat: update Norwegian localization strings 2024-04-01 18:23:15 -03:00
andrekir
f7fb2a6d59 feat: update Croatian localization strings 2024-04-01 18:22:02 -03:00
andrekir
6afd20b874 refactor: remove assert for NodeDB max size of 256 nodes 2024-04-01 17:48:29 -03:00
andrekir
cb7ef639c0 refactor: sort node list by lastHeard in database query 2024-03-31 16:45:07 -03:00
Benjamin Faershtein
ff36b21298
fix: lastHeard 0 hour issue (#939) 2024-03-31 16:42:33 -03:00
Davis
675c6a6b22
Feature: Filter node list (#920)
* Filter node list with text field against shortname and longname

* Show filter hint

* Reference "this" node from model instead of list position
2024-03-31 16:39:35 -03:00
renovate[bot]
5c6aadb5fd chore(deps): update hilt_version to v2.51.1 2024-03-31 16:28:05 -03:00
renovate[bot]
622d24a0db chore(deps): update gradle to v8.7 2024-03-31 16:19:15 -03:00
renovate[bot]
46d899252e chore(deps): update com.android.tools.build:gradle to v8.3.1 2024-03-31 16:18:45 -03:00
renovate[bot]
30019ba02a chore(deps): update com.google.firebase:firebase-bom to v32.8.0 2024-03-31 16:05:12 -03:00
renovate[bot]
9302ac70c4 chore(deps): update androidx.compose:compose-bom to v2024.03.00 2024-03-31 15:50:15 -03:00
renovate[bot]
37bcecc954 chore(deps): update composeoptions to v1.5.11 2024-03-31 15:40:50 -03:00
renovate[bot]
0e39c3992d chore(deps): update kotlin_version to v1.9.23 2024-03-31 15:22:20 -03:00
renovate[bot]
aeec1fbcd8 chore(deps): update plugin com.google.devtools.ksp to v1.9.23-1.0.19 2024-03-31 15:21:52 -03:00
andrekir
eab0e8e414 chore: update proto submodule to v2.3.3 2024-03-31 15:16:10 -03:00
andrekir
61be6e9985 2.3.2 2024-03-26 08:27:00 -03:00
andrekir
85a5867d49 fix: typo 2024-03-26 08:26:21 -03:00
andrekir
e3f495e352 fix: add LinearLayoutManager wrapper for RecyclerView bug workaround 2024-03-26 08:06:10 -03:00
andrekir
8ec8654d60 refactor: replace DownloadButton Image with Icon 2024-03-26 08:05:13 -03:00
andrekir
464f787b24 refactor: remove warning_default_psk string 2024-03-26 08:04:44 -03:00
andrekir
ab7f09fc8a feat: add Croatian (hr) locale and translations 2024-03-26 08:03:47 -03:00
andrekir
199c9750d6 chore: update proto submodule to v2.3.2 2024-03-25 13:02:26 -03:00
andrekir
e2c377107c refactor: improve NodeDB initialization 2024-03-20 08:40:32 -03:00
andrekir
be741a9200 2.3.1 2024-03-19 08:58:06 -03:00
andrekir
ded6aae1a7 fix: add LinkedCoordinates placeholder when position is invalid 2024-03-19 08:57:23 -03:00
andrekir
cff4f02958 chore: update proto submodule to v2.3.1 2024-03-19 08:44:40 -03:00
andrekir
0948f8e042 fix: don't mix MQTT topics 2024-03-19 08:39:35 -03:00
andrekir
ee61b79aa3 refactor: remove channel disambiguation suffix 2024-03-18 08:34:56 -03:00
andrekir
a3a914abce refactor: disable code shrinking and optimization 2024-03-18 08:21:27 -03:00
andrekir
12c8a2dc77 fix: add ProGuard rule to keep eclipse.paho.client logging class
reference: MissingResourceException - Error locating the logging class (MQTT Library)

fixes #915
2024-03-18 08:19:35 -03:00
andrekir
d21e735ae7 fix: missing ModuleConfig handling 2024-03-18 08:17:35 -03:00
andrekir
40aae19b45 feat: add MQTT mapReportSettings config 2024-03-13 20:50:57 -03:00
prokrypt
59b67d429d 2 decimal places for plugged-in voltage 2024-03-13 20:40:29 -03:00
andrekir
6fe132023e 2.3.0 2024-03-11 22:29:08 -03:00
andrekir
5983424d48 refactor: remote admin channel validation 2024-03-11 22:27:14 -03:00
andrekir
902d1697a9 fix: add new modules to DeviceProfile import
closes #906
2024-03-11 22:25:38 -03:00
andrekir
6b8814cd87 refactor: update client proxy MQTT topic
reference: https://github.com/meshtastic/firmware/pull/3353
2024-03-11 22:24:05 -03:00
andrekir
69765b05e6 chore: update proto submodule to v2.3.0 2024-03-11 12:00:16 -03:00
andrekir
c3eb80bcfc feat: tag node names in installNodeInfo using viaMqtt 2024-03-10 08:18:25 -03:00
andrekir
466fcc63fe refactor: limit message input by bytes instead of character length 2024-03-10 08:18:03 -03:00
andrekir
0b874300ee fix: remove autoLink from contacts MaterialCardView
Prevents interference with the Card onClickListener when opening MessagesFragment.
2024-03-10 05:13:58 -03:00
andrekir
b2b9eb0ae1 feat: update German localization strings 2024-03-10 04:33:40 -03:00
andrekir
23480e9983 chore: update proto submodule to v2.3.0 2024-03-10 04:20:44 -03:00
renovate[bot]
1d3aaf8ab7 chore(deps): update com.google.firebase:firebase-bom to v32.7.4 2024-03-10 04:19:55 -03:00
renovate[bot]
b058493f6d chore(deps): update androidx.compose:compose-bom to v2024.02.02 2024-03-10 04:12:09 -03:00
renovate[bot]
b9a30dbea3 chore(deps): update com.android.tools.build:gradle to v8.3.0 2024-03-10 04:11:54 -03:00
Andre K
0b7a5d798b
feat: update Finnish localization strings (#901) 2024-03-07 06:40:55 -03:00
Andre K
a1fbdcfd1b
feat: add Lithuanian (lt) locale and translations (#897) 2024-03-07 06:36:38 -03:00
Davis
248982d14c
Add elevation and number of GPS satellites to node info (#895)
* Move battery info to compose - always show voltage level and icons to match battery percentage
Use tool text in preview, rather than actually set text value
Simplify node info layout to avoid defining margins on everything

* Move node position to Compose

* Update hyperlink color to match previous value

* Use compose preview in layout editor

* Use compose preview in layout editor

* Add simple preview for use in layout

* Move last heard node info to Compose
Clean up layout of node info

* Move signal info to Compose and simplify bind

* Prevent long coordinates from colliding with signal info

* Move the rest of the node info card to compose
Breaks the blinking feature when navigating from chat
Wrap position to new line if overflow

* Adjust layout and text sizing to closer match original

* Use constraint layout for tighter display on busy nodes

* Construct environment metrics so that there aren't trailing spaces if current is zero

* Swap viewholder root for compose view rather than inflating layout
Fix padding lost when changing out view holder root
Intelligently update the list with only nodes that changed

* Remove unused method, and adjust replacement method to match the same decimal precisions as before

* Add elevation and number of GPS satellites to node info list
Add some extension functions for easier conversion between units and systems

* Dispose composition on recycle to avoid lingering spacing from previous layouts
Remove comments explaning adapter functionality
Remove unused methods

* Use previous string for denoting unknown node names

* Align properly if altitude but no signal info
2024-03-07 06:34:43 -03:00
Davis
1468b26d3b
Restore voltage precision to 2 places (#889) 2024-03-07 05:47:57 -03:00
Davis
9e54787a7d
Move Node info completely to Compose (#886)
* Move battery info to compose - always show voltage level and icons to match battery percentage
Use tool text in preview, rather than actually set text value
Simplify node info layout to avoid defining margins on everything

* Move node position to Compose

* Update hyperlink color to match previous value

* Use compose preview in layout editor

* Use compose preview in layout editor

* Add simple preview for use in layout

* Move last heard node info to Compose
Clean up layout of node info

* Move signal info to Compose and simplify bind

* Prevent long coordinates from colliding with signal info

* Move the rest of the node info card to compose
Breaks the blinking feature when navigating from chat
Wrap position to new line if overflow

* Adjust layout and text sizing to closer match original

* Use constraint layout for tighter display on busy nodes

* Construct environment metrics so that there aren't trailing spaces if current is zero

* Swap viewholder root for compose view rather than inflating layout
Fix padding lost when changing out view holder root
Intelligently update the list with only nodes that changed

* Remove unused method, and adjust replacement method to match the same decimal precisions as before

* Use previous string for denoting unknown node names

* Mark unknown short name as non-translatable
2024-03-07 05:39:02 -03:00
andrekir
4ba67beb53 refactor: replace mgrs-android library with NGA base MGRS API 2024-03-04 17:14:33 -03:00
Davis
4f9011fe57
Add number of GPS satellites in view to DB for later display (#883)
* Add a couple more fields to position
Use auto migration over manula migration
2024-02-29 11:18:02 -03:00
andrekir
52d4c70d7c 2.2.24 2024-02-28 17:53:48 -03:00
andrekir
85dacaf53b feat: tag node names when NodeInfo is received via MQTT 2024-02-28 17:52:49 -03:00
andrekir
6cd972522d refactor: revert Button custom background color 2024-02-28 17:51:48 -03:00
andrekir
5b35280076 fix: use validPosition in LinkedCoordinates 2024-02-28 17:50:50 -03:00
renovate[bot]
6a819d1f4b chore(deps): update com.google.firebase:firebase-bom to v32.7.3 2024-02-28 17:49:13 -03:00
Andre K
2e009ca49c
feat: add condition check to scroll to bottom of messages list (#882) 2024-02-28 12:53:08 -03:00
renovate[bot]
0ba462db83 chore(deps): update hilt_version to v2.51 2024-02-28 12:52:39 -03:00
Davis
9e9ecba4e3
Move signal info to compose (#879)
* Move battery info to compose - always show voltage level and icons to match battery percentage
Use tool text in preview, rather than actually set text value
Simplify node info layout to avoid defining margins on everything

* Move node position to Compose

* Update hyperlink color to match previous value

* Use compose preview in layout editor

* Use compose preview in layout editor

* Add simple preview for use in layout

* Move last heard node info to Compose
Clean up layout of node info

* Move signal info to Compose and simplify bind

* Prevent long coordinates from colliding with signal info
2024-02-28 12:43:29 -03:00
Davis
8f312e5d16
Move last heard in node info to compose (#878)
* Move battery info to compose - always show voltage level and icons to match battery percentage
Use tool text in preview, rather than actually set text value
Simplify node info layout to avoid defining margins on everything

* Move node position to Compose

* Update hyperlink color to match previous value

* Use compose preview in layout editor

* Use compose preview in layout editor

* Add simple preview for use in layout

* Move last heard node info to Compose
Clean up layout of node info
2024-02-28 11:29:13 -03:00
andrekir
0095fc95d7 feat: add ChannelSettings position_precision config 2024-02-28 07:49:24 -03:00
Davis
9ecae6c0e1
Node position to compose (#877)
* Move battery info to compose - always show voltage level and icons to match battery percentage
Use tool text in preview, rather than actually set text value
Simplify node info layout to avoid defining margins on everything

* Move node position to Compose

* Update hyperlink color to match previous value

* Use compose preview in layout editor

* Use compose preview in layout editor

* Add simple preview for use in layout
2024-02-27 18:43:47 -03:00
andrekir
7b49f57af6 chore: update proto submodule to v2.2.24 2024-02-27 07:12:15 -03:00
andrekir
804e8487af refactor: revert OutlinedTextField custom cursor color
reverts: f4a2100be9
2024-02-26 19:27:37 -03:00
andrekir
1990dfbabf fix: clear focus before deleting ignore_incoming
closes #872
2024-02-26 19:22:12 -03:00
Davis
89438f3553
Improved battery/voltage info in node list (#874)
* Move battery info to compose - always show voltage level and icons to match battery percentage
Use tool text in preview, rather than actually set text value
Simplify node info layout to avoid defining margins on everything

* Use compose preview in layout editor

* Add simple preview for use in layout
2024-02-26 19:19:32 -03:00
daviscodesbugs
7fb2761dc6 Round corners and pad label background 2024-02-26 19:14:34 -03:00
Davis
d16b87f5e8
Fix UI contrast and theming (#871) 2024-02-26 19:13:27 -03:00
andrekir
5c98936e23 refactor: simplify passing args to MessagesFragment 2024-02-25 08:33:51 -03:00
andrekir
6a0d9b523b refactor: handle closing NsdManager service discovery if already stopped 2024-02-25 08:29:39 -03:00
andrekir
55ae55a817 refactor: set NyNodeInfo first in installNodeDB 2024-02-25 07:55:36 -03:00
andrekir
dec48b155e refactor: temporary disable processPacketQueue 2024-02-25 07:45:48 -03:00
andrekir
44d260abff refactor: rename channel_num to frequency slot 2024-02-25 07:44:53 -03:00
andrekir
570a26b413 fix: parsing StoreAndForward text messages 2024-02-25 07:42:22 -03:00
Davis
2de49c143b
Remove UI for firmware update (button and progress) and accompanying logic (#870)
Use non-deprecated method for checking IP address format
2024-02-25 07:38:51 -03:00
renovate[bot]
56d622013b chore(deps): update androidx.hilt:hilt-navigation-compose to v1.2.0 2024-02-25 07:31:05 -03:00
renovate[bot]
4041c9807d chore(deps): update composeoptions to v1.5.10 2024-02-25 07:30:52 -03:00
renovate[bot]
504e20223b chore(deps): update androidx.compose:compose-bom to v2024.02.01 2024-02-25 07:24:24 -03:00
renovate[bot]
4fe402ae1d chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.3 2024-02-25 07:24:06 -03:00
andrekir
eb7cc1451c 2.2.23 2024-02-18 08:03:11 -03:00
andrekir
6e83870295 fix: revert main tab reference change
reverts https://github.com/meshtastic/Meshtastic-Android/pull/844/commits/4add8f97da5cc24455fff5ed7c7a7e3064e3d534
2024-02-18 08:01:51 -03:00
andrekir
3713d371fa refactor: use AutoMirrored icons for RTL support 2024-02-18 07:39:49 -03:00
andrekir
05b88e617c feat: add basic StoreAndForward handling 2024-02-18 07:37:18 -03:00
andrekir
12c68d2bc8 chore: update proto submodule to v2.2.23 2024-02-18 07:23:47 -03:00
andrekir
48eaf18bbf 2.2.22 2024-02-16 06:04:14 -03:00
renovate[bot]
69301c93be chore(deps): update protobuf_version to v3.25.3 2024-02-16 05:57:24 -03:00
renovate[bot]
472b16ad7b chore(deps): update org.jetbrains.kotlinx:kotlinx-coroutines-guava to v1.8.0 2024-02-16 05:57:12 -03:00
andrekir
f83113710f refactor: contacts to use combine() with channels 2024-02-15 08:55:35 -03:00
andrekir
f36ff3dbfc feat: add Singapore region info 2024-02-15 08:48:11 -03:00
Mike Cumings
763ef749f7
Change CSV output to be RFC4180 compliant (#852) 2024-02-15 08:47:00 -03:00
renovate[bot]
c42b5be631 chore(deps): update com.google.firebase:firebase-bom to v32.7.2 2024-02-13 18:42:00 -03:00
Davis
11e31675ca
Refactor and cleanup (#850)
* Move google play check to extension

* Extract launching bug report dialog

* Add missing extension for fdroid flavor
2024-02-13 18:41:40 -03:00
Davis
2bfda9784f
Feature: Jump to node info from message (#844)
* Highlight the node in the node list tab when the user taps on the node chip in messages

* Represent main tabs as enum for more reliable referencing

* Extract tab labels to string resources for easier translation
Annotate resource IDs with their corresponding Android types

* Index off nodes actually in the adapter since they are sorted

* Update viewmodel when tab changes to prevent jumping to other tabs in onResume

* Mark strings as non-translatable for now
2024-02-13 18:32:52 -03:00
andrekir
a88ffbc0fb refactor: disable dependency metadata for fdroid flavor only
fixes #846
2024-02-12 18:24:32 -03:00
andrekir
ada2f14a78 refactor: update PositionConfigItemList 2024-02-12 17:56:00 -03:00
andrekir
13c93c839b chore: update proto submodule to v2.2.22 2024-02-12 17:48:29 -03:00
andrekir
1c5e2dbefc refactor: getContacts() DAO using Map return type 2024-02-11 07:51:41 -03:00
renovate[bot]
84a8162f5f chore(deps): update com.google.gms:google-services to v4.4.1 2024-02-08 17:41:08 -03:00
andrekir
e582099a37 2.2.21 2024-02-08 17:34:41 -03:00
andrekir
5a1b355b66 fix: replace MutableList with CopyOnWriteArrayList 2024-02-08 17:22:27 -03:00
andrekir
9190a6dcab feat: add Hebrew (iw) locale and translations 2024-02-08 17:21:24 -03:00
andrekir
bc85822133 refactor: simplify ourNodeInfo logic 2024-02-08 16:56:10 -03:00
andrekir
f00ad4159d docs: update build instructions
after: c4db056b1f
2024-02-08 16:53:59 -03:00
renovate[bot]
1bb9624b91 chore(deps): update androidx.compose:compose-bom to v2024.02.00 2024-02-08 16:52:42 -03:00
renovate[bot]
6dec66e324 chore(deps): update nav_version to v2.7.7 2024-02-08 16:52:28 -03:00
renovate[bot]
413a63ca8f chore(deps): update composeoptions to v1.5.9 2024-02-08 16:45:49 -03:00
Andre K
01360dc557
refactor: migrate to Firebase KTX in the main modules (#836) 2024-02-08 16:45:28 -03:00
Davis
fa48888c3a
Feature: Long press node in map opens DM (#837) 2024-02-07 18:09:53 -03:00
Andre K
c8f93db00d
refactor: implement repository pattern for NodeDB (#835)
- enforce Unidirectional Data Flow removing nodeDB updates via `MainActivity`/`UIState`
- merge `MyNodeInfoDao` into `NodeInfoDao`
- move node list re-indexing to database
2024-02-06 20:03:15 -03:00
andrekir
3f0dfb7690 chore: update proto submodule to v2.2.21 2024-02-05 07:58:15 -03:00
andrekir
66f0f0eba1 2.2.20 2024-02-03 00:08:03 -03:00
renovate[bot]
c99c503507 chore(deps): update gradle to v8.6 2024-02-02 23:56:07 -03:00
Mike Cumings
e32a1dadea
Annotated debug panel of to/from fields with hex form (#830) 2024-02-02 23:55:41 -03:00
andrekir
d75188f03c refactor: disable dependency metadata when building APKs
ref.: #829
2024-02-01 19:43:09 -03:00
andrekir
60be54cb72 feat: update Dutch localization strings 2024-02-01 09:16:45 -03:00
andrekir
774593482e feat: update Turkish localization strings 2024-02-01 09:13:48 -03:00
renovate[bot]
abb1eff426 chore(deps): update gradle/wrapper-validation-action action to v2 2024-02-01 07:03:59 -03:00
renovate[bot]
f333527bd8 chore(deps): update gradle/gradle-build-action action to v3 2024-02-01 07:03:44 -03:00
renovate[bot]
1a42b5b7af chore(deps): update com.google.accompanist:accompanist-themeadapter-appcompat to v0.34.0 2024-02-01 06:56:48 -03:00
renovate[bot]
8638b480d1 chore(deps): update androidx.compose:compose-bom to v2024 2024-02-01 06:56:33 -03:00
andrekir
8f4d6df6ea chore: update proto submodule to v2.2.20 2024-01-31 05:51:36 -03:00
renovate[bot]
3a425eadb8 chore(deps): update com.android.tools.build:gradle to v8.2.2 2024-01-28 08:05:32 -03:00
andrekir
f8a7596219 feat: add JSON topic subscription to MQTT client 2024-01-28 07:51:58 -03:00
andrekir
91943860e9 refactor: simplify NsdManager service handling 2024-01-28 07:24:26 -03:00
andrekir
8709c6ba53 refactor: improve ConnectivityManager extensions 2024-01-28 07:18:44 -03:00
andrekir
4a1a0dce76 2.2.19 2024-01-21 06:38:19 -03:00
andrekir
b972cab214 feat: add ignore_mqtt to LoRa config
ref.: https://github.com/meshtastic/firmware/pull/3117
2024-01-21 06:37:27 -03:00
andrekir
89b508c0cf refactor: replace MutableStateFlow direct assignment with update 2024-01-21 06:36:44 -03:00
renovate[bot]
e272d54833 chore(deps): update plugin com.google.devtools.ksp to v1.9.22-1.0.17 2024-01-21 06:30:44 -03:00
renovate[bot]
8c8cb9674b chore(deps): update com.google.firebase:firebase-bom to v32.7.1 2024-01-21 06:30:31 -03:00
andrekir
6b4562b018 fix #818: change rangetest.csv delimiter to semicolon (;) 2024-01-21 06:04:51 -03:00
andrekir
47b6160168 chore: update proto submodule to v2.2.19 2024-01-21 05:49:03 -03:00
andrekir
5d96bd6838 feat: update Dutch localization strings 2024-01-17 19:42:45 -03:00
andrekir
6aa1b70274 feat: add client-side NodeInfo channel routing 2024-01-17 19:34:55 -03:00
andrekir
104e6ef25e feat: add paxcounter module config 2024-01-17 19:06:37 -03:00
andrekir
18ac27a75c refactor: migrate BuildConfig to Gradle build files 2024-01-10 18:52:05 -03:00
andrekir
5967417c8b 2.2.18 2024-01-10 18:03:33 -03:00
renovate[bot]
87ba4f65fb chore(deps): update lifecycle_version to v2.7.0 2024-01-10 17:49:27 -03:00
renovate[bot]
85d96dff19 chore(deps): update protobuf_version to v3.25.2 2024-01-10 17:49:12 -03:00
renovate[bot]
62353e0a57 chore(deps): update composeoptions to v1.5.8 2024-01-10 17:41:15 -03:00
renovate[bot]
e262bc224e chore(deps): update plugin com.google.devtools.ksp to v1.9.22-1.0.16 2024-01-10 17:40:52 -03:00
renovate[bot]
630e839a8e chore(deps): update kotlin_version to v1.9.22 2024-01-10 17:40:38 -03:00
andrekir
c7d955e1c6 fix: add workaround for Protobuf KSP 1.0.14+ compiler error 2024-01-10 17:31:08 -03:00
andrekir
45d93a1d9a feat: add NodeInfo channel to node list 2024-01-10 17:31:06 -03:00
andrekir
f4a2100be9 fix: OutlinedTextField cursor visibility 2024-01-10 12:29:12 -03:00
andrekir
ed649470f9 refactor: remove deprecated RECEIVED_DATA broadcast 2024-01-10 12:24:18 -03:00
andrekir
dcb19da723 refactor: remove deprecated MeshPacket.Delayed 2024-01-10 12:18:12 -03:00
andrekir
8f5400c33b refactor: consolidate location APIs into LocationManagerCompat 2024-01-10 06:41:55 -03:00
andrekir
0e3939f378 feat: update Italian localization strings 2024-01-10 06:13:42 -03:00
Amin Husni
6272b1114f
Add Malaysia Frequency (#809)
meshtastic/firmware#3053
meshtastic/protobufs#418
2024-01-10 06:09:53 -03:00
andrekir
f2ad4c7e68 chore: update proto submodule to v2.2.18 2024-01-10 05:50:59 -03:00
andrekir
40fdd8ed78 chore: update design submodule 2024-01-10 05:48:48 -03:00
renovate[bot]
ee0421f006 chore(deps): update com.android.tools.build:gradle to v8.2.1 2024-01-10 05:36:20 -03:00
andrekir
e9f63b4e80 refactor: add channel hash function 2024-01-10 05:33:19 -03:00
andrekir
505ba8a7d3 refactor: nodeDBbyNodeNum to ConcurrentHashMap 2024-01-10 05:30:02 -03:00
andrekir
1691acb59d fix: channel PSK validation 2024-01-10 05:27:05 -03:00
andrekir
35364a6685 refactor: Bluetooth scan only when adapter is enabled 2024-01-03 13:01:12 -03:00
andrekir
b792217f2b refactor: optimize Bluetooth enabled state handling 2024-01-03 13:01:11 -03:00
andrekir
f5dff210b0 refactor: extract ConnectivityManager methods 2024-01-03 08:19:46 -03:00
andrekir
297a97738d 2.2.17 2023-12-27 20:01:46 -03:00
andrekir
9583982e3f fix: network discovery list remove method 2023-12-27 19:49:09 -03:00
andrekir
f73e7fd301 refactor: add user.id as unique mqtt client identifier 2023-12-27 19:48:40 -03:00
andrekir
55a0714ee7 feat: update Spanish localization strings 2023-12-27 19:44:32 -03:00
Andre K
d9d791c3e5
feat: update Romanian localization strings (#803) 2023-12-27 19:43:45 -03:00
Andre K
43f3a7277b
feat: update Italian localization strings (#802) 2023-12-27 19:41:41 -03:00
renovate[bot]
7e65a31c09 chore(deps): update com.google.dagger:hilt-android-gradle-plugin to v2.50 2023-12-27 19:34:52 -03:00
renovate[bot]
e24842db88 chore(deps): update actions/upload-artifact action to v4 2023-12-27 19:34:43 -03:00
renovate[bot]
8cbafd3402 chore(deps): update com.google.android.material:material to v1.11.0 2023-12-27 19:34:34 -03:00
andrekir
79dc8c60f5 chore: update proto submodule to v2.2.17 2023-12-27 19:27:31 -03:00
andrekir
72de02512d 2.2.16 2023-12-13 19:29:30 -03:00
andrekir
391a8be499 fix: packet response requestId tracking
fixes #794
2023-12-13 19:29:06 -03:00
andrekir
425763627d refactor: cleanup isOnline logic 2023-12-13 17:29:36 -03:00
andrekir
b0e8381f74 feat: update Czech localization strings 2023-12-13 17:27:58 -03:00
andrekir
a215eb1263 feat: update Swedish localization strings 2023-12-13 17:24:06 -03:00
andrekir
5888aac903 chore: exclude monorepos from Renovate updates
ref: https://docs.renovatebot.com/presets-config/#configrecommended
2023-12-13 17:18:08 -03:00
renovate[bot]
c03cf5c339 chore(deps): update nav_version to v2.7.6 2023-12-13 16:50:41 -03:00
renovate[bot]
0c2295185d chore(deps): update com.google.firebase:firebase-bom to v32.7.0 2023-12-13 16:50:26 -03:00
renovate[bot]
3b3af58e9b chore(deps): update com.google.dagger:hilt-android to v2.49 2023-12-13 16:42:44 -03:00
renovate[bot]
1fa955fd1e chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.2 2023-12-13 16:42:24 -03:00
renovate[bot]
9bc2b1ee8f chore(deps): update androidx.work:work-runtime-ktx to v2.9.0 2023-12-13 16:31:18 -03:00
renovate[bot]
29c436df0d chore(deps): update room_version to v2.6.1 2023-12-13 16:31:03 -03:00
andrekir
426d29389d chore: update proto submodule to v2.2.16 2023-12-13 16:24:57 -03:00
andrekir
1219f67703 2.2.15 2023-12-04 21:22:36 -03:00
andrekir
7693c06c8a feat: Crowdin localization updates 2023-12-04 21:13:25 -03:00
andrekir
ac63e72233 fix: CompanionDeviceManager.EXTRA_DEVICE return types 2023-12-04 21:11:18 -03:00
renovate[bot]
c9ecb2fe90 chore(deps): update actions/setup-java action to v4 2023-12-04 21:07:11 -03:00
andrekir
73de200784 chore: update proto submodule to v2.2.15 2023-12-04 21:05:45 -03:00
renovate[bot]
eca0360d95 chore(deps): update com.android.tools.build:gradle to v8.2.0 2023-12-01 06:06:34 -03:00
renovate[bot]
58b098e95a chore(deps): update gradle to v8.5 2023-12-01 06:06:14 -03:00
kristofer
a98ca72614
fix #783: quick chat dialog inputType and maxLength (#788) 2023-12-01 06:02:26 -03:00
andrekir
e0eb43fe52 2.2.14 2023-11-29 05:56:06 -03:00
andrekir
fcb65f0be1 refactor: improve CompanionDeviceManager handling 2023-11-29 05:55:45 -03:00
andrekir
c4db056b1f refactor: remove firmware assets from release 2023-11-29 05:49:07 -03:00
andrekir
5946399fd8 feat: Crowdin localization updates 2023-11-29 05:49:07 -03:00
andrekir
49e0d32fa4 fix: network discovery list concurrency handling 2023-11-28 18:32:09 -03:00
andrekir
1a24ebc9d5 fix: don't start interfaces until MeshService starts 2023-11-28 18:18:36 -03:00
andrekir
79b98c84b2 fix: replace BluetoothAdapter with repository methods 2023-11-28 18:17:05 -03:00
andrekir
23966b173b refactor: change length of wifi_psk
ref.: https://github.com/meshtastic/protobufs/pull/402
2023-11-22 07:33:37 -03:00
andrekir
b7d3cbf876 chore: update proto submodule to v2.2.14 2023-11-22 07:28:00 -03:00
andrekir
4be5648746 2.2.13 2023-11-18 06:21:31 -03:00
renovate[bot]
0b206bae03 chore(deps): update com.google.firebase:firebase-bom to v32.6.0 2023-11-18 06:18:54 -03:00
renovate[bot]
bcde508b7a chore(deps): update protobuf_version to v3.25.1 2023-11-18 06:13:35 -03:00
renovate[bot]
b51bfee08d chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.1 2023-11-18 06:11:50 -03:00
renovate[bot]
7afade652d chore(deps): update com.android.tools.build:gradle to v8.1.4 2023-11-18 06:05:51 -03:00
Thomas Göttgens
105f38e97c
feat: add a tablet friendly mode (#782) 2023-11-18 06:03:19 -03:00
andrekir
0330b8ff80 refactor: adjust for landscape 2023-11-18 05:51:42 -03:00
andrekir
e5a20c9665 refactor: extract NsdManager methods 2023-11-18 05:50:57 -03:00
andrekir
f29d4e2309 refactor: extract Bluetooth and USB API methods to repositories 2023-11-17 08:46:54 -03:00
andrekir
c6ad5dcfdf feat: add new configs 2023-11-06 07:50:25 -03:00
renovate[bot]
ca0ee58be2 chore(deps): update protobuf_version to v3.25.0 2023-11-06 07:00:00 -03:00
renovate[bot]
edef075dff chore(deps): update androidx.hilt:hilt-navigation-compose to v1.1.0 2023-11-06 06:55:51 -03:00
renovate[bot]
79a8264d5f chore(deps): update nav_version to v2.7.5 2023-11-06 06:55:32 -03:00
renovate[bot]
d6226854c1 chore(deps): update androidx.fragment:fragment-ktx to v1.6.2 2023-11-06 06:49:19 -03:00
renovate[bot]
e1281bb561 chore(deps): update com.google.firebase:firebase-bom to v32.5.0 2023-11-06 06:49:02 -03:00
andrekir
e4a574d99f chore: update proto submodule to v2.2.13 2023-11-06 06:37:01 -03:00
andrekir
f25b752fd7 fix: update MockInterface with 2.0 changes 2023-11-03 19:17:28 -03:00
andrekir
a5822bb532 fix: InvalidWakeLockTag 2023-11-03 19:08:05 -03:00
andrekir
3922bfbffb refactor: move RadioInterfaceService out of Activity / Fragment 2023-11-03 19:01:19 -03:00
andrekir
94507195a8 refactor: localization strings updates 2023-11-03 18:58:12 -03:00
andrekir
c6a97e7cc8 refactor: move app intro after language picker 2023-11-03 18:57:44 -03:00
Mike Cumings
a7b0d70c03
Continued work on #369: Inject radio interface implementations (#481)
This required creation of new interfaces in order to break the
static coupling.  This also allowed for the removal of some plumbing
of dependencies of these implementations since they are now directly
injected.
2023-10-24 16:09:18 -03:00
andrekir
121376201d refactor: add wantAck to traceroute requests 2023-10-24 15:56:56 -03:00
andrekir
f404bf22bf 2.2.12 2023-10-21 07:28:44 -03:00
andrekir
13c76f49ee refactor: implement repository pattern for ConnectionState 2023-10-21 07:24:46 -03:00
renovate[bot]
179c176baf chore(deps): update room_version to v2.6.0 2023-10-21 07:22:28 -03:00
andrekir
c489717ad1 refactor: convert NodeDB to repository 2023-10-20 19:38:18 -03:00
renovate[bot]
d1d2c6cf3d chore(deps): update androidx.compose:compose-bom to v2023.10.01 2023-10-20 17:34:16 -03:00
renovate[bot]
b82256faae chore(deps): update com.github.mik3y:usb-serial-for-android to v3.7.0 2023-10-20 17:34:00 -03:00
renovate[bot]
7d0b2b9fa2 chore(deps): update com.google.firebase:firebase-bom to v32.4.0 2023-10-20 16:42:43 -03:00
andrekir
32d974a7e1 chore: update proto submodule to v2.2.12 2023-10-20 16:30:55 -03:00
andrekir
ddacdf9022 chore: update design submodule 2023-10-20 16:28:36 -03:00
andrekir
b87257a663 refactor: catch exception when starting service in the background 2023-10-19 17:17:17 -03:00
andrekir
f3e57c05e4 fix: variables not initialized before constructor execution 2023-10-19 17:16:16 -03:00
andrekir
3c18b2535e refactor: always send position config change 2023-10-19 17:13:22 -03:00
andrekir
f0f4f44915 refactor: handle QueueStatus not responding under load
workaround for when the mesh is busy, radios fail to respond with `QueueStatus` and acknowledge sent packets.
- wait until radio queue is free or timeout, always assume sent packets went through;
- never resend, just timeout and move on to the next packet when there is no `QueueStatus` response.
2023-10-19 17:12:08 -03:00
andrekir
47bc9218dc refactor: subscribe MQTT channels with downlink_enabled 2023-10-16 17:40:37 -03:00
andrekir
5ece09b4ce 2.2.11 2023-10-12 22:59:06 -03:00
andrekir
7b3f71ae32 feat: warn user when MqttClientProxy fails 2023-10-12 22:57:45 -03:00
andrekir
8d22a23fe1 feat: warn user when duty cycle limit reached
closes #540
2023-10-12 22:52:54 -03:00
andrekir
e82eb9413c refactor: don't cancel/dismiss traceroute dialogs 2023-10-12 18:36:35 -03:00
andrekir
e3b96f4bd4 feat: implement MQTT client proxy 2023-10-12 18:24:15 -03:00
andrekir
d71a9171ec fix: import config missing data 2023-10-11 18:38:06 -03:00
andrekir
7a01c4b228 chore: update proto submodule to v2.2.11 2023-10-11 18:23:22 -03:00
andrekir
da8576147b 2.2.10 2023-10-08 23:46:35 -03:00
andrekir
85564cae2a fix: ignore range test messages when module disabled 2023-10-08 23:38:28 -03:00
andrekir
7c56c339ef refactor: adjust FusedLocationProvider update settings 2023-10-08 22:43:14 -03:00
andrekir
85a13bd1a1 refactor(nodes): observe configs for live UI updates 2023-10-08 21:16:38 -03:00
andrekir
57e29b23a3 refactor: optimize database storage for specific Portnums 2023-10-08 19:24:13 -03:00
andrekir
17982efbea refactor: handle Position packets sent from phone 2023-10-08 19:20:13 -03:00
andrekir
c8e9410f5c refactor: add range test portnum to .csv export
reference: https://github.com/meshtastic/firmware/pull/2732
2023-10-08 19:15:35 -03:00
andrekir
aa2fc2f707 fix: disable language splits in Bundle builds
some users were unable to change in-app language when installing the app from the Play Store due to "on-demand delivery" conflicts. this change includes string resources for all languages instead of a single language split based on users language preferences during install.

fixes #689
2023-10-08 19:06:13 -03:00
andrekir
4e7ea67da0 refactor: convert ChannelSet to protobuf extensions 2023-10-07 08:47:56 -03:00
andrekir
3288b07e5e refactor: move RadioConfig logic into separate ViewModel 2023-10-06 19:05:34 -03:00
andrekir
37dad9b6fa refactor: move IMeshService instance to repository 2023-10-06 17:54:37 -03:00
renovate[bot]
e93fac2ae3 chore(deps): update com.google.android.material:material to v1.10.0 2023-10-05 22:43:16 -03:00
renovate[bot]
d79f7060e7 chore(deps): update androidx.compose:compose-bom to v2023.10.00 2023-10-05 22:43:03 -03:00
renovate[bot]
553c0fbab0 chore(deps): update gradle to v8.4 2023-10-05 22:28:44 -03:00
renovate[bot]
8c3d99438d chore(deps): update protobuf_version to v3.24.4 2023-10-05 22:28:05 -03:00
renovate[bot]
b22c74ae08 chore(deps): update nav_version to v2.7.4 2023-10-05 22:13:01 -03:00
renovate[bot]
3cfe04466e chore(deps): update hilt_version to v2.48.1 2023-10-05 22:12:48 -03:00
andrekir
0ebeecdf1c chore: update proto submodule to v2.2.10 2023-10-03 23:37:21 -03:00
andrekir
dd3e0f2ec4 2.2.9 2023-10-03 18:45:09 -03:00
andrekir
7c30d86e39 feat: add feedback for configuration changes 2023-10-03 18:32:44 -03:00
andrekir
2dd0e1f1e2 refactor: reduce coupling in Parcelables 2023-10-03 17:27:16 -03:00
andrekir
26195e8d39 refactor: use rememberSaveable for showChannelEditor 2023-10-03 17:05:56 -03:00
andrekir
1185e38bfd refactor: use OutlinedButton in config dialog 2023-10-01 17:49:01 -03:00
andrekir
50e794eda1 fix: incrementCompleted() placement 2023-10-01 11:49:20 -03:00
andrekir
d4659eca61 refactor: animate ResponseState.Loading progress bar 2023-10-01 11:09:08 -03:00
andrekir
e02ecaec6e refactor: set random PSK on default channel name change 2023-10-01 11:05:42 -03:00
andrekir
a10fe75f64 refactor: single-page channel editing 2023-10-01 10:50:19 -03:00
andrekir
adf02b56c7 chore: update proto submodule to v2.2.9 2023-09-30 07:46:54 -03:00
andrekir
ede478f8ee 2.2.8 2023-09-30 06:59:18 -03:00
andrekir
9c4948e73f feat: update French localization strings 2023-09-30 06:50:57 -03:00
andrekir
fdb94fb547 refactor(messages): add back button 2023-09-30 06:40:05 -03:00
andrekir
c26b6dd7ac refactor(messages): persist contact variables 2023-09-30 06:39:03 -03:00
andrekir
3188706776 feat: add new configs 2023-09-29 22:31:22 -03:00
renovate[bot]
e690e34347 chore(deps): update androidx.compose:compose-bom to v2023.09.02 2023-09-29 22:21:28 -03:00
renovate[bot]
70aa864ebc chore(deps): update com.android.tools.build:gradle to v8.1.2 2023-09-29 22:13:51 -03:00
andrekir
de827e9e73 chore: update proto submodule to v2.2.8 2023-09-29 22:01:31 -03:00
andrekir
b59217a95a 2.2.7 2023-09-26 18:35:47 -03:00
andrekir
4e75a0c879 refactor(config): improve null node handling 2023-09-26 18:27:05 -03:00
renovate[bot]
a8d14b5288 chore(deps): update androidx.navigation:navigation-compose to v2.7.3 2023-09-26 18:25:45 -03:00
renovate[bot]
6698b7580d chore(deps): update androidx.compose:compose-bom to v2023.09.01 2023-09-26 18:25:25 -03:00
andrekir
62cb194b0b feat: update Spanish localization strings 2023-09-26 18:17:16 -03:00
andrekir
d14c936373 feat: update French localization strings 2023-09-25 18:39:49 -03:00
andrekir
9278f426ee feat: update Ukrainian localization strings 2023-09-25 18:34:54 -03:00
andrekir
7afab6162a feat: update Russian localization strings 2023-09-25 18:30:01 -03:00
andrekir
e907a63818 fix: broken links in translation strings 2023-09-25 18:21:49 -03:00
andrekir
219241076a refactor: improve exportProfile exception handling 2023-09-23 06:55:25 -03:00
andrekir
055fce4279 fix: docs broken links 2023-09-23 06:54:14 -03:00
andrekir
132a813f0e chore: update proto submodule to v2.2.7 2023-09-23 06:49:49 -03:00
andrekir
4b8985bf28 2.2.6 2023-09-19 06:49:14 -03:00
renovate[bot]
52dc81bfc5 chore(deps): update com.google.firebase:firebase-bom to v32.3.1 2023-09-19 06:38:59 -03:00
renovate[bot]
08a771b329 chore(deps): update com.google.gms:google-services to v4.4.0 2023-09-19 06:38:44 -03:00
andrekir
8d7f81f4a2 chore: update proto submodule to v2.2.6 2023-09-19 06:25:33 -03:00
andrekir
7869243290 refactor(config): move business logic to ViewModel 2023-09-17 06:18:46 -03:00
andrekir
e8b0f1584b refactor: replace enum values() with entries property
https://kotlinlang.org/docs/whatsnew19.html#stable-replacement-of-the-enum-class-values-function
2023-09-16 08:27:01 -03:00
andrekir
a250555ee5 refactor: exclude ENROUTE packets from offline queue 2023-09-16 08:11:59 -03:00
andrekir
d7d856a4a8 refactor(channels): use clickable OutlinedTextField 2023-09-16 07:35:20 -03:00
andrekir
6b93f86b52 refactor: use OutlinedButtons in PreferenceFooter 2023-09-16 07:32:38 -03:00
andrekir
88aa1c69a7 2.2.5 2023-09-11 21:42:40 -03:00
andrekir
4fa9c8f3cb refactor: change default map source to Mapnik 2023-09-11 21:39:55 -03:00
andrekir
b3629b6342 feat: add TopAppBar with back button to radio configs 2023-09-11 21:37:53 -03:00
andrekir
b93098cbce fix: remove constructor from DeviceSettingsFragment 2023-09-11 21:26:42 -03:00
andrekir
e20e66b7f7 refactor: handle range test messages when module enabled 2023-09-11 19:39:49 -03:00
renovate[bot]
2a65f0b54d chore(deps): update androidx.core:core-ktx to v1.12.0 2023-09-11 19:03:58 -03:00
renovate[bot]
0a1f521015 chore(deps): update protobuf_version to v3.24.3 2023-09-11 19:03:16 -03:00
renovate[bot]
f4d7ea3f64 chore(deps): update com.github.mik3y:usb-serial-for-android to v3.6.0 2023-09-11 19:02:54 -03:00
renovate[bot]
e20271d829 chore(deps): update lifecycle_version to v2.6.2 2023-09-11 18:44:15 -03:00
renovate[bot]
f8b00c3416 chore(deps): update nav_version to v2.7.2 2023-09-11 18:43:59 -03:00
renovate[bot]
d8cd7f9080 chore(deps): update androidx.compose:compose-bom to v2023.09.00 2023-09-11 18:43:43 -03:00
andrekir
b2102c7b4c chore: update proto submodule to v2.2.5 2023-09-11 18:26:24 -03:00
andrekir
33c16de0d5 refactor: reorder modemPreset enum 2023-09-08 16:37:41 -03:00
andrekir
86cdb0106f refactor: replace focusManager parameter with LocalFocusManager 2023-09-08 16:05:40 -03:00
andrekir
0f372b8947 chore: enable gradle cache 2023-09-06 19:20:05 -03:00
andrekir
347d1db6cc 2.2.4 2023-09-05 08:55:10 -03:00
andrekir
b034f371fc refactor(map): move Marker updates to Composable 2023-09-05 08:41:29 -03:00
Andre K
83722159be
refactor: migrate nodeDB to Room database (#717) 2023-09-05 08:19:26 -03:00
andrekir
99d7147efe refactor: add Kotlin JVM plugin 2023-09-05 07:39:19 -03:00
andrekir
9a8010f32f refactor: migrate from kapt to ksp 2023-09-05 06:42:42 -03:00
renovate[bot]
43176d2aaa chore(deps): update hilt_version to v2.48 2023-09-05 06:07:46 -03:00
renovate[bot]
409265c9bf chore(deps): update org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.0 2023-09-05 06:07:32 -03:00
renovate[bot]
aae3fe91f3 chore(deps): update actions/checkout action to v4 2023-09-05 05:56:53 -03:00
renovate[bot]
62587e9524 chore(deps): update com.suddenh4x.ratingdialog:awesome-app-rating to v2.7.0 2023-09-05 05:56:40 -03:00
andrekir
1fabf8922d chore: update proto submodule to v2.2.4 2023-09-05 05:30:49 -03:00
renovate[bot]
bf0f07f9a9 chore(deps): update nav_version to v2.7.1 2023-09-04 22:07:04 -03:00
renovate[bot]
6ee22f06ba chore(deps): update androidx.emoji2:emoji2-emojipicker to v1.4.0 2023-09-04 22:06:47 -03:00
renovate[bot]
30868a6608 chore(deps): update com.google.accompanist:accompanist-themeadapter-appcompat to v0.32.0 2023-09-04 21:47:34 -03:00
renovate[bot]
1fa6d35680 chore(deps): update androidx.compose:compose-bom to v2023.08.00 2023-09-04 21:47:18 -03:00
andrekir
ec9883d39c chore: update compileSdk to API 34 2023-09-04 21:24:51 -03:00
renovate[bot]
5f99a73dbe chore(deps): update composeoptions to v1.5.3 2023-09-04 21:17:17 -03:00
renovate[bot]
2bbd46a5df chore(deps): update kotlin monorepo to v1.9.10 2023-09-04 21:16:46 -03:00
renovate[bot]
57221a50ce chore(deps): update com.github.appintro:appintro to v6.3.1 2023-09-04 19:22:27 -03:00
renovate[bot]
973cc373dc chore(deps): update protobuf_version to v3.24.2 2023-09-04 19:22:12 -03:00
renovate[bot]
2589ec521d chore(deps): update com.google.firebase:firebase-bom to v32.2.3 2023-09-04 19:21:37 -03:00
renovate[bot]
8fa16fecce chore(deps): update com.google.firebase:firebase-crashlytics-gradle to v2.9.9 2023-09-04 19:21:19 -03:00
renovate[bot]
6387e75a59 chore(deps): update gradle to v8.3 2023-09-04 19:07:11 -03:00
andrekir
e72b046c53 refactor: convert gpsString to Position extension 2023-09-04 18:40:21 -03:00
andrekir
b25bdb6ff8 refactor(map): use getBitmapFromVectorDrawable
from BonusPack for `myLocationOverlay` icons
2023-09-04 18:29:19 -03:00
andrekir
ae949ad784 fix: limit number of parameters per delete operation
Splits the list of message UUIDs into smaller chunks to perform batch deletions with a maximum of 500 UUIDs per operation, avoiding `SQLiteException: too many SQL variables (code 1 SQLITE_ERROR)`.

fixes #711
2023-09-04 18:17:49 -03:00
andrekir
afce253514 refactor: lock configs when device or app is too old 2023-08-31 15:47:11 -03:00
andrekir
7e63b55ac5 fix: menu item isEnabled logic for ignore option 2023-08-31 15:43:30 -03:00
renovate[bot]
1e2b365756
feat: configure Renovate (#693) 2023-08-27 22:06:56 -03:00
andrekir
348a5ac810 2.2.3 2023-08-27 07:31:42 -03:00
andrekir
15ed09680f chore: update compileSdk and targetSdk to API 33 2023-08-27 07:03:36 -03:00
Andre K
ef11af6e0b
refactor(map): remove fixed zoom level for offline downloads (#694) 2023-08-27 06:31:27 -03:00
andrekir
80cee441c6 chore: update proto submodule to v2.2.3 2023-08-27 05:37:48 -03:00
andrekir
ac3190e944 feat: add menu item to add/remove nodes from ignoreIncomingList 2023-08-25 19:39:52 -03:00
andrekir
c3ec67a9ba feat: add waypoint notifications
closes #665
2023-08-25 17:19:39 -03:00
andrekir
442066d64c refactor(traceroute): handle unknown usernames 2023-08-25 17:10:29 -03:00
andrekir
46bad2f5eb refactor: simplify user null-safety in PopupMenu 2023-08-25 17:02:12 -03:00
andrekir
5b350aecf9 chore: add debug log for DeviceMetadata 2023-08-25 17:00:56 -03:00
andrekir
58738c0da0 chore: update android gradle plugin to 8.1.1 2023-08-22 22:54:13 -03:00
andrekir
bf667310c0 chore: update Protobuf to 3.24.1 2023-08-22 22:53:50 -03:00
andrekir
2a72894af4 chore: update Firebase BOM to 32.2.2 2023-08-22 22:53:23 -03:00
andrekir
944a6a5569 feat: add custom map navigation icon 2023-08-22 22:52:33 -03:00
andrekir
2fa01b4c4c chore: remove unused layout file 2023-08-22 22:51:01 -03:00
Ben Meadors
f68e112c32
refactor: Convert detection sensor portnum payloads to text message (#688) 2023-08-22 22:49:36 -03:00
andrekir
1e03b0b5e8 2.2.2 2023-08-20 09:47:26 -03:00
andrekir
863acb6ce8 fix: call drawOverlays only when connected 2023-08-20 09:46:14 -03:00
andrekir
66ee722a91 fix: ATAK plugins bindService failure on Android 13+
Since ATAK removed the [QUERY_ALL_PACKAGES permission](https://github.com/deptofdefense/AndroidTacticalAssaultKit-CIV/blob/4.6.0.5/atak/ATAK/app/src/main/AndroidManifest.xml#L156-L158) binding services for ATAK plugins running Android 13+ require the 'com.atakmap.app.component' activity with intent-filter added to the manifest.
2023-08-19 07:50:36 -03:00
andrekir
a589febd8d refactor: simplify ourNodeInfo updates 2023-08-19 07:48:11 -03:00
andrekir
06b78cd997 feat: add new module configs 2023-08-19 07:44:54 -03:00
andrekir
1cdfe59137 refactor: update @Previews to private functions 2023-08-19 07:30:47 -03:00
andrekir
3d31997191 chore: update proto submodule to v2.2.2 2023-08-19 06:56:41 -03:00
andrekir
f49a8a73bd 2.2.1 2023-08-13 08:20:42 -03:00
andrekir
c94e20c42c feat: implement TCP interface reconnections 2023-08-13 08:06:29 -03:00
andrekir
a76fb263bb chore: update proto submodule to v2.2.1 2023-08-13 04:01:11 -03:00
andrekir
67fedb9ff8 refactor: ensure Channel and ChannelSettings indexes match 2023-08-12 07:43:38 -03:00
Toby Murray
76d01af995 Make checkbox more descriptive 2023-08-12 07:35:15 -03:00
andrekir
16323d7d53 fix: replace LoRaConfig with correct enum reference 2023-08-07 23:05:03 -03:00
andrekir
7742ceacec 2.2.0 2023-08-07 19:23:33 -03:00
andrekir
2662be1e70 refactor: convert functions to MapView extensions 2023-08-07 19:20:34 -03:00
andrekir
431fbe179d chore: update proto submodule to v2.2.0 2023-08-07 18:59:12 -03:00
andrekir
e9ae0c66d9 refactor: updates for 2.2 release
reference https://github.com/meshtastic/protobufs/pull/368
2023-08-05 07:04:37 -03:00
andrekir
0a47b8df3e refactor: handle MapView Lifecycle 2023-08-04 17:16:42 -03:00
andrekir
fce97997d8 refactor: manage overlays without clear() calls 2023-08-04 17:07:31 -03:00
andrekir
d806b37078 2.1.21 2023-08-01 06:45:41 -03:00
andrekir
cdc76155d9 style: replace Pair() usage with explicit values 2023-07-31 23:07:27 -03:00
Andre K
377c6a18e0
feat: add option to show phone GPS location on map 2023-07-31 22:56:15 -03:00
andrekir
a51e6afd4e feat: update Ukrainian localization strings 2023-07-31 21:50:38 -03:00
andrekir
fec6700271 chore: suppress DelicateCoroutinesApi warning 2023-07-31 19:56:10 -03:00
andrekir
2a1f7a0bcd refactor: trim CacheLayout padding 2023-07-31 19:55:42 -03:00
andrekir
b07ab5be02 refactor: replace map Toasts with Snackbar 2023-07-31 19:54:48 -03:00
andrekir
95d5581e02 refactor: update resource string parameters 2023-07-31 19:40:05 -03:00
andrekir
a8b8f7c4e0 refactor: clean up startDownload 2023-07-31 18:33:00 -03:00
andrekir
206a1378cc refactor: clean up drawOverlays 2023-07-31 18:18:54 -03:00
andrekir
1d948bad4a refactor: clean up generateBoxOverlay 2023-07-31 18:15:26 -03:00
andrekir
104ab1f16f chore: update proto submodule to v2.1.21 2023-07-31 12:15:39 -03:00
andrekir
5f353600ff 2.1.20 2023-07-27 06:53:13 -03:00
andrekir
79bf8d1536 feat: add password TextField 2023-07-27 06:47:34 -03:00
andrekir
f222fe4d5e refactor: move snackbar out of ScrollView 2023-07-27 06:30:15 -03:00
andrekir
06798ad102 chore: update Hilt to 2.47 2023-07-27 06:17:06 -03:00
andrekir
f1b7279b9a chore: update Fragment to 1.6.1 2023-07-27 06:16:46 -03:00
andrekir
41dd0c131d chore: update Kotlin Coroutines to 1.7.3 2023-07-27 06:15:52 -03:00
andrekir
eae71f2548 chore: update Firebase BOM to 32.2.0 2023-07-27 06:15:22 -03:00
andrekir
605600eeaf chore: update gradle wrapper to 8.2.1
Command: `./gradle wrapper --gradle-version=8.2.1`
Release Notes: https://docs.gradle.org/8.2.1/release-notes.html
2023-07-27 06:09:54 -03:00
andrekir
14014af005 chore: update android gradle plugin to 8.0.2 2023-07-27 06:08:30 -03:00
andrekir
49617d2e19 fix: calculate download BoundingBox based on zoom factor
instead of calling `setZoom()` before/after `MapView.boundingBox` which can get out of sync and cause inconsistencies in the tile count.
fixes #670
2023-07-27 05:56:59 -03:00
andrekir
094af7c380 fix: refactor overlay handling during offline map downloads
fixes #669
2023-07-27 05:52:54 -03:00
andrekir
3210bf1ad3 fix: don't show Fahrenheit when temperature field is empty (0f) 2023-07-27 05:50:38 -03:00
Jonathan Bennett
75eebb989e
Fix truncation of environmental metrics when using Celsius (#667) 2023-07-27 05:45:04 -03:00
andrekir
242dc76081 chore: update proto submodule to v2.1.20 2023-07-27 05:33:15 -03:00
andrekir
bbb16d11c4 2.1.19 2023-07-20 19:03:50 -03:00
andrekir
4f5a07926e refactor: remove debug message 2023-07-20 18:58:37 -03:00
andrekir
2d30fd89bc feat: add network availability monitoring 2023-07-20 18:57:33 -03:00
andrekir
dabbcf6ef4 fix: workaround to prevent stale nodes.observeAsState() 2023-07-20 18:39:50 -03:00
andrekir
b0f990e42a refactor: improve packetResponse performance 2023-07-20 18:35:03 -03:00
andrekir
15fe0b7cc1 refactor: change FusedLocationProvider interval to 30s 2023-07-20 18:27:39 -03:00
Andre K
527d94d32a
feat: calculate default values for LoRa channel_num and frequency (#664) 2023-07-18 22:28:16 -03:00
andrekir
f27ae8feba refactor: hoist SnackbarHost to Scaffold 2023-07-18 18:28:49 -03:00
andrekir
2f078113fa refactor: simplify map updates for observeAsState variables 2023-07-18 18:27:12 -03:00
andrekir
c7222bc8e9 feat: add mqtt.proxy_to_client_enabled config 2023-07-18 18:04:22 -03:00
andrekir
fc17c59996 fix: change gas resistance unit to MOhms
reference https://github.com/meshtastic/protobufs/pull/365
2023-07-18 18:00:29 -03:00
andrekir
d3548b16b1 chore: update proto submodule to v2.1.19 2023-07-18 17:54:27 -03:00
Jonathan Bennett
bbb9ca3921
feat: Adds Field to Specify Device IP (#663) 2023-07-17 20:28:32 -03:00
Jonathan Bennett
4e410622d8
feat: Honor radio's option to use Fahrenheit (#658) 2023-07-16 05:46:54 -03:00
andrekir
04e8a6a514 feat: add wake lock to map screen 2023-07-15 09:38:41 -03:00
andrekir
d1e06e21bf feat: add preferred LocationManager providers 2023-07-15 09:26:32 -03:00
andrekir
fefb2f821b fix: close Socket from onDeviceDisconnect 2023-07-15 09:12:42 -03:00
andrekir
b3fc5ad223 2.1.18 2023-07-09 09:32:16 -03:00
andrekir
3663eb4bd1 refactor: update Socket handling with use function 2023-07-09 09:16:52 -03:00
andrekir
6f4a10e963 refactor: replace thread with coroutines 2023-07-09 09:15:52 -03:00
andrekir
da28c2a3bc feat: update Polish localization strings 2023-07-09 09:01:26 -03:00
andrekir
89b7ad2468 feat: update Hungarian localization strings 2023-07-09 08:59:27 -03:00
andrekir
b7901692a5 feat: update German localization strings 2023-07-09 08:57:18 -03:00
andrekir
f793ec9d70 chore: update proto submodule to v2.1.18 2023-07-09 08:34:54 -03:00
andrekir
6bd3683743 refactor: use getter with IntentFilter 2023-07-09 08:19:30 -03:00
andrekir
64a4051e0f chore: update Compose Compiler to 1.4.8 2023-07-09 08:17:57 -03:00
andrekir
6600d63868 chore: update Compose BOM to 2023.06.01 2023-07-09 08:17:12 -03:00
andrekir
e2cd66d3a0 chore: clean up com.j256.ormlite exclusion 2023-07-09 08:15:00 -03:00
andrekir
9f4bc172ff chore: update Firebase BOM to 32.1.1 2023-07-09 08:08:46 -03:00
andrekir
780c5b181c chore: update Kotlin Coroutines to 1.7.2 2023-07-09 08:06:53 -03:00
andrekir
90e6a876c0 chore: update Protobuf to 3.23.4 2023-07-09 08:06:11 -03:00
andrekir
9b3a1e75ce chore: update Room to 2.5.2 2023-07-09 08:05:33 -03:00
andrekir
b2333041e9 chore: update usb-serial-for-android to 3.5.1 2023-07-09 08:04:45 -03:00
andrekir
5abf141033 chore: update play-services-location to 21.0.1 2023-07-09 08:03:59 -03:00
andrekir
fae444b9a1 docs: add Crowdin translations link 2023-07-08 07:25:11 -03:00
andrekir
9a8f169e86 test: update distanceStrGood() 2023-07-08 07:24:00 -03:00
andrekir
2c6b35dbdf fix: revert zoomToNodes removal
revert https://github.com/meshtastic/Meshtastic-Android/pull/647/commits/4412a5d5aa6752c9bc1c71084c8570f6efea0df1
2023-07-08 07:22:23 -03:00
Jonathan Bennett
37762f300b
feat: Add option for Miles and Feet for distance (#651) 2023-07-06 18:26:38 -03:00
andrekir
05327d2c05 fix: increase JVM heap size 2023-06-30 00:34:26 -03:00
andrekir
4af4e82de7 chore: update proguard rules 2023-06-30 00:33:52 -03:00
andrekir
4f7438edf2 2.1.17 2023-06-29 21:57:50 -03:00
andrekir
b41d92be32 refactor: improve BluetoothState.bondedDevices updates
- add `BluetoothState` updates from `BluetoothDevice.ACTION_BOND_STATE_CHANGED` intents
- convert `bondedDevices` to List instead of nested Flow
2023-06-29 21:29:38 -03:00
andrekir
cdea292169 refactor: clean up unused code 2023-06-29 21:16:40 -03:00
andrekir
60b13fd020 refactor: replace InputStream handling with use function 2023-06-29 21:16:18 -03:00
andrekir
8d52664010 refactor: move setTileSource() out of defaultMapSettings() 2023-06-29 21:12:58 -03:00
andrekir
674d56cb1b refactor: move showDownloadButton logic into loadOnlineTileSourceBase() 2023-06-29 21:12:09 -03:00
andrekir
998aa6fcc4 chore: update proto submodule to v2.1.17 2023-06-28 22:17:35 -03:00
Andre K
d4879ceea9
refactor: migrate MapFragment to Composable (#647) 2023-06-24 07:58:01 -03:00
andrekir
e15cdc42f1 ci: update workflows to JDK 17 2023-06-21 23:12:48 -03:00
andrekir
113ccfcc26 refactor: replace Activity with Context parameter 2023-06-21 23:12:31 -03:00
andrekir
7c9e15f35e 2.1.16 2023-06-20 08:37:51 -03:00
andrekir
952bca3b14 refactor: replace lowercase() with equals() 2023-06-20 08:35:08 -03:00
Andre K
bb3b1eaa85
fix: replace duplicate packet IDs before sending queue (#646) 2023-06-20 08:22:10 -03:00
andrekir
9970ced53b chore: update proto submodule to v2.1.16 2023-06-19 06:34:52 -03:00
andrekir
8543150e16 feat: add air_quality_enabled & air_quality_interval 2023-06-18 17:50:18 -03:00
andrekir
379da332e1 fix: remove CompanionDeviceManagerCompat extension 2023-06-18 17:39:04 -03:00
andrekir
07c847ea68 refactor: update startForeground() with explicit service type
from Android Q (API level 29) foreground services require an explicit service type to be specified.
2023-06-18 17:33:06 -03:00
andrekir
744ff2054d chore: update Fragment to 1.6.0 2023-06-18 17:25:33 -03:00
andrekir
44ed4a0c63 chore: update Navigation to 2.6.0 2023-06-18 17:25:13 -03:00
Nanko Geshkov
ed3d64d026
feat: add Bulgarian language (#644) 2023-06-18 17:21:03 -03:00
Andre K
00f4876f60
feat: update Czech localization strings (#645) 2023-06-18 17:20:06 -03:00
andrekir
35090429f5 2.1.15 2023-06-04 19:29:37 -03:00
andrekir
4c9b7d0ed3 chore: switch to Firebase BOM 32.1.0 and KTX libraries 2023-06-04 19:27:59 -03:00
andrekir
883769922d chore: suppress unused parameter warnings 2023-06-03 10:01:38 -03:00
andrekir
fc64167f59 chore: update proto submodule to v2.1.15 2023-06-03 09:09:22 -03:00
andrekir
d297a5e364 fix: ignore packetResponse implicit ACKs 2023-06-02 17:29:20 -03:00
andrekir
10bb93e6aa fix: add null-safety to BLEDeviceListEntry name parameter 2023-06-02 17:23:11 -03:00
andrekir
5f7bc4c904 2.1.14 2023-05-30 19:12:55 -03:00
andrekir
8ac6aa8126 refactor: change screenOrientation to sensorPortrait (closes #640) 2023-05-30 18:46:04 -03:00
Huston Hedinger
80153f7543
add "sdk_gphone64_arm64" to isEmulator detection (#639) 2023-05-30 18:43:54 -03:00
Andre K
271124dc9c
refactor: implement CompatExtensions (#641)
updates deprecated methods, classes, and flags introduced in Android SDK 33, while ensuring compatibility with previous Android versions
2023-05-30 18:30:46 -03:00
andrekir
f7a895e62e chore: update Protobuf to 3.23.2 2023-05-30 17:00:34 -03:00
andrekir
a20c48599a chore: update Firebase Analytics to 21.3.0 2023-05-30 17:00:17 -03:00
andrekir
ef4ac34b92 feat: update Russian localization strings 2023-05-30 16:57:02 -03:00
andrekir
10099dc2fa feat: add new proto configs 2023-05-30 16:53:02 -03:00
andrekir
7e73c51711 fix: use getDeviceAddress() for selectedBluetooth
instead of getBondedDeviceAddress()
2023-05-30 16:50:28 -03:00
andrekir
66af38a585 fix: consolidate duplicated buildFeatures block 2023-05-30 16:47:31 -03:00
andrekir
2b24e40c11 chore: update proto submodule to v2.1.14 2023-05-30 16:42:05 -03:00
andrekir
72f02b0deb 2.1.13 2023-05-26 17:56:17 -03:00
andrekir
1fe669fb73 feat: add RemoteHardwarePin config 2023-05-26 17:45:25 -03:00
andrekir
8bc628de9f feat: add Raspberry Pi usb-device vendor-id 2023-05-26 17:25:33 -03:00
andrekir
1380924a37 refactor: remove BTScanModel from MainActivity 2023-05-26 17:24:23 -03:00
andrekir
206d153c55 chore: update proto submodule to v2.1.13 2023-05-26 16:29:43 -03:00
andrekir
7ca724142f refactor: simplify setOwner logic 2023-05-26 16:18:02 -03:00
andrekir
956db658e9 refactor: remove RadioInterfaceService from MainActivity 2023-05-24 06:43:58 -03:00
andrekir
d01e8e8e74 refactor: clean up myNodeInfo from UsersFragment 2023-05-24 06:39:26 -03:00
andrekir
0f84804f9f chore: update Compose Compiler to 1.4.7 2023-05-24 06:27:45 -03:00
andrekir
6fa8023bf7 chore: update Protobuf to 3.23.1 2023-05-24 06:25:49 -03:00
andrekir
e244aa4b9b chore: update Hilt to 2.46.1 2023-05-24 06:25:09 -03:00
andrekir
5214add39c chore: update Kotlin Serialization to 1.5.1 2023-05-24 06:24:34 -03:00
andrekir
70f30b8f39 chore: update Kotlin Coroutines to 1.7.1 2023-05-24 06:23:58 -03:00
andrekir
d38320ada6 chore: update Firebase Crashlytics Gradle to 2.9.5 2023-05-24 06:22:16 -03:00
andrekir
93ac0186fe fix: incorrect admin channel index retrieval logic
was returning -1 instead of 0 when no admin channel configured.
2023-05-24 06:17:32 -03:00
andrekir
9869a9208b refactor: improve service admin channel index logic 2023-05-21 19:46:40 -03:00
andrekir
6a72c65a83 fix: channel config request logic 2023-05-21 19:31:18 -03:00
andrekir
7da958578b refactor: improve channel editor isEditing logic 2023-05-21 19:09:00 -03:00
andrekir
0a3a07f9ed fix: channel list display issues
- show modem preset name if channel name is empty for remote nodes
- fix channel list not showing last channel (index 7)
2023-05-21 18:32:33 -03:00
andrekir
d58e092333 fix: show modem preset name if channel name is empty
(or "Default" if not available)
2023-05-21 09:19:55 -03:00
andrekir
8643d50425 feat: update German localization strings 2023-05-21 06:12:06 -03:00
andrekir
e2f63e015c fix: reindex node list when local node isn't first (index 0) 2023-05-21 06:08:34 -03:00
andrekir
8151aceea4 fix: ensure proper channel updates to ChannelSetRepository 2023-05-21 06:04:53 -03:00
Andre K
a2388d1d12
refactor: combine config data stores into RadioConfigRepository (#636) 2023-05-20 11:42:15 -03:00
andrekir
a4baa93f4e fix: remove remember from isEditing variable 2023-05-20 11:32:49 -03:00
andrekir
e116a8a97c refactor: update EditListPreference 2023-05-16 17:47:59 -03:00
andrekir
ab5f1ffac1 refactor: use OutlinedButton for radio configs 2023-05-16 17:47:20 -03:00
Andre K
c3ab3c5ae9
feat: implement PacketResponseState.Success (#634) 2023-05-15 17:49:13 -03:00
andrekir
b9be26e344 2.1.12 2023-05-13 18:45:30 -03:00
andrekir
135bcf8b8a fix: revert unintended changes from a316495545 2023-05-13 18:35:16 -03:00
andrekir
0c78bc4e49 feat: add managed mode 2023-05-13 18:18:49 -03:00
andrekir
a316495545 refactor: move shutdown/reboot/etc to radio configs 2023-05-13 18:14:47 -03:00
andrekir
8eb049c60e chore: update Core-Ktx to 1.10.1 2023-05-13 18:06:21 -03:00
andrekir
7eeb0b4d6f fix: revert to ChannelSet addSettings method without index
fixes throwing Non-fatal Exception: java.lang.IndexOutOfBoundsException: Index: N, Size: n
2023-05-13 17:51:56 -03:00
andrekir
69c79c331f chore: update proto submodule to v2.1.12 2023-05-13 10:18:13 -03:00
andrekir
6297cf2b62 fix: set fixed position for local node only 2023-05-12 18:34:29 -03:00
andrekir
ad278f918b feat: update German localization strings 2023-05-12 18:30:57 -03:00
Andre K
068f5e7544
feat: implement PacketResponseState.Error (#633) 2023-05-12 18:29:31 -03:00
andrekir
2502bee55f fix: update handleReceivedPosition
ignore received Position packets with `wantResponse = true` (position requests). set `destNum` for remote nodes (fixed position). also reverts 24e5454fae
2023-05-10 22:17:09 -03:00
andrekir
8a750c122e fix: ensure FAB layer above LazyColumn in ChannelSettingsItemList 2023-05-10 21:43:18 -03:00
andrekir
4b00fe9f2e 2.1.11 2023-05-08 17:58:52 -03:00
andrekir
9a3e5a9456 chore: update Firebase Crashlytics to 18.3.7 2023-05-08 17:43:56 -03:00
andrekir
1a76a78d76 chore: update Material lib to 1.9.0 2023-05-08 17:42:50 -03:00
andrekir
e35313fb8e chore: update Core-Ktx to 1.10.0 2023-05-08 17:39:51 -03:00
andrekir
05a2364a27 chore: update Fragment to 1.5.7 2023-05-08 17:37:01 -03:00
andrekir
89a0a4c4ac chore: update Splashscreen to 1.0.1 2023-05-08 17:35:10 -03:00
andrekir
6515b2d3a7 fix #629: keep saved names when editing actions 2023-05-08 17:34:06 -03:00
andrekir
29d3572507 fix: replace filterNotNull() with null check 2023-05-08 17:33:21 -03:00
Andre K
70f7ffb5fc
feat: implement PacketResponseState.Loading (#630) 2023-05-08 17:31:07 -03:00
andrekir
7d1d793fb9 refactor: collect receivingLocationUpdates with repeatOnLifecycle 2023-05-07 05:34:14 -03:00
andrekir
3bbe3fd7f7 refactor: simplify packetResponse using filterNotNull and firstOrNull 2023-05-07 05:33:18 -03:00
andrekir
d1ce014a88 fix: allow empty (no crypto) and 128 bit PSKs 2023-05-06 08:18:56 -03:00
andrekir
41d0315b63 fix: handle deleted channels in ChannelSet DataStore
adds `removeSettings` method to delete channels with `Role.DISABLED`
2023-05-06 08:08:17 -03:00
andrekir
feed8262ea 2.1.10 2023-05-02 07:30:36 -03:00
andrekir
4a6c0c0b40 fix: prevent clicking through composable background 2023-05-02 07:24:01 -03:00
andrekir
a39390254a refactor: revert PreferenceFooter to default theme colors 2023-05-02 07:22:51 -03:00
andrekir
7aa173d0d2 chore: update proto submodule to v2.1.10 2023-05-02 07:20:54 -03:00
Andre K
9e78e516da
feat: add configs import/export (#628) 2023-05-02 07:18:22 -03:00
andrekir
9dc1a45fe6 fix: correct traceroute to/from order 2023-04-29 07:26:52 -03:00
andrekir
16787b23c8 fix: BitwisePreference trailing icons 2023-04-29 07:19:22 -03:00
Andre K
e5a860cb36
feat: add channel editor (#627) 2023-04-29 07:14:30 -03:00
andrekir
c821eb3681 fix #625: handle Samsung Keyboard dot-minus key in TextField validation
Samsung Keyboard numerical keypad features a combined '.-' key that outputs a dot (.) on first press and replaces it with a minus (-) on second press. there is no option to output each symbol separately (short or long press, etc).

updated validation logic to handle dot symbol at the start of the input string.
2023-04-26 18:21:27 -03:00
andrekir
ab46bf6ab9 refactor: simplify routeDiscovery conditional 2023-04-26 17:56:10 -03:00
andrekir
34eac6af18 fix: change MeshPacket default hopLimit to match LoRa config instead of 0 2023-04-25 19:18:03 -03:00
andrekir
7834cb1f0c fix: use little-endian byte order for protobuf fixed32 values 2023-04-24 22:23:40 -03:00
andrekir
6f5ed93db3 refactor: add conditional to LaunchedEffect 2023-04-24 22:15:38 -03:00
andrekir
8d5cca93f1 style: fix name and formatting 2023-04-24 22:13:44 -03:00
andrekir
145988ad75 refactor: improve parameter naming and type in config constructors 2023-04-24 22:11:36 -03:00
Andre K
85e62eaab4
feat: add remote node configuration (#626) 2023-04-22 12:06:25 -03:00
andrekir
ec3a046fb6 2.1.9 2023-04-17 18:39:29 -03:00
andrekir
691b735483 fix: correct display of connection status 2023-04-17 18:37:19 -03:00
andrekir
42e16dd5b3 update proto submodule to latest 2023-04-17 18:29:49 -03:00
Andre K
a5fa47292e
refactor: split configs into individual components (#623) 2023-04-17 17:13:26 -03:00
andrekir
6fe5f2733a feat: update Polish localization strings 2023-04-16 06:23:13 -03:00
andrekir
600d79babc feat: update Russian localization strings 2023-04-16 06:22:25 -03:00
Andre K
da5f1d529d
feat: add traceroute (#620) 2023-04-16 06:16:41 -03:00
andrekir
72c278c92c chore: update Protobuf to 3.22.3 2023-04-14 07:35:22 -03:00
andrekir
236c33715d chore: update MGRS Android to 2.2.2 2023-04-14 07:35:12 -03:00
andrekir
88d415f2ce fix: primaryChannel IndexOutOfBoundsException 2023-04-14 07:26:18 -03:00
andrekir
97fe340587 2.1.8 2023-04-13 18:27:59 -03:00
andrekir
0692ec5383 chore: update Firebase Analytics to 21.2.2 2023-04-13 18:24:14 -03:00
Andre K
9f6e5f0a8f
feat: update Greek localization strings (#619) 2023-04-13 18:04:27 -03:00
Andre K
a8be41d158
feat: add node colors (#618) 2023-04-13 17:54:52 -03:00
andrekir
dc596e25a2 fix: corrected channel name change behavior 2023-04-13 17:34:28 -03:00
andrekir
e050ebd2a9 refactor: move UI text logic to view model 2023-04-13 17:20:26 -03:00
andrekir
28b905db23 fix: improve null-safety handling in filter logic
to avoid NullPointerException: it.name must not be null at com.geeksville.mesh.repository.bluetooth.BluetoothRepository$createBondedDevicesFlow$2.invokeSuspend(BluetoothRepository.kt:96)
2023-04-13 17:11:40 -03:00
andrekir
5599a5d2a5 feat: add mqtt.root config 2023-04-13 17:06:25 -03:00
andrekir
a5a6061c20 update proto submodule to latest 2023-04-13 17:04:03 -03:00
andrekir
304fe3fcd2 fix: change vector background color to transparent 2023-04-10 20:35:03 -03:00
andrekir
f5ca450bd4 chore: update Kotlin Serialization to 1.5.0 2023-04-10 20:32:25 -03:00
andrekir
5e0e84131f chore: update Awesome App Rating to 2.6.0 2023-04-10 20:32:05 -03:00
andrekir
e03ab70e66 chore: add Lifecycle utilities for Compose
and replace collectAsState() with collectAsStateWithLifecycle()
2023-04-10 20:29:47 -03:00
andrekir
8e7597704b chore: update Accompanist to 0.30.1 2023-04-10 20:27:43 -03:00
andrekir
e2ffceb922 chore: update Compose BOM to 2023.03.00 2023-04-10 20:27:02 -03:00
andrekir
8d688ea6a4 2.1.7 2023-04-08 07:24:36 -03:00
andrekir
20fa73cfe9 feat: update Icelandic localization strings 2023-04-08 07:24:05 -03:00
andrekir
91fd059946 feat: update Chinese localization strings 2023-04-08 07:22:13 -03:00
Andre K
5bf4c9c184
refactor: migrate ChannelFragment to Composable (#615) 2023-04-07 12:43:29 -03:00
andrekir
a560555a01 fix: add synchronized() to service numOnlineNodes
to avoid `ConcurrentModificationException` from nodeDBbyNodeNum changes
2023-04-07 11:28:17 -03:00
andrekir
440fc97fa0 feat: add onFocusChanged parameter to EditTextPreference 2023-04-07 11:26:09 -03:00
andrekir
f6bb86ada2 feat: add maxSize field to module configs 2023-04-07 11:12:52 -03:00
andrekir
804d4f0e27 feat: update devices list from repositories 2023-04-06 21:04:03 -03:00
andrekir
2d0d7b3986 fix: update CompanionDeviceManager associate() to Activity context 2023-04-06 19:10:45 -03:00
andrekir
4e9ec5f096 fix: initialize devices before constructor execution 2023-04-06 19:08:19 -03:00
andrekir
189e9aeee4 feat: add tls_enabled config 2023-04-06 19:07:21 -03:00
andrekir
242f13f1f8 update proto submodule to latest 2023-04-04 23:51:40 -03:00
andrekir
d91ba72041 2.1.6 2023-04-04 23:28:21 -03:00
andrekir
2a74eceb17 refactor: change RegularPreference text style 2023-04-04 23:26:41 -03:00
andrekir
d2c73f2d4b fix: reverse DropDownPreference trailing icon orientation 2023-04-04 23:23:47 -03:00
Garrett M
eec87422b0
closes #580 use "min" instead of "m" for minutes (#609) 2023-04-03 18:35:43 -03:00
andrekir
09662c0141 fix: removeObservers when onStop is called (UI not visible) 2023-04-03 18:30:54 -03:00
andrekir
7fedc2b0e1 refactor: move activity out of BTScanModel 2023-04-03 18:29:41 -03:00
andrekir
b7d91224e4 feat: add ModemPreset.LONG_MODERATE string name
https://github.com/meshtastic/firmware/pull/2400
2023-04-03 18:17:23 -03:00
andrekir
5d90584734 fix: add synchronized() to avoid concurrent modifications
between saveSettings() and discardNodeDB()
2023-04-03 18:12:24 -03:00
andrekir
b3d581486a fix: add onDestroyView() to release fragment resources 2023-04-03 18:03:55 -03:00
andrekir
4dec73ea76 fix: broadcastSmartMinimumIntervalSecs typo 2023-04-01 21:10:29 -03:00
andrekir
04452e4756 chore: fix kapt warning
moving 'kotlin-kapt' to the bottom of plugins {} gets rid of the warning:

"The following options were not recognized by any processor: '[dagger.fastInit, dagger.hilt.android.internal.disableAndroidSuperclassValidation, dagger.hilt.android.internal.projectType, dagger.hilt.internal.useAggregatingRootProcessor, kapt.kotlin.generated]'"
2023-04-01 08:16:51 -03:00
andrekir
effc450af8 feat: create BLEDeviceListEntry class 2023-04-01 08:03:32 -03:00
andrekir
d4c125b962 fix: CompanionDeviceManager context 2023-04-01 07:58:37 -03:00
andrekir
ca7e459dfe refactor: change battery powered from 111 to 101
https://github.com/meshtastic/firmware/issues/2392
2023-04-01 07:49:40 -03:00
andrekir
6ba95c87ef feat: add double_tap_as_button_press config 2023-04-01 07:45:42 -03:00
andrekir
48c110c3da update proto submodule to latest 2023-04-01 07:14:50 -03:00
andrekir
672c244d3f 2.1.5 2023-04-01 07:12:43 -03:00
andrekir
ef9cbf7ee6 feat: update Icelandic localization strings 2023-04-01 07:00:04 -03:00
andrekir
dfcdacea6f chore: update Firebase Crashlytics to 18.3.6 2023-04-01 06:51:19 -03:00
andrekir
770ad9a266 chore: update Firebase Analytics to 21.2.1 2023-04-01 06:50:47 -03:00
andrekir
902763dba7 feat: add EditListPreference component for lora.ignore_incoming 2023-04-01 06:46:18 -03:00
andrekir
e6d19d9e6d fix: add nodeDBbyNodeNum temp var to avoid concurrent modifications 2023-04-01 06:43:41 -03:00
andrekir
8154d3a10f feat: add smart broadcast configs 2023-03-28 23:36:02 -03:00
andrekir
1d8a05dd45 update proto submodule to latest 2023-03-28 22:48:25 -03:00
andrekir
15ab4de13f 2.1.4 2023-03-28 22:43:15 -03:00
andrekir
1bc8fb3c17 feat: add EditTextPreference byte counter 2023-03-28 22:34:10 -03:00
andrekir
da1988bbf9 fix: add back hwModel to setOwner 2023-03-28 22:31:36 -03:00
andrekir
c8569bdd13 feat: add Icelandic localization strings 2023-03-28 22:27:02 -03:00
andrekir
fb8a640873 refactor: use Position object as requestPosition parameter 2023-03-27 15:51:23 -03:00
andrekir
2d9f0a56f2 refactor: use MeshUser object as setOwner parameter 2023-03-27 15:30:42 -03:00
andrekir
451a20d207 chore: update Protobuf to 3.22.2 2023-03-27 15:28:46 -03:00
andrekir
862c11ee4a chore: update Splashscreen to 1.0.0 2023-03-27 15:28:09 -03:00
andrekir
057f94e423 feat: collect bondedDevices flow in BTScanModel 2023-03-27 15:27:26 -03:00
andrekir
84c85a8c3e fix: edit map marker only when connected 2023-03-27 14:44:50 -03:00
andrekir
189159c293 feat: add wake_on_tap_or_motion config 2023-03-25 07:10:37 -03:00
andrekir
5d28bfa1c3 update proto submodule to latest 2023-03-25 06:47:26 -03:00
andrekir
754fc6ee53 2.1.3 2023-03-23 12:41:46 -03:00
andrekir
56b1d6d965 fix: revert TabInfo refactor
reverts b765ac4453 (causing: Fatal Exception: java.lang.IllegalStateException: onAttach called multiple times with different Context! Hilt Fragments should not be retained).
2023-03-23 12:28:44 -03:00
andrekir
919a430090 2.1.2 2023-03-22 18:17:43 -03:00
andrekir
92b12ca79a feat: improve BLE_NAME_PATTERN filter 2023-03-22 18:16:18 -03:00
andrekir
8e9b4cb273 feat: implement Compose viewModel() function 2023-03-22 17:59:59 -03:00
andrekir
dfa25eb91e fix: DropDownPreference modifier reference 2023-03-22 17:54:35 -03:00
andrekir
31aa88fdeb feat: extend PreferenceFooter button labels 2023-03-22 17:53:58 -03:00
andrekir
fe649157ae chore: update Compose Compiler to 1.4.4 2023-03-22 17:48:31 -03:00
andrekir
8099ccd588 chore: update Fragment to 1.5.6 2023-03-22 17:46:26 -03:00
andrekir
11b823b42b chore: update Lifecycle to 2.6.1 2023-03-22 17:45:47 -03:00
andrekir
3a896edd68 chore: update Room to 2.5.1 2023-03-22 17:45:19 -03:00
andrekir
dae3c79eaa chore: update WorkManager to 2.8.1 2023-03-22 17:44:47 -03:00
andrekir
4c00c5b1bf chore: update Hilt to 2.45 2023-03-22 17:42:05 -03:00
andrekir
334ee86362 refactor: clean up map onNodesChanged 2023-03-19 08:15:58 -03:00
andrekir
c9bff2b942 fix: remove unnecessary SDK_INT < 21 check 2023-03-19 07:55:19 -03:00
andrekir
8a74a234da feat: update Portuguese localization strings 2023-03-19 07:49:07 -03:00
andrekir
b765ac4453 refactor: convert TabInfo to enum class 2023-03-19 07:47:17 -03:00
andrekir
2f93ad80c4 chore: update Lifecycle to 2.6.0 2023-03-19 07:32:18 -03:00
andrekir
1db15de716 chore: update RecyclerView to 1.3.0 2023-03-19 07:31:47 -03:00
andrekir
d45910889d 2.1.1 2023-03-14 22:11:13 -03:00
andrekir
f66a3fabc7 chore: update Compose to 1.4.3 2023-03-12 12:41:05 -03:00
andrekir
8fef36a3f2 update proto submodule to latest 2023-03-12 08:21:05 -03:00
andrekir
2282e9c782 2.1.0 2023-03-12 07:41:02 -03:00
andrekir
8bd955ed6b refactor: update battery level convention
reference https://github.com/meshtastic/firmware/issues/2332
2023-03-11 07:45:50 -03:00
andrekir
dd27d7cc5e update proto submodule to latest 2023-03-11 07:20:42 -03:00
andrekir
bee08a0bb4 fix: use MeshPacketQueue 2023-03-10 07:01:15 -03:00
rcarteraz
55ed52eba2
Support A13 Themed Icons (#597) 2023-03-06 20:34:13 -03:00
andrekir
8e4d652ed6 update proto submodule to latest 2023-03-03 11:42:53 -03:00
andrekir
c1ca0d3723 2.0.22 2023-03-03 11:30:43 -03:00
andrekir
d8faece43f feat: show LoRa configs based on usePreset 2023-03-03 11:17:35 -03:00
andrekir
054d2330a4 fix: add @Singleton annotation to RadioInterfaceService
- ensure only one RadioInterfaceService instance is created and used throughout the app
- fix multiple startInterface() calls when Bluetooth is enabled
2023-03-03 11:03:43 -03:00
andrekir
af287c2e6f feat: update Compose in Fragments to use ComposeView 2023-03-02 21:59:22 -03:00
andrekir
5a28649a08 refactor: consolidate extensions 2023-03-02 21:37:04 -03:00
andrekir
f17f9e1ec5 ci: get versionName from app/build.gradle for release action 2023-03-02 21:30:53 -03:00
andrekir
edf1264e5e chore: remove unused eclipse files 2023-03-02 21:29:35 -03:00
andrekir
e16b88a839 chore: update proguard rules
https://github.com/Kotlin/kotlinx.serialization#android
"By default, proguard rules are supplied with the library. These rules (https://github.com/Kotlin/kotlinx.serialization/blob/master/rules/common.pro) keep serializers for all serializable classes that are retained after shrinking, so you don't need additional setup."
2023-03-02 21:28:13 -03:00
andrekir
0ef42b1b83 chore: update android gradle plugin to 7.4.2 2023-03-02 21:26:50 -03:00
andrekir
e334fff439 update proto submodule to latest 2023-02-26 08:39:46 -03:00
andrekir
edb6a49ece 2.0.21 2023-02-26 07:09:16 -03:00
andrekir
e859fd236d feat: update pt-BR localization strings 2023-02-26 07:06:55 -03:00
andrekir
ef9c5feea3 feat: update French localization strings 2023-02-26 07:06:23 -03:00
andrekir
59c8c017a1 feat: update German localization strings 2023-02-26 07:05:09 -03:00
andrekir
d579509c15 feat: update Italian localization strings 2023-02-26 07:03:53 -03:00
andrekir
e211f7e1c5 feat: update Chinese localization strings 2023-02-26 07:02:51 -03:00
andrekir
dc8c4a6c57 ci: split gradle tasks and save reports 2023-02-21 08:57:47 -03:00
andrekir
566fdd3344 feat: add getChannelSet method to IMeshService 2023-02-20 21:48:55 -03:00
andrekir
967e4634a8 chore: remove old unused files 2023-02-20 21:40:43 -03:00
andrekir
4359ec8779 refactor: remove provideLocationCheckbox gps_enabled requirement 2023-02-20 21:34:31 -03:00
andrekir
372f33cd9e chore: update WorkManager to 2.8.0 2023-02-20 21:28:27 -03:00
andrekir
378b539481 fix: default max_channels to 8 2023-02-20 21:26:48 -03:00
andrekir
8be39466d6 style: fix formatting 2023-02-20 21:25:27 -03:00
andrekir
6e68e95907 updating proto submodule to latest 2023-02-20 19:29:02 -03:00
andrekir
9a58ad3d22 2.0.20 2023-02-18 09:25:44 -03:00
andrekir
f66102bae9 feat: update Chinese localization strings 2023-02-18 08:59:14 -03:00
andrekir
efda8a8391 feat: update Japanese localization strings 2023-02-18 08:57:07 -03:00
andrekir
3f4a7c7659 feat: update Russian localization strings 2023-02-18 08:55:06 -03:00
andrekir
c7078a29f9 feat: update Ukrainian localization strings 2023-02-18 08:51:53 -03:00
andrekir
4d4cfb7648 feat: update German localization strings 2023-02-18 08:49:08 -03:00
andrekir
eda17941a3 feat: update Polish localization strings 2023-02-18 08:46:58 -03:00
andrekir
771ec03caf feat: update French localization strings 2023-02-18 08:44:09 -03:00
andrekir
488b603e01 feat: update pt-BR localization strings 2023-02-18 08:40:20 -03:00
andrekir
81db85055d chore: update serialization to 1.4.1 2023-02-18 08:22:07 -03:00
andrekir
603cd85ca4 refactor: improve message status handling in queueJob 2023-02-18 08:20:36 -03:00
andrekir
476ecefe94 feat: add node_info_broadcast_secs config 2023-02-18 08:18:56 -03:00
andrekir
831c51a431 updating proto submodule to latest 2023-02-13 22:43:10 -03:00
andrekir
c0f095fa7c 2.0.19 2023-02-13 21:15:04 -03:00
andrekir
c6ddfa4a4c feat: update German localization strings 2023-02-13 19:18:35 -03:00
andrekir
8a6361d72c feat: drop packet from queue after 3 failed attempts 2023-02-13 18:38:22 -03:00
andrekir
8a0b59a0d1 fix: make NodeInfoTest Locale non-null 2023-02-13 18:36:32 -03:00
andrekir
253a371988 chore: clean manifest lint 2023-02-13 18:33:38 -03:00
andrekir
2d4a41be23 chore: add manifest fullBackupContent and dataExtractionRules 2023-02-13 18:33:19 -03:00
andrekir
d3a62ba52f chore: update proguard rules 2023-02-13 18:32:35 -03:00
andrekir
d6aacef0ac chore: update libs 2023-02-13 18:30:10 -03:00
andrekir
61489b4956 chore: update Compose to 1.3.2 2023-02-08 09:39:47 -03:00
andrekir
f3356db1c9 chore: update gradle wrapper to 7.5 2023-02-08 00:02:05 -03:00
andrekir
721e16a7fe updating proto submodule to latest 2023-02-07 21:10:10 -03:00
andrekir
cd33dc9a09 2.0.17 2023-02-07 18:59:15 -03:00
andrekir
8f5e49e692 feat: add override_frequency config 2023-02-07 18:20:08 -03:00
andrekir
46480500b9 chore: remove gradle-play-publisher 2023-02-07 18:09:35 -03:00
andrekir
49b6d3bea3 chore: update libs 2023-02-07 18:07:33 -03:00
Andre K
c4b20912bd
ci: ignore .md files 2023-02-03 22:47:30 -03:00
andrekir
533b13fd01 docs: update fdroid repo link 2023-02-03 22:40:43 -03:00
andrekir
5a05d9ada5 updating proto submodule to latest 2023-02-03 21:15:30 -03:00
andrekir
75fd2dd11c 2.0.16 2023-02-03 19:41:55 -03:00
andrekir
6e82affb98 fix: replace CompletableFuture lib 2023-02-03 19:41:30 -03:00
andrekir
218aa4b86e feat: add isGooglePlayAvailable check 2023-02-03 19:39:17 -03:00
andrekir
ce66a9425d feat: edit waypoints 2023-02-03 19:33:50 -03:00
andrekir
63ac168fc8 refactor: clean up MapFragment 2023-02-02 18:08:49 -03:00
andrekir
6c79b81d43 feat: add rebroadcastMode config 2023-02-02 17:14:46 -03:00
andrekir
9e8900ec4f refactor: convert ourNodeInfo to Flow 2023-02-02 17:13:44 -03:00
andrekir
4c0d804531 fix: override default dialog button text colors 2023-02-02 17:01:17 -03:00
andrekir
e4d007be0c updating proto submodule to latest 2023-02-01 13:26:52 -03:00
andrekir
a71cd21e3a 2.0.15 2023-02-01 12:53:31 -03:00
andrekir
640cd0a269 refactor: replace save with send string 2023-02-01 12:51:42 -03:00
andrekir
62420132f1 feat: waypoints 2023-02-01 12:49:30 -03:00
andrekir
a9784f3747 chore: upgrade gradle 2023-01-31 18:49:27 -03:00
andrekir
8405ccd84f chore: disable Jetifier 2023-01-31 18:18:50 -03:00
andrekir
3c1629ffbd feat: use FusedLocationClient for google flavor 2023-01-31 18:17:13 -03:00
andrekir
ee72ee854c updating proto submodule to latest 2023-01-31 18:07:58 -03:00
Andre K
13e85aef59
Create FUNDING.yml 2023-01-28 12:11:35 -03:00
andrekir
8b2716232f 2.0.14 2023-01-27 16:38:33 -03:00
andrekir
1fc99b8bb4 feat: enforce waypoints locked_to 2023-01-27 16:13:49 -03:00
andrekir
a0935a695c fix: don't set ignore_incoming to 0 2023-01-27 15:53:53 -03:00
andrekir
a49372c9ba feat: add new proto configs 2023-01-27 15:53:16 -03:00
andrekir
25387560ec updating proto submodule to latest 2023-01-27 15:23:35 -03:00
andrekir
45d223a9a6 ci: run gradle build tests 2023-01-26 23:23:50 -03:00
andrekir
f1af59abb6 feat: update Norwegian localization strings 2023-01-26 23:11:34 -03:00
andrekir
71c7aca10b refactor: clean up theme and language pickers 2023-01-26 23:02:44 -03:00
andrekir
8d93ed88ce fix: add CompletableFuture backport for API 14+ 2023-01-26 22:41:58 -03:00
andrekir
1e504a8703 fix: update unit tests 2023-01-26 22:41:12 -03:00
andrekir
9ea6dff385 refactor: move askToRate() to GeeksvilleApplication 2023-01-26 22:30:47 -03:00
andrekir
023d4d767d refactor: clean up GeeksvilleApplication 2023-01-26 22:30:47 -03:00
Andre K
d6722abadb
docs: review badge after mainline repo inclusion 2023-01-22 22:11:33 -03:00
andrekir
9d4d0dd6a6 feat: update Korean localization strings 2023-01-22 22:03:40 -03:00
Andre K
7f1e9113db
ci: upload single debug apk artifact 2023-01-22 22:03:14 -03:00
andrekir
b4e8852961 fix: always broadcast MessageStatus updates 2023-01-22 21:45:45 -03:00
Andre K
31d0249d1c
update Polish localization strings (#570) 2023-01-20 12:50:33 -03:00
andrekir
0130b1d429 2.0.13 2023-01-20 12:27:27 -03:00
andrekir
6e96a6b7c2 feat: add fdroid and google flavors 2023-01-20 12:27:27 -03:00
andrekir
f0294a7955 fix: exclude com.google.android.gms from mil.nga.mgrs:mgrs-android 2023-01-18 21:36:42 -03:00
andrekir
55d502321a chore: update appcompat to 1.6.0 stable 2023-01-18 21:36:01 -03:00
Andre K
06ac70d207
update Hungarian localization strings (#568) 2023-01-18 21:32:30 -03:00
Andre K
df2c0aa91b
update Ukrainian localization strings (#567) 2023-01-17 19:43:02 -03:00
andrekir
f935e1f7f0 feat: update pt localization strings 2023-01-17 19:28:58 -03:00
andrekir
c74dd3b54a feat: add waypoint emoji icons 2023-01-17 19:27:18 -03:00
Andre K
620100b0d3
feat: add packet transmit queue (#566) 2023-01-17 18:46:04 -03:00
andrekir
24e5454fae feat: improve handleReceivedPosition validation 2023-01-15 17:49:59 -03:00
andrekir
e147c0e0c5 fix: minor resource strings.xml typos 2023-01-15 17:43:49 -03:00
andrekir
6b6070637e refactor: update mqtt address size 2023-01-15 17:43:19 -03:00
andrekir
22f941310b feat: add waypoint expire filter 2023-01-15 17:42:28 -03:00
andrekir
e697b16844 updating proto submodule to latest 2023-01-15 17:26:54 -03:00
andrekir
99675bf9fa 2.0.12 2023-01-12 18:06:07 -03:00
andrekir
d23584c283 feat: get queued packets from database 2023-01-12 17:47:59 -03:00
andrekir
5a07998b73 fix: move Packet log after radioInterfaceService.sendToRadio() 2023-01-12 17:34:17 -03:00
andrekir
17a6e8cbc6 refactor: clean up meshservice 2023-01-12 17:32:20 -03:00
Sacha Weatherstone
bbae446e96
Update README.md 2023-01-11 23:17:22 +11:00
Andre K
8f11130bc8
feat: add Crowdin badge 2023-01-11 09:13:32 -03:00
andrekir
7086444917 fix: set socket to null after close 2023-01-10 17:36:46 -03:00
andrekir
8e2e97b250 refactor: change NetworkConfig.AddressMode description 2023-01-10 17:34:27 -03:00
andrekir
22e83ba953 feat: add BluetoothConfig.fixedPin validation 2023-01-10 17:32:50 -03:00
andrekir
eaaadf3b34 feat: add EditIPv4Preference 2023-01-08 10:38:04 -03:00
andrekir
4ab9e18a82 refactor: replace hardcoded config totals 2023-01-06 22:20:39 -03:00
andrekir
9425b4d172 fix: pt modem_config_long typo 2023-01-06 21:54:17 -03:00
andrekir
405b8e2ea3 2.0.11 2023-01-03 21:48:30 -03:00
andrekir
807337ca9b add new configs 2023-01-03 21:45:41 -03:00
andrekir
5a6b5a7202 fix proto name change 2023-01-03 21:18:32 -03:00
andrekir
942469bbc9 updating proto submodule to latest 2023-01-03 21:04:17 -03:00
andrekir
b8ee4152a3 use ServiceCompat.stopForeground() for API < 24 compatibility 2023-01-03 21:02:31 -03:00
andrekir
af05355186 2.0.9 2023-01-02 22:44:56 -03:00
andrekir
cfff2561d9 refactor settings Snackbar 2023-01-02 22:38:25 -03:00
Andre K
73fd52dcb5
calculate zoomToNodes zoom level (#553) 2023-01-02 22:34:56 -03:00
Andre K
7c28c4091f
distinguish between implicit and real ACKs (#552) 2023-01-02 22:23:23 -03:00
andrekir
1e95c200e6 handle missing contactKey digit 2023-01-02 21:36:35 -03:00
andrekir
9e5cffbfb1 add lora.ignoreIncoming config 2023-01-02 21:27:51 -03:00
andrekir
2a25649766 update deprecated method 2023-01-02 21:19:10 -03:00
andrekir
d41f85fee7 add new module configs 2023-01-02 21:15:33 -03:00
Andre K
27d8a498c4
update foreground service start (#551) 2023-01-02 21:12:57 -03:00
andrekir
0662844009 updating proto submodule to latest 2022-12-29 09:04:17 -03:00
andrekir
c1da8f31ee clean up removed resource strings 2022-12-29 08:29:37 -03:00
andrekir
5853aa16d6 2.0.8 2022-12-28 18:19:44 -03:00
andrekir
79173c12f0 updating proto submodule to latest 2022-12-28 18:07:51 -03:00
andrekir
7afccebb0f fix map our NodeInfo reference 2022-12-28 17:41:30 -03:00
Andre K
99a42b1aa1
export hardcoded strings (#547) 2022-12-28 17:37:25 -03:00
andrekir
96ea0bf5a9 make isLicensed optional 2022-12-25 23:40:28 -03:00
andrekir
991a8622dc add hwModel to setOwner 2022-12-24 09:09:47 -03:00
andrekir
e550219e1e analytics/report bug if isGooglePlayAvailable 2022-12-24 08:37:38 -03:00
andrekir
4ea17e36bc update coroutine scopes 2022-12-24 00:20:54 -03:00
andrekir
d42dbb7b04 add foregroundServiceType connectedDevice 2022-12-23 22:52:44 -03:00
andrekir
4646d228bc remove debug message 2022-12-23 22:33:05 -03:00
andrekir
4632b8f956 filter out null bluetooth names 2022-12-23 22:23:48 -03:00
andrekir
ed4862a135 2.0.7 2022-12-12 22:04:51 -03:00
andrekir
0fc00b0468 refactor Bluetooth scan API preference 2022-12-12 22:00:15 -03:00
andrekir
d74c5b6ec9 refactor BTScanModel constants 2022-12-12 21:52:09 -03:00
andrekir
08ec7dfef1 clean up language tags parser 2022-12-12 21:51:15 -03:00
andrekir
c9ac6860db add new proto configs 2022-12-12 21:50:48 -03:00
la mer
6c5a718410
improve documentation for usage of bound service (#534) 2022-12-12 21:30:35 -03:00
andrekir
7f7758c28e fix module_config proto changes 2022-12-12 21:05:47 -03:00
andrekir
572a23a547 updating proto submodule to latest 2022-12-12 20:58:16 -03:00
Andre K
c9a81c72e0
update in-app language picker (#538) 2022-12-10 11:03:14 -03:00
Andre K
8dca9ea8b6
fix lat lon validation for fixed position (#537) 2022-12-10 08:49:32 -03:00
andrekir
5c3595931f use encodeToByteArray / decodeToString methods 2022-12-10 00:45:50 -03:00
andrekir
e816b03f47 update isConnected logic 2022-12-10 00:42:51 -03:00
Andre K
d538c2afff
list devices from adapter.bondedDevices (#536) 2022-12-10 00:16:14 -03:00
Andre K
6ede4ed3bd
fix broadcastMessageStatus (#535) 2022-12-10 00:14:32 -03:00
Ben Meadors
dcc03be484
Account for negative metric values in telemetry (#532) 2022-12-03 18:53:20 -03:00
Krezalis
88fabab750
Ukrainian translation (#531) 2022-12-03 18:52:21 -03:00
andrekir
255ef0b532 2.0.6 2022-11-29 18:01:28 -03:00
Andre K
8a578b49fb
Merge pull request #528 from meshtastic/atak-fwd
updates for atak forwarder 2.0
2022-11-29 17:56:28 -03:00
andrekir
35ffcceb79 add aidl get/begin/commit configs 2022-11-29 17:47:49 -03:00
andrekir
a1984c5136 revert broadcastMessageStatus 2022-11-29 17:45:04 -03:00
andrekir
7d8e5a93a6 force connection broadcast on setDeviceAddress 2022-11-29 17:42:16 -03:00
andrekir
d9691a7fbd ignore onItemSelected without changes 2022-11-29 17:38:21 -03:00
andrekir
bb698e14d1 update configs 2022-11-29 17:32:41 -03:00
andrekir
ebe6b1030e updating proto submodule to latest 2022-11-29 17:25:36 -03:00
andrekir
3d79601965 change provideLocation on isPressed 2022-11-25 18:53:50 -03:00
Andre K
689e7e7eca
add ModuleConfig settings (#526) 2022-11-22 22:01:37 -03:00
andrekir
36cb78a332 updating proto submodule to latest 2022-11-22 18:24:29 -03:00
Andre K
0c783dfbff
add fields for position fixed (#524) 2022-11-15 22:00:29 -03:00
andrekir
57030f90b6 fix early ownerName null call 2022-11-15 16:31:35 -03:00
andrekir
068a90f93b 2.0.3 2022-11-15 12:28:45 -03:00
Andre K
9442c1d510
config clean up and updates (#522) 2022-11-15 12:19:59 -03:00
andrekir
e328b5b5d9 set allowSpecialFloatingPointValues 2022-11-15 11:44:47 -03:00
andrekir
ac316c6179 updating proto submodule to latest 2022-11-14 23:26:45 -03:00
andrekir
989ddbe761 add proto max_size validation 2022-11-11 18:24:58 -03:00
andrekir
c6bbed8106 2.0.1 2022-11-09 07:23:07 -03:00
andrekir
a10b55a5ed limit short name length 2022-11-09 07:20:05 -03:00
andrekir
9a71092b5f add DisplayConfig.OledType 2022-11-08 23:28:02 -03:00
andrekir
79d0c36de3 updating proto submodule to latest 2022-11-08 23:16:25 -03:00
Andre K
4bcd408dce
add user & device config settings (#520)
* add MeshUser & LocalConfig prefs
2022-11-08 23:11:18 -03:00
Andre K
17dc4da191
Merge pull request #518 from andrekir/pos-request
feat: add option to request remote nodes position
2022-11-06 18:16:36 -03:00
andrekir
6894883362 add option to request remote nodes position 2022-11-06 17:46:57 -03:00
Andre K
8a03603ef8
Merge pull request #517 from meshtastic/tele
fix #516: check Telemetry oneOf to update Nodeinfo
2022-11-06 08:45:01 -03:00
andrekir
e18b1a9a4a check Telemetry oneOf to update Nodeinfo 2022-11-06 08:39:05 -03:00
Andre K
f56f5a1a5f
Merge pull request #515 from andrekir/targetsdk31
update targetSdkVersion to 31
2022-11-04 18:47:54 -03:00
andrekir
00de511907 update targetSdkVersion to 31 2022-11-04 18:31:18 -03:00
Andre K
cbb8e5f7db
Merge pull request #513 from meshtastic/libs
update libs
2022-11-02 15:52:29 -03:00
andrekir
4c46f2ae1c upgrade gradle libs 2022-11-02 15:38:26 -03:00
andrekir
3e1416f7ce add compose libs 2022-11-02 15:34:56 -03:00
andrekir
0eb3486eb9 update lifecycle libs 2022-11-02 15:16:30 -03:00
andrekir
357b4e21df updating submodules to latest 2022-11-02 14:56:49 -03:00
andrekir
6738e25cd5 remove deprecated 2022-11-02 14:54:03 -03:00
andrekir
37aa6963d1 update submodule names 2022-11-02 14:49:38 -03:00
andrekir
56f4d0bfaf updating proto submodule to latest 2022-10-30 21:38:30 -03:00
andrekir
d467163eca 2.0.0 2022-10-30 21:28:06 -03:00
Andre K
db789d8c1b
Merge pull request #507 from meshtastic/node-layout
fix nodes card layout
2022-10-30 21:23:10 -03:00
andrekir
aa8596da2a fix nodes card layout 2022-10-30 17:19:10 -03:00
Andre K
c567420294
Merge pull request #505 from ScriptTactics/osmdroid-phase3
Map View Updates
2022-10-27 17:20:25 -03:00
PWRxPSYCHO
71ff6002a9 Merge branch 'osmdroid-phase3' of github.com:ScriptTactics/Meshtastic-Android into osmdroid-phase3 2022-10-27 09:26:28 -04:00
PWRxPSYCHO
3c701ea17a removed unused weather layer for future use 2022-10-27 09:26:16 -04:00
PWRxPSYCHO
68dfc71812
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-27 09:21:24 -04:00
andrekir
2cc839eafd 1.3.48 2022-10-27 09:14:37 -03:00
andrekir
94a9071dc6 updating proto submodule to latest 2022-10-26 18:41:02 -03:00
andrekir
9ad6dd137d when we init default, set use_preset to true (meshtastic/Meshtastic-device#1845) 2022-10-26 17:58:38 -03:00
andrekir
726e54786c updating proto submodule to latest 2022-10-26 17:49:32 -03:00
andrekir
8ead6aeb45 updating proto submodule to latest 2022-10-26 17:09:30 -03:00
andrekir
7cdb1d0f90 include negative snr in rangetest 2022-10-26 17:03:51 -03:00
andrekir
740e86d664 update actions to use Node.js 16 2022-10-26 16:50:46 -03:00
PWRxPSYCHO
25ea4bddb8
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-22 15:54:39 -04:00
PWRxPSYCHO
b9ae181ee4 revert back to old map style UI 2022-10-20 21:43:27 -04:00
andrekir
b3ec509f82 updating proto submodule to latest 2022-10-20 21:37:14 -03:00
PWRxPSYCHO
07cc8ce701 Updated UI for Map Layers & Style.
Still need on Click listener
2022-10-20 08:50:21 -04:00
PWRxPSYCHO
87cc382416 Getting closer. Just need to populate the recycler & wrap the menu into constrained box 2022-10-19 16:52:44 -04:00
PWRxPSYCHO
11ea26a22e Updated UI for cache deletion 2022-10-19 11:13:37 -04:00
PWRxPSYCHO
b07163adb7 Merge branch 'osmdroid-phase3' of github.com:ScriptTactics/Meshtastic-Android into osmdroid-phase3 2022-10-19 09:38:11 -04:00
PWRxPSYCHO
acc529f53f working on menu changes 2022-10-19 09:38:07 -04:00
PWRxPSYCHO
ee388db491 Clear cache based on tile source 2022-10-19 09:36:16 -04:00
PWRxPSYCHO
e22c7f8c35 Trying to update map style menu 2022-10-18 21:48:14 -04:00
PWRxPSYCHO
c3eab4fcdc
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-18 14:32:15 -04:00
andrekir
bfb9c9ea56 fix ChannelSetTest 2022-10-18 06:31:38 -03:00
PWRxPSYCHO
cc1814b499
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-17 19:56:28 -04:00
andrekir
a3aa2a51aa 1.3.45 2022-10-16 19:30:45 -03:00
Andre K
69e4a175bf
Merge pull request #500 from meshtastic/channel-config
install channels from wantConfig
2022-10-16 19:27:23 -03:00
andrekir
ce140383bb install channels from wantConfig 2022-10-16 19:19:03 -03:00
andrekir
6c37b451c3 clean up view bindings 2022-10-16 19:16:33 -03:00
andrekir
9d0c637ec1 updating proto submodule to latest 2022-10-16 19:12:23 -03:00
andrekir
f400774481 fix default channel LoRa settings 2022-10-16 19:02:27 -03:00
andrekir
a3cc422afc reset channels no longer in use 2022-10-16 12:40:05 -03:00
andrekir
d29c86ee74 admin channel not case-sensitive 2022-10-16 12:36:21 -03:00
PWRxPSYCHO
4acbd05472
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-14 09:53:41 -04:00
andrekir
f310bb2019 change ModemPreset and don't reset LoRaConfig 2022-10-13 18:20:51 -03:00
andrekir
003da7c37a 1.3.43 2022-10-13 00:29:22 -03:00
Andre K
6dce06f51a
Merge pull request #499 from meshtastic/qrcode
update QR code convention
2022-10-13 00:28:36 -03:00
andrekir
2e4cae048f update QR code convention 2022-10-13 00:18:19 -03:00
Andre K
72af2b4a44
Merge pull request #498 from meshtastic/uuid-char
detect UUID to warn firmware is too old
2022-10-13 00:05:11 -03:00
andrekir
868a0f7bd3 reset invalidVersion just in case 2022-10-13 00:02:00 -03:00
andrekir
22671a73db detect UUID to warn firmware is too old 2022-10-12 23:40:54 -03:00
PWRxPSYCHO
a7868c3025
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-12 13:13:11 -04:00
Andre K
3174b53c36
Merge pull request #497 from meshtastic/set-channel
move ChannelSet out of MeshService
2022-10-12 09:47:07 -03:00
andrekir
88b94bd018 move ChannelSet out of service 2022-10-12 09:02:25 -03:00
Andre K
ce8632a351
Merge pull request #496 from meshtastic/change-uuid
Change UUID for FromRadio characteristic
2022-10-11 22:35:52 -03:00
PWRxPSYCHO
42cba353fa Setup new class to handle "auth" urls 2022-10-11 18:36:44 -04:00
andrekir
07ac4f8392 bump minDeviceVersion to 1.3.43 2022-10-11 19:21:03 -03:00
PWRxPSYCHO
11915df72e
Merge branch 'meshtastic:master' into osmdroid-phase3 2022-10-11 18:17:21 -04:00
Andre K
8a384af1d2
Change UUID for FromRadio characteristic 2022-10-11 16:25:46 -03:00
PWRxPSYCHO
2c08dd7cd0 Working on overlays 2022-10-10 22:41:02 -04:00
andrekir
478b0be2f9 increase QR code size 2022-10-10 18:37:54 -03:00
andrekir
adb0b13f3f updating proto submodule to latest 2022-10-10 18:16:44 -03:00
Andre K
2577726f5e
Merge pull request #494 from meshtastic/remote
add remote node administration
2022-10-10 18:15:04 -03:00
andrekir
d9eb113b12 add remote node admin 2022-10-10 18:09:20 -03:00
andrekir
213164e95b requestConfig refactor 2022-10-10 18:06:19 -03:00
Andre K
346a7d1b75
Merge pull request #493 from andrekir/gps
use locationManager method for gps
2022-10-10 18:03:49 -03:00
andrekir
79ccd40ae1 use locationManager method to determine gps exists or is disabled 2022-10-10 17:47:21 -03:00
PWRxPSYCHO
50cbc262f2 added new map source and updated tile server for clarity maps 2022-10-10 08:50:02 -04:00
PWRxPSYCHO
fcd87cc7b3 added new map source and updated tile server for clarity maps 2022-10-09 18:42:25 -04:00
andrekir
b2f15337be use explicit DELAYED_BROADCAST enum 2022-10-07 23:26:00 -03:00
Andre K
e3b12fc74c
Merge pull request #489 from ScriptTactics/osmdroid-phase2
Osmdroid Phase 2
2022-10-07 22:40:05 -03:00
PWRxPSYCHO
9d96024a5a Merge branch 'osmdroid-phase2' of github.com:ScriptTactics/Meshtastic-Android into osmdroid-phase2 2022-10-07 21:35:12 -04:00
PWRxPSYCHO
eed397157c Render map style button after download completes & re-render everything if download fails 2022-10-07 21:34:53 -04:00
PWRxPSYCHO
c0a2651e47
Merge branch 'meshtastic:master' into osmdroid-phase2 2022-10-07 20:58:24 -04:00
Andre K
c24585d4de
Merge pull request #490 from meshtastic/gps-time
use gps time in position sent from phone
2022-10-07 21:51:28 -03:00
andrekir
856e704dd1 use gps time in position sent from phone 2022-10-07 21:38:53 -03:00
PWRxPSYCHO
d9a6efe5d4 removed hard-coded strings 2022-10-07 17:33:12 -04:00
PWRxPSYCHO
a30a8428ce fixed map download 2022-10-07 17:26:57 -04:00
PWRxPSYCHO
07ed060e16 Added SQL cache clearing 2022-10-07 15:56:25 -04:00
PWRxPSYCHO
dc09ea9c54 Increased download thread for ESRI Tile Source 2022-10-07 15:55:05 -04:00
PWRxPSYCHO
4431443ecb Added cache clearing 2022-10-07 12:23:26 -04:00
PWRxPSYCHO
5d13c74c3d fixed issue where user could switch map style while download window was open 2022-10-07 11:52:28 -04:00
PWRxPSYCHO
17cbce1d41 minor fixes/tweaks 2022-10-07 11:45:18 -04:00
PWRxPSYCHO
ec61d0c66e
Merge branch 'meshtastic:master' into osmdroid-phase2 2022-10-07 10:31:01 -04:00
PWRxPSYCHO
edec10a550 Minor tweaks 2022-10-06 17:18:11 -04:00
andrekir
840fa8c697 1.3.42 2022-10-06 18:14:08 -03:00
PWRxPSYCHO
b1291e28a7 Moving right along 2022-10-06 17:08:35 -04:00
PWRxPSYCHO
63bee8a3d8 Removed duplicate method and cleaned up some code 2022-10-06 13:16:51 -04:00
PWRxPSYCHO
6bb2a59977 Getting close :) 2022-10-05 22:56:27 -04:00
andrekir
bf2cf7bd3b bump minDeviceVersion to 1.3.41 2022-10-05 22:09:00 -03:00
andrekir
736d526b51 add router role to lsEnabled 2022-10-05 22:06:46 -03:00
PWRxPSYCHO
38b6fe04ef Moved Custom Map classes to new folder.
Removed NOAA source from Map Source Arrays
Looking at drawing overlay on long press
2022-10-05 10:37:11 -04:00
andrekir
18c8e1253f updating proto submodule to latest 2022-10-04 16:23:56 -03:00
andrekir
801bc2dd6c remove GeeksvilleApplication constructors with default parameters 2022-10-04 00:22:41 -03:00
andrekir
43652f4742 organize build.gradle 2022-10-04 00:12:39 -03:00
andrekir
ce8e67eb5d update workflow JDK 2022-10-03 23:57:28 -03:00
PWRxPSYCHO
7d386583ff working on updates 2022-10-03 09:21:06 -04:00
PWRxPSYCHO
93664a9bb9 cleaning up map fragment and cache download 2022-10-02 21:50:01 -04:00
PWRxPSYCHO
a537335f8c Adding more tile sources (will look into "layering") 2022-10-01 23:02:33 -04:00
PWRxPSYCHO
491798f86c Updated download button icon 2022-10-01 22:47:53 -04:00
PWRxPSYCHO
c8e19c1fc5 Merge branch 'osmdroid-phase2' of github.com:ScriptTactics/Meshtastic-Android into osmdroid-phase2 2022-10-01 22:37:36 -04:00
PWRxPSYCHO
5019cc39ce Updated some download policies and the rendering of the download button 2022-10-01 22:37:21 -04:00
PWRxPSYCHO
640737adeb
Merge branch 'meshtastic:master' into osmdroid-phase2 2022-09-30 16:37:24 -04:00
PWRxPSYCHO
d32a0aa069 Added some WMS TileOverlays, custom NOAAWmsTileSource.kt and updated copywrite overlay 2022-09-30 16:25:27 -04:00
andrekir
1a58896dcc remove resources lint 2022-09-30 16:21:30 -03:00
andrekir
347f5ad24e change waypoint icons & add description 2022-09-30 16:20:06 -03:00
andrekir
11d1a61854 fixed width for contacts short name chip 2022-09-30 16:18:36 -03:00
Andre K
b7cee4cc88
Merge pull request #486 from meshtastic/nodelist
improve Nodes tab
2022-09-30 16:16:23 -03:00
andrekir
b401c8bac3 move admin messages to nodes tab 2022-09-30 15:57:04 -03:00
andrekir
a60013e2dd refactor node list card layout 2022-09-27 16:29:41 -03:00
PWRxPSYCHO
b03d2ea542 Updated cachemanager to create .sqlite files for permanent offline maps 2022-09-25 12:59:23 -04:00
PWRxPSYCHO
dae89d349a up to date with master and fixed CacheManager 2022-09-22 15:22:58 -04:00
PWRxPSYCHO
3061fe9ded Fixed download by setting CacheManager after map has been fully setup 2022-09-22 14:56:09 -04:00
PWRxPSYCHO
4e61eac1cf Fixed click listener for download 2022-09-22 09:49:08 -04:00
Andre K
74f463c09e
Merge pull request #485 from ScriptTactics/map-waypoints
Display waypoints on map
2022-09-22 09:47:53 -03:00
PWRxPSYCHO
d9afd3104f Display waypoints on map 2022-09-22 08:38:24 -04:00
PWRxPSYCHO
e156bf1f6e Merge branch 'osmdroid-phase2' of github.com:ScriptTactics/Meshtastic-Android into osmdroid-phase2 2022-09-22 08:35:49 -04:00
PWRxPSYCHO
9b1dfb0d02 Working on cache downloader 2022-09-22 08:35:33 -04:00
andrekir
86c9ca55dd fix activity call outside MainActivity 2022-09-19 18:11:07 -03:00
andrekir
706c7d120e fix findDataPacket null object reference 2022-09-19 18:08:54 -03:00
Andre K
4d81689f21
1.3.41 2022-09-18 20:30:26 -03:00
andrekir
99dc509b6f fix channel settings 2022-09-18 20:23:34 -03:00
andrekir
5382fdae49 update for proto changes 2022-09-18 18:35:13 -03:00
andrekir
5c586526da change gas resistance unit to mOhm 2022-09-18 18:30:40 -03:00
andrekir
2d7ad1c75a updating proto submodule to latest 2022-09-18 11:00:56 -03:00
andrekir
5612d7d7c9 convert channel builders to dsl 2022-09-16 18:17:47 -03:00
andrekir
68558e4078 remove DataPacket storage from MeshService 2022-09-16 18:17:19 -03:00
andrekir
a9f9be0981 add placeholders for broadcast channels 2022-09-16 18:03:00 -03:00
andrekir
2b8b10a8cf observe waypoints livedata in map fragment 2022-09-15 22:44:30 -03:00
Andre K
80a2f2601c
Merge pull request #484 from meshtastic/room
#464: refactor messages to Room database
2022-09-15 22:35:47 -03:00
andrekir
65e982ddd5 refactor messages to Room database 2022-09-15 22:24:04 -03:00
andrekir
ab7bf4922b create Room database for DataPacket 2022-09-14 01:54:13 -03:00
andrekir
9427eec72f add module config fromRadio 2022-09-13 22:59:50 -03:00
andrekir
a93d4e1dcd rename Packet to MeshLog 2022-09-13 22:49:38 -03:00
andrekir
c2d681b11e fix null currentActivity 2022-09-13 01:25:36 -03:00
Andre K
99e9502a29
Merge pull request #483 from meshtastic/channelset
create ChannelSet datastore
2022-09-12 19:34:54 -03:00
andrekir
2ed5548abb create ChannelSet datastore 2022-09-12 19:07:30 -03:00
Andre K
382535da47
Merge pull request #482 from meshtastic/env
add EnvironmentMetrics to nodes tab
2022-09-12 18:30:02 -03:00
andrekir
7be67ec2d4 add EnvironmentMetrics to nodes tab 2022-09-12 18:23:59 -03:00
andrekir
d9d46236dc use LocationListenerCompat 2022-09-12 18:20:36 -03:00
andrekir
fd0c8ef9b8 refactor config get and set methods 2022-09-12 00:26:12 -03:00
andrekir
346a50a360 use kotlin protobuf lib 2022-09-11 23:50:07 -03:00
andrekir
4ac21d40ac remove android-lib from settings.gradle 2022-09-11 23:36:41 -03:00
andrekir
9c6a42e5c2 add waypoint payload parser 2022-09-09 22:15:27 -03:00
andrekir
d2140b13cb add EnvironmentMetrics to NodeInfo 2022-09-08 19:09:36 -03:00
andrekir
75af1ed197 update InfoWindow layout 2022-09-08 17:46:19 -03:00
andrekir
d94620328b handle prefs ArrayIndexOutOfBoundsException 2022-09-08 17:34:00 -03:00
andrekir
cbd8090137 fix null batteryStr 2022-09-08 17:26:00 -03:00
andrekir
14fc9b3f3c 1.3.40 2022-09-07 07:03:28 -03:00
andrekir
3b211d686b updating proto submodule to latest 2022-09-06 21:58:29 -03:00
andrekir
1675f71fc3 update libs 2022-09-06 18:33:26 -03:00
andrekir
b579baf678 better map location pin 2022-09-06 18:31:14 -03:00
andrekir
a8ca80d2b6 remove rateapp lint 2022-09-06 18:28:30 -03:00
andrekir
7fe5aa0171 observe receivingLocationUpdates flow 2022-09-06 18:25:06 -03:00
andrekir
8dd4506a45 fix onProviderDisabled exception 2022-09-06 18:15:06 -03:00
andrekir
8f0c5937fb test publish via github actions 2022-09-05 18:39:49 -03:00
andrekir
417c5fd91f update ask to rate feature 2022-09-05 01:01:13 -03:00
Andre K
37e67809af
Merge pull request #477 from meshtastic/play-services
remove play services
2022-09-05 00:19:11 -03:00
andrekir
188d1fddaa remove play services 2022-09-05 00:14:08 -03:00
andrekir
f282f3f71e remove unused analytics 2022-09-04 23:49:21 -03:00
andrekir
56d28980b9 remove androidlib submodule 2022-09-04 23:32:04 -03:00
Andre K
bd541298cd
Merge pull request #476 from meshtastic/androidlib
incorporate androidlib
2022-09-04 23:25:48 -03:00
andrekir
5eb5cd1421 incorporate androidlib 2022-09-04 22:52:40 -03:00
Andre K
20cf3f0825
Merge pull request #475 from meshtastic/perms
refactor permissions
2022-09-03 11:16:30 -03:00
andrekir
4f4750c339 refactor permissions 2022-09-03 11:07:10 -03:00
andrekir
40313ddca6 update icon metadata 2022-09-03 09:10:46 -03:00
andrekir
7c2e20c2fd setTileSource in onViewCreated 2022-09-03 07:39:37 -03:00
andrekir
e90b856524 move DELAYED_BROADCAST logic to service 2022-09-03 07:38:36 -03:00
andrekir
8516eea9c5 replace deprecated onActivityResult 2022-08-30 22:20:44 -03:00
andrekir
0d62f74a90 update bluetooth strings 2022-08-30 18:35:48 -03:00
Andre K
97cf35a4e6
Merge pull request #473 from meshtastic/osm-features
add osm map features
2022-08-30 17:32:43 -03:00
Andre K
c1d854dc84
Merge pull request #469 from legendgroupv2/dev-app-bt-prompt
Shows a prompt when Bluetooth is off and trying to add a device
2022-08-30 17:26:36 -03:00
andrekir
5d95017efa add osm map features 2022-08-30 17:25:11 -03:00
andrekir
4bb8e2f0e4 remove redundant color resource 2022-08-30 17:10:11 -03:00
andrekir
0e8a920b68 add t-echo usb vendor-id product-id 2022-08-30 16:43:51 -03:00
legendgroupv2
1251c76ff0
Changes how bluetooth state is checked for bluetooth check.
Co-authored-by: Andre K <andrekir@pm.me>
2022-08-30 10:45:54 +01:00
andrekir
6e6b1b8ab6 improve handling minAppVersion 2022-08-29 12:50:29 -03:00
Andre K
79eb53df74
Update README.md 2022-08-29 12:15:48 -03:00
andrekir
b445faf574 remove mapbox reference 2022-08-29 11:06:47 -03:00
Andre K
8b412961fa
Merge pull request #470 from ScriptTactics/feature/osmand-migration
Feature/osmdroid migration
2022-08-29 11:01:56 -03:00
PWRxPSYCHO
88da9f1c69
Merge branch 'meshtastic:master' into feature/osmand-migration 2022-08-29 13:16:55 +00:00
andrekir
e1ad213a01 tag hasWifi to MyNodeInfo 2022-08-28 07:54:47 -03:00
PWRxPSYCHO
af78188d6e clean up unused files. (Patch from Andre) 2022-08-27 12:38:42 -04:00
PWRxPSYCHO
18d9541d9b removed unused variables and imports 2022-08-27 08:57:01 -04:00
PWRxPSYCHO
426bde986a Cleaned up code based on comments on PR 2022-08-26 17:00:08 -04:00
PWRxPSYCHO
4d809a3cd7
Merge branch 'meshtastic:master' into feature/osmand-migration 2022-08-26 13:44:48 +00:00
PWRxPSYCHO
767fb6059d Updated ESRI name,
Andre patch to add text over icon
fixed zoomToBounding box
fixed node locations duplicating on map
2022-08-25 23:35:11 -04:00
andrekir
27ee6a847a remove play services code scanner 2022-08-25 20:50:55 -03:00
Andre K
0516049e2a
Merge pull request #468 from Douile/dev-factory-reset
Add factory reset button
2022-08-25 20:45:49 -03:00
Andre K
7caa09b3a6
Merge branch 'master' into dev-factory-reset 2022-08-25 20:39:53 -03:00
PWRxPSYCHO
e23b226b55 updated map reload 2022-08-25 16:58:13 -04:00
PWRxPSYCHO
684bd82772
Merge branch 'meshtastic:master' into feature/osmand-migration 2022-08-25 20:16:31 +00:00
PWRxPSYCHO
d491722e65 added style changing on the fly (will need to refactor) 2022-08-25 14:32:55 -04:00
PWRxPSYCHO
2a2aacf7c3 fixed zoom level and "unlimited" scroll 2022-08-25 12:28:05 -04:00
PWRxPSYCHO
29c1fe75d4 Removed map sources and added custom 2022-08-25 10:14:19 -04:00
PWRxPSYCHO
c57cee569f removed unused item 2022-08-24 23:21:01 -04:00
PWRxPSYCHO
19a847604e fixed map being null on switch 2022-08-24 23:15:48 -04:00
PWRxPSYCHO
3e81abb638 fixed zooming to nodes (lat/lon were reversed) 2022-08-24 16:47:50 -04:00
PWRxPSYCHO
6a6dbad0ee Trying to get nodes to show better and defaulting to smaller tiles 2022-08-24 14:27:12 -04:00
PWRxPSYCHO
ed8f3b2d29 updated strings to be constants, updated comment 2022-08-24 13:38:06 -04:00
PWRxPSYCHO
0648ccad4b Moved Map Source menu to MapFragment 2022-08-24 12:16:57 -04:00
PWRxPSYCHO
43e59d21cc creating constants for all hardcoded strings 2022-08-24 11:30:42 -04:00
PWRxPSYCHO
bd2951c845 Setup switching of map source 2022-08-24 11:08:39 -04:00
PWRxPSYCHO
b8ef088d8e Remove all references to MapBox, MapBox tokens, and credentials 2022-08-23 22:49:46 -04:00
PWRxPSYCHO
a84eb7e4b6 Setting up markers for map, Looking into options of showing text 2022-08-23 22:32:32 -04:00
Andre K
c567df1355
mock firmware assets for release 2022-08-23 22:14:59 -03:00
andrekir
92d6be9d43 1.3.39 2022-08-23 21:52:29 -03:00
andrekir
d5c32407ad add connection feedback 2022-08-23 21:51:27 -03:00
andrekir
69f311e133 clean up and reformat 2022-08-23 21:39:08 -03:00
PWRxPSYCHO
269a6df353 Added zoom for multiple GeoPoints 2022-08-23 20:27:14 -04:00
PWRxPSYCHO
017095d171 Working on migrating to OSMdroid from Mapbox 2022-08-23 20:05:19 -04:00
andrekir
cf827aefaf rip ota 2022-08-23 18:08:43 -03:00
andrekir
9c6384a2fe add debug msg to shutdown and reboot 2022-08-23 18:06:02 -03:00
Ayub
e4b2649807 Shows prompt when Bluetooth is off and trying to add device
When trying to add a Meshtastic device, the app will check if bluetooth is turned on, if it isn't then it will display a message.
2022-08-23 16:52:39 +01:00
andrekir
a6b4e400a6 update release notes metadata 2022-08-23 08:26:29 -03:00
andrekir
325ef8e1b6 add bluetooth config proto 2022-08-23 08:23:57 -03:00
Andre K
eccb48d7ed
Merge pull request #467 from Douile/dev-channel-warning
Show warning in dialog when using default encryption key
2022-08-23 08:00:22 -03:00
Tom
f8cec34862
Improve warning message
Improve wording and add channel name to the default psk warning

Co-authored-by: Andre K <andrekir@pm.me>
2022-08-23 10:44:34 +00:00
Douile
7adf3cd0f5
Add factory reset button 2022-08-23 11:13:47 +01:00
Andre K
2a74d4fa69
Merge pull request #466 from legendgroupv2/dev-app-intro-typo
Fixed typo on App Introduction screen
2022-08-22 17:26:03 -03:00
Douile
7c940d209a
Show warning in dialog when using default encryption key 2022-08-22 16:19:59 +01:00
Ayub
db1218c46a Fixed typo on App Introduction screen 2022-08-22 13:54:28 +01:00
andrekir
af1f609915 updating proto submodule to latest 2022-08-22 07:57:46 -03:00
Andre Kirchhoff
67c012dfeb
1.3.38 2022-08-16 20:07:39 -03:00
andrekir
f07e1b5741 updating proto submodule to latest 2022-08-16 20:01:11 -03:00
Andre Kirchhoff
edb03ff6b7
Merge pull request #460 from legendgroupv2/dev-app-intro
Added App Introduction Screens
2022-08-16 19:20:44 -03:00
Andre Kirchhoff
25de235a93
Merge branch 'master' into dev-app-intro 2022-08-16 19:13:19 -03:00
andrekir
46dfa80344 revert unwanted manifest changes 2022-08-16 18:52:26 -03:00
Andre Kirchhoff
79b3b1c024
Merge pull request #462 from Douile/dev-quick-chat
Add quick chat actions
2022-08-16 18:43:13 -03:00
Douile
36b5a9eefb
Fix iterating items in repositionItems 2022-08-16 12:25:40 +01:00
Douile
b1b554d97d
Add icon and colours to quick chat settings 2022-08-16 12:25:10 +01:00
Ayub
d2bed1344a AndroidManifest added back new code
Added back new code to the file. This is all that is changed in this PR.
2022-08-16 11:55:36 +01:00
Douile
01e24ff6a4
Add position via dragging the recyclerview 2022-08-16 11:46:57 +01:00
Ayub
831a1c79df Reverting changes to AndroidManifest file
Removing formatting and new code from AndroidManifest file. This will be added back in with the next commit. Hopefully this resolves the issue
2022-08-16 11:43:46 +01:00
Ayub
f1dc8d2258 Reword encryption text for introduction screen 2022-08-16 11:01:28 +01:00
legendgroupv2
769ae09603
Reword connection text for introduction screen
Co-authored-by: Andre Kirchhoff <andrekir@pm.me>
2022-08-16 10:25:09 +01:00
legendgroupv2
8ada4da9b4
Fixed typo for string "intro_encryption_title" in introduction screen
Co-authored-by: Andre Kirchhoff <andrekir@pm.me>
2022-08-16 10:23:45 +01:00
legendgroupv2
c1f4b0cd12
Fixed typo for string "intro_encryption_title" in strings
Co-authored-by: Andre Kirchhoff <andrekir@pm.me>
2022-08-16 10:23:08 +01:00
andrekir
7657c19cda update README.md 2022-08-15 22:23:56 -03:00
andrekir
e043a3aa9a amend max channels reference 2022-08-15 22:05:10 -03:00
Andre Kirchhoff
d93916368c
Merge pull request #461 from meshtastic/scan
fix code scanner choice by install source
2022-08-14 20:25:27 -03:00
andrekir
bdba5bc31f fix code scanner choice by installSource 2022-08-14 20:13:09 -03:00
Andre Kirchhoff
c8724f73f0
update channel url prefix 2022-08-14 08:54:18 -03:00
Douile
1bdb6bf340
Add drag to re-arrange support for quick chat actions 2022-08-12 15:35:27 +01:00
Douile
7da224a1ce
Store QuickChatActions in the database 2022-08-11 16:43:26 +01:00
Douile
8c2d3a4041
Add basic quick chat action settings 2022-08-10 17:34:18 +01:00
Douile
483eca94e9
Use QuickChatAction model to add buttons in message fragment
Also fix replace the vertical scroll view with horizontal
2022-08-10 17:31:16 +01:00
Douile
3c9e325d5c
Add QuickChatAction model 2022-08-10 17:29:17 +01:00
Douile
340061875f
Fix typo in quick chat dropdown id 2022-08-10 17:26:15 +01:00
Ayub
51f78a3328 Added App Introduction Screens
Added three screens explaining Meshtastic and how to use the app. This is only shown on the first launch of the app.
2022-08-10 17:12:49 +01:00
Douile
ed88170c42
Quick chat 2022-08-09 15:26:52 +01:00
andrekir
e9113f1a8f 1.3.30 2022-08-05 00:05:35 -03:00
andrekir
0ef0e965dd only use mlkit for playstore installs 2022-08-05 00:05:19 -03:00
andrekir
ea0a69524c move fragment ActivityResults to onViewCreated 2022-08-04 23:56:52 -03:00
andrekir
12e7de008b updating proto submodule to latest 2022-08-04 23:53:52 -03:00
Andre Kirchhoff
4e2b00bfd5
1.3.28 2022-08-02 22:53:34 -03:00
andrekir
f5ce8e47e0 updating proto submodule to latest 2022-08-01 23:00:18 -03:00
andrekir
1196eb6cc5 improve room database flow 2022-07-29 21:28:09 -03:00
andrekir
6678a82578 add Channel response to debug log 2022-07-29 19:46:04 -03:00
andrekir
6071fec804 improve settings tab UI 2022-07-29 19:33:40 -03:00
Andre Kirchhoff
277db36a46
Merge pull request #458 from mcumings/rak-serial-fix
Explicitly enable DTR/RTS to fix RAK serial comms
2022-07-29 18:48:20 -03:00
Mike Cumings
c1bbf1411a Explicitly enable DTR/RTS to fix RAK serial comms 2022-07-29 14:03:04 -07:00
Andre Kirchhoff
767ddb9a76
1.3.27 2022-07-27 00:49:18 -03:00
andrekir
589578c0da filter out null BLE device names 2022-07-27 00:13:44 -03:00
andrekir
4556464b32 register ActivityResult before launch() 2022-07-26 23:49:10 -03:00
andrekir
1f60c4ddf4 move region logic out of service 2022-07-26 23:01:28 -03:00
andrekir
c368c1b562 disable ownerName text input if isNullOrEmpty 2022-07-26 22:33:03 -03:00
andrekir
9cdaf6f79a fix region changes not updating UI 2022-07-26 22:28:19 -03:00
andrekir
436ac1af47 add note 2022-07-26 21:28:10 -03:00
andrekir
1009e1fba2 update MockInterface firmwareVersion 2022-07-26 19:54:33 -03:00
Andre Kirchhoff
cd39ae6cce
Merge pull request #457 from majbthrd/addPL2303variants
usb-serial-for-android to v3.4.6; adopt more comprehensive device_fil…
2022-07-23 07:17:53 -03:00
Peter Lawrence
4f793684f2 usb-serial-for-android to v3.4.6; adopt more comprehensive device_filter.xml 2022-07-22 21:24:41 -05:00
andrekir
97e9679f03 1.3.25 2022-07-12 00:10:56 -03:00
andrekir
ce2fcc3a95 update libs 2022-07-12 00:05:47 -03:00
andrekir
7e115691f3 Merge remote-tracking branch 'origin/master' 2022-07-12 00:04:14 -03:00
andrekir
c9ca8912a8 updating androidlib submodule to latest 2022-07-12 00:02:41 -03:00
andrekir
3239867523 remove okhttp3 lib 2022-07-11 23:19:49 -03:00
andrekir
f6a88f7db0 updating proto submodule to latest 2022-07-11 21:44:15 -03:00
Andre Kirchhoff
6800f82ca9
Merge pull request #454 from majbthrd/addch9102f
add CH9102F USB serial (used on some tlora-v2-1-1.6 variants)
2022-07-09 05:02:15 -03:00
Peter Lawrence
f184e625d1 add CH9102F USB serial (used on some tlora-v2-1-1.6 variants) 2022-07-08 22:11:21 -05:00
andrekir
7905bc6f70 fix multiple startInterface() calls 2022-06-27 22:28:51 -03:00
andrekir
613334d87e update modem preset names 2022-06-27 21:41:42 -03:00
andrekir
56615c2668 updating proto submodule to latest 2022-06-27 21:34:16 -03:00
andrekir
6211015495 remove MyPreferences 2022-06-22 22:07:55 -03:00
andrekir
ab020713bd validate longitude values 2022-06-22 22:02:56 -03:00
Andre Kirchhoff
93a0ee1180
1.3.21 2022-06-21 11:31:38 -03:00
Andre Kirchhoff
d564a930eb
Merge pull request #451 from andrekir/ble-filter
clear Bluetooth scan filter
2022-06-21 11:26:23 -03:00
Andre Kirchhoff
121a25ccb7
Merge pull request #450 from andrekir/back-stack
fix back not moving task to background
2022-06-21 11:18:40 -03:00
Andre Kirchhoff
167bfb6a17
Merge pull request #449 from andrekir/handle-config
handle updated wantConfig
2022-06-21 11:12:50 -03:00
andrekir
6700f22af7 clear Bluetooth scan filter 2022-06-21 11:04:46 -03:00
andrekir
5328e5d1a2 fix back not moving task to background 2022-06-21 11:02:56 -03:00
andrekir
cf24bf841e updating proto submodule to latest 2022-06-21 10:50:38 -03:00
andrekir
a598b50d40 handle updated wantConfig 2022-06-21 09:51:11 -03:00
Andre Kirchhoff
418bc77d4e
Merge pull request #448 from mcumings/baudrate
Set default USB baud rate to 115200 to match Meshtastic-device
2022-06-17 14:28:53 -03:00
Andre Kirchhoff
b4b9bebe20
Merge pull request #447 from mcumings/protobump
Bump protobuf-gradle-plugin to 0.8.18 and protoc to 3.21.1
2022-06-17 14:28:24 -03:00
Mike Cumings
7046fffed4 Set default USB baud rate to 115200 to match Meshtastic-device 2022-06-17 10:14:59 -07:00
Mike Cumings
fc5ce7c2c6 Bump protobuf-gradle-plugin to 0.8.18 and protoc to 3.21.1 2022-06-17 09:55:04 -07:00
Andre Kirchhoff
a5ca044ec7
1.3.19 2022-06-17 09:04:29 -03:00
andrekir
92776f7f84 patch debug fragment not loading new packets 2022-06-17 02:02:45 -03:00
andrekir
0e65f504ef fix advanced settings & defaults 2022-06-17 02:00:18 -03:00
andrekir
b0e7868957 set singleInstance to MainActivity 2022-06-16 22:47:22 -03:00
andrekir
0d89eaf043 updating proto submodule to latest 2022-06-16 22:38:52 -03:00
Andre Kirchhoff
17ec3e13c3
Update README.md 2022-06-14 22:05:12 -03:00
andrekir
36dc5d41e9 1.3.17 2022-06-13 22:03:12 -03:00
andrekir
d574806493 update korean translations by @sinrious 2022-06-13 22:00:40 -03:00
andrekir
6cc67594c2 enable shutdown button for AXP192 only 2022-06-13 18:13:47 -03:00
andrekir
8e32ad81c0 fix DebugFragment ViewModel 2022-06-13 17:43:50 -03:00
andrekir
ba57e95f52 updating proto submodule to latest 2022-06-13 17:36:38 -03:00
Andre Kirchhoff
165da224ac
Merge pull request #446 from meshtastic/scanmodel
move BTScanModel out of SettingsFragment
2022-06-12 16:38:30 -03:00
andrekir
6dbfda0e8f move BTScanModel out of SettingsFragment 2022-06-12 16:32:06 -03:00
andrekir
e5030d2100 update korean translations by @blabel 2022-06-12 10:01:26 -03:00
andrekir
73da709bb1 Revert "fix isESP32 logic"
This reverts commit d939f9784b.
2022-06-12 00:23:45 -03:00
Andre Kirchhoff
a536410798
Merge pull request #444 from andrekir/datastore
create LocalConfig DataStore
2022-06-11 18:47:51 -03:00
andrekir
54f6112908 create LocalConfig DataStore 2022-06-11 18:36:57 -03:00
andrekir
bf8bdd24bd updating proto submodule to latest 2022-06-11 18:06:42 -03:00
Andre Kirchhoff
42755e350e
Merge pull request #443 from andrekir/localconfig
update configs to LocalConfig
2022-06-10 22:04:27 -03:00
andrekir
ce83c84723 update configs to LocalConfig 2022-06-10 21:55:26 -03:00
andrekir
d939f9784b fix isESP32 logic 2022-06-10 20:22:06 -03:00
andrekir
4784e8d14b disable sleep prefs for non-ESP32 devices 2022-06-10 19:22:34 -03:00
Andre Kirchhoff
bc6aae394b
include nano firmware 2022-06-07 14:49:02 -03:00
andrekir
624a098390 1.3.16 2022-06-07 08:32:39 -03:00
andrekir
c4e220f1a0 update gradle 2022-06-07 08:31:29 -03:00
Andre Kirchhoff
801b132d4e
Merge pull request #441 from andrekir/loc-check
improve location checks
2022-06-07 08:22:17 -03:00
andrekir
6184e9f30c improve location permission check 2022-06-07 00:33:24 -03:00
andrekir
9b45ba84f7 improve location enabled check 2022-06-07 00:33:24 -03:00
Andre Kirchhoff
13fcf61cf4
Merge pull request #440 from andrekir/admin_msg
add shutdown & reboot buttons
2022-06-06 17:49:22 -03:00
andrekir
14110d433f add shutdown & reboot strings 2022-06-06 17:36:40 -03:00
andrekir
47793a2086 add shutdown & reboot admin commands 2022-06-06 17:29:09 -03:00
Andre Kirchhoff
6c6b22ad7d
1.3.12 2022-05-30 17:59:54 -03:00
Andre Kirchhoff
1dd53b73e1
Merge pull request #439 from andrekir/localconfig
localonly & apponly protobuf updates
2022-05-30 17:59:17 -03:00
andrekir
875939931e add localonly & update apponly protobufs 2022-05-30 17:43:05 -03:00
andrekir
96c0f0ac79 updating proto submodule to latest 2022-05-30 16:08:10 -03:00
Andre Kirchhoff
d7aa79edc6
1.3.11 2022-05-26 18:17:02 -03:00
Andre Kirchhoff
16becf1f3f
disable ChannelSetTest 2022-05-26 17:57:34 -03:00
Andre Kirchhoff
a9c5e65717
Merge pull request #435 from andrekir/refactor-protos
update protobufs
2022-05-26 17:32:23 -03:00
andrekir
48fd657d8a update protobufs 2022-05-26 16:23:47 -03:00
andrekir
4898a54bd2 updating proto submodule to latest 2022-05-26 16:19:14 -03:00
Jm Casler
60f6e0a96f updating proto submodule to latest 2022-05-21 17:10:20 -07:00
Andre Kirchhoff
63db5f61dc
Merge pull request #434 from mcumings/radioservice-companion
Extract `RadioInterfaceService` companion object functions
2022-05-20 19:12:15 -03:00
Mike Cumings
5546e74b46 Extract RadioInterfaceService companion object functions
In preparation for replacing the `InterfaceFactory` with an
injectable form we need to convert static methods that call
`InterfaceFactory` into non-static, injected forms.

Also:
- Updated kotlin `-Xopt-in` to `-opt-in` to remove build
  time warnings.
- Removed some unused `RadioInterfaceService` code.
2022-05-20 14:27:39 -07:00
andrekir
2389c222a0 move LocationUtils into utils 2022-05-20 11:20:13 -03:00
Andre Kirchhoff
425372f2cc
Merge pull request #433 from meshtastic/locationflow
move location service to repository
2022-05-20 09:33:39 -03:00
andrekir
6bda993851 move location service to repository 2022-05-20 09:13:59 -03:00
andrekir
d50e9e1644 meshservice cleanup 2022-05-20 09:12:55 -03:00
Andre Kirchhoff
747ce82a7b
Merge pull request #431 from meshtastic/mlkit-scan
add mlkit barcode scanner
2022-05-17 17:42:26 -03:00
andrekir
a4e1f0de77 add mlkit barcode scanner 2022-05-17 17:29:21 -03:00
Andre Kirchhoff
7e8b7bc833
Merge pull request #430 from meshtastic/nsd
add network service discovery
2022-05-17 00:54:21 -03:00
andrekir
c0a22cdc3a add network service discovery 2022-05-17 00:41:41 -03:00
Andre Kirchhoff
f2b0ac7c3b
Merge pull request #429 from meshtastic/multi-if
expand interface options beyond Bluetooth
2022-05-17 00:08:38 -03:00
andrekir
841ea515ba expand interface options beyond BLE 2022-05-16 23:32:49 -03:00
Andre Kirchhoff
5fb2be0591
Merge pull request #420 from mcumings/de-radio-service
`RadioInterfaceService` is no longer an Android `Service`
2022-05-06 23:29:18 -03:00
andrekir
99dfc8014a use standard IM text input convention 2022-05-06 17:25:35 -03:00
Mike Cumings
7cd1e7fc96 Mesh service needs to collect on Flow instances 2022-05-06 12:17:17 -07:00
Mike Cumings
0acf037000 Merge remote-tracking branch 'remotes/origin/master' 2022-05-06 11:19:11 -07:00
Mike Cumings
678a0358a5 Fix local props being uninitialized prior to constructor execution 2022-05-06 11:18:24 -07:00
Andre Kirchhoff
4b3427fe8c
Merge pull request #428 from andrekir/ble-scan
bluetooth scan & connect UI rework
2022-05-03 18:14:59 -03:00
andrekir
9e3bab8367 update deprecated IntentIntegrator 2022-05-03 17:32:01 -03:00
andrekir
ef9114ddc1 bluetooth scan & connect UI rework 2022-05-03 12:16:44 -03:00
Jm Casler
c3b6105730 updating proto submodule to latest 2022-05-01 18:33:40 -07:00
Jm Casler
671255c331 updating proto submodule to latest 2022-05-01 08:41:59 -07:00
Andre Kirchhoff
788a133999
Merge pull request #424 from andrekir/settings-ui
add device association list
2022-04-30 16:18:43 -03:00
andrekir
0294da844b update UI when started with BLE disabled 2022-04-30 00:06:49 -03:00
andrekir
b6410dd162 disassociate devices when not bonded 2022-04-29 23:34:03 -03:00
andrekir
0950e12bd0 add BLE associations to devices list 2022-04-28 23:09:06 -03:00
andrekir
aaa5c1cf04 move hasCompanionDeviceApi out of BluetoothInterface 2022-04-28 21:40:34 -03:00
andrekir
eaff87eed3 update debug message reference 2022-04-28 11:54:04 -03:00
andrekir
34e240d7fa update deprecated intent method 2022-04-28 11:53:32 -03:00
andrekir
8d6a9a9ec2 update localization links to docs 2022-04-24 20:35:07 -03:00
Andre Kirchhoff
78d3618582
update link to android docs 2022-04-24 20:10:36 -03:00
Andre Kirchhoff
638b681b4b
Merge pull request #421 from andrekir/connstate
rename isConnected
2022-04-24 12:34:38 -03:00
andrekir
27c1817a59 rename isConnected --> connectionState 2022-04-24 12:12:13 -03:00
andrekir
5c75a54d46 updating androidlib submodule to latest 2022-04-24 10:35:17 -03:00
Andre Kirchhoff
5106a4a49b
Update build.gradle
update libs
2022-04-24 10:31:44 -03:00
Andre Kirchhoff
2c34126a51
Update AndroidManifest.xml
disable Auto Backup
2022-04-24 10:30:41 -03:00
Mike Cumings
9687fb7370 RadioInterfaceService is no longer an Android Service
Removes the AIDL and associated support for the `IRadioInterfaceService`.
This should give some performance benefit since radio data no longer
has to round-trip through the platform.
2022-04-22 17:40:01 -07:00
Andre Kirchhoff
a44758e28d
Merge pull request #419 from andrekir/model
make MutableLiveData private
2022-04-22 18:18:00 -03:00
andrekir
8bde3d2ba4 make MutableLiveData private 2022-04-22 17:22:06 -03:00
Andre Kirchhoff
25a67ec4b3
Merge pull request #418 from meshtastic/users
improve users fragment
2022-04-22 17:04:57 -03:00
andrekir
9227ce3ba5 improve users fragment 2022-04-22 16:56:27 -03:00
Andre Kirchhoff
dbea9fbbe7
Merge pull request #416 from wkawecki/master
#413 Add Satellite Map Layers
2022-04-22 16:47:30 -03:00
Andre Kirchhoff
392a08a5a6
Merge pull request #417 from mcumings/radioservice-prep
Prep work for radio service repository
2022-04-22 16:41:26 -03:00
Mike Cumings
4f6357103b Move radio service code verbatim into repository/radio 2022-04-22 10:22:03 -07:00
Mike Cumings
166a56a75d Extract RadioNotConnectedException out of RadioInterfaceService 2022-04-22 10:09:30 -07:00
wkawecki
2f7d189040 Merge branch 'feature/new-preferences' 2022-04-22 15:03:04 +02:00
wkawecki
c997440f75 meshtastic#413 Add Satellite Map Layers - correct after remove offline regions 2022-04-22 15:00:17 +02:00
wkawecki
53e6b3a8b2 Merge branch 'feature/new-preferences' 2022-04-22 14:40:05 +02:00
wkawecki
8b5b33bcd5 meshtastic#413 Add Satellite Map Layers 2022-04-22 12:28:04 +02:00
Jm Casler
0d4ddaf9a0 updating proto submodule to latest 2022-04-20 18:01:36 -07:00
andrekir
ba0c48b762 update libs 2022-04-19 16:41:34 -03:00
Andre Kirchhoff
e17cec93c1
Merge pull request #415 from meshtastic/cleanup
clean up contacts & messages fragments
2022-04-19 16:32:56 -03:00
andrekir
def08cde75 include resendButton in changes 2022-04-19 16:15:47 -03:00
andrekir
89811d4aa4 cleanup actionmode 2022-04-19 15:10:17 -03:00
Andre Kirchhoff
627299c6db
Merge pull request #412 from wkawecki/master
meshtastic#73 'Resend Button' on message selection
2022-04-19 14:59:37 -03:00
Andre Kirchhoff
0a033584e0
Merge pull request #414 from meshtastic/strings-pl
update pl translations by @aloisy
2022-04-19 14:48:26 -03:00
andrekir
603af182df update pl translations by @aloisy 2022-04-19 13:01:50 -03:00
wkawecki
7e1e78fb64 meshtastic#73 change icon, bugfixes 2022-04-19 16:01:01 +02:00
Jm Casler
9587ef926e updating proto submodule to latest 2022-04-18 12:29:18 -07:00
Jm Casler
78842d815c updating proto submodule to latest 2022-04-15 22:30:19 -07:00
Wojciech Kawecki
b6056c4e52
Merge branch 'meshtastic:master' into master 2022-04-13 22:35:07 +02:00
Jm Casler
ebc88dfa01 updating proto submodule to latest 2022-04-12 21:10:43 -07:00
wkawecki
6f9f2c4b04 meshtastic#73 'Resend Button' on message selection 2022-04-12 17:00:49 +02:00
Andre Kirchhoff
1ca1642cb9
Merge pull request #411 from mcumings/serialC
Extract USB serial communication into USB repository
2022-04-09 08:27:03 -03:00
Mike Cumings
15f0e3bd5b Extract USB serial communication into USB repository
This separates the USB serial connectivity implementation
out of the radio service.  `SerialInterface` now only deals with
radio service concerns.
2022-04-08 15:41:58 -07:00
Andre Kirchhoff
b561d4c128
fix south korean locale reference 2022-04-08 19:37:53 -03:00
andrekir
bcf0d5be97 remove crashlytics report 2022-04-08 18:37:22 -03:00
Andre Kirchhoff
56293874f9
Merge pull request #410 from mcumings/usbrepo
Initial step in refactoring RadioInterfaceService for dependency injection
2022-04-08 16:30:17 -03:00
Mike Cumings
dd41527bbc Initial step in refactoring RadioInterfaceService for dependency injection
Extracts USB device management into a `UsbRepository`.

In order for `SerialInterface to gain access to this prior to
the `RadioInterfaceService` being fully natively dependency
injected, all `InterfaceFactory` implementations needed
to be modified to accept the `UsbRepository` via argument.  This
will go away in a future PR.

Changed `assumePermission` constant to `false` as it was preventing
the request for permission from occurring, breaking serial connectivity.

Minor improvement: SerialInterface re-bonding by device name is
now supported.
2022-04-08 11:34:44 -07:00
Andre Kirchhoff
26b6081e9c
Merge pull request #409 from mcumings/mapfragment
MapFragment crashes if analytics are not allowed
2022-04-08 14:41:47 -03:00
Mike Cumings
df47169997 MapFragment crashes is analytics are not allowed
`binding` is only set in `onCreateView` when analytics are
enabled, leading to a crash in `onViewCreated` when
`binding` - a lateinit var - is attempted to be accessed.
2022-04-08 08:56:30 -07:00
Andre Kirchhoff
caae04c2ff
Merge pull request #408 from meshtastic/connection-sleep
Issue #392 - fix connected but sleeping text to reflect actual device state
2022-04-07 23:53:05 -03:00
Andre Kirchhoff
850aa0a491
Merge pull request #407 from meshtastic/text-input
use keyboard capitalization settings
2022-04-07 23:40:33 -03:00
andrekir
b1ad9c1d0e update not_connected string 2022-04-07 23:38:28 -03:00
andrekir
bcc46f36e6 only consider device sleep when isPowerSaving enabled 2022-04-07 23:31:43 -03:00
andrekir
1bc843897d use keyboard capitalization settings 2022-04-07 23:21:12 -03:00
Andre Kirchhoff
9220435b9a
Merge pull request #401 from wkawecki/master
add an option to force language X
2022-04-07 20:52:35 -03:00
Wojciech Kawecki
eed53cb714
Merge branch 'meshtastic:master' into master 2022-04-07 15:34:36 +02:00
Jm Casler
f686517d17
Merge pull request #406 from meshtastic/mc-hamster-patch-1
Update README.md
2022-04-05 22:24:26 -07:00
Jm Casler
57c0586443
Update README.md 2022-04-05 22:23:19 -07:00
Andre Kirchhoff
bcadeada25
Merge pull request #405 from meshtastic/refactor-protos
promote device metrics
2022-04-04 19:24:12 -03:00
andrekir
78f7477c85 promote device metrics 2022-04-04 19:10:15 -03:00
Andre Kirchhoff
b1f2a83c23
Update README.md 2022-04-04 00:10:50 -03:00
andrekir
393d296a52 updating proto submodule to latest 2022-04-03 12:11:24 -03:00
Andre Kirchhoff
54b4e90578
Merge pull request #404 from meshtastic/contacts
add Contacts
2022-04-03 11:51:42 -03:00
andrekir
ba2a6e0573 add contacts 2022-04-03 11:25:50 -03:00
wkawecki
bcbe36009f Correct pt_BR translation 2022-04-01 23:58:52 +02:00
wkawecki
c23c584ad3 Correct SL translation 2022-03-30 23:19:12 +02:00
wkawecki
f0cd86b7a5 #13 add an option to force language X 2022-03-30 23:14:02 +02:00
Jm Casler
aa1893c36c updating proto submodule to latest 2022-03-29 21:44:47 -07:00
Jm Casler
ebde1854d6 updating proto submodule to latest 2022-03-29 20:04:38 -07:00
Andre Kirchhoff
2965738fcc
Merge pull request #400 from meshtastic/bugfix278
insert sent messages in Packet
2022-03-29 11:07:23 -03:00
andrekir
7c1c449dd3 insert sent messages in Packet 2022-03-29 10:58:34 -03:00
Andre Kirchhoff
8de9a90c8f
Merge pull request #396 from meshtastic/refactor-protos
add telemetry.protos
2022-03-28 15:59:15 -03:00
andrekir
143bb255d1 update nodelist to telemetry deviceMetrics 2022-03-28 15:52:32 -03:00
andrekir
0c135c4502 handle received telemetry portnums 2022-03-28 15:50:33 -03:00
andrekir
d8a5fff86e fix NodeInfo telemetry proto 2022-03-28 15:48:27 -03:00
Andre Kirchhoff
1abfc77112
Merge pull request #399 from meshtastic/is_always_powered
remove isAlwaysPowered
2022-03-28 09:13:11 -03:00
andrekir
a6fb214852 remove isAlwaysPowered 2022-03-28 09:11:06 -03:00
Andre Kirchhoff
0fdc47fbb9
Merge pull request #398 from wkawecki/master
Correct pl transtations
2022-03-28 09:00:42 -03:00
wkawecki
e45310257d Correct pl translations 2022-03-28 12:52:52 +02:00
wkawecki
f3d43674a7 Rename 'Scan' button to add translation 2022-03-28 09:06:53 +02:00
andrekir
373500ae8e point telemetry to new proto reference 2022-03-27 18:43:24 -03:00
andrekir
879bd574c1 updating proto submodule to latest 2022-03-27 18:07:31 -03:00
Andre Kirchhoff
47351ed1d9
revert CI to pull_request 2022-03-26 23:51:11 -03:00
andrekir
d97aec7ed4 update mapbox tokens 2022-03-26 23:44:51 -03:00
andrekir
472f989b65 tag telemetry in NodeInfo 2022-03-26 23:38:58 -03:00
andrekir
11bbf02bf9 add batteryLevel from Telemetry 2022-03-26 18:10:40 -03:00
andrekir
a79470b018 remove batteryLevel from Position 2022-03-26 17:44:59 -03:00
Andre Kirchhoff
6fec76157c
Merge pull request #395 from meshtastic/refactor-protos
use locationShareDisabled boolean
2022-03-26 17:20:01 -03:00
andrekir
291e54c275 use locationShareDisabled boolean 2022-03-26 17:09:05 -03:00
Jm Casler
5273b0e8c2 updating proto submodule to latest 2022-03-26 09:32:10 -07:00
Jm Casler
5c5da62e5a updating proto submodule to latest 2022-03-25 22:30:20 -07:00
Jm Casler
df979f036d updating proto submodule to latest 2022-03-25 22:21:29 -07:00
Andre Kirchhoff
fdc43dd712
Merge pull request #393 from meshtastic/refactor-protos
remove is_router
2022-03-15 22:56:19 -03:00
Andre Kirchhoff
536c918e22
remove is_router 2022-03-15 22:43:03 -03:00
Jm Casler
62d67dfd56 updating proto submodule to latest 2022-03-15 15:45:56 -07:00
Jm Casler
9edb6f5a23 updating proto submodule to latest 2022-03-14 18:05:23 -07:00
Jm Casler
e441b085bf updating proto submodule to latest 2022-03-14 07:41:59 -07:00
Jm Casler
13ef1d78aa updating androidlib submodule to latest 2022-03-14 07:41:56 -07:00
Andre Kirchhoff
96f88046a5
Merge pull request #391 from ScriptTactics/feature/offline-maps
Feature/offline maps
2022-03-12 20:28:56 -03:00
Jackson Rosenthal
b42149de05 Merge branch 'master' into feature/offline-maps 2022-03-12 17:10:59 -05:00
Jackson Rosenthal
448fe99cf5 setup "dev option" for offline maps 2022-03-12 17:09:20 -05:00
PWRxPSYCHO
0ebcf185a8 More tweaks 2022-03-11 10:08:21 -05:00
Andre Kirchhoff
212eb2b607
Merge pull request #390 from meshtastic/firmware_update
improve firmware update
2022-03-11 00:27:26 -03:00
andrekir
b8b2a8a86c improve firmware update 2022-03-11 00:12:48 -03:00
PWRxPSYCHO
262808e952 Looking into why boolean is not being set 2022-03-10 09:38:56 -05:00
PWRxPSYCHO
e58e12ad5e Added hard-coded strings to translations 2022-03-10 08:52:23 -05:00
PWRxPSYCHO
58a20dc326 Updating UI flow 2022-03-10 08:17:00 -05:00
PWRxPSYCHO
a291f78583 Made FAB invisible until region is created for downloading 2022-03-09 10:24:31 -05:00
PWRxPSYCHO
0df9f8f587 Removed un-used UI layout & related code. 2022-03-09 10:24:03 -05:00
PWRxPSYCHO
0cb30171c1 Trying to keep layers persistent across multiple styles 2022-03-09 10:12:53 -05:00
Jackson Rosenthal
85140e486f syncing changes 2022-03-08 14:05:12 -05:00
Jackson Rosenthal
2f945545e5 syncing changes 2022-03-08 13:58:21 -05:00
PWRxPSYCHO
71724a6fd2 Cleaning up some code 2022-03-08 13:49:34 -05:00
Andre Kirchhoff
718e284743
replace firmware spiffs with littlefs 2022-03-08 12:36:34 -03:00
Andre Kirchhoff
b6d90685c2
Merge pull request #389 from meshtastic/release
1.3.3
2022-03-08 10:35:52 -03:00
andrekir
5bb7b49241 Merge remote-tracking branch 'origin/release' into release 2022-03-08 10:18:02 -03:00
andrekir
5c5c8be6ce 1.3.3 2022-03-08 10:16:22 -03:00
andrekir
961e5a174f update libs 2022-03-08 10:12:59 -03:00
PWRxPSYCHO
58613a68a7
Merge branch 'meshtastic:master' into feature/offline-maps 2022-03-08 02:23:05 +00:00
PWRxPSYCHO
3fde01588c Working on "view region" flow 2022-03-07 09:44:29 -05:00
PWRxPSYCHO
cc295d0fb3 Simplified some logic 2022-03-07 08:10:06 -05:00
Jackson Rosenthal
40b0cbad06 removed unused ui layout 2022-03-06 20:00:34 -05:00
Jackson Rosenthal
217806f93e Simplifying offline flow 2022-03-06 19:52:49 -05:00
Jm Casler
2810fbbbbf updating proto submodule to latest 2022-03-02 18:49:44 -08:00
Jackson Rosenthal
cee1b0e9f3 Testing map with custom style pack 2022-03-02 18:46:50 -05:00
Jackson Rosenthal
a1a9bb1740 Merge branch 'master' into feature/offline-maps 2022-03-02 18:01:09 -05:00
Jackson Rosenthal
a19b24842f Merge branch 'master' into feature/offline-maps 2022-03-02 17:59:31 -05:00
PWRxPSYCHO
c622b72a53 Fixed some logic paths with the menu 2022-03-02 15:29:14 -05:00
Andre Kirchhoff
5da7018a9e
Merge pull request #386 from meshtastic/deleteMessage
deleteMessage index by packet.id
2022-03-02 12:12:01 -03:00
andrekir
0b0d82dc76 deleteMessage index by packet id 2022-03-02 11:21:43 -03:00
PWRxPSYCHO
ee68c98e98 added logic to validate map naming window 2022-03-02 09:04:31 -05:00
PWRxPSYCHO
07dd8a826f extracted resource to strings.xml 2022-03-02 08:16:07 -05:00
PWRxPSYCHO
50c762d5c8 removed unused imports 2022-03-02 08:15:39 -05:00
PWRxPSYCHO
b490d40d2e Making progress.
Still need to build the manager & clean up code
2022-03-01 09:28:37 -05:00
Jm Casler
7d611c9a9a updating proto submodule to latest 2022-02-28 22:03:37 -08:00
Jm Casler
489d6d874a updating proto submodule to latest 2022-02-28 19:35:44 -08:00
andrekir
8cd294b089 fix Multiple substitutions specified in non-positional format of string resource string co 2022-02-28 16:59:19 -03:00
andrekir
27994ba2dd anonymize sendPosition 2022-02-28 16:54:16 -03:00
Andre Kirchhoff
567360002e
Merge pull request #385 from meshtastic/menu-messages
add action mode menu to messages (delete & select all)
2022-02-28 16:16:48 -03:00
andrekir
9e00e0fa9f add action mode menu to messages (delete select all) 2022-02-28 15:47:52 -03:00
PWRxPSYCHO
e333bb08e7 Updates from master 2022-02-28 07:52:26 -05:00
PWRxPSYCHO
2ad74b37f7 Merge branch 'master' into feature/offline-maps 2022-02-28 07:50:03 -05:00
Andre Kirchhoff
a1c817e76b
Merge pull request #384 from mcumings/369-bluetooth
Issue #369 - Expand bluetooth repository use cases
2022-02-27 17:02:35 -03:00
Mike Cumings
9592fd68de Issue #369 - Expand bluetooth repository use cases
Changes:
- Adds support for obtaining bonded devices
- Adds support for obtaining BLE scanner
- Consolidates state into a single, immutable data class instance
- Simplified and renamed broadcast receiver
- Renamed view model permissionsUpdated fun to identify the intended use
2022-02-27 11:46:30 -08:00
Jm Casler
f961f2e07e updating proto submodule to latest 2022-02-27 10:01:37 -08:00
Jm Casler
bd9dbd3230 updating proto submodule to latest 2022-02-27 09:57:03 -08:00
Jm Casler
27fb9d40cc updating proto submodule to latest 2022-02-27 09:52:28 -08:00
andrekir
2e55a178f2 update minFirmwareVersion to 1.3.0 2022-02-27 12:20:00 -03:00
Andre Kirchhoff
df7add76eb
Merge pull request #383 from mcumings/369-bluetooth
Issue #369 - Use repository pattern for bluetooth state
2022-02-27 10:04:33 -03:00
Jm Casler
d5bc4dfcc5 updating proto submodule to latest 2022-02-27 01:00:31 -08:00
Jm Casler
730a6347fc updating proto submodule to latest 2022-02-27 00:48:50 -08:00
Jm Casler
9a17e39ca1 updating proto submodule to latest 2022-02-27 00:38:00 -08:00
Mike Cumings
b3878a4240 Issue #369 - Use repository pattern for bluetooth state 2022-02-26 22:59:20 -08:00
Jm Casler
65d74ccaa0 updating proto submodule to latest 2022-02-26 21:22:28 -08:00
Jm Casler
2c0c9e651d updating proto submodule to latest 2022-02-26 21:09:13 -08:00
Jackson Rosenthal
e6558ac942 Merge remote-tracking branch 'origin/feature/offline-maps' into feature/offline-maps 2022-02-25 22:39:46 -05:00
Jackson Rosenthal
82e43cdf37 minor changes 2022-02-25 22:39:39 -05:00
Andre Kirchhoff
4f929f429c
Merge pull request #382 from mcumings/csv-improvements
CSV export improvements to make it more reliable
2022-02-25 20:00:25 -03:00
Mike Cumings
16d2b2e5f3 CSV export improvements to make it more reliable 2022-02-25 14:14:50 -08:00
PWRxPSYCHO
b07eb344d8 Added doc comment 2022-02-24 17:53:40 -05:00
PWRxPSYCHO
da99cee937 Remove layers on download cancel 2022-02-24 08:51:27 -05:00
PWRxPSYCHO
4b1516da29 fixed lat,lon text on dialog window 2022-02-24 08:44:32 -05:00
Jackson Rosenthal
ff751680bb I was never good at trig :'( 2022-02-23 20:22:04 -05:00
Jackson Rosenthal
27ab5c1a26 Testing with a circle region.
Still not sure why the shape morphs
2022-02-23 19:47:30 -05:00
PWRxPSYCHO
8dfcbf5f38 Testing some things out 2022-02-23 16:13:11 -05:00
PWRxPSYCHO
48b6bd1ebf Draw region around center point. (Need to investigate formulas that take the shape of the earth + lat/long not being perfect square into account) 2022-02-23 13:54:48 -05:00
PWRxPSYCHO
cdbd762e27 Hide elements until value exists, added comments 2022-02-23 09:26:56 -05:00
Jackson Rosenthal
cac9c9be7c Able to view mbtile style with test and move map to it 2022-02-22 22:05:26 -05:00
PWRxPSYCHO
d74c122f23 Testing toast and downloading 2022-02-22 21:46:13 -05:00
Jm Casler
2a47d673d8 updating proto submodule to latest 2022-02-22 17:09:51 -08:00
Jackson Rosenthal
7c4aaecb77 Removed need for lateinit variable 2022-02-20 22:59:29 -05:00
Jackson Rosenthal
4196a5afd8 Updated some logic 2022-02-20 21:32:19 -05:00
Jackson Rosenthal
c2107e5c93 updated menu 2022-02-20 21:06:59 -05:00
Jackson Rosenthal
b1075d3a93 Removed unused imports 2022-02-20 19:55:42 -05:00
Jackson Rosenthal
483360c1bd Updated dialog for URI input 2022-02-20 19:11:03 -05:00
andrekir
141a0c67af update minFirmwareVersion to 1.3.0 2022-02-20 19:33:52 -03:00
Jackson Rosenthal
0efbd1bea9 Merge branch 'master' into feature/offline-maps 2022-02-20 17:24:39 -05:00
Jm Casler
477ac730a9 updating proto submodule to latest 2022-02-20 01:32:46 -08:00
Jm Casler
09125e3b26 updating proto submodule to latest 2022-02-19 23:48:19 -08:00
Jm Casler
5fe7e8e8f8 updating proto submodule to latest 2022-02-19 23:17:46 -08:00
Jm Casler
6cee51bf52 updating proto submodule to latest 2022-02-19 23:10:49 -08:00
Jm Casler
27811f281e updating proto submodule to latest 2022-02-19 22:55:33 -08:00
PWRxPSYCHO
a579ce76fc Added dialog for download. (investigating other options) 2022-02-18 10:58:59 -05:00
Jackson Rosenthal
dcad0f3ad9 updated marker image & testing some features 2022-02-17 17:43:06 -05:00
Jackson Rosenthal
068f2ba8b2 Added "download button" with icon and updated onMapTouch 2022-02-17 17:12:17 -05:00
PWRxPSYCHO
1ee500b14d Added TODO list for design 2022-02-17 16:12:12 -05:00
PWRxPSYCHO
dac84c2093 Forgot to add map_view.xml 2022-02-17 15:22:46 -05:00
PWRxPSYCHO
34a3900936 Making slow progress 2022-02-17 15:22:22 -05:00
PWRxPSYCHO
52daa14658 removed example files 2022-02-17 15:10:10 -05:00
PWRxPSYCHO
23c748ddc2 Making some changes.
There is a TODO list I am working through
2022-02-17 11:41:05 -05:00
Jackson Rosenthal
1d0bc12798 Added temp file 2022-02-17 10:38:46 -05:00
Jackson Rosenthal
d80302e274 Added updated mapview.xml 2022-02-17 10:38:33 -05:00
Jackson Rosenthal
2730641d92 Doing some rough testing 2022-02-17 10:16:58 -05:00
PWRxPSYCHO
ffe66ec81c Fixed issue with adding multiple layers instead of moving touch position 2022-02-16 13:56:17 -05:00
PWRxPSYCHO
955d1de0c8 Added long click listener to add new "point" to map for offline region downloading
!WIP
2022-02-16 10:22:59 -05:00
PWRxPSYCHO
0fbc7bb540 Merge branch 'feature/offline-maps' of https://github.com/ScriptTactics/Meshtastic-Android into feature/offline-maps 2022-02-16 08:35:51 -05:00
Jackson Rosenthal
20f425256e Merge branch 'master' into feature/offline-maps 2022-02-16 08:35:39 -05:00
PWRxPSYCHO
af89e7f8db Merge remote-tracking branch 'origin/master' into feature/offline-maps 2022-02-16 08:34:40 -05:00
Jackson Rosenthal
56c1480acb added example files for offline maps for testing 2022-02-16 08:32:50 -05:00
Andre Kirchhoff
60ef44e3ff
update default channel 2022-02-15 23:50:27 -03:00
Andre Kirchhoff
93fc27aba8
Merge pull request #379 from meshtastic/refactor-protos
remove legacy MyNodeInfo.region
2022-02-15 20:56:27 -03:00
andrekir
d016271d79 remove comment 2022-02-15 20:49:03 -03:00
andrekir
88b0415180 remove legacy MyNodeInfo.region 2022-02-15 20:47:54 -03:00
Andre Kirchhoff
2ac5913c41
Merge pull request #378 from meshtastic/refactor-protos
Remove hw_model_deprecated
2022-02-15 20:40:47 -03:00
andrekir
c46039bb04 Remove hw_model_deprecated 2022-02-15 20:12:04 -03:00
Andre Kirchhoff
cf3c2ec282
Merge pull request #377 from meshtastic/refactor-protos
Remove mynodeinfo.num_bands
2022-02-15 20:02:43 -03:00
andrekir
c97ebb6637 Remove mynodeinfo.num_bands 2022-02-15 19:58:11 -03:00
Andre Kirchhoff
f85ac178a1
Merge pull request #376 from meshtastic/refactor-protos
Update with new default modem configurations
2022-02-15 19:55:48 -03:00
andrekir
ffbd4c6e00 update modem config strings 2022-02-15 19:48:14 -03:00
andrekir
63d6881458 Update with new default modem configurations 2022-02-15 15:49:14 -03:00
Andre Kirchhoff
c2de1a1175
Merge pull request #375 from meshtastic/refactor-protos
Change the default pre shared key to break backward compatibility of default channel
2022-02-15 15:21:37 -03:00
andrekir
161af395a4 Change the default pre shared key to break backward compatibility of default channel 2022-02-15 15:13:33 -03:00
Andre Kirchhoff
0c0b173dbb
Merge pull request #374 from meshtastic/refactor-protos
Update EU865 to EU868 & Add TH and IN
2022-02-15 15:12:50 -03:00
andrekir
382bd40c17 Update EU865 to EU868 & Add TH and IN 2022-02-15 15:07:11 -03:00
Jm Casler
123912e0d9 updating proto submodule to latest 2022-02-14 20:35:41 -08:00
Jm Casler
1c6bf8d075 updating proto submodule to latest 2022-02-14 20:08:26 -08:00
Andre Kirchhoff
c55b49e7ae
update curfirmwareversion comment 2022-02-15 01:03:17 -03:00
Jm Casler
37b58dc090 updating proto submodule to latest 2022-02-14 19:55:16 -08:00
Jm Casler
d5aabea5e8 updating proto submodule to latest 2022-02-14 19:42:01 -08:00
Jm Casler
d016bf4478 updating proto submodule to latest 2022-02-14 17:59:41 -08:00
Jm Casler
881c9c811e updating proto submodule to latest 2022-02-14 16:59:22 -08:00
Jm Casler
7b3c8ec578 updating proto submodule to latest 2022-02-14 16:56:54 -08:00
Andre Kirchhoff
69dc99cdbc
Merge pull request #373 from meshtastic/release
1.2.58
2022-02-13 08:42:41 -03:00
andrekir
12cb8f070c catch file write exception 2022-02-13 08:09:26 -03:00
andrekir
130808f6ea 1.2.58 2022-02-12 20:08:20 -03:00
andrekir
eb5abb4be9 only consider BLE pairing for addressValid 2022-02-12 19:33:30 -03:00
andrekir
c04c1b4add move disassociate to SettingsFragment 2022-02-12 19:28:49 -03:00
andrekir
0f3135978c update CompanionDevice Bluetooth bonding 2022-02-12 18:55:42 -03:00
andrekir
875c1542ea catch snackbar exception 2022-02-12 18:54:10 -03:00
Andre Kirchhoff
9cd1856bb9
Merge pull request #372 from meshtastic/release
1.2.57
2022-02-09 23:15:27 -03:00
andrekir
7ff28abd33 1.2.57 2022-02-09 22:49:55 -03:00
andrekir
b075de057e update libs 2022-02-09 22:48:59 -03:00
andrekir
3daa6eac46 use changeScanSelection after deviceManager association 2022-02-09 22:47:28 -03:00
Andre Kirchhoff
969849091c
Merge pull request #371 from meshtastic/targetSdk30
hold new permissions until targetSdkVersion update
2022-02-09 22:19:51 -03:00
andrekir
64114ce341 hold new permissions until targetSdkVersion update 2022-02-09 22:10:25 -03:00
Jm Casler
00dbae7d89 updating proto submodule to latest 2022-02-09 11:24:46 -08:00
andrekir
9562841922 add user feedback to changeRadioButton 2022-02-09 01:17:34 -03:00
andrekir
25e1ea2fb9 add confirmation feedback to bug report 2022-02-09 00:57:34 -03:00
Andre Kirchhoff
d429a94e93
update ci trigger 2022-02-08 23:10:53 -03:00
Andre Kirchhoff
6876162d0e
Merge pull request #370 from mcumings/gitignore
Update .gitignore so that it ignores all AndroidStudio files except the ones we want in source control
2022-02-08 20:07:25 -03:00
Mike Cumings
d5d056c7d5 Improve ignore of AndroidStudio files 2022-02-08 14:49:07 -08:00
Mike Cumings
ccf2106949 Remove files about to be added to .gitignore 2022-02-08 14:48:58 -08:00
Andre Kirchhoff
413a6b9d52
Merge pull request #360 from mcumings/hilt-db-init
Introduce Hilt dependency injection
2022-02-08 19:35:58 -03:00
Mike Cumings
654a32c01c Introduce Hilt dependency injection
Uses Hilt to get the database initialization off of the
main thread.

The initial introduction always has a disproportionate
fan-out of boilerplate. In this case, all entry points which
were using UIViewModel needed to be annotated in order to let
the code gen know that they needed to support it.

The PacketRepository is injected into things via the main
thread (e.g., the MeshService) but due to the lazy declaration,
the database isn't hydrated until the DAO is access while on an
IO thread.
2022-02-08 13:57:04 -08:00
andrekir
4abd8b8ab7 anonymize address log 2022-02-08 00:22:45 -03:00
andrekir
94355e25f4 move CompanionDeviceManager back to SettingsFragment 2022-02-08 00:07:51 -03:00
andrekir
a42ba77bf2 clean up snackbar 2022-02-07 21:50:31 -03:00
andrekir
45895cdcf6 use same CompanionDeviceManager method 2022-02-07 21:46:47 -03:00
andrekir
3001696f9c rename "save messages as csv" to "export rangetest.csv" 2022-02-06 10:30:28 -03:00
andrekir
00810374ea update dialog 2022-02-06 10:30:28 -03:00
andrekir
5dc55b52f6 add confirmation dialog for firmware update 2022-02-06 10:30:28 -03:00
Andre Kirchhoff
1f177dc63e
Merge pull request #368 from ScriptTactics/feature/mapbox-v10-migration
Migrating to Mapbox API V10
2022-02-06 00:57:52 -03:00
Jackson Rosenthal
332ef3eb6a removed unused dependencies 2022-02-05 22:31:01 -05:00
Jackson Rosenthal
f4bfcb85f7 Removed old dependency of MapBox V9.x.x 2022-02-05 22:28:14 -05:00
Jackson Rosenthal
b5a09d502a cleaned up code 2022-02-05 22:03:51 -05:00
Jackson Rosenthal
062cad189e Updated camera movement for nodes,
Zoomed out map for initial load
2022-02-05 22:01:46 -05:00
Jackson Rosenthal
79ef308eac removed default lat/long for map 2022-02-05 21:30:12 -05:00
Jackson Rosenthal
9d5066bf9d move mapbox auth back to build gradle 2022-02-05 21:11:53 -05:00
Jackson Rosenthal
d199b5437d Got nodes to render on map 2022-02-05 20:21:42 -05:00
Jackson Rosenthal
3a06bd0478 Added layers to map, got gestures working 2022-02-05 16:44:39 -05:00
Jackson Rosenthal
090c34f4e9 Added layers to map 2022-02-05 13:26:08 -05:00
Jackson Rosenthal
7fd3cbba69 Merge remote-tracking branch 'origin/master' into feature/mapbox-v10-migration 2022-02-05 13:22:09 -05:00
Jackson Rosenthal
ace75f5ec7 Updated YML for CI. GSERVICES token is having issues 2022-02-05 12:34:07 -05:00
Jackson Rosenthal
7445797d46 Added TODO in code to point out areas that need work 2022-02-05 12:32:31 -05:00
Jackson Rosenthal
ed98232263 Migrating to Mapbox API V10 2022-02-04 21:58:00 -05:00
Andre Kirchhoff
b4cc59b552
Create PULL_REQUEST_TEMPLATE.md 2022-02-04 23:44:40 -03:00
Andre Kirchhoff
956c865e18
mock google-services.json for debug 2022-02-04 23:28:15 -03:00
Andre Kirchhoff
0529fb065f
add CI tests to forks info 2022-02-04 23:17:59 -03:00
Andre Kirchhoff
19b67be182
Merge pull request #366 from meshtastic/splash
add splash screen
2022-02-04 01:11:23 -03:00
andrekir
239a22c1bc add splash screen 2022-02-04 00:57:27 -03:00
Andre Kirchhoff
a0d00a4287
Merge pull request #365 from mcumings/fix-340
Fixes #340 Improve CSV file export
2022-02-04 00:16:18 -03:00
Mike Cumings
6012bddbdc Fixes #340 Improve CSV file export 2022-02-03 18:15:06 -08:00
Andre Kirchhoff
51c8a6a315
update release naming convention 2022-02-03 14:19:33 -03:00
Andre Kirchhoff
35fe61e855
Merge pull request #364 from meshtastic/ble-unbind
1.2.56
2022-02-03 10:43:45 -03:00
andrekir
2bed56809b 1.2.56 2022-02-03 10:29:17 -03:00
Andre Kirchhoff
25dd2fad3e
Merge pull request #362 from meshtastic/change-channel
update channel directly from QR code scan result
2022-02-03 09:22:18 -03:00
andrekir
c547109f80 change to snackbar notifications 2022-02-03 02:16:31 -03:00
andrekir
f540a7ad94 remove icon from reset channel 2022-02-03 02:14:41 -03:00
andrekir
d76e631684 call perhapsChangeChannel from qr code result 2022-02-03 02:13:35 -03:00
andrekir
c362f08ec3 disassociate old CompanionDeviceManager address 2022-02-02 23:28:23 -03:00
Andre Kirchhoff
88a4825b28
Merge pull request #357 from meshtastic/companion-pairing
1.2.55
2022-01-31 23:42:48 -03:00
andrekir
066027c56b 1.2.55 2022-01-31 23:34:12 -03:00
Andre Kirchhoff
3e323683e0
Merge pull request #356 from ScriptTactics/feature/delete-messages
Merge feature/delete-messages into Master
2022-01-31 23:07:42 -03:00
andrekir
2bd5354059 update gradle 2022-01-31 22:01:33 -03:00
andrekir
084c16bfe9 clean up and reformat 2022-01-31 21:55:24 -03:00
andrekir
dc852b97ba add bluetooth_connect permission checks 2022-01-31 21:19:54 -03:00
Jackson Rosenthal
93e81e4639 Added delete all messages into the AlertDialog. 2022-01-31 19:11:32 -05:00
Jackson Rosenthal
863426ce6b Deleted commented out code & unused imports 2022-01-29 18:35:24 -05:00
Jackson Rosenthal
2785ab49c3 Deleted commented out code 2022-01-29 18:05:40 -05:00
Jackson Rosenthal
bc0c682eea Added popup to prompt delete when user long presses 2022-01-29 18:00:24 -05:00
Jackson Rosenthal
929d81cec2 Merge branch 'master' into feature/delete-messages 2022-01-29 15:35:31 -05:00
Jackson Rosenthal
e27a76633c Delete messages from view by long clicking. Looking into clearing "all messages" & menu for deleting individual messages 2022-01-29 14:31:08 -05:00
andrekir
a2f5d74bfc fix companion pairing 2022-01-29 10:41:24 -03:00
Andre Kirchhoff
910f090335
update play store listing 2022-01-29 09:59:34 -03:00
Jackson Rosenthal
c08c652d97 Testing click deletion of messages. (Messages still stored after sending new message or connecting to radio) 2022-01-28 21:40:05 -05:00
Jm Casler
bdfb1acca9 updating proto submodule to latest 2022-01-27 17:39:57 -08:00
Andre Kirchhoff
c483a488bb
update location_share default to LocUnset 2022-01-27 18:30:18 -03:00
Andre Kirchhoff
852cd2ddc7
Merge pull request #354 from meshtastic/release
1.2.54
2022-01-26 22:58:46 -03:00
Andre Kirchhoff
563bcd4236
Merge pull request #355 from meshtastic/channel_util
add channelUtilization & airUtilTx protos
2022-01-26 22:54:28 -03:00
andrekir
fbe79dbfa6 add channelUtilization & airUtilTx to UsersFragment 2022-01-26 22:28:30 -03:00
andrekir
10886a9c98 add MyNodeInfo channelUtilization & airUtilTx 2022-01-26 22:26:35 -03:00
Jm Casler
63b3125196 updating proto submodule to latest 2022-01-26 13:35:43 -08:00
Jm Casler
c725a12345 updating androidlib submodule to latest 2022-01-26 13:18:03 -08:00
andrekir
fd4d2dc5f9 1.2.54 2022-01-26 17:35:39 -03:00
andrekir
37f9783467 update libs 2022-01-26 17:34:46 -03:00
Jm Casler
e6878e7087 updating proto submodule to latest 2022-01-26 12:27:48 -08:00
andrekir
7a316928be update provideLocation feedback 2022-01-26 16:27:16 -03:00
andrekir
6d53b78007 change shouldShowDialog default to false 2022-01-26 14:43:32 -03:00
andrekir
3270cb2f15 update send icon 2022-01-26 02:38:15 -03:00
andrekir
a097cc2f25 send position to local node (without broadcast) 2022-01-26 02:35:37 -03:00
Andre Kirchhoff
fb48f379c7
Merge pull request #353 from meshtastic/perms
update permissions for Android 12 (API 31+)
2022-01-25 18:49:07 -03:00
andrekir
f5c9363d06 add bluetooth scan permission 2022-01-25 18:14:10 -03:00
andrekir
3a1c87d26f update API 31+ bluetooth manifest 2022-01-25 17:53:44 -03:00
andrekir
8aa2f546b0 update permissions 2022-01-25 15:59:45 -03:00
andrekir
d9e1f17418 handle bluetooth disabled 2022-01-25 01:34:46 -03:00
andrekir
71e8e9ff6f fix provideLocationCheckbox 2022-01-25 01:20:31 -03:00
Andre Kirchhoff
d35d56cfa5
Merge pull request #352 from meshtastic/advanced
add is_power_saving to advanced settings
2022-01-24 18:49:37 -03:00
andrekir
e3c0e4eb0d remove "0 to disable" from broadcast_position_secs 2022-01-24 18:25:49 -03:00
andrekir
11e6332d5d add switches to advanced settings 2022-01-24 18:23:09 -03:00
Andre Kirchhoff
1a7ca03e7d
Merge pull request #351 from meshtastic/snackbar
improve Settings notifications
2022-01-24 17:14:48 -03:00
andrekir
2d663156c6 update location_disabled strings 2022-01-24 16:50:20 -03:00
andrekir
0fa33eac6b refactor provideLocationCheckbox 2022-01-24 16:44:18 -03:00
andrekir
23063516b0 update notifications to snackbar 2022-01-24 14:56:17 -03:00
Jm Casler
cfb699753a updating proto submodule to latest 2022-01-23 09:10:30 -08:00
Andre Kirchhoff
84f4b42ae0
Merge pull request #349 from mkinney/patch-1
Update README.md
2022-01-20 15:26:42 -03:00
mkinney
78170700f3
Update README.md
add downloads
2022-01-20 10:20:20 -08:00
mkinney
5f9f6bd7b0
Update README.md
add badge
2022-01-20 09:55:43 -08:00
Jm Casler
62ea38a9b1 updating proto submodule to latest 2022-01-19 18:18:53 -08:00
Andre Kirchhoff
dddd30959a
Merge pull request #345 from meshtastic/locationMeshService
fix restrictions to "Provide location to mesh"
2022-01-19 15:21:21 -03:00
Andre Kirchhoff
2209362691
Merge pull request #346 from meshtastic/bundle
add bundle release
2022-01-19 15:11:38 -03:00
Jm Casler
61f24cd75a
Merge pull request #347 from meshtastic/perms
fix permissions for android >= 31
2022-01-18 21:54:55 -08:00
Andre Kirchhoff
128ded7a68
fix permissions for android >= 31 2022-01-19 01:06:38 -03:00
Andre Kirchhoff
8b2346a107
add bundle release 2022-01-18 18:56:36 -03:00
Jm Casler
10e807657f updating proto submodule to latest 2022-01-17 09:23:26 -08:00
Jm Casler
07ef99b838 updating proto submodule to latest 2022-01-15 09:34:08 -08:00
Andre Kirchhoff
12f864bae3
fix restrictions to provide location to mesh 2022-01-14 18:49:08 -03:00
Jm Casler
01657fc0ef updating proto submodule to latest 2022-01-13 16:55:17 -08:00
Jm Casler
85657ca634
Merge pull request #343 from meshtastic/release
1.2.53
2022-01-10 13:26:58 -08:00
andrekir
10e820d31e 1.2.53 2022-01-10 17:42:00 -03:00
Jm Casler
c5e107d962 updating proto submodule to latest 2022-01-09 22:23:02 -08:00
andrekir
e8e389930e downgrade zxing:core for minSdkVersion 21 2022-01-10 00:33:26 -03:00
andrekir
58136c9cf4 fix duplicate strings 2022-01-09 23:54:50 -03:00
andrekir
2bc12fe9d6 update play-services-location 2022-01-09 23:22:47 -03:00
Jm Casler
913707a326
Merge pull request #338 from slavino/patch-3
Update strings.xml
2022-01-09 17:48:21 -08:00
Jm Casler
eef5f8097f
Merge pull request #341 from meshtastic/modernScan
add companion device pairing
2022-01-09 17:40:08 -08:00
andrekir
4bd5ea5aa4 enable hasCompanionDeviceApi 2022-01-09 00:26:19 -03:00
andrekir
45ce83db99 clean up companion device pairing 2022-01-09 00:25:40 -03:00
andrekir
b95dcbb26e update common ui logic 2022-01-08 17:50:48 -03:00
andrekir
dd4fbc12d5 add ClassicScan button, timer & permissions check 2022-01-08 17:33:20 -03:00
andrekir
a3bd9564f5 split startScan into Setup/Start 2022-01-08 16:56:41 -03:00
andrekir
c0a5c4dd3c no permissions needed if hasCompanionDeviceApi 2022-01-08 16:43:52 -03:00
andrekir
d0614c7934 update initCommonUI 2022-01-08 16:30:06 -03:00
andrekir
bc57946aec convert changeRadioButton to fab 2022-01-08 16:18:36 -03:00
andrekir
e8999712d2 fix companion device pairing 2022-01-07 18:51:20 -03:00
Jm Casler
d843ab2aa6 updating proto submodule to latest 2022-01-06 10:46:10 -08:00
Slavomir Hustaty
8e9dd8a4ca
Update strings.xml
typo fix
https://github.com/meshtastic/Meshtastic-Android/pull/338#discussion_r778792083
2022-01-05 18:48:47 +01:00
Slavomir Hustaty
eae91e23a6
Update strings.xml
https://github.com/meshtastic/Meshtastic-Android/pull/338#discussion_r778792083
2022-01-05 18:46:51 +01:00
Slavomir Hustaty
6cb5b142a9
Update strings.xml
Fixing
https://github.com/meshtastic/Meshtastic-Android/pull/338#discussion_r778842946
https://github.com/meshtastic/Meshtastic-Android/pull/338#discussion_r778843154
2022-01-05 15:19:00 +01:00
Slavomir Hustaty
cc3767fad6
Update strings.xml
Update to meet recent App state
2022-01-05 08:53:19 +01:00
Jm Casler
dccb1e1422
Merge pull request #336 from meshtastic/provideLocation
add provideLocation service start/stop
2022-01-04 16:45:02 -08:00
Jm Casler
f2f550e68b
Merge pull request #335 from meshtastic/tabLayout
fix tabLayout smoothScroll crash
2022-01-04 16:43:27 -08:00
andrekir
f6914de76e fix provideLocationCheckbox logic 2022-01-04 10:33:09 -03:00
andrekir
2441e1bada add provideLocation service start/stop 2022-01-03 21:59:30 -03:00
andrekir
7643acbdb4 fix tabLayout smoothScroll crash 2022-01-02 15:29:27 -03:00
Jm Casler
94ad6cf391 updating proto submodule to latest 2022-01-01 23:25:17 -08:00
Jm Casler
3ed96e56b9
Merge pull request #331 from meshtastic/release
1.2.52
2021-12-29 12:01:50 -08:00
Jm Casler
da5cc46701 updating proto submodule to latest 2021-12-29 09:22:45 -08:00
Jm Casler
89ab3a0f4a updating proto submodule to latest 2021-12-28 23:33:09 -08:00
Jm Casler
61503db0eb updating proto submodule to latest 2021-12-28 23:29:28 -08:00
Jm Casler
276bd63c4f updating androidlib submodule to latest 2021-12-26 19:30:56 -08:00
andrekir
0d5a2be18a 1.2.52 2021-12-26 23:27:26 -03:00
andrekir
c8d7427f2f remove duplicate permission 2021-12-26 23:26:41 -03:00
andrekir
890676e7e5 update libs 2021-12-26 23:25:38 -03:00
Jm Casler
b91c54f8b6
Merge pull request #330 from meshtastic/processQueued
fix processing queued packets
2021-12-26 13:39:40 -08:00
Jm Casler
8aeafde9f4
Merge pull request #329 from meshtastic/lastHeard
add lastHeard to installNodeInfo
2021-12-26 13:38:52 -08:00
andrekir
e093a29191 fix processing queued packets 2021-12-25 19:30:45 -03:00
Andre Kirchhoff
6a5fcbe9db
add lastHeard to installNodeInfo 2021-12-25 18:37:18 -03:00
Jm Casler
c4612f37b4
Merge pull request #327 from meshtastic/isAlwaysPowered
add is_always_powered
2021-12-23 15:13:14 -08:00
Jm Casler
65867c684d
Merge pull request #326 from meshtastic/workflows
include firmware pre-releases in android release build
2021-12-23 14:48:41 -08:00
Andre Kirchhoff
ca783bc301
include firmware pre-releases 2021-12-22 15:09:31 -03:00
andrekir
460288d99f add isAlwaysPowered 2021-12-21 16:28:57 -03:00
Jm Casler
3c2cf3b26a updating proto submodule to latest 2021-12-19 13:54:47 -05:00
Jm Casler
548959e44f updating proto submodule to latest 2021-12-18 15:51:39 -05:00
Jm Casler
c0158b3336
Merge pull request #323 from meshtastic/perms
update permissions
2021-12-15 11:06:00 -08:00
Jm Casler
6b09028dcd
Merge pull request #324 from meshtastic/release
1.2.51
2021-12-15 11:05:45 -08:00
andrekir
6d42110769 update libs 2021-12-15 12:42:12 -03:00
andrekir
ca5182f6e7 1.2.51 2021-12-15 12:29:42 -03:00
andrekir
c53179c090 add hasGpsSensor check 2021-12-15 12:02:01 -03:00
andrekir
e21f3fdf93 add location only logic 2021-12-15 09:04:44 -03:00
andrekir
bb40672401 disable storage 2021-12-14 22:48:20 -03:00
andrekir
3ba0b30304 update permission strings 2021-12-14 17:03:38 -03:00
andrekir
10ed90a0c6 allow permission deny 2021-12-14 08:49:23 -03:00
Jm Casler
b448b8cc6b
Merge pull request #322 from meshtastic/curfirmwareversion
update curfirmwareversion.xml
2021-12-13 17:51:45 -08:00
andrekir
715fb6c108 update github actions 2021-12-11 19:38:02 -03:00
andrekir
6f719f3111 undo 365da25 & update curfirmwareversion.xml 2021-12-11 19:12:07 -03:00
Jm Casler
5bd47a754f
Merge pull request #319 from meshtastic/channels
add LoRa channels (MediumFast, MediumSlow)
2021-12-10 15:21:20 -08:00
andrekir
41e4c12842 fix typo & cap minBroadcastPeriodSecs 30s 2021-12-10 18:37:02 -03:00
andrekir
8e5eabec29 add LoRa channels (MediumFast, MediumSlow) 2021-12-10 15:55:44 -03:00
Jm Casler
8917a47a26
Merge pull request #318 from meshtastic/release
release build action
2021-12-09 21:17:41 -08:00
Jm Casler
75376be1e8
Merge branch 'master' into release 2021-12-09 21:11:41 -08:00
Jm Casler
6977412bec updating proto submodule to latest 2021-12-09 11:23:21 -08:00
Andre Kirchhoff
c7666f22f9
add release build action 2021-12-09 15:01:20 -03:00
Andre Kirchhoff
0570277ceb
add Gradle app-signing
https://developer.android.com/studio/publish/app-signing#secure-shared-keystore
2021-12-09 14:53:33 -03:00
Jm Casler
8c66268714 Merge branch 'master' of https://github.com/meshtastic/Meshtastic-Android 2021-12-09 09:44:58 -08:00
Jm Casler
404c78eb01 updating androidlib submodule to latest 2021-12-09 09:44:46 -08:00
Jm Casler
56a49c52d1
Merge pull request #317 from andrekir/workflows
CI build improvements
2021-12-09 09:39:55 -08:00
Jm Casler
1305976f0e
Merge branch 'master' into workflows 2021-12-09 09:36:44 -08:00
Jm Casler
f4f8afba7c updating proto submodule to latest 2021-12-08 23:15:06 -08:00
Jm Casler
a8daea064e updating proto submodule to latest 2021-12-08 18:41:25 -08:00
Jm Casler
3164168951 updating proto submodule to latest 2021-12-08 17:35:27 -08:00
Jm Casler
1a25ab7bdb updating proto submodule to latest 2021-12-07 12:31:44 -08:00
Andre Kirchhoff
7dbc72c455
spacing 2021-12-07 17:05:45 -03:00
Andre Kirchhoff
a1bdb0863a
ignore cert keys and mapbox token 2021-12-07 16:11:07 -03:00
Andre Kirchhoff
6fff6ef6dd
add google-services.json 2021-12-07 16:04:25 -03:00
Jm Casler
b889108bcf updating proto submodule to latest 2021-12-06 20:17:09 -08:00
Jm Casler
499ba0cb46 updating proto submodule to latest 2021-12-06 19:31:29 -08:00
Andre Kirchhoff
4521779678
mapbox-token.xml 2021-12-01 21:45:32 -03:00
Andre Kirchhoff
7e7f238f91
CI improvements 2021-11-30 10:49:27 -03:00
Jm Casler
cf24c19093
Update README.md to test CI 2021-11-28 13:12:32 -08:00
Jm Casler
6c2de71c5c
Merge pull request #313 from andrekir/maxLength
increase message max length to 228 chars
2021-11-28 12:48:21 -08:00
Andre Kirchhoff
20e0dda159
maxLength 228 2021-11-28 17:26:06 -03:00
Jm Casler
535ac84ade
Merge pull request #312 from andrekir/AndroidCI
Fix: Android CI / Test
2021-11-28 12:15:49 -08:00
Andre Kirchhoff
365da25fa1
short_firmware_version --> cur_firmware_version
SettingsFragment.kt: short_firmware_version --> cur_firmware_version
revert: 56fd43e6f5
2021-11-28 16:49:54 -03:00
Andre Kirchhoff
72cec7c81e
update gradle unmockplugin:0.7.9 2021-11-28 16:42:51 -03:00
Andre Kirchhoff
90c9fe7866
fix mapbox secrets 2021-11-28 16:39:10 -03:00
Jm Casler
6f372ea71c
Merge pull request #311 from andrekir/onActionSend
Fix: PR#293 broke IME_ACTION_DONE
2021-11-28 11:24:06 -08:00
Andre Kirchhoff
a115392c0f
fix local IME Action call 2021-11-28 16:14:34 -03:00
Jm Casler
e0c950edae
Merge pull request #307 from andrekir/QRScan
Feature: Camera QR Code scanning
2021-11-28 10:27:11 -08:00
Andre Kirchhoff
011ef14f3f
cleanup#2 2021-11-20 00:02:34 -03:00
andrekir
bd42397237 add dialog / strings (camera_required & why_camera_required) 2021-11-19 23:35:10 -03:00
andrekir
062dbbc47d camera permissions routine 2021-11-19 01:20:54 -03:00
andrekir
14af474b71 minor details
all changes (edit, reset, scan) require unlock
2021-11-17 21:00:46 -03:00
andrekir
3ecc247c76 QR Code scanning with camera 2021-11-17 21:00:46 -03:00
Andre Kirchhoff
e4983d2c2d
Merge branch 'meshtastic:master' into master 2021-11-17 20:48:27 -03:00
Kevin Hester
e4c5664e01
Merge pull request #308 from geeksville/dev
1.2.50
2021-11-18 04:39:34 +08:00
Kevin Hester
57e1c4847e 1.2.50 2021-11-17 12:36:22 -08:00
Andre Kirchhoff
65d11b6bb7
Mapbox fix attempt #2 2021-11-17 16:13:23 -03:00
Kevin Hester
33dd04ecca fix build 2021-11-17 11:13:02 -08:00
Andre Kirchhoff
6dc26619b5
fix Mapbox lib attempt#1 2021-11-17 15:46:14 -03:00
Kevin Hester
2f19434922 Merge remote-tracking branch 'root/master' into dev 2021-11-17 10:03:28 -08:00
Kevin Hester
1ef41283eb
Merge pull request #293 from andrekir/sendButton
Fix: sendButton / EditText
2021-11-18 02:02:53 +08:00
Kevin Hester
d867c5c85e
Merge branch 'master' into sendButton 2021-11-18 02:02:34 +08:00
Kevin Hester
b8e9b68c0d
Merge pull request #295 from srichs/remove-hints
removed hints from channel inputs
2021-11-18 02:02:16 +08:00
Kevin Hester
2c50b9890a
Merge branch 'master' into remove-hints 2021-11-18 02:02:06 +08:00
Kevin Hester
4eb29fdf46
Merge pull request #296 from andrekir/MessagesFragment
Fix: MessagesFragment layout
2021-11-18 02:01:28 +08:00
Kevin Hester
0034bac1e5 Merge remote-tracking branch 'root/master' into dev 2021-11-16 17:36:34 -08:00
Kevin Hester
37c22786e5 update libs 2021-11-16 17:36:02 -08:00
andrekir
f4c754e599 Fix: MessagesFragment layout
- fix our messages right margin; received left margin (compare "msg.from" to "^local" to "determine if this is my message (originated on this device)";
- night/colors.xml: changed colorMyMsg to #28463C; (colorMsg & colorMyMsg were the same on Dark theme);
- fix val one_day typo (= 86400000 ms/day);
- if errorMessage --> setCardBackgroundColor(Color.RED).
2021-09-07 22:18:54 -03:00
srichs
0e20ec78db removed hints from channel inputs 2021-09-06 22:43:33 -06:00
andrekir
15161862f3 Fix: EditText with textMultiLine & IME_ACTION_SEND 2021-09-05 15:10:02 -03:00
andrekir
615f202583 minor adjustments, reformat & contentDescription added to messages_fragment.xml 2021-09-02 12:39:16 -03:00
Kevin Hester
781b972c71
Merge pull request #291 from andrekir/sendButton
Feature: Added Send button
2021-09-01 10:48:29 -07:00
andrekir
fdff15448f added android:maxLength="200" to messages_fragment.xml 2021-08-31 16:59:34 -03:00
andrekir
5b26714a1e added binding.sendButton.setOnClickListener to MessagesFragment.kt 2021-08-31 11:39:55 -03:00
andrekir
56c8fcddfb sendButton img & layout 2021-08-29 23:48:49 -03:00
Kevin Hester
c9dd7a8061 1.2.45 2021-08-29 15:14:01 -07:00
Kevin Hester
3ada630e25 update libs 2021-08-29 15:14:01 -07:00
Kevin Hester
8e800e5108
Merge pull request #287 from andrekir/master
Fix: Localization for pt-BR
2021-08-01 15:57:42 -07:00
andrekir
27f8e3d389 Fix: Localization for pt-BR 2021-07-27 23:42:54 -03:00
Kevin Hester
cf39069a4e fix hungarian translations 2021-07-26 16:55:49 -07:00
Kevin Hester
b12a6effa0
Merge pull request #284 from rkuksa/rkuksa-typo-ru
Russian translation update
2021-07-27 07:39:53 +08:00
Kevin Hester
8b8d9b0924
Merge pull request #285 from sirgeoff/hu-lang
Hungarian (hu) translation
2021-07-27 07:39:03 +08:00
Kevin Hester
0d2004dc48 1.2.43 2021-07-26 16:19:33 -07:00
Kevin Hester
b1fab80422 make store agnostic 2021-07-26 16:18:57 -07:00
Kevin Hester
6fa6588eca don't show update dialog if we are already updating 2021-07-26 16:18:40 -07:00
Kevin Hester
091f8d8acf work with newer emulator images 2021-07-26 10:11:17 -07:00
Kevin Hester
fee7f89a68 add brazillian portugese from @AndreK 2021-07-26 09:44:41 -07:00
Kevin Hester
8ffa35376e remove jcenter 2021-07-26 09:34:42 -07:00
Kevin Hester
b6d9217d8a update libs 2021-07-26 09:30:02 -07:00
attila@qualisoft
03a6df3d0d Hungarian (hu) translation 2021-07-21 14:41:31 +02:00
rkuksa
1933aeaeb8
Update strings.xml 2021-07-20 05:19:15 +03:00
Kevin Hester
a19de7eff1
Merge pull request #283 from sachaw/master
Update readme and fix CI formatting
2021-07-12 05:24:13 +08:00
Sacha Weatherstone
d39f8b6c41 Update CI 2021-07-09 14:19:14 +10:00
Sacha Weatherstone
c39ceafeb9 Update CI 2021-07-09 14:17:43 +10:00
Sacha Weatherstone
3c630280e2 Update CI 2021-07-09 14:14:41 +10:00
Sacha Weatherstone
972ff08976 Fix typo 2021-07-09 14:10:41 +10:00
Sacha Weatherstone
4bac5814a6 Update readme and fix CI formatting 2021-07-09 14:04:53 +10:00
Kevin Hester
9128d4531d New Chinese translation by @mango-sauce 2021-06-29 08:33:47 -07:00
Kevin Hester
74a34cd9b6 store background location pref 2021-06-23 12:41:44 -07:00
Kevin Hester
74f7281a60 better dialog for background location 2021-06-23 12:17:06 -07:00
Kevin Hester
c5fc6bc319 wait to show location missing toast until after we hear back from android 2021-06-23 11:56:29 -07:00
Kevin Hester
7efaf56f4f location warnings are now much cleaner 2021-06-23 11:40:15 -07:00
Kevin Hester
d32f8ad99e Add Polish translations contributed by @Fido 2021-06-14 10:42:45 -07:00
Kevin Hester
e186abce79 fix autobug 2021-06-11 09:48:20 -07:00
Kevin Hester
5b069f93bc remove concept of "early received packets" we no longer need it 2021-06-11 09:45:04 -07:00
Kevin Hester
9c1316ea09 WIP - work with background location being optional 2021-06-10 10:58:45 -07:00
Kevin Hester
e0bbbb3c14 fix stdlib warning 2021-06-10 10:14:45 -07:00
Kevin Hester
f00fe5c441 WIP update to android 30 2021-06-10 10:02:28 -07:00
Kevin Hester
9fbd3e609a update protos 2021-05-28 11:01:40 +08:00
Kevin Hester
32bed5478e Fix amazon button 2021-05-28 10:21:20 +08:00
Kevin Hester
b26e1f3da0 add amazon fire button and disable google-play links for now 2021-05-28 10:14:39 +08:00
Kevin Hester
793b75b67b less logspam 2021-05-10 08:46:11 +08:00
Kevin Hester
1eb4bf43d4 fix leakage of (slightly) possibly PII data 2021-05-10 08:37:39 +08:00
Kevin Hester
b14061e6cc warn repeatedly about missing permissions 2021-05-10 08:09:42 +08:00
Kevin Hester
0c7dac8cb2 1.2.31 2021-05-09 11:18:04 +08:00
Kevin Hester
8de91b923f tint the icon properly 2021-05-09 11:16:48 +08:00
Kevin Hester
510ae0002f fix button colors based on @bb8 feedback! 2021-05-09 11:16:28 +08:00
Kevin Hester
56fd43e6f5 use short firmware version in UI 2021-05-09 11:15:47 +08:00
Kevin Hester
c8b09df650 1.2.30 2021-05-09 09:41:38 +08:00
Kevin Hester
ab4d95aae0 background colors fixed 2021-05-09 09:19:54 +08:00
Kevin Hester
59e430d30d WIP color fixes 2021-05-09 09:02:53 +08:00
Kevin Hester
18d526166f fix device version parsing and confirm it works with SHAs 2021-04-16 10:14:45 +08:00
Kevin Hester
041a04afc1 1.2.28 2021-04-15 12:37:14 +08:00
Kevin Hester
a8ef752564 update libs 2021-04-15 12:17:23 +08:00
Kevin Hester
c74ee428ed fix position overide problem with fixedPosition nodes thx @havealoha 2021-04-15 12:16:56 +08:00
Kevin Hester
b2ed20546a use modern CI rules 2021-04-15 12:16:26 +08:00
Kevin Hester
330f01ed6f Merge remote-tracking branch 'root/master' into dev 2021-04-15 12:07:50 +08:00
Kevin Hester
4d9ae0df73
Merge pull request #272 from Merhaut/DarkTheme
Added dark theme option
2021-04-15 12:07:36 +08:00
Kevin Hester
1f623e31ca
Merge branch 'master' into DarkTheme 2021-04-15 12:07:02 +08:00
Kevin Hester
6df1d4fabd
Merge pull request #276 from vfurman-gh/master
Two fixes
2021-04-15 12:06:31 +08:00
Kevin Hester
82ebfd0094
Merge branch 'master' into master 2021-04-15 12:04:37 +08:00
Vadim Furman
b87ac0a1af Removed checking for device name to contain MAC address. We still verify it starts with Mesh 2021-04-13 17:50:34 -07:00
Vadim Furman
bd74d64be0 Added utf8 to Datapacket to make the remote IMeshService work 2021-04-13 17:42:24 -07:00
Zbynek Merhaut
2c17a6f95d Added dark theme option 2021-04-11 12:10:17 +02:00
Kevin Hester
0c70ae860e If we are unable to generate a barcode, just show nothing 2021-04-05 15:52:26 +08:00
Kevin Hester
479f242e06 1.2.22 2021-04-05 15:35:19 +08:00
Kevin Hester
7bb3511587 allow longer channel names (if you include the # prefix and suffix 2021-04-05 15:35:12 +08:00
Kevin Hester
6c8aab5a43 update libs 2021-04-05 15:17:53 +08:00
Kevin Hester
7f6ed483a9 fix #271, changing speeds was busted, also other dark patterns in editing 2021-04-05 15:17:39 +08:00
Kevin Hester
415ab40f36 Spanish tweak by @artemisoftnian and @smack815 2021-04-05 13:46:00 +08:00
Kevin Hester
6364fd0b5a fix autobug 2021-04-05 07:11:31 +08:00
Kevin Hester
395bc59c9c ChannelSettings.defaultInstance is garbage, do not use it 2021-04-04 17:44:25 +08:00
Kevin Hester
a52e3db87b 1.2.21 2021-04-03 09:06:57 +08:00
Kevin Hester
384cb5cdc0 stop autobug spam about misformatted spiffs partitions 2021-04-03 09:05:11 +08:00
Kevin Hester
0f384fc62f fix autobug with channels being only one entry long 2021-04-03 08:27:07 +08:00
Kevin Hester
be06353267 1.2.20 2021-04-03 08:26:47 +08:00
Kevin Hester
39ffb6def5 update libs 2021-04-02 13:56:19 +08:00
Kevin Hester
28fec09a54 fix message not allowed to be queued while sleeping (I think) 2021-04-02 13:56:09 +08:00
Kevin Hester
7e21d63044 cope with malformatted broadcasts 2021-04-02 13:55:41 +08:00
Kevin Hester
7d898481a6 fix autobug for devices that don't have URL sharing support 2021-03-31 19:45:31 +08:00
Kevin Hester
091b18a5bb fix autobug - apparently EXTRA_DEVICE can be null on some implementations 2021-03-31 19:40:33 +08:00
Kevin Hester
d9a2a469bc TCP link basically works 2021-03-30 23:19:05 +08:00
Kevin Hester
04f4a2a342 TCPInterface (for accessing the native-simulator) kinda works 2021-03-29 21:09:27 +08:00
Kevin Hester
9e42634402 cleanup mockinterface detection 2021-03-29 20:45:11 +08:00
Kevin Hester
5b653d29f8 reformat per coding conventions 2021-03-29 20:33:06 +08:00
Kevin Hester
2c75d0dee7 WIP add concept of interface factories 2021-03-29 20:29:38 +08:00
Kevin Hester
2ec15bf7b1 remove support for the old address prefs key (deprecated pre 1.0) 2021-03-29 19:56:32 +08:00
Kevin Hester
8b70bf1a14 add WIP TCPInterface 2021-03-29 19:47:24 +08:00
Kevin Hester
1ebc710006 Split StreamInterface from SerialInterface, so it can be a TCPInterface baseclass 2021-03-29 19:10:52 +08:00
Kevin Hester
d510576fa8 fix warnings 2021-03-29 19:08:42 +08:00
Kevin Hester
804a9f8886 1.2.17 2021-03-28 12:31:48 +08:00
Kevin Hester
bfd9b65cc8 oops typos 2021-03-28 11:05:39 +08:00
Kevin Hester
9e146e9b93 stop autobug spam about spiffs writing on misformattted devices 2021-03-28 10:54:33 +08:00
Kevin Hester
0b957a7b1c fix autobug 2021-03-28 10:42:19 +08:00
Kevin Hester
6a840c95ca fix autobug NPE 2021-03-28 10:33:59 +08:00
Kevin Hester
32cef96e16 some operations should be allowed before isConnected (autobug) 2021-03-27 18:15:57 +08:00
Kevin Hester
51f66f715f fix warning 2021-03-27 17:31:32 +08:00
Kevin Hester
d3556ea9f9 Merge branch 'dev1.2' of https://github.com/geeksville/Meshtastic-Android into dev1.2
# Conflicts:
#	app/src/main/java/com/geeksville/mesh/service/MeshService.kt
2021-03-27 17:29:46 +08:00
Kevin Hester
48163ac7ab 1.2.16 2021-03-27 17:26:58 +08:00
Kevin Hester
5a64d1520c don't generate redundant node change broadcasts for rx positions 2021-03-27 16:14:57 +08:00
Kevin Hester
9a7e46c5df fill in for local device that happens to not have GPS signal (even if has GPS) 2021-03-27 15:50:16 +08:00
Kevin Hester
d41cef5d38 rate limit check here is not needed here, better just to limit the position broadcast interval 2021-03-27 13:26:07 +08:00
Kevin Hester
07c41bfaed ignore nop position updates from the local device 2021-03-27 13:25:01 +08:00
Kevin Hester
23a0590186 update libs 2021-03-27 13:14:28 +08:00
Kevin Hester
3c457a118d cleanup lastHeard in node info (instead of position.time) 2021-03-27 10:55:16 +08:00
Kevin Hester
bff21e0026 cleanup lastHeard in node info (instead of position.time) 2021-03-27 10:53:39 +08:00
Kevin Hester
3be55f8c7f @anothercarolina substantially improved the Spanish translations! 2021-03-27 09:58:38 +08:00
Kevin Hester
0088f40eb0 fix location-fill in problem not working (ht @hansi) 2021-03-25 11:55:55 +08:00
Kevin Hester
84f19cc137 not translatable 2021-03-25 11:54:46 +08:00
Kevin Hester
58a0c3eab2
Merge pull request #268 from slavino/patch-2
Slovak translation update
2021-03-25 10:47:23 +08:00
Slavomir Hustaty
6e4bbf77eb
Slovak translation update 2021-03-24 09:06:12 +01:00
Kevin Hester
9e5172ddd9
Merge pull request #267 from geeksville/dev1.2
1.2.14
2021-03-24 15:22:21 +08:00
Kevin Hester
0425f829c8 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-24 15:22:06 +08:00
Kevin Hester
868ed3f88c 1.2.14 2021-03-24 15:20:27 +08:00
Kevin Hester
2b4b063ca7 fix problem noticed by @havealoha, device region not fetched the first time app is run 2021-03-24 15:19:26 +08:00
Kevin Hester
10d6537972 Disable the "set default channel" button if already on the default channel 2021-03-24 14:28:11 +08:00
Kevin Hester
b44a104be2
Merge pull request #266 from geeksville/dev1.2
Dev1.2
2021-03-24 13:53:05 +08:00
Kevin Hester
8f32c39c5f 1.2.13 2021-03-24 13:52:11 +08:00
Kevin Hester
5f6cb7637c Merge remote-tracking branch 'root/master' into dev1.2
# Conflicts:
#	app/src/main/java/com/geeksville/mesh/MainActivity.kt
2021-03-24 13:49:46 +08:00
Kevin Hester
37de9de8a1 fix warning 2021-03-24 13:48:32 +08:00
Kevin Hester
ad7a189c51 add default channel button 2021-03-24 13:48:26 +08:00
Kevin Hester
78bedde4ec
Merge pull request #264 from danielnemenyi/url-fix
Fix expired link
2021-03-24 13:47:36 +08:00
Kevin Hester
a6fe6b2bbf
Merge branch 'master' into url-fix 2021-03-24 13:47:30 +08:00
Kevin Hester
fa17822f93
Merge pull request #265 from vfurman-gh/master
Show rssi/snr in the user info
2021-03-24 13:46:33 +08:00
Kevin Hester
12ea70174e fix autobug when changing channels 2021-03-23 13:40:03 +08:00
Kevin Hester
dd9a2b99d7 fix autobug NPE 2021-03-23 13:21:51 +08:00
Kevin Hester
cea7755aa4 ignore BLE errors while closing 2021-03-23 13:17:36 +08:00
Kevin Hester
2327c5e693 fix autobug while shutting down interface 2021-03-23 13:07:32 +08:00
Kevin Hester
518241c3c9 less logspam 2021-03-23 13:05:50 +08:00
Vadim Furman
691c5862cb Updated proto 2021-03-22 21:32:40 -07:00
Vadim Furman
13d63ee52b More rssi 2021-03-22 21:21:58 -07:00
Vadim Furman
0d9f31f7fb Pipe rssi to the view 2021-03-22 21:10:58 -07:00
Daniel Nemenyi
6e545e628b Fix expired link
The 'Firmware update required' modal contains an expired link to the
Wiki. This commit points the user towards the Firmware Installation
section on Github instead.

* app/src/main/res/values/strings.xml
2021-03-22 09:14:29 +00:00
Vadim Furman
b5c5cf0153 Fixed formatting 2021-03-21 18:15:54 -07:00
Kevin Hester
278d82e99a cleanly kill job if we get an exception during firmware update 2021-03-20 18:47:12 +08:00
Kevin Hester
c9d18b00a4 don't let user update firmware without setting a region. 2021-03-20 17:47:02 +08:00
Kevin Hester
fb07b1dc83 clean up position sending, also always provide time to the mesh 2021-03-20 11:23:31 +08:00
Vadim Furman
8aa7585fdd Merge remote-tracking branch 'upstream/master' 2021-03-19 16:55:22 -07:00
Vadim Furman
5e4470d25e Use default scope for file save and display snr 2021-03-19 14:33:55 -07:00
Kevin Hester
be7aea1457 update to sdk 30 2021-03-20 01:28:55 +08:00
Kevin Hester
57aff30082
Merge pull request #262 from geeksville/dev1.2
get ready for next release
2021-03-20 00:03:01 +08:00
Kevin Hester
0ebb512dca 1.2.11 2021-03-20 00:02:34 +08:00
Kevin Hester
93f110158f preserve even old 1.0 style region names during firmware update 2021-03-19 23:14:46 +08:00
Kevin Hester
54bf0e85c1 make 1.2 firmware update work even for old 1.0 devices 2021-03-19 22:49:51 +08:00
Kevin Hester
bfdf4a661a Merge remote-tracking branch 'root/master' into dev1.2 2021-03-19 21:29:31 +08:00
Kevin Hester
9889fa1da1 add channel url gen test 2021-03-19 21:27:41 +08:00
Kevin Hester
699d5076b5 use unmock to test and fix the channel suffix generation to match device 2021-03-19 17:42:26 +08:00
Kevin Hester
c405cdc200 try to notice when user wants to go back to default settings 2021-03-19 17:09:35 +08:00
Kevin Hester
a35714186d
Merge pull request #261 from geeksville/dev1.2
changes from while on vacation
2021-03-19 15:16:03 +08:00
Kevin Hester
a18343e30c Merge remote-tracking branch 'root/master' into dev1.2
# Conflicts:
#	app/src/main/java/com/geeksville/mesh/service/MeshService.kt
#	app/src/main/java/com/geeksville/mesh/service/MockInterface.kt
#	app/src/main/res/values/strings.xml
2021-03-19 15:09:33 +08:00
Kevin Hester
8a18680d0a
Merge pull request #259 from Crotery/master
Display time ago and coords for users
2021-03-19 15:01:05 +08:00
Kevin Hester
3ab9ee4afc
Merge branch 'master' into master 2021-03-19 15:00:49 +08:00
Kevin Hester
dc96565ff1
Merge pull request #260 from vfurman-gh/master
Save messages in CSV file
2021-03-19 14:57:42 +08:00
goga
3e3dc47440 oops, show not only my coords, but neighbour's too 2021-03-18 11:11:37 +05:00
Vadim Furman
78a08898fe Save messages in CSV and fix position broadcast 2021-03-17 21:00:01 -07:00
Kevin Hester
6ed7af3763 fix autobug with getnodenum failing during startup 2021-03-17 16:04:29 +08:00
Kevin Hester
aac5e7cd7e stop fetching channels at first !disabled entry 2021-03-17 15:53:36 +08:00
Kevin Hester
3175d5e2d2 autobug while app shutting down 2021-03-17 15:53:08 +08:00
Kevin Hester
c2f578c971 fix autobug when setting channels on !connected radio 2021-03-17 15:40:09 +08:00
Kevin Hester
98356b9205 fix autobug crash when primary channel is null 2021-03-17 15:37:09 +08:00
goga
6958e3c86a coords position fix 2021-03-16 11:38:42 +05:00
goga
452bf6f6cb show coordinates with geo url to open in other mapping app 2021-03-16 10:04:01 +05:00
goga
53745ca9f5 display timeAgo properly and show coords in users screen 2021-03-16 00:05:28 +05:00
goga
c8107441de display timeAgo properly and show coords in users screen 2021-03-15 23:46:53 +05:00
Kevin Hester
fa17c4efe1 fix new hwmodel based on testing with the simulator 2021-03-15 10:31:44 +08:00
Kevin Hester
483bd878ab untested change to use new hwmodel 2021-03-14 11:42:04 +08:00
Kevin Hester
abea039922 update libs 2021-03-14 11:40:21 +08:00
Kevin Hester
b4d562d15f Merge remote-tracking branch 'root/master' into dev1.2 2021-03-10 16:49:06 +08:00
Kevin Hester
dba11472fb 1.2.7 2021-03-10 16:48:38 +08:00
Kevin Hester
0271587a65 fix #256: transparent holes in advanced tabs 2021-03-10 12:19:20 +08:00
Kevin Hester
6bd329847a update libs 2021-03-10 12:18:54 +08:00
Kevin Hester
e82153c999 1.2.6 2021-03-07 09:57:14 +08:00
Kevin Hester
8ace22d686 1.2.5 2021-03-07 09:56:30 +08:00
Kevin Hester
e88b4e9f22
Merge pull request #257 from geeksville/dev1.2
Dev1.2
2021-03-05 14:30:37 +08:00
Kevin Hester
c6c327b32c Merge remote-tracking branch 'root/master' into dev1.2 2021-03-05 14:29:38 +08:00
Kevin Hester
a8e698c070 1.2.4 2021-03-05 14:29:31 +08:00
Kevin Hester
390413bd8a fix channel setting 2021-03-05 14:14:17 +08:00
Kevin Hester
d15ff7ed36 region setting is finished 2021-03-04 11:20:51 +08:00
Kevin Hester
bd1885aaf2 region setting from android now kinda works 2021-03-04 10:28:56 +08:00
Kevin Hester
81e76bfc51 fix bugs found via simulator 2021-03-04 09:08:29 +08:00
Kevin Hester
aa79ee4335 make our simulator work like 1.2 2021-03-03 14:43:29 +08:00
Kevin Hester
b53acd206b region GUI wip 2021-03-03 13:51:33 +08:00
Kevin Hester
dbc91e4ac5 remove deprecations 2021-03-03 08:14:40 +08:00
Kevin Hester
55d0110ff2 optimize channel rx 2021-03-03 07:49:23 +08:00
Kevin Hester
da95b4f0c2 basic settings and channel stuff works for android 2021-03-03 07:30:05 +08:00
Kevin Hester
02198864c5 WIP on getting new style settings/channels 2021-03-02 22:12:42 +08:00
Kevin Hester
a800bd1319 cleanup admin packet generation 2021-03-02 16:27:43 +08:00
Kevin Hester
ba86d3e88f localization 2021-03-02 16:27:34 +08:00
Kevin Hester
e27a3d937d show alert for old firmware 2021-03-02 15:12:57 +08:00
Kevin Hester
2fc4099bfc Merge branch 'dev' into dev1.2
# Conflicts:
#	app/src/main/java/com/geeksville/mesh/MainActivity.kt
#	app/src/main/java/com/geeksville/mesh/service/MeshService.kt
2021-03-02 14:38:55 +08:00
Kevin Hester
2614cba6a1
Merge pull request #255 from geeksville/dev
1.1.50
2021-03-02 14:20:24 +08:00
Kevin Hester
5c19b2649f 1.1.50 2021-03-02 14:19:44 +08:00
Kevin Hester
0fe6c91a4e fix #254 typo changed != to ==. fix rxtime displays 2021-03-02 14:16:57 +08:00
Kevin Hester
ae402e8fd2 add warning text for downrev apps 2021-03-02 13:22:55 +08:00
Kevin Hester
d33defb502 oops - I nuked a string by accident 2021-03-02 12:01:34 +08:00
Kevin Hester
b86e11a8c2 Merge remote-tracking branch 'root/master' into dev 2021-03-02 11:30:40 +08:00
Kevin Hester
2cf39096a7 lib update 2021-03-02 10:36:37 +08:00
Kevin Hester
d34efb46b4
Merge pull request #252 from paulmandal/task/expose-hoplimit-on-datapacket
Add hopLimit to the DataPacket class
2021-03-02 10:35:49 +08:00
Paul Mandal
a6c80cc203 Add hopLimit to the DataPacket class, update MeshService to use hopLimit when building its MeshPackets 2021-02-27 22:36:06 -07:00
Kevin Hester
850358e103 channel setting is healthier 2021-02-27 14:31:52 +08:00
Kevin Hester
1eaabfc216 fix java paths for protos 2021-02-27 13:43:55 +08:00
Kevin Hester
bd796524b9 channelset wip 2021-02-27 12:04:44 +08:00
Kevin Hester
0743feadc4 wip adding channelset 2021-02-27 11:44:05 +08:00
Kevin Hester
31a106039b impl set owner/set radio 2021-02-27 11:13:30 +08:00
Kevin Hester
85a0ea7286 1.2 wip 2021-02-27 10:18:00 +08:00
Kevin Hester
2f4be7bb23 update libs 2021-02-27 09:49:25 +08:00
Kevin Hester
1c7d1c7ea9
Merge pull request #250 from vfurman-gh/master
Do not use windowSoftInputMode=adjustPan
2021-02-23 09:02:09 +08:00
Vadim Furman
ead36b2fc6 Do not use windowSoftInputMode=adjustPan, as the toolbar hides when input is active. 2021-02-22 15:00:32 -08:00
Kevin Hester
efbc61eaf2 fix mroe lint warnings 2021-02-21 12:27:13 +08:00
Kevin Hester
5bef2fc9cf don't build release builds in CI, because it wants to upload to crashlytics 2021-02-21 12:12:55 +08:00
Kevin Hester
3ec0c5fd32 fix lint warnings 2021-02-21 12:07:53 +08:00
Kevin Hester
64cfa8675a fixing CI by remote control is so tedious! 2021-02-21 11:56:28 +08:00
Kevin Hester
8e1a31f128 this time ci will work I hope! 2021-02-21 11:52:45 +08:00
Kevin Hester
01100e67e1 don't corrupt mbox token xml 2021-02-21 11:51:21 +08:00
Kevin Hester
034484c2d3 fix ci build? 2021-02-21 11:40:19 +08:00
Kevin Hester
9e4b120c24 more lint errors 2021-02-21 11:40:12 +08:00
Kevin Hester
4a90bb2fc0 fix various lint warnings 2021-02-21 11:34:43 +08:00
Kevin Hester
09fb7f220d use latest libs 2021-02-21 11:06:47 +08:00
Kevin Hester
a2d37e0343 fix lint error about tranlsation 2021-02-21 11:00:46 +08:00
Kevin Hester
9d75c6f062 fix missing crashlytics permission 2021-02-21 11:00:11 +08:00
Kevin Hester
3f50cab92d make lint failures non fatal 2021-02-21 10:59:51 +08:00
Kevin Hester
b8f9d70548 Merge remote-tracking branch 'root/master' into dev
# Conflicts:
#	.github/workflows/android.yml
2021-02-21 10:48:23 +08:00
Kevin Hester
0c4be072db make ci build use mapbox download key per #218 (thanks to @hpsaturn) 2021-02-21 10:47:23 +08:00
Kevin Hester
81ce163527 clean up ci build 2021-02-21 10:36:03 +08:00
Kevin Hester
217d5acd91
Merge pull request #1 from hpsaturn/av/fix_ci_issue_218
Av/fix ci issue 218
2021-02-21 10:19:00 +08:00
Antonio Vanegas
16a5827962 fixed identation issue reported for CI check 2021-02-19 18:43:50 +01:00
Antonio Vanegas
ce9e402109 added mapbox and gservices secrets from github secrets 2021-02-19 17:04:48 +01:00
Kevin Hester
24358fa3c9 add step for getting a mapbox token
for https://github.com/meshtastic/Meshtastic-Android/issues/246
2021-02-16 12:40:12 +08:00
Kevin Hester
acd43b29f5 don't (incorrectly) set want_replies 2021-02-15 09:48:44 +08:00
Kevin Hester
b4b1099e76 fix layout error now that fields moved out of settings 2021-02-14 17:00:56 +08:00
Kevin Hester
d13fa11dc8
Merge pull request #245 from geeksville/dev
dev
2021-02-14 16:23:57 +08:00
Kevin Hester
05a75f0900 1.1.48 2021-02-14 16:20:02 +08:00
Kevin Hester
6eaec63df9 fix another autobug - don't crash if firmware update can't start 2021-02-14 16:11:55 +08:00
Kevin Hester
50dc26b36d fix autobug if user tries to change settings during an update
cc @vfurman-gh

Caused by android.os.RemoteException: Operation prohibited during firmware update
       at com.geeksville.util.ExceptionsKt.toRemoteExceptions(ExceptionsKt.java:61)
       at com.geeksville.mesh.service.MeshService$binder$1.setRadioConfig(MeshService.java:1589)
       at com.geeksville.mesh.model.UIViewModel.setRadioConfig(UIViewModel.java:163)
       at com.geeksville.mesh.model.UIViewModel.setLsSleepSecs(UIViewModel.java:148)
       at com.geeksville.mesh.ui.SettingsFragment$initCommonUI$8.invoke(SettingsFragment.java:637)
       at com.geeksville.mesh.ui.SettingsFragment$initCommonUI$8.invoke(SettingsFragment.java:464)
       at com.geeksville.mesh.ui.MessagesFragmentKt$on$1.onEditorAction(MessagesFragmentKt.java:35)
       at android.widget.TextView.onEditorAction(TextView.java:7042)
       at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:138)
       at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:357)
       at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:89)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:224)
       at android.app.ActivityThread.main(ActivityThread.java:7562)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
2021-02-14 16:07:49 +08:00
Kevin Hester
e482d074c7 fix an autobug with some shit phone 2021-02-14 15:52:16 +08:00
Kevin Hester
c32a35833f
Merge pull request #244 from vfurman-gh/min_broadcast
Advanced settings
2021-02-14 14:20:41 +08:00
Kevin Hester
254073c6a8
Merge branch 'master' into min_broadcast 2021-02-14 14:20:33 +08:00
Vadim Furman
2f7ce57015 Formatting 2021-02-13 22:02:24 -08:00
Vadim Furman
757c3867f2 Moved broadcast and ls_sleep in advanced settings 2021-02-13 21:35:57 -08:00
Vadim Furman
380ca1017f Use snackbar 2021-02-13 18:53:59 -08:00
Kevin Hester
5b6c043496
Merge pull request #243 from vfurman-gh/master
Fixed swapped short <-> medium channel names
2021-02-13 14:58:55 +08:00
Vadim Furman
8a065c5b88 Per-channel minimum broadcast period enforcement 2021-02-12 19:07:14 -08:00
Vadim Furman
a8d095d1d7 Fixed swapped short <-> medium channel names 2021-02-12 17:40:47 -08:00
Kevin Hester
edaf4c76ae
Merge pull request #242 from geeksville/dev
1.1.46
2021-02-12 13:51:40 +08:00
Kevin Hester
221738603b 1.1.46 2021-02-12 13:50:39 +08:00
Kevin Hester
11bc8ef5f0 add logging in support of https://github.com/meshtastic/Meshtastic-device/issues/681 2021-02-11 16:54:17 +08:00
Kevin Hester
23ab6c7048 fix my ping change 2021-02-11 16:32:33 +08:00
Kevin Hester
2736a01d4b change stress test to a checkbox and only show for debug builds 2021-02-11 16:29:26 +08:00
Kevin Hester
1bff87977e Merge remote-tracking branch 'root/master' into dev 2021-02-11 16:13:44 +08:00
Kevin Hester
27495352d0
Merge pull request #241 from vfurman-gh/master
Added "Ping" menu option for testing repeated message send.
2021-02-11 16:13:28 +08:00
Kevin Hester
c46b6f3c96 change alpha to beta in strings 2021-02-11 13:47:46 +08:00
Kevin Hester
705e0deae3 make settings layout work on even the tiniest of screens 2021-02-11 13:44:30 +08:00
Vadim Furman
36b478b263 Added comments 2021-02-10 21:36:45 -08:00
Vadim Furman
91912741ae Added "Ping" menu option for testing repeated message send. 2021-02-10 21:34:26 -08:00
Kevin Hester
f5d36d603e
Merge pull request #239 from geeksville/dev
misc fixes
2021-02-08 13:29:13 +08:00
Kevin Hester
e40d5b604c 1.1.44 2021-02-08 13:27:55 +08:00
Kevin Hester
d290555aba fix notification to include text message even when not expanded 2021-02-08 13:25:29 +08:00
Kevin Hester
d6f759cabc stop using device currentpacketid, first send message could be discarded as dup 2021-02-08 12:33:16 +08:00
Kevin Hester
486a3444fc update to latest protobufs 2021-02-08 12:29:40 +08:00
Kevin Hester
122dabefb0 add back a fixed isViewVisible, @vfurman-gh would you mind reviewing? 2021-02-08 12:19:35 +08:00
Kevin Hester
ffca8e5f47 Merge remote-tracking branch 'root/master' into dev 2021-02-08 11:30:42 +08:00
Kevin Hester
2cd2801200
Merge pull request #236 from vfurman-gh/map_update
Map UI update fixes
2021-02-08 11:30:31 +08:00
Kevin Hester
dab409fb04 Merge remote-tracking branch 'root/master' into dev 2021-02-08 11:23:27 +08:00
Kevin Hester
7ba6db6cca
Merge pull request #238 from vfurman-gh/notification
Add a separate notification channel for messages
2021-02-08 11:23:13 +08:00
Kevin Hester
69a5032f4e Merge remote-tracking branch 'root/master' into dev 2021-02-08 11:22:48 +08:00
Kevin Hester
65e91c46d3 fix #209. don't ignore messages from nodes that only have partial nodeinfo 2021-02-08 11:22:15 +08:00
Vadim Furman
e2c8ca2fb2 Separate notification channel for messages 2021-02-07 17:38:54 -08:00
Vadim Furman
32924bb169 removed isVisiblewq 2021-02-06 22:13:42 -08:00
Vadim Furman
5ef6baef7a Merge 2021-02-06 22:08:49 -08:00
Kevin Hester
be738787f0
Merge pull request #234 from geeksville/dev
kevin misc fixes
2021-02-07 13:26:26 +08:00
Kevin Hester
5deddf6547 1.1.43 2021-02-07 13:04:24 +08:00
Kevin Hester
d3a1107cd3 don't briefly pop up fields with "null" as content 2021-02-07 11:27:37 +08:00
Kevin Hester
97b2b3c471 update protobufs 2021-02-07 10:55:07 +08:00
Kevin Hester
e1af70e58c Merge remote-tracking branch 'root/master' into dev 2021-02-06 14:22:12 +08:00
Kevin Hester
67b1448a9d
Merge pull request #233 from vfurman-gh/settings
Added ability to edit broadcast_position and ls_sleep settings
2021-02-06 14:21:32 +08:00
Vadim Furman
0f8357adb0 String resources 2021-02-05 22:05:24 -08:00
Vadim Furman
45dbcab850 Cleanup 2021-02-05 22:02:18 -08:00
Vadim Furman
26d7ff9578 Merge remote-tracking branch 'upstream/master' into settings 2021-02-05 21:30:40 -08:00
Vadim Furman
2d81acbee5 Added settings 2021-02-05 21:29:28 -08:00
Kevin Hester
16d492b3c3 work on new emulator imgs 2021-02-06 13:24:57 +08:00
Kevin Hester
4a5e07e52f fix #231 message history disappears thanks @dylanhoen
// Now that we use data packets for more things, we need to be choosier about what we keep.  Since (currently - in the future less so)
        // we only care about old text messages, we just store those...
2021-02-06 13:24:48 +08:00
Kevin Hester
9c15e22b8f don't let report bug get too wide (especially for Russian) 2021-02-06 11:49:23 +08:00
Kevin Hester
9cb9e93dd2 never use app specific icons when <= android 5.1.1 2021-02-06 09:29:11 +08:00
Kevin Hester
417a53e2a5
Merge pull request #232 from geeksville/dev
1.1.42
2021-02-05 09:33:28 +08:00
Kevin Hester
7d82e5282a Merge remote-tracking branch 'root/master' into dev 2021-02-05 09:32:41 +08:00
Kevin Hester
48d870a035 1.1.42 2021-02-05 09:31:58 +08:00
Kevin Hester
2c3b73ae88 fix(?) for cyanogen problem with custom statusbar icons 2021-02-05 09:31:25 +08:00
Kevin Hester
d11e7674f6 fix autobug: don't spam crashlytics when we expect position sending to fail 2021-02-04 23:39:44 +08:00
Kevin Hester
97d2ecbd0f fix autobug: don't let users try to update firmware over USB 2021-02-04 23:07:16 +08:00
Vadim Furman
0ea40967ac testing settings 2021-02-03 20:16:18 -08:00
Kevin Hester
65e553f3d1 update kotlin version 2021-02-04 11:24:55 +08:00
Kevin Hester
4d2ee50487
Merge pull request #229 from geeksville/dev
updates
2021-02-04 09:37:19 +08:00
Kevin Hester
3db5be760d 1.1.41 2021-02-04 09:25:06 +08:00
Kevin Hester
a209d3b585 update to latest kotlin 2021-02-04 09:20:19 +08:00
Kevin Hester
90b03f0955 Merge remote-tracking branch 'root/master' into dev 2021-02-04 08:23:59 +08:00
Kevin Hester
e919104bbb update jvm 2021-02-04 08:21:01 +08:00
Kevin Hester
55fd7c7330 make a guaranteed non vector version of icon for older androids 2021-02-04 08:20:43 +08:00
Kevin Hester
20c6504e93
Merge pull request #227 from vfurman-gh/fix1
Fix radio button enabled/disabled state
2021-02-04 08:19:13 +08:00
Vadim Furman
ac8fd1344d Updated comment 2021-02-02 19:01:11 -08:00
Vadim Furman
8d04a71fc4 Fix radio button enabled/disabled state to match device connected/not-connected state 2021-02-02 18:39:41 -08:00
Kevin Hester
4ea44095df 1.1.40 trying to squash native crash in mb via testlab. 2021-02-02 10:47:54 +08:00
Kevin Hester
599f92908c
Merge pull request #226 from geeksville/dev
1.1.39
2021-02-01 23:11:26 +08:00
Kevin Hester
a618aba7f0 1.1.39 2021-02-01 23:01:29 +08:00
Kevin Hester
4db838b5e3 when in sim, allow user to toggle between service on and off 2021-02-01 23:01:15 +08:00
Kevin Hester
e710b67131 Merge remote-tracking branch 'root/master' into dev 2021-02-01 22:54:18 +08:00
Kevin Hester
719bef7889 potential fix for the rare mapbox native crash (use onDestroyView) 2021-02-01 22:54:04 +08:00
Kevin Hester
57b04518de
Merge pull request #225 from vfurman-gh/fix
Moved try to catch all RemoteExceptions inside connection coroutine
2021-02-01 22:53:09 +08:00
Kevin Hester
3d97e65149
Merge branch 'master' into fix 2021-02-01 22:52:59 +08:00
Vadim Furman
fbf7ac4144 Moved try to catch all RemoteExceptions 2021-01-31 20:53:40 -08:00
Kevin Hester
59ae37e8b5
Merge pull request #224 from geeksville/dev
1.1.38
2021-02-01 12:14:30 +08:00
Kevin Hester
f44d9b16b1 1.1.38 2021-02-01 12:04:30 +08:00
Kevin Hester
7d846461e4 mock interface now pretty completely simulates a real device 2021-02-01 11:53:22 +08:00
Kevin Hester
a0160cadf9 WIP to improve simulator 2021-02-01 10:31:39 +08:00
Kevin Hester
23832d8285 update to latest launcher icon from @thepoweroftwo 2021-02-01 10:31:24 +08:00
Kevin Hester
98d1365324
Merge pull request #223 from vfurman-gh/master
Fix background color
2021-01-31 12:44:50 +08:00
Vadim Furman
6e5e98e077 Another semi-transparent color fix 2021-01-30 20:42:57 -08:00
Vadim Furman
bcb89102fb Merge remote-tracking branch 'upstream/master' 2021-01-30 19:41:48 -08:00
Vadim Furman
12381a177a Do not use transparent colors with rounded corners, it creates an ugly border on Androing > 9.0 2021-01-30 19:25:15 -08:00
Kevin Hester
8910392e30
Merge pull request #222 from geeksville/dev
1.1.37
2021-01-30 21:17:47 +08:00
Kevin Hester
aabbd12382 1.1.37 2021-01-30 21:16:33 +08:00
Kevin Hester
e8721cdd07 add a few constraints to fix new message layout 2021-01-30 21:14:55 +08:00
Kevin Hester
0693d7786d use new icons from @thepoweroftwo 2021-01-30 14:59:28 +08:00
Kevin Hester
6c3c20c154 switch app launcher to new icon 2021-01-30 14:44:55 +08:00
Kevin Hester
99cb8db970 update libs 2021-01-29 13:44:30 +08:00
Kevin Hester
0e6a82255e Merge remote-tracking branch 'root/master' into dev 2021-01-26 10:44:27 +08:00
Kevin Hester
ecd716d13b
Merge pull request #220 from vfurman-gh/master
Material design for Message UI
2021-01-26 10:39:52 +08:00
Vadim Furman
9a13f933b8 Removed observer for myNode, probably not a good idea 2021-01-25 17:50:16 -08:00
Vadim Furman
8ea58fd08c Material design for Message UI 2021-01-25 17:30:21 -08:00
Kevin Hester
1d41a48274 Conditionalize message receive broadcast, so apps can subscribe to JUST their messages 2021-01-11 17:18:04 +08:00
Kevin Hester
de80afe5d7
Merge pull request #217 from geeksville/dev
1.1.36 - autobug - cope with devices that have malformatted flash
2021-01-11 12:58:35 +08:00
Kevin Hester
ed1a0e7fe0 1.1.36 - autobug - cope with devices that have malformatted flash 2021-01-09 14:52:48 +08:00
Kevin Hester
e458c85cb8
Merge pull request #216 from geeksville/dev
Dev
2021-01-08 15:29:05 +08:00
Kevin Hester
349411646e
Merge branch 'master' into dev 2021-01-08 15:26:14 +08:00
Kevin Hester
3835a85b8e 1.1.35 fix nasty progress related bug in firmware update 2021-01-08 15:19:59 +08:00
Kevin Hester
a20fffcc2c don't send BLE commands to meshservice while updating 2021-01-08 15:19:39 +08:00
Kevin Hester
7ff7686ccb less logspam for expected msgs 2021-01-08 15:19:20 +08:00
Kevin Hester
633200ac44 if we lose device connection at a bad time, don't leave UI confused (autobug) 2021-01-08 14:51:19 +08:00
Kevin Hester
53b4f59e29 1.1.34 2021-01-08 14:45:51 +08:00
Kevin Hester
8b25936732 don't warn about good things ;-) 2021-01-06 11:34:26 +08:00
Kevin Hester
518e2438e8 fix autobug: don't fail updates (for now) if the spiffs has problems 2021-01-06 11:10:01 +08:00
Kevin Hester
2cda835f29
Merge pull request #214 from geeksville/dev
Dev
2021-01-05 16:00:34 +08:00
Kevin Hester
89fd3e16d8 1.1.33 fix #211 properly set GUI state when during a firmware update and the view gets rebuilt 2021-01-05 15:52:18 +08:00
Kevin Hester
1eb63e4f1c fix autobug warning
com.geeksville.mesh.service.MeshService.getConnectedRadio (MeshService.java:223)
com.geeksville.mesh.service.MeshService.sendToRadio (MeshService.java:230)
com.geeksville.mesh.service.MeshService.sendToRadio (MeshService.java:237)
com.geeksville.mesh.service.MeshService.sendPosition (MeshService.java:1255)
com.geeksville.mesh.service.MeshService.access$getNodeDBbyID$p (MeshService.java:47)
com.geeksville.mesh.service.MeshService$sendPositionScoped$1.invokeSuspend (MeshService.java:1265)
kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (BaseContinuationImpl.java:33)
kotlinx.coroutines.DispatchedTask.run (DispatchedTask.java:56)
kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.java:571)
kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.java:738)
kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.java:678)
kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.java:665)
2021-01-05 14:01:45 +08:00
Kevin Hester
6fbe63c0b7 use upper case for base of URL in QR code to simplify the image 2021-01-05 13:29:04 +08:00
Kevin Hester
6c85a4f12b fix #213 also use correct suffix for the new channel system 2021-01-05 12:35:41 +08:00
Kevin Hester
43999e3d72 in support of #212 log messages before analytics enabled 2021-01-05 12:01:42 +08:00
Kevin Hester
2dd2a9ddbb use recommended build tools version 2021-01-03 10:29:40 +08:00
Kevin Hester
3d18e5d597 update libs and protos 2021-01-03 10:22:41 +08:00
Kevin Hester
026f80c5e1
Merge pull request #208 from geeksville/dev
Dev
2020-12-16 12:30:37 +08:00
Kevin Hester
e91ec3ddfc Merge remote-tracking branch 'root/master' into dev 2020-12-16 12:30:07 +08:00
Kevin Hester
1cfe180402 debug message fix 2020-12-16 12:24:37 +08:00
Kevin Hester
1a8d1c6725 1.1.22 quick fix #207 - now that data is more uniform, only consider text packets 2020-12-16 12:24:26 +08:00
Kevin Hester
0f63835a7f get ready for the new short channelsettings 2020-12-14 21:30:00 +08:00
Kevin Hester
f754a19c95 bug #206 - also add reportException to make non fatal and report bug
via analytics (in case my theory is wrong)
2020-12-12 11:09:17 +08:00
Kevin Hester
d6ef473cc2 1.1.21 hmm it seems that mapbox changed how they distribute their jars in March
so we haven't been getting new versions of their code since then.
Change to use their new (ugly) signin based system.  I bet this breaks
CI but for now I just want to make sure I have fixes they mention in their
github issues.

Upgrade from 9.2.1 to 9.5.0

In particular issues with Samsung devices - possibly related to
https://github.com/meshtastic/Meshtastic-Android/issues/206
2020-12-11 20:00:45 +08:00
Kevin Hester
2fa281c81d
Merge pull request #203 from geeksville/dev
Dev
2020-12-10 14:44:42 +08:00
Kevin Hester
c4439eb34c WIP use new position api 2020-12-10 09:23:02 +08:00
Kevin Hester
2e30dbcdd0 switching away from kotlin-android-extensions 2020-12-07 20:44:17 +08:00
Kevin Hester
cc2b99fdfc WIP for new protobufs 2020-12-07 19:50:06 +08:00
Kevin Hester
663ac774de update libs 2020-11-28 08:24:32 +08:00
Kevin Hester
5007019a2e fix #204 - throw error if sent message is too long 2020-11-21 08:41:26 +08:00
Kevin Hester
6e2cb723ea 1.1.9 spiffs firmware update seems to work 2020-11-20 07:51:25 +08:00
Kevin Hester
88b1ad5443 remove support for 0.8 version URLs (found while investigating #188) 2020-11-17 19:54:48 +08:00
Kevin Hester
31e0136b2a support spiffs updates over OTA (not yet tested)
for https://github.com/meshtastic/Meshtastic-device/issues/496
2020-11-16 15:57:40 +08:00
Kevin Hester
b854c57aa4 fix build warnings 2020-11-16 15:55:07 +08:00
Kevin Hester
31ec028f2c
Merge pull request #202 from geeksville/dev
1.1.8 generate an APK for github fix #200 (sorry for laziness ;-))
2020-11-11 12:57:04 +08:00
Kevin Hester
3afbc76c63 1.1.8 generate an APK for github fix #200 (sorry for laziness ;-)) 2020-11-11 12:50:27 +08:00
Kevin Hester
f02bd519a9
Merge pull request #199 from geeksville/dev
Dev
2020-10-29 04:55:04 -07:00
Kevin Hester
46f283c630 1.1.7 2020-10-29 19:50:57 +08:00
Kevin Hester
52a2f40b1b Preserve region info across software updates 2020-10-29 13:14:10 +08:00
Kevin Hester
28042cb6e9 Merge remote-tracking branch 'root/master' into dev 2020-10-29 11:35:57 +08:00
Kevin Hester
cf85fae2a2
Merge pull request #196 from geeksville/dev
a collection of minor changes I'll eventually merge
2020-10-21 05:37:37 -07:00
Kevin Hester
b90792f4a1 fix lint warning 2020-10-21 20:33:49 +08:00
Kevin Hester
eca859039a 1.1.6 2020-10-21 20:23:13 +08:00
Kevin Hester
2b3a987f31 turn off firmware update test code 2020-10-21 17:53:37 +08:00
Kevin Hester
f8e6f105e2 fix #197 - let multiple device updates work 2020-10-21 17:52:51 +08:00
Kevin Hester
1bebdf8689 move to new esp32 firmware build tree (regionless/universal ROMs) 2020-10-21 17:52:02 +08:00
Kevin Hester
f61cd45847 update to new gradle/android studio 4.1 2020-10-21 17:50:54 +08:00
Kevin Hester
33da84fd22 Merge remote-tracking branch 'root/master' into dev 2020-10-15 08:05:13 +08:00
Kevin Hester
99c236c4be update to current protobufs 2020-10-15 08:05:00 +08:00
Lgx
312cf92b04
Merge pull request #195 from meshtastic/lgoix-patch-workflow
Update android.yml
2020-10-13 10:28:51 -04:00
Lgx
9576ed2470
Update android.yml
May fix the issue with pull-request
2020-10-13 10:22:36 -04:00
Kevin Hester
b40c008555
Merge pull request #193 from geeksville/dev
1.1.5
2020-10-12 17:19:31 -07:00
Kevin Hester
b677abf102 1.1.5 2020-10-13 08:09:28 +08:00
Kevin Hester
7d0a36d015
Merge pull request #182 from KenVanHoeylandt/refactor_mesh_service
Refactored MeshService
2020-10-09 02:24:25 -07:00
Kevin Hester
ab06798430
Merge branch 'master' into refactor_mesh_service 2020-10-08 17:19:29 -07:00
Kevin Hester
d032746a63
Merge pull request #180 from lgoix/message-db2
Fix layout of debug messages
2020-10-05 16:14:17 -07:00
Ludovic Goix
aea8bdec11 Merge remote-tracking branch 'lgoix/message-db2' into message-db2 2020-10-01 17:00:50 -04:00
Ludovic Goix
336d283c82 fix packet display in debug panel
make the test work with any non US default Locale


remove java-lite usage


fix a test
2020-10-01 17:00:33 -04:00
Ludovic Goix
c369285f6f fix a test 2020-10-01 16:51:12 -04:00
Ludovic Goix
9da37521d5 remove java-lite usage 2020-10-01 16:51:12 -04:00
Ludovic Goix
7c829998e9 make the test work with any non US default Locale 2020-10-01 16:51:12 -04:00
Ludovic Goix
57e30e5757 simplified packet layout and try to fix the textview height 2020-10-01 16:51:12 -04:00
Ken Van Hoeylandt
3610f0b53e refactored MeshService
- moved MeshService start-related code to `MeshServiceStarter`
- moved `LocationCallback` to `MeshServiceLocationCallback`
  - coroutine scope is now handled in `MeshService` positio ncallback.
  - refactored `onLocationResult()` to be easier to read
- created `MeshServiceNotifications` for creating and updating of notifications
- moved `SavedSettings` to `MeshServiceSettingsData`
2020-10-01 22:20:19 +02:00
Kevin Hester
f9e39b66a4
Merge pull request #181 from geeksville/dev
Dev
2020-09-29 16:14:04 -07:00
geeksville
25ccba9ab7 fix an autobug
https://console.firebase.google.com/project/meshutil/crashlytics/app/android:com.geeksville.mesh/issues/5777c66e7f3bb28bd2257c5685d9ec68?time=last-seven-days&sessionEventKey=5F7255AB03A80001161E65680B592F8D_1456099387864713143
2020-09-29 16:13:12 -07:00
geeksville
819185a852 Merge remote-tracking branch 'root/master' into dev 2020-09-29 16:03:58 -07:00
geeksville
bb93e8b4d2 update protobufs 2020-09-27 14:26:20 -07:00
geeksville
14548d6119 better naming for versions 2020-09-27 14:26:11 -07:00
Kevin Hester
705d1f2587
Merge pull request #177 from geeksville/master
1.1.2 and fix CI build
2020-09-27 14:20:59 -07:00
geeksville
02c36ffdf8 1.1.2 2020-09-27 14:09:14 -07:00
geeksville
7c93d9b540 Fix unit test for the empty name case 2020-09-27 14:05:10 -07:00
Kevin Hester
e940091911
Merge pull request #176 from lgoix/message-db
add missing string & styles (fix  #175 )
2020-09-27 13:58:01 -07:00
Lgx
16f706ac02
Merge branch 'master' into message-db 2020-09-27 16:36:58 -04:00
Ludovic Goix
bc472da856 add missing string & styles 2020-09-27 16:31:45 -04:00
Kevin Hester
b62a5a7946
Merge pull request #170 from lgoix/message-db
Added a debug panel
2020-09-27 13:05:44 -07:00
Kevin Hester
36e96e1811
Merge branch 'master' into message-db 2020-09-27 13:05:33 -07:00
Kevin Hester
da212cdb1c
Merge pull request #171 from lgoix/chat-date-169
Add date to message  #169
2020-09-27 13:05:21 -07:00
Kevin Hester
33f2a126ea
Merge branch 'master' into chat-date-169 2020-09-27 13:05:13 -07:00
Kevin Hester
7b9cef512c
Merge pull request #172 from paulmandal/task/run-safebluetooth-handler-on-main-thread
Change SafeBluetooth's handler to run on the main thread
2020-09-27 13:04:39 -07:00
Kevin Hester
06801d79b7
Merge branch 'master' into task/run-safebluetooth-handler-on-main-thread 2020-09-27 13:04:22 -07:00
Kevin Hester
e0abf9eb85
Merge pull request #173 from paulmandal/task/fix-broadcast-intent-name
Fix the broadcast intent action package in IMeshService.aidl's comments
2020-09-27 12:58:06 -07:00
Kevin Hester
56cbd1d267
Merge branch 'master' into task/fix-broadcast-intent-name 2020-09-27 12:57:56 -07:00
Kevin Hester
fe34cb11dd
Merge pull request #174 from timgunter/better_shortnames
Always keep first character of long name when making short name
2020-09-27 12:56:01 -07:00
Gunter Tim
bd18a3aadd Always keep first character of long name when making short name from one word long names 2020-09-26 22:21:39 -07:00
Ludovic Goix
6ec16073c1 Added a debug panel
final
2020-09-26 21:56:52 -04:00
Paul Mandal
1357be5499 Change SafeBluetooth's handler to run on the main thread 2020-09-25 19:44:04 -06:00
Paul Mandal
40762c4e22 Fix the broadcast intent action package in IMeshService.aidl's comments 2020-09-25 19:43:20 -06:00
Ludovic Goix
c15e498b08 Add date to message #169 2020-09-23 23:13:35 -04:00
Kevin Hester
2dab8ccf19
Merge pull request #168 from geeksville/dev
Dev
2020-09-22 13:04:24 -07:00
geeksville
82dce7f564 1.1.0 2020-09-22 12:57:29 -07:00
geeksville
83ea33d44b fix a rare (probably harmless) autobug: "meshService was supposed to be null" 2020-09-22 12:52:15 -07:00
geeksville
b2970a7657 include korean in release build 2020-09-21 14:41:12 -07:00
geeksville
68a529e284 Merge remote-tracking branch 'root/master' into dev 2020-09-21 14:39:22 -07:00
Kevin Hester
f7881e5740
Merge pull request #167 from comgram/kr-translation
Hangul (Korean) Translation
2020-09-21 14:39:06 -07:00
comgram
6f78dd7d94 Hangul (Korean) Translation 2020-09-21 16:30:53 +09:00
geeksville
4daca12061 update libs 2020-09-20 20:53:42 -07:00
Kevin Hester
a179c46b50
Merge pull request #164 from KenVanHoeylandt/bluetooth-state-receiver-readability
Improved readability on BluetoothStateReceiver
2020-09-19 07:51:50 -07:00
Kevin Hester
c1a62097f4
Merge branch 'master' into bluetooth-state-receiver-readability 2020-09-19 07:42:50 -07:00
Kevin Hester
80315581c5
Merge pull request #165 from geeksville/dev
Dev
2020-09-17 12:04:27 -07:00
geeksville
c1cbf1e916 add trim to #162 so " " behavior stays same. 2020-09-17 12:03:27 -07:00
geeksville
8a1385710d add unit tests for #162 2020-09-17 12:03:02 -07:00
geeksville
8e4e2f83ec errrmsg 2020-09-17 12:00:45 -07:00
geeksville
bedfe5e3c0 Merge remote-tracking branch 'root/master' into dev 2020-09-17 11:53:10 -07:00
Kevin Hester
5fff284615
Merge pull request #162 from timgunter/better_shortnames
Make 3 character short names from long name when long name is only one word
2020-09-17 11:52:48 -07:00
Kevin Hester
14c09c5d1b
Merge pull request #163 from KenVanHoeylandt/cleanup-service-calls
Simplified calls to system services
2020-09-17 11:48:11 -07:00
Ken Van Hoeylandt
8219ef42ed improved readability on BluetoothStateReceiver
and renamed `intent` to `intentFilter` to properly reflect type
2020-09-17 20:47:54 +02:00
Ken Van Hoeylandt
8de116bb01 safeguard for UsbService nullability
because of the Java interface implying it
2020-09-17 19:55:36 +02:00
Ken Van Hoeylandt
f97bc21719 simplified calls to system services
and fixed some code that assumed BluetoothManager to never be NULL
2020-09-17 19:49:50 +02:00
Gunter Tim
f413bea618 Make 3 character short names from long name when long name is only one word 2020-09-17 00:37:51 -07:00
geeksville
ae687f5cfe don't send autobug if the user has (foolishly) disabled location access 2020-09-15 10:04:35 -07:00
geeksville
c3b3db97c8 Thanks to @Bussemann for Norsk! and thanks to @Retrodime for Romanian! 2020-09-15 09:45:57 -07:00
Kevin Hester
b98a8ea34b
Merge pull request #160 from geeksville/dev
1.0.0
2020-09-14 09:11:48 -07:00
geeksville
90f43953b9 1.0.0 2020-09-14 09:11:17 -07:00
Kevin Hester
b303603406
Merge pull request #158 from smack815/patch-1
Update strings.xml
2020-09-13 18:09:46 -07:00
Kevin Hester
e3dc0e452d
Merge pull request #157 from geeksville/dev
0.9.90 fix ble scanning on samsung?
2020-09-13 18:08:17 -07:00
smack815
7208673aa8
Update strings.xml
First update to the Spanish translation to fix some errors.  I will send the second half translations soon.
2020-09-13 21:44:29 -03:00
geeksville
6a1d778552 0.9.90 fix ble scanning on samsung? 2020-09-13 13:22:40 -07:00
Kevin Hester
e8fd26e648
Merge pull request #156 from geeksville/dev
0.9.81 fix a ANR that could occur (I think)
2020-09-11 16:22:50 -07:00
geeksville
404efa926c 0.9.81 fix a ANR that could occur (I think) 2020-09-11 16:19:23 -07:00
Kevin Hester
770d2b8d75
Merge pull request #155 from geeksville/dev
Dev
2020-09-08 12:37:53 -07:00
geeksville
a60d94d5d2 0.9.80 2020-09-08 12:37:25 -07:00
geeksville
e07847af87 fix #141 don't let extra # into channel name. thx @moxy-bc and @dzaczek 2020-09-08 12:29:28 -07:00
geeksville
01c0554907 lib updates 2020-09-08 12:05:26 -07:00
geeksville
2fbd0a7a5e show url prefix for debugging 2020-09-08 12:05:19 -07:00
geeksville
9cea9ce457 fix #123 stop service when disconnected 2020-09-08 12:05:03 -07:00
Lgx
76bbc2e4eb
Merge pull request #152 from lgoix/channeloption
Show network range setting when locked #138
2020-09-04 13:16:45 -04:00
Ludovic Goix
0768ba086b Show network range setting when locked #138 2020-09-04 07:59:07 -04:00
lgoix
b46f6e1a7b
Merge pull request #151 from lgoix/master
Connect to a device without updating owner #119
2020-09-03 08:03:31 -04:00
Ludovic Goix
c87d0adc61 Connect to a device without updating any change #119 2020-09-02 20:16:41 -04:00
Kevin Hester
63e2532569
Merge pull request #149 from geeksville/dev
Dev
2020-08-30 13:39:51 -07:00
geeksville
23706431fb remove hint text from channel dropdown - causes draw artifacts 2020-08-30 12:51:34 -07:00
geeksville
502ad2c491 Fix #143 tell user we need high-accuracy access (Samsung apparently lets them choose) 2020-08-30 12:44:05 -07:00
Kevin Hester
5d6c86f943
Merge pull request #148 from geeksville/dev
misc bug fixing
2020-08-30 12:27:23 -07:00
geeksville
9ccfc40e1e 0.9.06 2020-08-30 12:27:10 -07:00
geeksville
ba8961ef6c oops remove some testing code 2020-08-30 12:09:51 -07:00
geeksville
a5678392f5 fix autobug - if gatt is closed while we are shutting down it is not an error 2020-08-30 12:01:38 -07:00
geeksville
bd29a93a71 fix autobug during software update, treat sync timeouts just like async timeouts 2020-08-30 11:52:46 -07:00
geeksville
8f3745c71b don't send autobugs if the user is a dummy that refuses location access 2020-08-29 19:22:12 -07:00
geeksville
d2273b8d5b fix an autobug. Someone with a galaxy tab is trying to open the old
version of the URL.

Caused by java.net.MalformedURLException: Not a meshtastic URL
       at com.geeksville.mesh.model.Channel$Companion.urlToSettings(Channel.java:43)
       at com.geeksville.mesh.model.Channel$Companion.access$urlToSettings(Channel.java:19)
       at com.geeksville.mesh.model.Channel.<init>(Channel.java:50)
       at com.geeksville.mesh.MainActivity.perhapsChangeChannel(MainActivity.java:631)
       at com.geeksville.mesh.MainActivity.handleIntent(MainActivity.java:467)
       at com.geeksville.mesh.MainActivity.onNewIntent(MainActivity.java:447)
       at android.app.Activity.performNewIntent(Activity.java:7971)
       at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1407)
       at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1420)
       at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:3838)
       at android.app.ActivityThread.handleNewIntent(ActivityThread.java:3850)
       at android.app.servertransaction.NewIntentItem.execute(NewIntentItem.java:53)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2261)
       at android.os.Handler.dispatchMessage(Handler.java:107)
       at android.os.Looper.loop(Looper.java:237)
       at android.app.ActivityThread.main(ActivityThread.java:8107)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
2020-08-29 19:07:29 -07:00
geeksville
a985f1f2c5 Fix #140 - make QR code larger (by making layout agnostic to display size) 2020-08-29 17:03:33 -07:00
geeksville
4af74e2006 update libs 2020-08-27 15:12:31 -07:00
geeksville
0cbcea3518 fix ci build 2020-08-26 13:46:10 -07:00
Kevin Hester
15a43c987f
Merge pull request #139 from geeksville/dev
Dev
2020-08-26 13:40:12 -07:00
geeksville
ceaa7f0ac6 0.9.05 2020-08-26 13:39:51 -07:00
geeksville
46a29f95c2 Merge remote-tracking branch 'root/master' into dev 2020-08-24 13:29:02 -07:00
geeksville
109e6e28fb update libs 2020-08-24 13:28:59 -07:00
Kevin Hester
db24204b9b
Merge pull request #135 from rubensudos/master
Add Portuguese translation
2020-08-24 13:26:42 -07:00
Kevin Hester
5cfaca2428
Merge pull request #136 from geeksville/dev
Dev
2020-08-22 20:41:28 -07:00
geeksville
dd226d394e Merge remote-tracking branch 'root/master' into dev 2020-08-22 20:41:08 -07:00
geeksville
38a3e37ad0 Fix #122 - let users copy text messages 2020-08-22 19:08:40 -07:00
RR
fd7f16f3d9 Add Portuguese translation 2020-08-22 19:03:16 +01:00
Kevin Hester
231ea7f4bb
Merge pull request #134 from geeksville/dev
Dev
2020-08-20 19:30:09 -07:00
geeksville
0c30c4243d 0.9.04 add Haitian translation from @scottbridges 2020-08-20 19:20:24 -07:00
geeksville
a3aaa869e7 update libs 2020-08-18 11:34:25 -07:00
geeksville
9a73da562c Update to kotlin 1.4 2020-08-18 11:25:16 -07:00
geeksville
4e6c0140dd 0.9.03 2020-08-15 12:24:17 -07:00
Kevin Hester
5979affae1
Merge pull request #133 from geeksville/dev
Dev
2020-08-15 12:09:36 -07:00
geeksville
ad6eb621f6 fix autobug: when USB devices are unpluged wait for them to cleanly shutdown 2020-08-15 12:06:21 -07:00
geeksville
05056fe0fc don't spam autobugs if someone has malformated version strings in their firmware 2020-08-15 11:25:36 -07:00
geeksville
92621e07aa don't spam autobugs if we get an exception reading fromnum when the device is leaving 2020-08-15 11:19:23 -07:00
geeksville
8233f063ed fix hash 2020-08-13 15:24:36 -07:00
Kevin Hester
8ac138c17d
Merge pull request #130 from geeksville/dev
Dev
2020-08-12 13:03:19 -07:00
geeksville
df046a6d1f 0.9.02 2020-08-12 12:49:13 -07:00
geeksville
bc5d6cf808 fix #86 the first message sent is duplicated bug 2020-08-12 12:48:43 -07:00
geeksville
93d4cd99fd show channel suffix per https://github.com/meshtastic/Meshtastic-device/issues/269 2020-08-12 12:33:04 -07:00
Kevin Hester
dbe1d8065a
Merge pull request #129 from geeksville/dev
Dev
2020-08-11 19:33:49 -07:00
geeksville
72128d1e39 Merge remote-tracking branch 'root/master' into dev 2020-08-11 19:33:22 -07:00
Kevin Hester
2e0aebde8c
Merge pull request #128 from gkelly/fix-readme
Minor formatting fixes for README.md
2020-08-11 19:33:11 -07:00
geeksville
617655b8f7 improve API docs 2020-08-11 19:31:57 -07:00
Kevin Hester
488c615a78
Merge pull request #127 from gkelly/channel-fragment
Put channel options into URL fragments
2020-08-11 11:28:58 -07:00
Garret Kelly
68af030832 Minor formatting fixes for README.md 2020-08-11 09:51:45 -04:00
lgoix
0c375ba4b3
Merge pull request #125 from gkelly/typo
Fix minor typo around default channel key
2020-08-10 22:21:22 -04:00
Garret Kelly
61c8d2d266 Put channel options into URL fragments
Put the channel options into the URL fragment instead of the URL path.
This ensures that the channel options (including the channel key) is
never accidentally leaked to a remote party. This URL format appears to
be backwards compatible, URLs generated in the new form are properly
parsed by the old version. URLs generated by the old version are _not_
parsed by the new version.

Closes #126.
2020-08-10 22:19:51 -04:00
Garret Kelly
5a03e0c78b Fix minor typo around default channel key 2020-08-10 21:20:55 -04:00
Kevin Hester
888139d589
Merge pull request #112 from lgoix/timefix
Fix time issue and Toast not showing when notification are disabled
2020-07-31 09:09:09 -07:00
geeksville
f3be13f0fb don't leak macaddrs into logs 2020-07-29 16:16:29 -07:00
geeksville
6306d19f6d low memory samsung phones that have lots of boot receiver can run real slow
Thus exposing the google startup bug: https://issuetracker.google.com/issues/76112072#comment56

https://console.firebase.google.com/u/0/project/meshutil/crashlytics/app/android:com.geeksville.mesh/issues/78d68909d65bf62fa9d4d3b5b42cddc6?time=last-seven-days&sessionId=5F203DB903DC000146028E3DAF71631D_DNE_0_v2
2020-07-29 15:48:21 -07:00
Kevin Hester
44816ac774
Merge pull request #116 from geeksville/dev
0.9.01
2020-07-26 08:31:23 -07:00
geeksville
e7dd28ab0f 0.9.01 2020-07-26 08:30:25 -07:00
Kevin Hester
ee33b9f9b1
Merge pull request #114 from geeksville/dev
minor updates and an autobug
2020-07-25 20:44:57 -07:00
geeksville
384bb3759e fix autobug - location callback might come after activty is dead
https://console.firebase.google.com/u/0/project/meshutil/crashlytics/app/android:com.geeksville.mesh/issues/714e0b9e232289ddc9162fd3aebc1510?time=last-seven-days&sessionId=5F1C562E03E2000142C73D26354B80BF_DNE_0_v2
2020-07-25 20:40:00 -07:00
geeksville
3bcbff2f0f update serial lib 2020-07-24 21:00:58 -07:00
geeksville
36e7c64fff update libs 2020-07-24 20:51:59 -07:00
geeksville
54d83dd689 add amazon appstore link 2020-07-24 15:07:51 -07:00
geeksville
d3c04aa6ac Merge remote-tracking branch 'root/master' into dev 2020-07-24 13:00:58 -07:00
geeksville
6265c7c322 update libs 2020-07-24 13:00:38 -07:00
geeksville
ae117fcd9e add debug output 2020-07-24 13:00:27 -07:00
Ludovic Goix
241f4d978a Try to fix Toast not showing when notification are disabled 2020-07-23 23:12:46 -04:00
Ludovic Goix
c56f14a259 Fix last time issue with nodes 2020-07-23 23:12:01 -04:00
Kevin Hester
e6e80dec5f
Merge pull request #110 from geeksville/dev
Dev
2020-07-21 10:43:33 -07:00
geeksville
a0dc45ea6f Merge remote-tracking branch 'root/master' into dev 2020-07-21 10:42:38 -07:00
Kevin Hester
4e3b28cdd6
Merge pull request #108 from eriktheV-king/patch-1
Update strings.xml
2020-07-21 10:42:16 -07:00
Kevin Hester
0ce961a26d
Merge pull request #109 from eriktheV-king/patch-2
Update strings.xml
2020-07-21 10:41:45 -07:00
geeksville
a72824b501 Add Albanian translation from @TitanTronics 2020-07-21 10:40:15 -07:00
geeksville
320f691753 Add Greek translation by @magdalinos 2020-07-21 10:34:08 -07:00
eriktheV-king
77c72f6765
Update strings.xml
Just modified french language ressource files with some more added strings !
Left 5 untranslatables at EOF.
Trying to send these in as a pull request (replacing the existing files)
eriktheV-king github username
2020-07-21 15:20:22 +02:00
eriktheV-king
8a15b80de8
Update strings.xml
Just modified language ressource files with some more added strings !
According to master, 67 translatable strings. Left 5 untranslatables at EOF.
Trying to send these in as a pull request (replacing the existing files)
eriktheV-king github username
2020-07-21 14:54:24 +02:00
Kevin Hester
89097f9b21
Merge pull request #107 from geeksville/dev
Dev
2020-07-20 19:41:22 -07:00
geeksville
709edb0b12 update libs to fix hopefully an autobug 2020-07-20 19:29:53 -07:00
geeksville
33464f17b8 update mapbox 2020-07-20 12:15:18 -07:00
geeksville
be6372a0b2 0.8.03 2020-07-20 12:08:46 -07:00
geeksville
750855c8d4 begin gradle support for auto play upload 2020-07-20 12:07:55 -07:00
geeksville
753393541a 0.8.02 2020-07-18 14:32:06 -07:00
Kevin Hester
fed2615d96
Merge pull request #105 from lgoix/vmodel
Fix bad connection status #84
2020-07-18 14:30:04 -07:00
Kevin Hester
8079bf5a16
Merge pull request #106 from geeksville/dev
Dev
2020-07-18 14:28:16 -07:00
geeksville
f6b20ee3ea 0.8.1 2020-07-18 14:24:14 -07:00
geeksville
6b0e19ea9a remove comment 2020-07-18 14:24:06 -07:00
geeksville
7b46046af6 cancel all jobs when we shutdown interface (an autobug) 2020-07-18 14:23:58 -07:00
geeksville
25ceaa6364 Fix autobugs related to Samsung BLE 2020-07-18 13:18:38 -07:00
geeksville
7a47240e47 fix autobug: someone is testing crashing the app with invalid URLS ;-) 2020-07-18 13:17:30 -07:00
geeksville
8d6af24488 amazon fire requires a longer delay for the nasty BLE force-refresh hack 2020-07-17 14:12:46 -07:00
Ludovic Goix
4137f5e787 Fix bad connection status #84 2020-07-17 17:06:29 -04:00
Kevin Hester
c10beb816a
Merge pull request #102 from lgoix/battery-plugged
Display power plug icon when no battery #99
2020-07-17 12:01:26 -07:00
Kevin Hester
f9769e3959
Merge pull request #103 from zjwhitehead/report-bg
Set crash report text background
2020-07-17 12:00:29 -07:00
Kevin Hester
43e3a6c157
Merge pull request #104 from geeksville/dev
fixes for nrf52 and remove google play dependency
2020-07-17 11:56:45 -07:00
geeksville
203dc456ab NRF52 based devices don't need our forceRefresh BLE hack 2020-07-17 11:55:36 -07:00
geeksville
b2b20cb8cf 0.7.95 just to make amazon happy 2020-07-16 18:25:31 -07:00
Zach Whitehead
1f6a3370d6 Set crash report text background 2020-07-16 19:40:11 -04:00
Ludovic Goix
4a6d88039b Display power plug icon when no battery #99 2020-07-16 08:50:47 -04:00
geeksville
02cda26f12 fix localization warnings 2020-07-15 19:53:45 -07:00
geeksville
62be0ed4eb 0.7.94 2020-07-15 17:30:31 -07:00
geeksville
87c272f784 Don't rely on android filtering for BLE scan, because NRF52 2020-07-15 17:19:36 -07:00
geeksville
a527852f55 make HW GPS optional on phone 2020-07-15 17:09:45 -07:00
Kevin Hester
75be43b3c5
Merge pull request #100 from geeksville/dev
Dev
2020-07-15 16:05:05 -07:00
geeksville
4d9fb32fa1 Mangosauce fixes for Chinese! 2020-07-15 15:59:11 -07:00
geeksville
4c51e9c8e9 Make google-play optional 2020-07-15 15:58:53 -07:00
geeksville
ed12daae9a Chinese updates from @mango-sauce! 2020-07-15 10:46:13 -07:00
geeksville
28a18ca314 Let user rate the app through google play or through amazon 2020-07-14 22:21:54 -07:00
geeksville
0a38b70682 Merge remote-tracking branch 'root/master' into dev 2020-07-14 22:05:46 -07:00
geeksville
0247a21120 add icon for the amazon store 2020-07-14 22:05:38 -07:00
Kevin Hester
8b08342400
Merge pull request #97 from lgoix/displayLastTime
Display last time we receive a transmission from a node #65
2020-07-14 22:05:04 -07:00
Kevin Hester
06d39363a0
Merge pull request #98 from lgoix/24hFormat
Use current phone local to format time #74
2020-07-14 22:04:39 -07:00
Ludovic Goix
20b06997f0 Use current phone local to format time #74 2020-07-14 00:06:32 -04:00
Ludovic Goix
8f253bdca1 Display last time we receive a transmission from a node #65 2020-07-13 23:49:07 -04:00
Kevin Hester
2d706f5a4c
Merge pull request #95 from geeksville/dev
0.7.92
2020-07-08 08:30:52 -07:00
geeksville
31132471ad 0.7.93 2020-07-08 08:30:03 -07:00
geeksville
49752d0550 if device goes away at just the right time, user won't be able to set channel 2020-07-08 08:29:53 -07:00
geeksville
931cfb52d3 don't spam crashlytics just because the radio was sleeping 2020-07-08 07:57:22 -07:00
geeksville
90d2a9cde4 make autobug in appRate non fatal 2020-07-08 07:50:24 -07:00
geeksville
73a5789bd0 0.7.92 2020-07-07 15:33:12 -07:00
Kevin Hester
36e2da4651
Merge pull request #94 from geeksville/dev
misc atomic commits - see commit for details
2020-07-07 15:01:25 -07:00
geeksville
3e7457245a fix #92 - make all node movements instantly show on map 2020-07-07 14:55:01 -07:00
geeksville
c217c16d24 less crashlytics spam 2020-07-07 14:21:41 -07:00
geeksville
55d6c9448b if app gets upgraded, restart the service after the upgrade 2020-07-07 14:21:26 -07:00
geeksville
39a5275b1e increase delay for autobug on android 6.0.1 samsung devices 2020-07-07 13:22:09 -07:00
Kevin Hester
0b39644584
Merge pull request #93 from geeksville/dev
fix a couple of subtle autobugs (see commits for details) and we were leaking macaddrs (PII) into logs
2020-07-07 10:52:34 -07:00
geeksville
9e91421341 0.7.91 and update libs 2020-07-07 10:51:57 -07:00
geeksville
979c7f407f fix a couple of places where we were leaking macaddrs into logs (kinda PII) 2020-07-07 10:44:06 -07:00
geeksville
777e0f6775 fix autobug on a "redmi 5 plus" phone. This phone repeatedly (and rapidly) tells the phone the BLE device is bonded...
which was cause the RadioInterfaceService to screate two instances of of the BluetoothInterface (ouch).  So now rather than checking for isConnected when
changing device addresses, we check for 'isStarted' which is a new state we've added.  Interfaces progress from !started to started to started+connected.  When an interface disconnects it goes !connected.  When the user stops an interface it goes !started.

annotated crashlytics log follows

419 | Mon Jul 06 2020 18:21:34 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: BTScan component active
420 | Mon Jul 06 2020 18:21:34 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: starting scan
421 | Mon Jul 06 2020 18:21:35 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: onScanResult DeviceListEntry(name=...a14, addr=...:16)
422 | Mon Jul 06 2020 18:21:35 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: onScanResult DeviceListEntry(name=...ad8, addr=...:DA)
423 | Mon Jul 06 2020 18:21:35 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.SettingsFragment: We have location access
424 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.SLogging: Received bond state changed 12
425 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.SLogging: Bonding completed, state=12
426 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: Changing device to ...:16 *** bond complete occurred so we started service and tried to connect
427 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Passing through device change to radio service: xCC:50:E3:B6:0A:16
428 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.analytics.GoogleAnalytics: Analytics: track mesh_bond
429 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: stopping interface com.geeksville.mesh.service.BluetoothInterface@b3a5506
430 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Closing BluetoothInterface
431 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Closing our GATT connection
432 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: new bluetooth connection state 0, status 0
433 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Got disconnect because we are shutting down, closing gatt
434 | Mon Jul 06 2020 18:21:36 GMT-0700 (Pacific Daylight Time) | mesh_bond
435 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Failing 0 works, because Connection closing
436 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: Broadcasting connection=false
437 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: Setting bonded device to xCC:50:E3:B6:0A:16
438 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: Starting radio xCC:50:E3:B6:0A:16
439 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Creating radio interface service.  device=...:16
440 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: connect
441 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: connect
442 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Discarding NodeDB
443 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService$Companion: Trying to start service
444 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: new bluetooth connection state 2, status 0
445 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.SLogging: Received bond state changed 12 ** BONDED
446 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: work connect is completed, resuming status=0, res=kotlin.Unit
447 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Connected to radio! *** in connect callback
448 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.SLogging: Bonding completed, state=12
449 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: Changing device to ...:16 *** bond complete occurred so we started service and tried to connect SECOND TIME
450 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Passing through device change to radio service: xCC:50:E3:B6:0A:16
451 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.analytics.GoogleAnalytics: Analytics: track mesh_bond
452 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: stopping interface com.geeksville.mesh.service.BluetoothInterface@fe0fede
453 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Closing BluetoothInterface
454 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Closing our GATT connection
455 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: new bluetooth connection state 0, status 0
456 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Got disconnect because we are shutting down, closing gatt
457 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | mesh_bond
458 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Failing 0 works, because Connection closing
459 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: Setting bonded device to xCC:50:E3:B6:0A:16
460 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.RadioInterfaceService: Starting radio xCC:50:E3:B6:0A:16
461 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Creating radio interface service.  device=...:16
462 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: connect
463 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: connect
464 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Discarding NodeDB
465 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService$Companion: Trying to start service
466 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: new bluetooth connection state 2, status 0
467 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: work connect is completed, resuming status=0, res=kotlin.Unit
468 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Connected to radio!
469 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Received broadcast com.geeksville.mesh.CONNECT_CHANGED
470 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: onConnectionChanged=DISCONNECTED
471 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.analytics.GoogleAnalytics: Analytics: track mesh_disconnect
472 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.analytics.GoogleAnalytics: Analytics: track num_nodes
473 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Requesting foreground service=true  *** TWO REQUEST FOREGROUND
474 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.ui.BTScanModel: onScanResult DeviceListEntry(name=...a14, addr=...:16)
475 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.MeshService: Requesting foreground service=true
476 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.MainActivity: Received from mesh service Intent { act=com.geeksville.mesh.MESH_CONNECTED flg=0x10 (has extras) }
477 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: reqMtu
478 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: reqMtu
479 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Starting failsafe timer 10000
480 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.MainActivity: connchange DISCONNECTED
481 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | mesh_disconnect
482 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | num_nodes
483 | Mon Jul 06 2020 18:21:37 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: reqMtu
484 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: reqMtu
485 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Starting failsafe timer 10000
486 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: work reqMtu is completed, resuming status=0, res=kotlin.Unit *** TWO MTU RUNNIGN!!!
487 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: MTU change attempted
488 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: discover
489 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: discover
490 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: work reqMtu is completed, resuming status=0, res=kotlin.Unit
491 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: MTU change attempted
492 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: discover
493 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: discover *** we have TWO DISOVERS RUNNING!!!!
494 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: work discover is completed, resuming status=0, res=kotlin.Unit
495 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Discovered services!
496 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: work discover is completed, resuming status=0, res=kotlin.Unit
497 | Mon Jul 06 2020 18:21:38 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Discovered services!
498 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Scheduling reconnect because Unexpected error in initial device enumeration, forcing disconnect com.geeksville.mesh.service.RadioNotConnectedException: BLE service not found
499 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Forcing disconnect and hopefully device will comeback (disabling forced refresh)
500 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Closing our GATT connection
501 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Scheduling reconnect because Unexpected error in initial device enumeration, forcing disconnect com.geeksville.mesh.service.RadioNotConnectedException: BLE service not found
502 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Forcing disconnect and hopefully device will comeback (disabling forced refresh)
503 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Closing our GATT connection
504 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: new bluetooth connection state 0, status 0
505 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Got disconnect because we are shutting down, closing gatt
506 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Failing 0 works, because Connection closing
507 | Mon Jul 06 2020 18:21:39 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Failing 0 works, because Connection closing
508 | Mon Jul 06 2020 18:21:40 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Attempting reconnect
509 | Mon Jul 06 2020 18:21:40 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth: Enqueuing work: connect
510 | Mon Jul 06 2020 18:21:40 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.SafeBluetooth$BluetoothContinuation: Starting work: connect
511 | Mon Jul 06 2020 18:21:40 GMT-0700 (Pacific Daylight Time) | com.geeksville.mesh.service.BluetoothInterface: Attempting reconnect
512 | Mon Jul 06 2020 18:21:40 GMT-0700 (Pacific Daylight Time) | com.geeksville.util.Exceptions: MeshService-coroutine coroutine-exception (exception currentWork was not null: Work:connect)


Non-fatal Exception: java.lang.AssertionError: currentWork was not null: Work:connect
       at com.geeksville.mesh.service.SafeBluetooth.asyncConnect(SafeBluetooth.java:531)
       at com.geeksville.mesh.service.BluetoothInterface.startConnect(BluetoothInterface.java:464)
       at com.geeksville.mesh.service.BluetoothInterface.retryDueToException(BluetoothInterface.java:342)
       at com.geeksville.mesh.service.BluetoothInterface$retryDueToException$1.invokeSuspend(BluetoothInterface.java:11)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl.java:33)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.java:56)
       at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.java:571)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.java:738)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.java:678)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.java:665)

       0.7.90
2020-07-07 10:39:26 -07:00
geeksville
677b221503 show a toast if Play tells us any location problems exist (autobug) 2020-07-07 10:01:43 -07:00
geeksville
e001ffaf96 doc fix 2020-07-07 10:01:19 -07:00
Kevin Hester
71ecfcf848
Merge pull request #91 from geeksville/dev
Dev
2020-07-04 17:42:31 -07:00
geeksville
94c5bd41f2 Merge remote-tracking branch 'root/master' into dev 2020-07-04 17:42:04 -07:00
geeksville
38b4bc255c 0.7.90 read on if you want to see the stories of bluetooth trauma #76
So I'm trying to get an old version of bluetooth on Sony phones to work
In the process I realized I've always been doing something dumb which
bastically works fine, but is an ugly hack I also did to support old
devices.  Due to an accident of history there were two different layers
of the app which were trying to manage bluetooth connections, which was
dumb.  Always only one layer of an app should worry about such things.

/**
     * Should we automatically try to reconnect when we lose our connection?
     *
     * Originally this was true, but over time (now that clients are smarter and need to build
     * up more state) I see this was a mistake.  Now if the connection drops we just call
     * the lostConnection callback and the client of this API is responsible for reconnecting.
     * This also prevents nasty races when sometimes both the upperlayer and this layer decide to reconnect
     * simultaneously.
     */
2020-07-04 17:40:44 -07:00
Kevin Hester
acd2090e6d
Merge pull request #90 from geeksville/dev
Don't bounce the interface if the UI changes to a device we are alrea…
2020-07-04 17:03:44 -07:00
geeksville
bae1a124d2 Don't bounce the interface if the UI changes to a device we are already using 2020-07-04 16:54:48 -07:00
Kevin Hester
73b8eef25b
Merge pull request #89 from geeksville/dev
Dev
2020-07-04 12:50:32 -07:00
geeksville
6c7d108545 0.7.89 2020-07-04 12:47:38 -07:00
geeksville
bc6fa0b1bb If we have an exception thrown *back to us* complain and ignore it? 2020-07-04 11:33:24 -07:00
geeksville
f7ca63ed92 better error message if we can't find the update service 2020-07-04 11:32:51 -07:00
geeksville
92b3fa8d1f bug #76 - old sonys can take a VERY long time for the setMTU operation
to complete.  Change timeout to 10 secs (units in the field were showing
the mtu operation completing after 5 seconds.

Also - don't throw an exception if we encounter a result when we've already
killed things with the failsafe timer
2020-07-04 11:19:54 -07:00
geeksville
cc05be7d87 bug #76 fix a related autobug from feh123's log
Non-fatal Exception: kotlin.KotlinNullPointerException
       at com.geeksville.mesh.service.BluetoothInterface.doDiscoverServicesAndInit(BluetoothInterface.java:357)
       at com.geeksville.mesh.service.BluetoothInterface.access$doDiscoverServicesAndInit(BluetoothInterface.java:78)
       at com.geeksville.mesh.service.BluetoothInterface$onConnect$1.invokeSuspend(BluetoothInterface.java:429)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl.java:33)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.java:56)
       at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.java:571)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.java:738)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.java:678)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.java:665)
2020-07-04 11:02:18 -07:00
Kevin Hester
794434dc57
Merge pull request #83 from geeksville/dev
fix unit tests
2020-07-02 14:47:53 -07:00
geeksville
169cb7dcd7 fix unit tests 2020-07-02 14:46:37 -07:00
geeksville
85bdd25782 fix warning 2020-07-02 14:46:29 -07:00
Kevin Hester
de97911262
Merge pull request #82 from geeksville/dev
0.7.88 oops - if no work is pending, we also try to reconnect
2020-07-02 14:31:20 -07:00
geeksville
5f34fcba17 0.7.88 oops - if no work is pending, we also try to reconnect 2020-07-02 14:08:12 -07:00
Kevin Hester
cfc7dc8355
Merge pull request #81 from geeksville/dev
Dev
2020-07-02 10:43:14 -07:00
geeksville
dde5348b3a 0.7.87 2020-07-02 10:39:02 -07:00
geeksville
7faf4d2d79 fix software update button 2020-07-02 10:37:35 -07:00
geeksville
7bd6615cb7 oops - I wasn't properly checking for presence of firmware files 2020-07-02 10:32:47 -07:00
geeksville
0006858469 Fix autobug, don't show update button if we can't find the filename 2020-07-02 10:21:14 -07:00
geeksville
36949b83e5 Merge remote-tracking branch 'root/master' into dev 2020-07-02 10:12:44 -07:00
Kevin Hester
e74f12e6c6
Merge pull request #75 from lgoix/battery
Display battery level of remote nodes #64
2020-07-02 10:12:34 -07:00
geeksville
8ea949a437 fix autobug with old samsung phones 2020-07-02 09:53:52 -07:00
geeksville
103b21aafd Add stress tester that simulates super high chance of BLE failures
and fix bug that it revealed (missing handling of error during discovery)
2020-07-02 09:38:08 -07:00
geeksville
e5d6ffc4bd fix #77, see below:
root cause in log:
the problem is that we are running dropAndReconnect (because of an error diduing writec) at the same time as handleSendToRadio called scheduleReconnect because of the exception

fix is: now that BluetoothInterface is smart enough to do its own reconnections, do not auto reconnect in SafeBluetooth.  Instead just throw a BLEException and assume the client will reconnect if it wants.
2020-07-02 08:46:25 -07:00
geeksville
6182879d98 0.7.86 test build for https://github.com/meshtastic/Meshtastic-Android/issues/76 2020-07-02 08:11:09 -07:00
Kevin Hester
8d8db3d502
Merge pull request #79 from geeksville/dev
Dev
2020-07-01 18:11:09 -07:00
geeksville
4333f775f9 0.7.85 2020-07-01 18:10:44 -07:00
geeksville
37a909e65d include firmware bins only in release builds 2020-07-01 18:10:30 -07:00
geeksville
c0e58391a3 Fix problem of old messages not being remembered 2020-07-01 18:00:28 -07:00
Kevin Hester
c5df728f02
Merge pull request #78 from geeksville/dev
Dev
2020-07-01 16:34:19 -07:00
geeksville
800060a991 Fix #77: when shutting down interfaces, cancel any retry attempts 2020-07-01 16:31:23 -07:00
geeksville
41bd082296 don't spam crashreport server if the device sent a corrupted protobuf 2020-07-01 15:50:07 -07:00
geeksville
2520a5e69d fix new autobugs 2020-07-01 15:43:01 -07:00
geeksville
b7d0b7fca4 0.7.84 2020-07-01 15:42:46 -07:00
Ludovic Goix
d822538c0e Display battery level of remote nodes #64 2020-07-01 08:28:06 -04:00
Kevin Hester
07d2c58ae5
Merge pull request #72 from geeksville/dev
Dev
2020-06-30 12:42:45 -07:00
geeksville
4172b221f0 autobug: failure to start should be treated like any other BLE exception 2020-06-30 12:35:58 -07:00
geeksville
fed418dae2 better debug output for the next time an autobug occurs 2020-06-30 12:18:49 -07:00
geeksville
0349e823f8 don't spam crashlytics with non-bug reports 2020-06-30 12:02:12 -07:00
geeksville
4571eeea2a get logs from oneplus devices 2020-06-30 12:01:48 -07:00
geeksville
e6fd79f477 fix another autobug - clear gatt first, because close() can fail 2020-06-30 11:39:04 -07:00
geeksville
17faecc170 fix autobug 2020-06-30 11:13:18 -07:00
geeksville
010d63d2db Revert "Create codeql-analysis.yml"
This reverts commit 5da86129fa.
2020-06-30 10:56:27 -07:00
geeksville
fdf8c195bf Merge remote-tracking branch 'mine/master' into dev 2020-06-30 10:55:17 -07:00
Kevin Hester
5da86129fa
Create codeql-analysis.yml 2020-06-30 09:32:35 -07:00
Kevin Hester
eb59b1e128
Merge pull request #71 from geeksville/dev
Dev
2020-06-28 18:07:25 -07:00
geeksville
cfd6823120 0.7.82 2020-06-28 18:07:01 -07:00
geeksville
fb422006b6 lib fixes 2020-06-28 18:05:29 -07:00
geeksville
549b1e8d7c fix #68 - workaround a disconnect bug in old androids
https://github.com/don/cordova-plugin-ble-central/issues/473#issuecomment-396790239
2020-06-28 18:04:52 -07:00
geeksville
c896a2f8c8 lib deps 2020-06-28 16:10:48 -07:00
geeksville
773e81d25f print scan errors to log 2020-06-28 16:09:56 -07:00
geeksville
68cc494021 autobug - don't fail if the gatt goes away while we are connecting 2020-06-28 16:09:37 -07:00
Kevin Hester
256015c046
Merge pull request #70 from geeksville/dev
Dev
2020-06-28 15:26:11 -07:00
geeksville
3246bd6505 Add screenshots showing required location settings #68 2020-06-28 14:55:41 -07:00
geeksville
40055f603d Don't include firmware in development builds (speeds install time) 2020-06-28 14:55:02 -07:00
geeksville
c7c89aeb71 Merge remote-tracking branch 'root/master' into dev 2020-06-28 14:23:32 -07:00
Kevin Hester
f7249a221e
Merge pull request #69 from tuxphone german fixes
Update strings.xml
2020-06-28 11:52:20 -07:00
tuxphone
dee4e31c97
Update strings.xml
username_unset - look to "unset", normally not translated to "ungesetzt" instead use "nicht gesetzt"
Translated "cancel" to "Abbrechen".  Expected standard for most users. If you want to use "Rückgängig" please fix the typo ("Rückgänig")
looking_for_meshtastic_devices - corrected wrong case
new_channel_rcvd - corrected wrong case
2020-06-28 20:47:41 +02:00
geeksville
90961ba217 Minor Japanese fixes from @Neklan. 2020-06-27 15:30:35 -07:00
geeksville
d18319f16f @jinks17 contributed Slovenian 2020-06-27 15:30:07 -07:00
Kevin Hester
3017308aad
Merge pull request #66 from geeksville/dev
Dev
2020-06-25 17:59:21 -07:00
geeksville
d75f7d3721 0.7.81 2020-06-25 17:58:48 -07:00
geeksville
6cbce279c5 Merge remote-tracking branch 'root/master' into dev 2020-06-25 17:56:54 -07:00
geeksville
1fd80c06d8 Fix #67, see that issue for writeup. gatt needs to be @Volatile 2020-06-25 17:56:31 -07:00
geeksville
2780a08931 The android Gatt caching bug on old phones (based on my reading of
the android C code) needs a small delay after calling refresh() because
otherwise the (stale) BLE handles are not discarded until _after_
we start using the connected service.
2020-06-25 15:53:17 -07:00
Kevin Hester
55dab4b1db
Merge pull request #62 from geeksville/dev
Dev
2020-06-24 16:18:11 -07:00
geeksville
8e0ceb6661 Merge remote-tracking branch 'root/master' into dev 2020-06-24 14:59:43 -07:00
Kevin Hester
d326f3604d
Merge pull request #63 from slavino/patch-1
Update strings.xml
2020-06-24 14:59:29 -07:00
geeksville
ca6de33943 Allow user to enter only a very restricted list of channel name chars
(for now - possibly loosen in the future - someone reported the device
code didn't like odd characters, and we definitely don't want anything
>127).  Also, shrink length to 11 chars (which is 12 including the nul
terminator on the device side (current limit in mesh.options).
2020-06-24 14:58:56 -07:00
Slavomir Hustaty
a9fa63f4df
Update strings.xml
Synced via Android Studio Translations Editor with current default/English values.
2020-06-23 15:24:28 +02:00
geeksville
d78932d6da Proper version checking and enable BLE software update for new devices 2020-06-22 17:14:29 -07:00
geeksville
6001d22837 @zone added Turkish translations! 2020-06-22 16:30:40 -07:00
geeksville
97961f274f Japanese tweak from @neklan 2020-06-21 13:08:35 -07:00
2045 changed files with 210963 additions and 10862 deletions

27
.copilotignore Normal file
View file

@ -0,0 +1,27 @@
# Ignore build artifacts and generated files from Copilot indexing
# This saves context window tokens and prevents Copilot from hallucinating off of minified code.
# Build directories
**/build/**
.gradle/
.idea/
# Android generated files
**/generated/**
.cxx/
.externalNativeBuild/
# Git history & worktrees
.git/
.worktrees/
# Protobuf (Prevents Copilot from suggesting raw protobuf byte buffers)
core/proto/
# Environment and secrets
local.properties
secrets.properties
*.jks
# Agent References (Prevents pollution of project space with external code)
.agent_refs/

5
.gemini/settings.json Normal file
View file

@ -0,0 +1,5 @@
{
"context": {
"fileName": ["AGENTS.md", "GEMINI.md"]
}
}

13
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,13 @@
# These are supported funding model platforms
github: meshtastic
patreon: # Replace with a single Patreon username
open_collective: meshtastic
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

182
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View file

@ -0,0 +1,182 @@
name: Bug Report
description: File a bug report.
title: "[Bug]: "
labels: [bug]
projects: [meshtastic/Meshtastic-Android]
body:
- type: markdown
attributes:
value: |
Thank you for helping to make Meshtastic-Android better by reporting a bug. :hugs:
Please provide as much detail as possible so we can efficiently address your issue and avoid unnecessary back-and-forth.
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com, discord username
validations:
required: false
- type: checkboxes
id: checklist
attributes:
label: "Checklist"
description: |
Please make sure you have done the following before submitting your bug report.
Bug reports that do not meet these criteria will be closed.
Requests that do not meet these criteria will be closed.
Links:
[**OPEN ISSUES**](https://github.com/meshtastic/Meshtastic-Android/issues)
[**CLOSED ISSUES**](https://github.com/meshtastic/Meshtastic-Android/issues?q=is%3Aissue+is%3Aclosed)
[Contribution Guidelines](https://github.com/meshtastic/Meshtastic-Android/blob/main/README.md#contributing)
options:
- label: |
I am able to reproduce the bug with the latest version.
required: true
- label: |
I have updated to the latest *Alpha* firmware, and am able to reproduce the bug. Many issues are fixed quickly in alpha before the general beta release.
required: true
- label: |
I made sure that there are no existing **OPEN or CLOSED issues** which I could contribute my information to.
required: true
- label: |
I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.
required: true
- label: |
This issue contains only one bug.
required: true
- label: |
I have read and understood the **Contribution Guidelines**.
required: true
- label: |
I agree to follow this project's Code of Conduct
required: true
- label: |
I actually read this list, and should be taken seriously.
required: false
- type: input
id: app-version
attributes:
label: Affected app version
description: |
In which Meshtastic-Android app version did you encounter the bug?
Can be seen on the bottom of the `Settings` screen in the app.
placeholder: "x.y.z-channel.x (build) flavor"
validations:
required: true
- type: input
id: phone-os
attributes:
label: Affected Android version
description: |
With what operating system (+ version) did you encounter the bug?
placeholder: "Example: Android 14"
validations:
required: true
- type: input
id: phone-model
attributes:
label: Affected phone model
description: |
On what phone did you encounter the bug?
placeholder: "Example: Samsung Galaxy S20 / Google Pixel 8"
validations:
required: true
- type: input
id: hardware-model
attributes:
label: Affected node model
placeholder: "Example: Seeed T1000-E, Heltec v3, etc."
description: |
On which hardware device (Node) did you encounter the bug?
validations:
required: true
- type: input
id: firmware-version
attributes:
label: Affected node firmware version
placeholder: "x.x.x"
description: "Which Meshtastic firmware version did you encounter the bug?"
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce the bug
description: |
What did you do for the bug to show up?
If you can't cause the bug to show up again reliably (and hence don't have a proper set of steps to give us), please still try to give as many details as possible on how you think you encountered the bug.
placeholder: |
1. Go to '...'
2. Press on '....'
3. Swipe down to '....'
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual behavior
description: |
Tell us what happens with the steps given above.
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: |
Tell us what you expect to happen.
- type: textarea
id: screen-media
attributes:
label: Screenshots/Screen recordings
description: |
A picture or video is worth a thousand words.
Provide as much context as possible so we know what we are looking at.
Add screenshots or a screen recording to help explain your problem, provide detailed context to help us know what to look for.
GitHub supports uploads of images and (small) videos directly in the text box.
- type: textarea
id: logs
attributes:
label: Relevant log output
description: |
Logs help us to diagnose and reproduce issues, particularly when they are unique to your setup.
Depending on the issue, the following logs may be useful:
- App logs: This will help with most issues. If possible, provide the relevant output of:
`adb logcat -d | grep com.geeksville.mesh`
- Mesh logs: UI issues, communication issues etc.
- ` App > Settings > Advanced > Debug Panel > Export specific / export all `
- Broader Android logs: Potentially useful if the issue goes beyond the app (connections, network etc.)
`adb logcat -d`
- Firmware logs: Useful for all connection issues with nodes
- These are piped to the USB serial port on the node, the most foolproof is to use the 'open serial' button on the web-flasher interface, and then save the output.
- The app needs to be connecting to the node via Bluetooth or Network for this to work.
render: shell
- type: textarea
id: additional-information
attributes:
label: Additional information
description: |
Any other information you'd like to include, for instance that
* the affected device is foldable or a TV
* you have disabled all animations on your device or otherwise changed system settings
* you are using battery optimization or power saving mode
* you are using a custom Android ROM or launcher
* your ferret chewed your antennas
* you are using a VPN
* you live in a faraday cage
* you dismissed all popups telling you not to do things you shouldn't do without reading them
* ...

10
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,10 @@
blank_issues_enabled: false
contact_links:
- name: Meshtastic Android Discussions
url: https://github.com/orgs/meshtastic/discussions/categories/android
about: Please ask and answer questions here.
- name: Meshtastic Website
url: https://meshtastic.org/
about: Docs and other ways to contact us here.

View file

@ -0,0 +1,61 @@
name: Feature Request
description: File a request for new feature or functionality.
title: "[Feature Request]: "
labels: [enhancement]
projects: [meshtastic/Meshtastic-Android]
body:
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Please make sure you have done the following before submitting your feature request.
Requests that do not meet these criteria will be closed.
Links:
[**OPEN ISSUES**](https://github.com/meshtastic/Meshtastic-Android/issues)
[**CLOSED ISSUES**](https://github.com/meshtastic/Meshtastic-Android/issues?q=is%3Aissue+is%3Aclosed)
[Contribution Guidelines](https://github.com/meshtastic/Meshtastic-Android/blob/main/README.md#contributing)
options:
- label:
I have used the search function for **OPEN ISSUES** to see if someone else has already submitted the same feature request.
required: true
- label: |
I have **also** used the search function for **CLOSED ISSUES** to see if the feature was already implemented and is just waiting to be released, or if the feature was rejected.
required: true
- label: |
I will describe the request with as much detail as possible.
required: true
- label: |
This request contains only one single feature, **not** a list of multiple (related) features.
required: true
- label: |
I have read and understood the **Contribution Guidelines**.
required: true
- label: |
I agree to follow this project's Code of Conduct
required: true
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com, discord username
validations:
required: false
- type: textarea
id: feature
attributes:
label: Feature or improvement you want
description: Try to be as specific as possible. Please not only explain what the feature does, but also how.
- type: textarea
id: reason
attributes:
label: Why should this be added?
description: |
What problem does the feature solve? In what use-cases is the feature needed?
Is this supported by the firmware? Please provide links to relevant firmware issues or PRs if applicable.
- type: textarea
id: screenshots
attributes:
label: Screenshots / Drawings / Technical details
description: If your request is about (or includes) changing or extending the UI, describe what the UI would look like and how the user would interact with it.

View file

@ -0,0 +1,180 @@
name: Internal testing - Bug Report
description: File a bug report.
title: "[Bug]: "
labels: [bug, ch_testing]
projects: [meshtastic/Meshtastic-Android]
body:
- type: markdown
attributes:
value: |
This Bug report is only for the internal testing builds. If you are not on the list, or didn't seek one out deliberately, you should use the generic Bug Report. :hugs:
Please provide as much detail as possible so we can efficiently reproduce the issue.
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com, discord username
validations:
required: false
- type: checkboxes
id: checklist
attributes:
label: "Checklist"
description: |
Please make sure you have done the following before submitting your bug report.
Bug reports that do not meet these criteria will be closed.
Requests that do not meet these criteria will be closed.
Links:
[**OPEN ISSUES**](https://github.com/meshtastic/Meshtastic-Android/issues)
[**CLOSED ISSUES**](https://github.com/meshtastic/Meshtastic-Android/issues?q=is%3Aissue+is%3Aclosed)
[Contribution Guidelines](https://github.com/meshtastic/Meshtastic-Android/blob/main/README.md#contributing)
options:
- label: |
I am able to reproduce the bug with the latest version.
required: true
- label: |
I have updated to the latest *Alpha* firmware, and am able to reproduce the bug. Many issues are fixed quickly in alpha before the general beta release.
required: true
- label: |
I made sure that there are no existing **OPEN or CLOSED issues** which I could contribute my information to.
required: true
- label: |
I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.
required: true
- label: |
This issue contains only one bug.
required: true
- label: |
I have read and understood the **Contribution Guidelines**.
required: true
- label: |
I agree to follow this project's Code of Conduct
required: true
- type: input
id: app-version
attributes:
label: Affected app version
description: |
In which Meshtastic-Android app version did you encounter the bug?
Can be seen on the bottom of the `Settings` screen in the app.
placeholder: "x.y.z-channel.x (build) flavor"
validations:
required: true
- type: input
id: phone-os
attributes:
label: Affected Android version
description: |
With what operating system (+ version) did you encounter the bug?
placeholder: "Example: Android 14"
validations:
required: true
- type: input
id: phone-model
attributes:
label: Affected phone model
description: |
On what phone did you encounter the bug?
placeholder: "Example: Samsung Galaxy S20 / Google Pixel 8"
validations:
required: true
- type: input
id: hardware-model
attributes:
label: Affected node model
placeholder: "Example: Seeed T1000-E, Heltec v3, etc."
description: |
On which hardware device (Node) did you encounter the bug?
validations:
required: true
- type: input
id: firmware-version
attributes:
label: Affected node firmware version
placeholder: "x.x.x"
description: "Which Meshtastic firmware version did you encounter the bug?"
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce the bug
description: |
What did you do for the bug to show up?
If you can't cause the bug to show up again reliably (and hence don't have a proper set of steps to give us), please still try to give as many details as possible on how you think you encountered the bug.
placeholder: |
1. Go to '...'
2. Press on '....'
3. Swipe down to '....'
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual behavior
description: |
Tell us what happens with the steps given above.
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: |
Tell us what you expect to happen.
- type: textarea
id: screen-media
attributes:
label: Screenshots/Screen recordings
description: |
A picture or video is worth a thousand words.
Provide as much context as possible so we know what we are looking at.
Add screenshots or a screen recording to help explain your problem, provide detailed context to help us know what to look for.
GitHub supports uploads of images and (small) videos directly in the text box.
- type: textarea
id: logs
attributes:
label: Relevant log output
description: |
Logs help us to diagnose and reproduce issues, particularly when they are unique to your setup.
Depending on the issue, the following logs may be useful:
- App logs: This will help with most issues. If possible, provide the relevant output of:
`adb logcat -d | grep com.geeksville.mesh`
- Mesh logs: UI issues, communication issues etc.
- ` App > Settings > Advanced > Debug Panel > Export specific / export all `
- Broader Android logs: Potentially useful if the issue goes beyond the app (connections, network etc.)
`adb logcat -d`
- Firmware logs: Useful for all connection issues with nodes
- These are piped to the USB serial port on the node, the most foolproof is to use the 'open serial' button on the web-flasher interface, and then save the output.
- The app needs to be connecting to the node via Bluetooth or Network for this to work.
render: shell
- type: textarea
id: additional-information
attributes:
label: Additional information
description: |
Any other information you'd like to include, for instance that
* the affected device is foldable or a TV
* you have disabled all animations on your device or otherwise changed system settings
* you are using battery optimization or power saving mode
* you are using a custom Android ROM or launcher
* your ferret chewed your antennas
* you are using a VPN
* you live in a faraday cage
* you dismissed all popups telling you not to do things you shouldn't do without reading them
* ...

28
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View file

@ -0,0 +1,28 @@
## Thank you for sending in a pull request, here's some tips to get started!
(Please delete all these tips and replace with your text)
- Before starting on some new big chunk of code, it it is optional but highly recommended to open an issue first to say "Hey, I think this idea X should be implemented and I'm starting work on it. My general plan is Y, any feedback is appreciated." This will allow other devs to potentially save you time by not accidentally duplicating work etc...
- Mention "#(issue)" in the description, when applicable
- Please do not check in files that don't have real changes
- Please do not reformat lines that you didn't have to change the code on
- If your other co-developers have comments on your PR please tweak as needed
- Do not use any external image service, just paste or drag and drop the image here and it will be uploaded automatically
- Please also enable "Allow edits by maintainers".
<!--
If you have screenshots or recordings to display your change, please include them!
You can use this template for displaying a single screenshot:
<img src="" width="300"/>
or a video recording:
<video src="" width="300"></video>
And if you want to display the state before and after a change, you can use this table template:
| Before | After |
|------|-----|
| <img src="" width="300"/> | <img src="" width="300"/> |
-->

40
.github/actions/gradle-setup/action.yml vendored Normal file
View file

@ -0,0 +1,40 @@
name: Gradle Setup
description: Setup Java and Gradle for KMP builds
inputs:
cache_read_only:
description: 'Whether Gradle cache is read-only'
default: 'true'
jdk_distribution:
description: 'JDK distribution (temurin or jetbrains)'
default: 'temurin'
gradle_encryption_key:
description: 'Encryption key for Gradle remote cache'
required: false
runs:
using: composite
steps:
- name: Copy CI Gradle properties
shell: bash
run: mkdir -p ~/.gradle && cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: ${{ inputs.jdk_distribution }}
token: ${{ github.token }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
with:
cache-read-only: ${{ inputs.cache_read_only }}
cache-encryption-key: ${{ inputs.gradle_encryption_key }}
cache-cleanup: on-success
add-job-summary: always
gradle-home-cache-includes: |
caches
notifications
~/.m2/repository/org/robolectric

52
.github/ci-gradle.properties vendored Normal file
View file

@ -0,0 +1,52 @@
#
# CI-specific Gradle properties.
#
# This file is copied to ~/.gradle/gradle.properties by the gradle-setup
# composite action, overriding the dev-oriented values in the repo-root
# gradle.properties. Inspired by the nowinandroid & sqldelight patterns.
#
# ── Daemon ────────────────────────────────────────────────────────────
# Single-use CI runners never reuse a daemon, so the startup cost is pure
# overhead. Disabling it also avoids "daemon disappeared" warnings.
org.gradle.daemon=false
# ── Memory ────────────────────────────────────────────────────────────
# Standard GitHub runners have 7 GB RAM. Keep Gradle + Kotlin daemon
# within budget (4g Gradle + 2g Kotlin daemon + 1g OS/tooling headroom).
org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8
kotlin.daemon.jvm.options=-Xmx2g -XX:+UseParallelGC
# ── Parallelism ───────────────────────────────────────────────────────
org.gradle.parallel=true
org.gradle.workers.max=4
# ── Caching & Configuration ──────────────────────────────────────────
org.gradle.caching=true
org.gradle.configuration-cache=true
org.gradle.configureondemand=false
org.gradle.vfs.watch=false
org.gradle.isolated-projects=true
# ── Kotlin ────────────────────────────────────────────────────────────
# Incremental compilation is wasted on fresh CI checkouts (no prior build
# state to diff against). Disabling avoids the overhead of maintaining
# incremental state that will never be reused.
kotlin.incremental=false
kotlin.code.style=official
kotlin.parallel.tasks.in.project=true
# ── KSP ──────────────────────────────────────────────────────────────
# In CI, KSP incremental processing adds overhead without benefit (fresh
# checkouts). Keep intermodule incremental off (no prior state).
ksp.incremental=false
ksp.run.in.process=true
# ── Android ──────────────────────────────────────────────────────────
android.experimental.lint.analysisPerComponent=true
# Disable unused build features to reduce build time
android.defaults.buildfeatures.resvalues=false
android.defaults.buildfeatures.shaders=false
# ── Misc ─────────────────────────────────────────────────────────────
org.gradle.welcome=never

View file

@ -0,0 +1,27 @@
# GitHub Copilot Commit Message Instructions
<role>
You are an expert Git maintainer enforcing Conventional Commits.
</role>
<instructions>
1. **Format:** Use the Conventional Commits format: `<type>(<scope>): <subject>` (Replace angle brackets with actual text, do NOT output angle brackets).
2. **Types allowed:**
- `feat` (new feature for the user, not a new feature for build script)
- `fix` (bug fix for the user, not a fix to a build script)
- `docs` (changes to the documentation)
- `style` (formatting, missing semi colons, etc; no production code change)
- `refactor` (refactoring production code, e.g. KMP migration, extracting to commonMain)
- `test` (adding missing tests, refactoring tests; no production code change)
- `chore` (updating grunt tasks etc; no production code change)
3. **Scope:** Use the module or logical component as the scope (e.g., `ui`, `navigation`, `ble`, `firmware`, `deps`, `ai`).
4. **Subject line:**
- Use the imperative, present tense: "change" not "changed" nor "changes".
- Do not capitalize the first letter.
- Do not use a period (.) at the end.
- Keep it under 50 characters if possible.
5. **Body (Optional but recommended for large diffs):**
- Leave one blank line after the subject.
- Explain *why* the change was made, not just *what* changed.
- If migrating to KMP or extracting to `commonMain`, explicitly state "Decoupled from Android framework".
</instructions>

6
.github/copilot-instructions.md vendored Normal file
View file

@ -0,0 +1,6 @@
# Meshtastic Android - GitHub Copilot Guide
> **Note:** The canonical instructions for all AI Agents have been deduplicated.
You MUST immediately read and internalize the unified instructions located at the root of the repository in `AGENTS.md`.
After reading `AGENTS.md`, consult the `.skills/` directory for task-specific playbooks.

View file

@ -0,0 +1,18 @@
# GitHub Copilot Pull Request Instructions
<role>
You are an expert open-source maintainer. Your goal is to write clear, professional, and highly structured Pull Request descriptions based on the provided diffs.
</role>
<instructions>
1. **Remove Boilerplate:** Always delete the "tips" section at the top of the `PULL_REQUEST_TEMPLATE.md` before generating your text.
2. **Context First:** Start with a clear, 1-2 sentence summary of *why* this change is being made. If the branch name or commits reference an issue (e.g., `fix-1234`), explicitly add `Fixes #1234` or `Resolves #1234`.
3. **Structured Changes:** Break down the code changes into bullet points categorized by:
- 🌟 **New Features** (UI, modules, logic)
- 🛠️ **Refactoring & Architecture** (KMP migrations, Koin DI updates)
- 🐛 **Bug Fixes**
- 🧹 **Chores** (Dependencies, formatting, docs)
4. **Architecture Callouts:** If the diff includes moving files from `androidMain` to `commonMain`, or migrating from Android Views to Compose, highlight this as a "KMP Migration Milestone".
5. **Testing Callouts:** If the diff includes changes to `commonTest` or mentions tests, add a section called "Testing Performed" and list the tests that were added/modified.
6. **No "Magic" Text:** Do not invent URLs or insert fake image placeholders. Leave the HTML comment block for images intact so the user can manually add their screenshots.
</instructions>

View file

@ -0,0 +1,11 @@
---
applyTo: "**/androidMain/**/*.kt"
---
# Android Source-Set Rules
- This is `androidMain` — Android framework imports (`android.*`, `java.*`) are allowed here.
- Do NOT put business logic here. Business logic belongs in `commonMain`.
- If you find identical pure-Kotlin logic in both `androidMain` and `jvmMain`, extract it to `commonMain`.
- Use `expect`/`actual` only for small platform primitives. Prefer interfaces + DI.
- Keep `expect` declarations in `FileIo.kt` and shared helpers in `FileIoUtils.kt` to avoid JVM duplicate class errors.

View file

@ -0,0 +1,10 @@
---
applyTo: "build-logic/**/*.kt"
---
# Build-Logic Convention Plugin Rules
- Prefer lazy Gradle configuration (`configureEach`, `withPlugin`, provider APIs).
- Avoid `afterEvaluate` unless there is no viable lazy alternative.
- Check `gradle/libs.versions.toml` for version catalog aliases before adding new ones.
- Convention plugins: `meshtastic.kmp.feature`, `meshtastic.kmp.library`, `meshtastic.kmp.jvm.android`, `meshtastic.koin`.

View file

@ -0,0 +1,14 @@
---
applyTo: "**/*.yml"
excludeAgent: "code-review"
---
# CI Workflow Rules
- Prefer explicit Gradle task paths (`app:lintFdroidDebug`) over shorthand (`lintDebug`).
- CI uses `.github/ci-gradle.properties` — don't assume local `gradle.properties` values.
- CI passes `-Pci=true` to enable full processor usage via `maxParallelForks`.
- Use `fetch-depth: 0` only where needed (spotless ratcheting, version code). Use `fetch-depth: 1` otherwise.
- Desktop build matrix: `macos-latest`, `windows-latest`, `ubuntu-24.04`, `ubuntu-24.04-arm`.
- Lightweight jobs (labelers, triage, stale): use `ubuntu-24.04-arm` runners.
- Gradle-heavy jobs: use `ubuntu-24.04` runners.

View file

@ -0,0 +1,20 @@
---
applyTo: "**/commonMain/**/*.kt"
---
# KMP commonMain Rules
- NEVER import `java.*` or `android.*` in `commonMain`.
- Use `org.meshtastic.core.common.util.ioDispatcher` instead of `Dispatchers.IO`.
- Use Okio (`BufferedSource`/`BufferedSink`) instead of `java.io.*`.
- Use `kotlinx.coroutines.sync.Mutex` instead of `java.util.concurrent.locks.*`.
- Use `atomicfu` or Mutex-guarded `mutableMapOf()` instead of `ConcurrentHashMap`.
- Use `jetbrains-*` catalog aliases for lifecycle/navigation dependencies.
- Use `compose-multiplatform-*` catalog aliases for CMP dependencies.
- Never use plain `androidx.compose` dependencies in `commonMain`.
- Strings: use `stringResource(Res.string.key)` from `core:resources`. No hardcoded strings.
- CMP `stringResource` only supports `%N$s` and `%N$d` — pre-format floats with `NumberFormatter.format()`.
- Use `MetricFormatter` from `core:common` for display strings (temperature, voltage, percent, signal). Avoid scattered `formatString("%.1f°C", val)` calls.
- Check `gradle/libs.versions.toml` before adding dependencies.
- Use `safeCatching {}` from `core:common` instead of `runCatching {}` in coroutine/suspend contexts. Keep `runCatching` only in cleanup/teardown code.
- Use `kotlinx.coroutines.CancellationException`, not `kotlin.coroutines.cancellation.CancellationException`.

12
.github/lsp.json vendored Normal file
View file

@ -0,0 +1,12 @@
{
"lspServers": {
"kotlin": {
"command": "kotlin-language-server",
"args": [],
"fileExtensions": {
".kt": "kotlin",
".kts": "kotlin"
}
}
}
}

BIN
.github/meshtastic_logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

36
.github/release.yml vendored Normal file
View file

@ -0,0 +1,36 @@
# .github/release.yml - GitHub Release Notes Configuration
changelog:
exclude:
labels:
- dependencies
- automation
- release
- repo
- skip-changelog
- chore
- ci
- build
- testing
- test
- refactor
- documentation
- translation
authors:
- renovate[bot]
- dependabot[bot]
- github-actions[bot]
categories:
- title: 🏗️ Features
labels:
- enhancement
- feature
- title: 🛠️ Fixes
labels:
- bug
- bugfix
- fix
- title: 📝 Other Changes
labels:
- '*'

96
.github/renovate.json vendored Normal file
View file

@ -0,0 +1,96 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
":dependencyDashboard",
":semanticCommitTypeAll(chore)",
":ignoreModulesAndTests",
"group:recommended",
"replacements:all",
"workarounds:all"
],
"commitMessageTopic": "{{depName}}",
"labels": [
"dependencies"
],
"git-submodules": {
"enabled": true
},
"bundler": {
"enabled": true
},
"packageRules": [
{
"description": "Automerge non-major updates for stable versions",
"matchUpdateTypes": [
"minor",
"patch",
"pin",
"digest"
],
"matchCurrentVersion": "!/^0/",
"automerge": true
},
{
"description": "Automerge patch updates for unstable (0.x) versions",
"matchUpdateTypes": [
"patch",
"pin",
"digest"
],
"matchCurrentVersion": "/^0/",
"automerge": true
},
{
"description": "Automerge pins and digests regardless of version",
"matchUpdateTypes": [
"pin",
"digest"
],
"automerge": true
},
{
"description": "Meshtastic Protobufs changelog link",
"matchPackageNames": [
"https://github.com/meshtastic/protobufs.git"
],
"changelogUrl": "https://github.com/meshtastic/protobufs/compare/{{currentDigest}}...{{newDigest}}",
"automerge": true
},
{
"description": "Group CMP and the androidx.compose artifacts that track it so Renovate bumps them together (see PR #5180)",
"groupName": "compose-multiplatform",
"matchPackageNames": [
"/^org\\.jetbrains\\.compose/",
"androidx.compose.runtime:runtime-tracing",
"androidx.compose.ui:ui-test-manifest"
]
},
{
"description": "Restrict sensitive infrastructure to manual minor updates",
"matchUpdateTypes": [
"minor"
],
"matchPackageNames": [
"/^org\\.jetbrains\\.kotlin/",
"/^org\\.jetbrains\\.kotlinx/",
"/^org\\.jetbrains\\.compose/",
"/^com\\.google\\.dagger/",
"/^androidx\\.hilt/",
"/^com\\.google\\.protobuf/",
"/^androidx\\.lifecycle/",
"/^androidx\\.navigation/",
"/^androidx\\.datastore/",
"/^androidx\\.compose\\.material3\\.adaptive/",
"/^androidx\\.compose\\.material3:material3-adaptive-navigation-suite$/"
],
"automerge": false
},
{
"description": "Disable automerge for major updates (safety net)",
"matchUpdateTypes": [
"major"
],
"automerge": false
}
]
}

View file

@ -1,27 +0,0 @@
name: Android CI
# from https://medium.com/@wkrzywiec/github-actions-for-android-first-approach-f616c24aa0f9
on: push
jobs:
test:
name: Test
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- name: Checkout submodules
uses: textbook/git-checkout-submodule-action@master
- name: Mock config files for CI
run: |
rm ./app/google-services.json
cp ./app/google-services-example.json ./app/google-services.json
rm ./app/src/main/res/values/mapbox-token.xml
cp ./app/special/mapbox-token.xml ./app/src/main/res/values/
rm ./app/src/main/res/values/curfirmwareversion.xml
cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/
- name: set up JDK 1.8
uses: actions/setup-java@master
with:
java-version: 1.8
- name: Unit tests
run: bash ./gradlew test --stacktrace

View file

@ -0,0 +1,166 @@
name: Create or Promote Release
on:
workflow_dispatch:
inputs:
base_version:
description: 'Base version for the release (e.g., 2.3.0)'
required: true
channel:
description: 'The channel to create a release for or promote to'
required: true
type: choice
options:
- internal
- closed
- open
- production
dry_run:
description: 'If true, calculates the tag but does not push it or start the release'
required: true
type: boolean
default: false
build_desktop:
description: 'Whether to build the desktop distribution'
required: true
type: boolean
default: false
permissions:
contents: write
pull-requests: read
id-token: write
attestations: write
jobs:
determine-tags:
runs-on: ubuntu-24.04-arm
outputs:
tag_to_process: ${{ steps.calculate_tags.outputs.tag_to_process }}
release_name: ${{ steps.calculate_tags.outputs.release_name }}
final_tag: ${{ steps.calculate_tags.outputs.final_tag }}
from_channel: ${{ steps.calculate_tags.outputs.from_channel }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
token: ${{ secrets.CROWDIN_GITHUB_TOKEN }}
- name: Calculate tags
id: calculate_tags
run: |
BASE_VERSION="${{ inputs.base_version }}"
CHANNEL="${{ inputs.channel }}"
if [[ "$CHANNEL" == "internal" ]]; then
# This is a new build, create a new internal tag
LATEST_TAG=$(git tag --list "v${BASE_VERSION}-internal.*" --sort=-v:refname | head -n 1)
if [ -z "$LATEST_TAG" ]; then
INCREMENT=1
else
INCREMENT=$(echo "$LATEST_TAG" | sed -n "s/.*-internal\.\([0-9]*\)/\1/p" | awk '{print $1+1}')
fi
NEW_TAG="v${BASE_VERSION}-internal.${INCREMENT}"
echo "Calculated new tag: $NEW_TAG"
echo "tag_to_process=$NEW_TAG" >> $GITHUB_OUTPUT
echo "release_name=$NEW_TAG" >> $GITHUB_OUTPUT
echo "final_tag=$NEW_TAG" >> $GITHUB_OUTPUT
else
# This is a promotion, find the latest tag from the previous channel to promote
FROM_CHANNEL="internal"
if [[ "$CHANNEL" == "open" ]]; then
FROM_CHANNEL="closed"
elif [[ "$CHANNEL" == "production" ]]; then
FROM_CHANNEL="open"
fi
LATEST_TAG_TO_PROMOTE=$(git tag --list "v${BASE_VERSION}-${FROM_CHANNEL}.*" --sort=-v:refname | head -n 1)
if [ -z "$LATEST_TAG_TO_PROMOTE" ]; then
echo "::error::No ${FROM_CHANNEL} release found for base version ${BASE_VERSION} to promote."
exit 1
fi
echo "Found latest ${FROM_CHANNEL} tag to promote: $LATEST_TAG_TO_PROMOTE"
# Calculate the increment for the TARGET channel
if [[ "$CHANNEL" != "production" ]]; then
LATEST_CHANNEL_TAG=$(git tag --list "v${BASE_VERSION}-${CHANNEL}.*" --sort=-v:refname | head -n 1)
if [ -z "$LATEST_CHANNEL_TAG" ]; then
INCREMENT=1
else
INCREMENT=$(echo "$LATEST_CHANNEL_TAG" | sed -n "s/.*-${CHANNEL}\.\([0-9]*\)/\1/p" | awk '{print $1+1}')
fi
NEW_TAG="v${BASE_VERSION}-${CHANNEL}.${INCREMENT}"
else
# Production is special, it has no increment
NEW_TAG="v${BASE_VERSION}"
fi
echo "New release name will be: $NEW_TAG"
echo "Final tag will be: $NEW_TAG"
echo "from_channel=${FROM_CHANNEL}" >> $GITHUB_OUTPUT
echo "tag_to_process=${LATEST_TAG_TO_PROMOTE}" >> $GITHUB_OUTPUT
echo "release_name=${NEW_TAG}" >> $GITHUB_OUTPUT
echo "final_tag=${NEW_TAG}" >> $GITHUB_OUTPUT
fi
shell: bash
- name: Create and Push Release Tag
if: ${{ !inputs.dry_run && inputs.channel == 'internal' }}
env:
FINAL_TAG: ${{ steps.calculate_tags.outputs.final_tag }}
run: |
echo "Tagging and pushing release: $FINAL_TAG"
git tag "$FINAL_TAG"
git push origin "$FINAL_TAG"
shell: bash
call-release-workflow:
if: ${{ !inputs.dry_run && inputs.channel == 'internal' }}
needs: determine-tags
uses: ./.github/workflows/release.yml
with:
tag_name: ${{ needs.determine-tags.outputs.final_tag }}
channel: ${{ inputs.channel }}
base_version: ${{ inputs.base_version }}
build_desktop: ${{ inputs.build_desktop }}
secrets: inherit
call-promote-workflow:
if: ${{ !inputs.dry_run && inputs.channel != 'internal' }}
needs: determine-tags
uses: ./.github/workflows/promote.yml
with:
tag_name: ${{ needs.determine-tags.outputs.tag_to_process }}
release_name: ${{ needs.determine-tags.outputs.release_name }}
final_tag: ${{ needs.determine-tags.outputs.final_tag }}
channel: ${{ inputs.channel }}
base_version: ${{ inputs.base_version }}
from_channel: ${{ needs.determine-tags.outputs.from_channel }}
secrets: inherit
cleanup-on-failure:
needs: [determine-tags, call-release-workflow]
if: ${{ (failure() || cancelled()) && !inputs.dry_run && inputs.channel == 'internal' }}
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Delete Failed or Cancelled Tag
env:
FINAL_TAG: ${{ needs.determine-tags.outputs.final_tag }}
run: |
if [ -n "$FINAL_TAG" ]; then
echo "Release workflow failed or was cancelled. Deleting tag $FINAL_TAG to allow a clean retry..."
git push origin :refs/tags/"$FINAL_TAG" || echo "Tag was not pushed or already deleted."
else
echo "No tag was created to delete."
fi

View file

@ -0,0 +1,29 @@
name: Dependency Submission
on:
push:
branches: [ 'main' ]
workflow_dispatch:
permissions:
contents: write
jobs:
dependency-submission:
runs-on: ubuntu-24.04
if: github.repository == 'meshtastic/Meshtastic-Android'
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
token: ${{ github.token }}
- name: Generate and submit dependency graph
uses: gradle/actions/dependency-submission@v6
with:
build-scan-publish: true
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
build-scan-terms-of-use-agree: "yes"

83
.github/workflows/docs.yml vendored Normal file
View file

@ -0,0 +1,83 @@
# This workflow builds and deploys the Dokka documentation to GitHub Pages.
name: Deploy Documentation
on:
push:
branches:
- main
paths:
# Only rebuild docs when source code changes (Dokka generates from KDoc)
- 'app/src/**'
- 'core/**/src/**'
- 'feature/**/src/**'
- 'desktop/src/**'
- 'build-logic/**'
- 'build.gradle.kts'
- 'settings.gradle.kts'
- '.github/workflows/docs.yml'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
ref:
description: 'The branch, tag or SHA to checkout'
required: false
type: string
# Allow this workflow to be called from other workflows
workflow_call:
inputs:
ref:
description: 'The branch, tag or SHA to checkout'
required: false
type: string
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment; cancel queued runs since only the latest
# main state matters for documentation.
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build-docs:
if: github.repository == 'meshtastic/Meshtastic-Android'
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: 'recursive'
ref: ${{ inputs.ref || '' }}
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Build Dokka HTML documentation
run: ./gradlew dokkaGeneratePublicationHtml
- name: Upload artifact
uses: actions/upload-pages-artifact@v5
with:
path: build/dokka/html
deploy:
if: github.repository == 'meshtastic/Meshtastic-Android'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-24.04-arm
needs: build-docs
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5

26
.github/workflows/main-check.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: Main CI (Verify & Build)
on:
push:
branches: [ main ]
paths-ignore:
- '**/*.md'
- 'docs/**'
permissions:
contents: read
concurrency:
group: main-${{ github.ref }}
cancel-in-progress: true
jobs:
validate-and-build:
if: github.repository == 'meshtastic/Meshtastic-Android'
uses: ./.github/workflows/reusable-check.yml
with:
run_lint: true
run_unit_tests: false
run_desktop_builds: false
upload_artifacts: true
secrets: inherit

View file

@ -0,0 +1,71 @@
name: Main Push Changelog
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: read
concurrency:
group: main-push-${{ github.ref }}
cancel-in-progress: true
jobs:
main-push-changelog:
name: Generate main push changelog
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Determine last tag
id: last_prod_tag
run: |
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
echo "Found last tag: $TAG"
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
- name: Generate changelog from last tag to current
if: steps.last_prod_tag.outputs.tag != ''
uses: mikepenz/release-changelog-builder-action@v6
id: changelog
with:
configuration: .github/release.yml
fromTag: ${{ steps.last_prod_tag.outputs.tag }}
toTag: ${{ github.sha }}
outputFile: main-push-changelog.md
fetchViaCommits: true
fetchReviewers: false
fetchReleaseInformation: false
fetchReviews: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload changelog artifact
if: steps.last_prod_tag.outputs.tag != ''
uses: actions/upload-artifact@v7
with:
name: main-push-changelog
path: main-push-changelog.md
- name: Print main push summary
env:
LAST_TAG: ${{ steps.last_prod_tag.outputs.tag }}
run: |
echo "Pushed to main"
echo "SHA: $GITHUB_SHA"
echo "Actor: $GITHUB_ACTOR"
echo "Ref: $GITHUB_REF"
echo ""
if [ "$LAST_TAG" != "" ]; then
echo "Changelog since last tag ($LAST_TAG)":
echo "----------------------------------------"
cat main-push-changelog.md
else
echo "No tag found. Skipping changelog generation."
fi

38
.github/workflows/merge-queue.yml vendored Normal file
View file

@ -0,0 +1,38 @@
name: Android CI (Merge Queue)
on:
merge_group:
types: [checks_requested]
permissions:
contents: read
concurrency:
group: build-mq-${{ github.ref }}
cancel-in-progress: true
jobs:
android-check:
if: github.repository == 'meshtastic/Meshtastic-Android'
uses: ./.github/workflows/reusable-check.yml
with:
run_lint: true
run_unit_tests: true
upload_artifacts: false
secrets: inherit
check-workflow-status:
name: Check Workflow Status
runs-on: ubuntu-24.04-arm
permissions: {}
needs:
- android-check
if: always()
steps:
- name: Check Workflow Status
run: |
if [[ "${{ needs.android-check.result }}" == "failure" || "${{ needs.android-check.result }}" == "cancelled" ]]; then
echo "::error::Android Check failed"
exit 1
fi
echo "All jobs passed successfully"

View file

@ -0,0 +1,204 @@
name: Issue Triage (Models)
on:
issues:
types: [opened]
permissions:
issues: write
models: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number }}
cancel-in-progress: true
jobs:
triage:
if: ${{ github.repository == 'meshtastic/Meshtastic-Android' && github.event.issue.user.type != 'Bot' }}
runs-on: ubuntu-24.04-arm
steps:
# ─────────────────────────────────────────────────────────────────────────
# Step 1: Quality check (spam/AI-slop detection) - runs first, exits early if spam
# ─────────────────────────────────────────────────────────────────────────
- name: Detect spam or low-quality content
uses: actions/ai-inference@v2
id: quality
continue-on-error: true
with:
max-tokens: 20
prompt: |
Is this GitHub issue spam, AI-generated slop, or low quality?
Title: ${{ github.event.issue.title }}
Body: ${{ github.event.issue.body }}
Respond with exactly one of: spam, ai-generated, needs-review, ok
system-prompt: You detect spam and low-quality contributions. Be conservative - only flag obvious spam or AI slop.
model: openai/gpt-4o-mini
- name: Apply quality label if needed
if: steps.quality.outputs.response != '' && steps.quality.outputs.response != 'ok'
uses: actions/github-script@v9
env:
QUALITY_LABEL: ${{ steps.quality.outputs.response }}
with:
script: |
const label = (process.env.QUALITY_LABEL || '').trim().toLowerCase();
const labelMeta = {
'spam': { color: 'd73a4a', description: 'Possible spam' },
'ai-generated': { color: 'fbca04', description: 'Possible AI-generated low-quality content' },
'needs-review': { color: 'f9d0c4', description: 'Needs human review' },
};
const meta = labelMeta[label];
if (!meta) return;
// Ensure label exists
try {
await github.rest.issues.getLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label });
} catch (e) {
if (e.status !== 404) throw e;
await github.rest.issues.createLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label, color: meta.color, description: meta.description });
}
// Apply label
await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.issue.number, labels: [label] });
// Set output to skip remaining steps
core.setOutput('is_spam', 'true');
# ─────────────────────────────────────────────────────────────────────────
# Step 2: Duplicate detection - only if not spam
# ─────────────────────────────────────────────────────────────────────────
- name: Detect duplicate issues
if: steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == ''
uses: pelikhan/action-genai-issue-dedup@bdb3b5d9451c1090ffcdf123d7447a5e7c7a2528 # v0.0.19
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# ─────────────────────────────────────────────────────────────────────────
# Step 3: Completeness check + auto-labeling (combined into one AI call)
# ─────────────────────────────────────────────────────────────────────────
- name: Determine if completeness check should be skipped
if: steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == ''
uses: actions/github-script@v9
id: check-skip
with:
script: |
const title = (context.payload.issue.title || '').toLowerCase();
const labels = (context.payload.issue.labels || []).map(label => label.name);
const hasFeatureRequest = title.includes('feature request');
const hasEnhancement = labels.includes('enhancement');
const shouldSkip = hasFeatureRequest && hasEnhancement;
core.setOutput('should_skip', shouldSkip ? 'true' : 'false');
- name: Analyze issue completeness and determine labels
if: (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '') && steps.check-skip.outputs.should_skip != 'true'
uses: actions/ai-inference@v2
id: analysis
continue-on-error: true
with:
prompt: |
Analyze this GitHub issue for the Meshtastic Android app and determine if it needs labels.
If this looks like a bug in the Android app (crash, ANR, UI glitch, connection failure, Bluetooth issues, notification problems, map issues), request app logs and explain how to get them:
Android app debug logs:
- Open the Meshtastic app, go to Settings > Debug > Save Logs
- Reproduce the problem, then share/attach the exported log file
Android logcat (if app logs are insufficient):
- Connect phone via USB with USB debugging enabled
- Run: adb logcat -s Meshtastic:* *:E
- Reproduce the problem, then copy/paste the relevant output
Also request key context if missing: Android version, phone model, app version, Meshtastic device model, firmware version, connection type (BLE/USB/TCP), steps to reproduce, expected vs actual.
Respond ONLY with JSON:
{
"complete": true|false,
"comment": "Your helpful comment requesting missing info, or empty string if complete",
"label": "needs-logs" | "needs-info" | "none"
}
Use "needs-logs" if this is an app bug AND no logs are attached.
Use "needs-info" if basic info like firmware version or steps to reproduce are missing.
Use "none" if the issue is complete or is a feature request.
Title: ${{ github.event.issue.title }}
Body: ${{ github.event.issue.body }}
system-prompt: You are a helpful assistant that triages GitHub issues. Be conservative with labels.
model: openai/gpt-4o-mini
- name: Process analysis result
if: (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '') && steps.check-skip.outputs.should_skip != 'true' && steps.analysis.outputs.response != ''
uses: actions/github-script@v9
id: process
env:
AI_RESPONSE: ${{ steps.analysis.outputs.response }}
with:
script: |
const raw = (process.env.AI_RESPONSE || '').trim();
let complete = false;
let comment = '';
let label = 'none';
try {
const parsed = JSON.parse(raw);
complete = !!parsed.complete;
comment = (parsed.comment ?? '').toString().trim();
label = (parsed.label ?? 'none').toString().trim().toLowerCase();
} catch {
// If JSON parse fails, treat as incomplete with raw response as comment
complete = false;
comment = raw;
label = 'none';
}
// Validate label
const allowedLabels = new Set(['needs-logs', 'needs-info', 'none']);
if (!allowedLabels.has(label)) label = 'none';
core.setOutput('should_comment', (!complete && comment.length > 0) ? 'true' : 'false');
core.setOutput('comment_body', comment);
core.setOutput('label', label);
- name: Apply triage label
if: steps.process.outputs.label != '' && steps.process.outputs.label != 'none'
uses: actions/github-script@v9
env:
LABEL_NAME: ${{ steps.process.outputs.label }}
with:
script: |
const label = process.env.LABEL_NAME;
const labelMeta = {
'needs-logs': { color: 'cfd3d7', description: 'Device logs requested for triage' },
'needs-info': { color: 'f9d0c4', description: 'More information requested for triage' },
};
const meta = labelMeta[label];
if (!meta) return;
// Ensure label exists
try {
await github.rest.issues.getLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label });
} catch (e) {
if (e.status !== 404) throw e;
await github.rest.issues.createLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label, color: meta.color, description: meta.description });
}
// Apply label
await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.issue.number, labels: [label] });
- name: Comment on issue
if: steps.process.outputs.should_comment == 'true'
uses: actions/github-script@v9
env:
COMMENT_BODY: ${{ steps.process.outputs.comment_body }}
with:
script: |
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.issue.number,
body: process.env.COMMENT_BODY
});

144
.github/workflows/models_pr_triage.yml vendored Normal file
View file

@ -0,0 +1,144 @@
name: PR Triage (Models)
on:
pull_request_target:
types: [opened]
permissions:
pull-requests: write
issues: write
models: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
triage:
if: ${{ github.repository == 'meshtastic/Meshtastic-Android' && github.event.pull_request.user.type != 'Bot' }}
runs-on: ubuntu-24.04-arm
steps:
# ─────────────────────────────────────────────────────────────────────────
# Step 1: Check if PR already has automation/type labels (skip if so)
# ─────────────────────────────────────────────────────────────────────────
- name: Check existing labels
uses: actions/github-script@v9
id: check-labels
with:
script: |
const skipLabels = new Set(['automation', 'release']);
const typeLabels = new Set(['bugfix', 'enhancement', 'dependencies', 'repo', 'refactor']);
const prLabels = context.payload.pull_request.labels.map(l => l.name);
const shouldSkipAll = prLabels.some(l => skipLabels.has(l));
const hasTypeLabel = prLabels.some(l => typeLabels.has(l));
core.setOutput('skip_all', shouldSkipAll ? 'true' : 'false');
core.setOutput('has_type_label', hasTypeLabel ? 'true' : 'false');
# ─────────────────────────────────────────────────────────────────────────
# Step 2: Quality check (spam/AI-slop detection)
# ─────────────────────────────────────────────────────────────────────────
- name: Detect spam or low-quality content
if: steps.check-labels.outputs.skip_all != 'true'
uses: actions/ai-inference@v2
id: quality
continue-on-error: true
env:
PR_TITLE: ${{ github.event.pull_request.title }}
PR_BODY: ${{ github.event.pull_request.body }}
with:
max-tokens: 20
prompt: |
Is this GitHub pull request spam, AI-generated slop, or low quality?
Title: ${{ env.PR_TITLE }}
Body: ${{ env.PR_BODY }}
Respond with exactly one of: spam, ai-generated, needs-review, ok
system-prompt: You detect spam and low-quality contributions. Be conservative - only flag obvious spam or AI slop.
model: openai/gpt-4o-mini
- name: Apply quality label if needed
if: steps.check-labels.outputs.skip_all != 'true' && steps.quality.outputs.response != '' && steps.quality.outputs.response != 'ok'
uses: actions/github-script@v9
id: quality-label
env:
QUALITY_LABEL: ${{ steps.quality.outputs.response }}
with:
script: |
const label = (process.env.QUALITY_LABEL || '').trim().toLowerCase();
const labelMeta = {
'spam': { color: 'd73a4a', description: 'Possible spam' },
'ai-generated': { color: 'fbca04', description: 'Possible AI-generated low-quality content' },
'needs-review': { color: 'f9d0c4', description: 'Needs human review' },
};
const meta = labelMeta[label];
if (!meta) return;
// Ensure label exists
try {
await github.rest.issues.getLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label });
} catch (e) {
if (e.status !== 404) throw e;
await github.rest.issues.createLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label, color: meta.color, description: meta.description });
}
// Apply label
await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.pull_request.number, labels: [label] });
core.setOutput('is_spam', 'true');
# ─────────────────────────────────────────────────────────────────────────
# Step 3: Auto-label PR type (bugfix/enhancement/refactor)
# ─────────────────────────────────────────────────────────────────────────
- name: Classify PR for labeling
if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '')
uses: actions/ai-inference@v2
id: classify
continue-on-error: true
env:
PR_TITLE: ${{ github.event.pull_request.title }}
PR_BODY: ${{ github.event.pull_request.body }}
with:
max-tokens: 30
prompt: |
Classify this pull request for the Meshtastic Android app into exactly one category.
Return exactly one of: bugfix, enhancement, refactor
Use bugfix if it fixes a bug, crash, or incorrect behavior.
Use enhancement if it adds a new feature, improves performance, or adds new functionality.
Use refactor if it restructures code without changing behavior, cleans up code, or improves architecture.
Title: ${{ env.PR_TITLE }}
Body: ${{ env.PR_BODY }}
system-prompt: You classify pull requests into categories. Be conservative and pick the most appropriate single label.
model: openai/gpt-4o-mini
- name: Apply type label
if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && steps.classify.outputs.response != ''
uses: actions/github-script@v9
env:
TYPE_LABEL: ${{ steps.classify.outputs.response }}
with:
script: |
const label = (process.env.TYPE_LABEL || '').trim().toLowerCase();
const labelMeta = {
'bugfix': { color: 'd73a4a', description: 'Bug fix' },
'enhancement': { color: 'a2eeef', description: 'New feature or enhancement' },
'refactor': { color: 'c5def5', description: 'Code restructuring without behavior change' },
};
const meta = labelMeta[label];
if (!meta) return;
// Ensure label exists
try {
await github.rest.issues.getLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label });
} catch (e) {
if (e.status !== 404) throw e;
await github.rest.issues.createLabel({ owner: context.repo.owner, repo: context.repo.repo, name: label, color: meta.color, description: meta.description });
}
// Apply label
await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.pull_request.number, labels: [label] });

31
.github/workflows/moderate.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: AI Moderator
on:
issues:
types: [opened]
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
spam-detection:
if: github.repository == 'meshtastic/Meshtastic-Android'
runs-on: ubuntu-24.04-arm
permissions:
issues: write
pull-requests: write
models: read
contents: read
steps:
- uses: actions/checkout@v6
- uses: github/ai-moderator@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
spam-label: 'spam'
ai-label: 'ai-generated'
minimize-detected-comments: true
# Built-in prompt configuration (all enabled by default)
enable-spam-detection: true
enable-link-spam-detection: true
enable-ai-detection: true
# custom-prompt-path: '.github/prompts/my-custom.prompt.yml' # Optional

View file

@ -0,0 +1,78 @@
name: Post-Release Cleanup
on:
workflow_dispatch:
inputs:
base_version:
description: 'The base version to clean up (e.g., 2.3.0)'
required: true
type: string
confirm_deletion:
description: 'WARNING: This is a destructive action. Set to true to perform deletion. Defaults to a dry run.'
required: true
type: boolean
default: false
permissions:
contents: write
jobs:
cleanup_prereleases:
runs-on: ubuntu-24.04-arm
environment: Release
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Cleanup pre-releases and their tags
id: cleanup_releases
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BASE_VERSION="${{ github.event.inputs.base_version }}"
TAG_PREFIX="v${BASE_VERSION}-"
echo "Searching for pre-releases with tag prefix '$TAG_PREFIX'."
RELEASES_TO_DELETE=$(gh release list --json tagName,isPrerelease --limit 100 | jq -r --arg prefix "$TAG_PREFIX" '.[] | select(.isPrerelease == true and .tagName != null and (.tagName | startswith($prefix))) | .tagName')
if [ -z "$RELEASES_TO_DELETE" ]; then
echo "No pre-releases found for base version $BASE_VERSION."
else
if [[ "${{ github.event.inputs.confirm_deletion }}" == "true" ]]; then
echo "!!! DELETING RELEASES AND TAGS !!!"
echo "The following pre-releases and their tags will be deleted:"
echo "$RELEASES_TO_DELETE"
echo "$RELEASES_TO_DELETE" | xargs -n 1 gh release delete --cleanup-tag --yes
else
echo "DRY RUN: The following pre-releases and their tags would be deleted:"
echo "$RELEASES_TO_DELETE"
fi
fi
- name: Cleanup dangling pre-release tags
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BASE_VERSION="${{ github.event.inputs.base_version }}"
TAG_PREFIX="v${BASE_VERSION}-"
echo "Searching for any remaining remote pre-release tags with prefix '$TAG_PREFIX'."
# This finds all remote tags matching the pattern. Some may have been deleted in the previous step.
TAGS_TO_DELETE=$(git ls-remote --tags origin "refs/tags/${TAG_PREFIX}*" | awk '{print $2}' | sed 's|refs/tags/||')
if [ -z "$TAGS_TO_DELETE" ]; then
echo "No dangling pre-release tags found."
else
if [[ "${{ github.event.inputs.confirm_deletion }}" == "true" ]]; then
echo "!!! DELETING DANGLING TAGS !!!"
echo "The following pre-release tags will be deleted:"
# We pipe to xargs which will run the command for each tag.
# If a tag was already deleted by the previous 'release delete' step, this will fail for that tag.
# We add '|| true' to ignore any errors and ensure the workflow doesn't fail.
echo "$TAGS_TO_DELETE" | xargs -n 1 -I {} sh -c 'git push --delete origin {} || true'
else
echo "DRY RUN: The following dangling pre-release tags would be deleted:"
echo "$TAGS_TO_DELETE"
fi
fi

37
.github/workflows/pr_enforce_labels.yml vendored Normal file
View file

@ -0,0 +1,37 @@
name: Check PR Labels
on:
pull_request:
types: [edited, labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
permissions:
pull-requests: read
contents: read
jobs:
check-label:
# Skip bot PRs — they already have labels from the workflows/bots that create them
if: >-
github.event.pull_request.user.login != 'renovate[bot]' &&
github.event.pull_request.user.login != 'github-actions[bot]' &&
github.event.pull_request.user.login != 'dependabot[bot]' &&
github.event.pull_request.head.ref != 'scheduled-updates' &&
github.event.pull_request.head.ref != 'l10n_main'
runs-on: ubuntu-24.04-arm
steps:
- name: Check for PR labels
uses: actions/github-script@v9
with:
script: |
// Extract labels from the payload directly to avoid extra API calls
const latestLabels = context.payload.pull_request.labels.map(label => label.name);
const requiredLabels = ['bugfix', 'enhancement', 'automation', 'dependencies', 'repo', 'release', 'refactor'];
console.log('Labels from payload:', latestLabels);
const hasRequiredLabel = latestLabels.some(label => requiredLabels.includes(label));
if (!hasRequiredLabel) {
core.setFailed(`PR must have at least one of the following labels before it can be merged: ${requiredLabels.join(', ')}.`);
}

190
.github/workflows/promote.yml vendored Normal file
View file

@ -0,0 +1,190 @@
name: Promote Release
on:
workflow_call:
inputs:
base_version:
description: 'The base version for the release (e.g., 2.3.0)'
required: true
type: string
tag_name:
description: 'The tag that triggered the release'
required: true
type: string
release_name:
description: 'The desired name for the GitHub release'
required: true
type: string
final_tag:
description: 'The final tag for the release'
required: true
type: string
commit_sha:
description: 'The commit SHA to tag'
required: false
type: string
channel:
description: 'The channel to promote to'
required: true
type: string
from_channel:
description: 'The channel to promote from'
required: true
type: string
secrets:
GSERVICES:
required: true
KEYSTORE:
required: true
KEYSTORE_FILENAME:
required: true
KEYSTORE_PROPERTIES:
required: true
DATADOG_APPLICATION_ID:
required: true
DATADOG_CLIENT_TOKEN:
required: true
GOOGLE_MAPS_API_KEY:
required: true
GOOGLE_PLAY_JSON_KEY:
required: true
GRADLE_ENCRYPTION_KEY:
required: true
DISCORD_WEBHOOK_ANDROID:
required: false
concurrency:
group: ${{ github.workflow }}-${{ inputs.tag_name }}
cancel-in-progress: true
permissions:
contents: write
pull-requests: read
id-token: write
attestations: write
jobs:
prepare-build-info:
runs-on: ubuntu-24.04-arm
outputs:
APP_VERSION_NAME: ${{ steps.prep_version.outputs.APP_VERSION_NAME }}
APP_VERSION_CODE: ${{ steps.calculate_version_code.outputs.versionCode }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.commit_sha || inputs.tag_name }}
fetch-depth: 0
submodules: 'recursive'
- name: Prep APP_VERSION_NAME
id: prep_version
env:
INPUT_TAG_NAME: ${{ inputs.tag_name }}
run: |
VERSION_NAME=$(echo $INPUT_TAG_NAME | sed 's/-.*//' | sed 's/v//')
echo "APP_VERSION_NAME=$VERSION_NAME" >> $GITHUB_OUTPUT
echo "Parsed Version: $VERSION_NAME"
- name: Extract VERSION_CODE_OFFSET from config.properties
id: get_version_code_offset
run: |
OFFSET=$(grep '^VERSION_CODE_OFFSET=' config.properties | cut -d'=' -f2)
echo "VERSION_CODE_OFFSET=$OFFSET" >> $GITHUB_OUTPUT
- name: Calculate Version Code from Git Commit Count
id: calculate_version_code
run: |
COMMIT_COUNT=$(git rev-list --count HEAD)
OFFSET=${{ steps.get_version_code_offset.outputs.VERSION_CODE_OFFSET }}
VERSION_CODE=$((COMMIT_COUNT + OFFSET))
echo "versionCode=$VERSION_CODE" >> $GITHUB_OUTPUT
shell: bash
promote-release:
runs-on: ubuntu-24.04-arm
environment: Release
needs: [ prepare-build-info ]
steps:
- name: Promote to next channel
uses: kevin-david/promote-play-release@v1.2.0
with:
service-account-json-raw: ${{ secrets.GOOGLE_PLAY_JSON_KEY }}
package-name: 'com.geeksville.mesh'
from-track: ${{ inputs.from_channel == 'closed' && 'NewAlpha' || (inputs.from_channel == 'open' && 'beta' || 'internal') }}
to-track: ${{ inputs.channel == 'closed' && 'NewAlpha' || (inputs.channel == 'open' && 'beta' || 'production') }}
user-fraction: ${{ (inputs.channel == 'production' && '0.1') || (inputs.channel == 'open' && '0.5') || '1.0' }}
update-github-release:
runs-on: ubuntu-24.04-arm
needs: [ prepare-build-info, promote-release ]
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.commit_sha || inputs.tag_name }}
fetch-depth: 0
submodules: 'recursive'
- name: Push Git Tag on Success
if: ${{ inputs.commit_sha != '' }}
run: |
git tag ${{ inputs.final_tag }} ${{ inputs.commit_sha }}
git push origin ${{ inputs.final_tag }}
- name: Update GitHub Release with gh CLI
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release edit ${{ inputs.tag_name }} \
--tag ${{ inputs.final_tag }} \
--title "${{ inputs.release_name }} (${{ needs.prepare-build-info.outputs.APP_VERSION_CODE }})" \
--draft=false \
--prerelease=${{ inputs.channel != 'production' }}
- name: Notify Discord
if: ${{ inputs.channel != 'internal' }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_ANDROID }}
VERSION: ${{ inputs.final_tag }}
CHANNEL: ${{ inputs.channel }}
run: |
if [[ -z "$DISCORD_WEBHOOK" ]]; then
echo "No Discord webhook provided. Skipping notification."
exit 0
fi
# Determine Track Name for Display
if [ "$CHANNEL" == "closed" ]; then TRACK="Alpha (Closed)"; fi
if [ "$CHANNEL" == "open" ]; then TRACK="Beta (Open)"; fi
if [ "$CHANNEL" == "production" ]; then TRACK="Production"; fi
# Construct JSON Payload
PAYLOAD=$(cat <<EOF
{
"content": null,
"embeds": [
{
"title": "🚀 New Android Release: $VERSION",
"description": "A new build has been promoted to the **$TRACK** track.",
"color": 5763719,
"fields": [
{
"name": "Track",
"value": "$TRACK",
"inline": true
},
{
"name": "Version",
"value": "$VERSION",
"inline": true
}
],
"url": "https://github.com/meshtastic/Meshtastic-Android/releases/tag/$VERSION"
}
]
}
EOF
)
curl -H "Content-Type: application/json" -d "$PAYLOAD" "$DISCORD_WEBHOOK"

51
.github/workflows/publish-core.yml vendored Normal file
View file

@ -0,0 +1,51 @@
name: Publish Core Libraries
on:
release:
types: [created]
workflow_dispatch:
inputs:
version_suffix:
description: 'Version suffix (e.g. -alpha01, -SNAPSHOT)'
required: false
default: '-SNAPSHOT'
jobs:
publish:
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
- name: Configure Version
id: version
env:
EVENT_NAME: ${{ github.event_name }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
VERSION_SUFFIX: ${{ inputs.version_suffix }}
run: |
if [[ "$EVENT_NAME" == "release" ]]; then
echo "VERSION_NAME=$RELEASE_TAG" >> $GITHUB_ENV
else
# Use a timestamp-based version for manual/branch builds to avoid collisions
# or use the base version + suffix
BASE_VERSION=$(grep "VERSION_NAME_BASE" config.properties | cut -d'=' -f2)
echo "VERSION_NAME=${BASE_VERSION}${VERSION_SUFFIX}" >> $GITHUB_ENV
fi
- name: Publish to GitHub Packages
run: ./gradlew :core:api:publish :core:model:publish :core:proto:publish
env:
GITHUB_ACTOR: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,67 @@
name: "Pull Request Labeler"
on:
pull_request_target:
types: [opened, synchronize]
# Do not execute arbitrary code on this workflow.
# See warnings at https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows#pull_request_target
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-24.04-arm
steps:
- name: Auto-label PR
uses: actions/github-script@v9
with:
script: |
const branch = context.payload.pull_request.head.ref;
const labels = new Set();
// enhancement: branch contains feat
if (/feat/i.test(branch)) labels.add('enhancement');
// bugfix: branch starts with fix or bug
if (/^(fix|bug)/i.test(branch)) labels.add('bugfix');
// refactor: branch starts with refactor
if (/^refactor/i.test(branch)) labels.add('refactor');
// repo: branch contains repo or ci
if (/repo|ci/i.test(branch)) {
labels.add('repo');
} else {
// Also label 'repo' if .github files were changed (needs one API call)
try {
const files = await github.paginate(
github.rest.pulls.listFiles,
{ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.payload.pull_request.number, per_page: 100 },
(res) => res.data.map(f => f.filename)
);
if (files.some(f => f.startsWith('.github/'))) labels.add('repo');
} catch (e) {
core.warning(`Could not list PR files (rate limited?): ${e.message}`);
}
}
if (labels.size > 0) {
const labelArray = [...labels];
core.info(`Applying labels: ${labelArray.join(', ')}`);
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: labelArray,
});
} catch (e) {
core.warning(`Could not apply labels (rate limited?): ${e.message}`);
}
} else {
core.info('No labels matched for this PR.');
}

134
.github/workflows/pull-request.yml vendored Normal file
View file

@ -0,0 +1,134 @@
name: Pull Request CI
on:
pull_request:
branches: [ main ]
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
# 1. CHANGE DETECTION: Prevents unnecessary builds
check-changes:
if: github.repository == 'meshtastic/Meshtastic-Android' && !( github.head_ref == 'scheduled-updates' || github.head_ref == 'l10n_main' )
runs-on: ubuntu-24.04-arm
outputs:
android: ${{ steps.filter.outputs.android }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v4
id: filter
with:
token: ''
filters: |
android:
# CI/workflow implementation
- '.github/workflows/**'
- '.github/actions/**'
# Product modules validated by reusable-check
- 'app/**'
- 'baselineprofile/**'
- 'desktop/**'
- 'core/**'
- 'feature/**'
# Shared build infrastructure
- 'build-logic/**'
- 'config/**'
- 'gradle/**'
# Root build entrypoints/config that can alter task graph or outputs
- 'build.gradle.kts'
- 'config.properties'
- 'compose_compiler_config.conf'
- 'gradle.properties'
- 'gradlew'
- 'gradlew.bat'
- 'settings.gradle.kts'
- 'test.gradle.kts'
# 1b. FILTER DRIFT CHECK: Ensures check-changes stays aligned with module roots
verify-check-changes-filter:
if: github.repository == 'meshtastic/Meshtastic-Android' && !( github.head_ref == 'scheduled-updates' || github.head_ref == 'l10n_main' )
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v6
- name: Verify module roots are represented in check-changes filter
run: |
python3 - <<'PY'
import re
from pathlib import Path
settings = Path('settings.gradle.kts').read_text()
workflow = Path('.github/workflows/pull-request.yml').read_text()
module_roots = {
module.split(':')[0]
for module in re.findall(r'":([^"]+)"', settings)
}
allowed_extra_roots = {'baselineprofile'}
expected_roots = module_roots | allowed_extra_roots
filter_paths = {
path.split('/')[0]
for path in re.findall(r"-\s*'([^']+/\*\*)'", workflow)
}
actual_module_roots = filter_paths & expected_roots
missing = sorted(expected_roots - actual_module_roots)
unexpected = sorted(actual_module_roots - expected_roots)
if missing or unexpected:
print('check-changes filter drift detected:')
if missing:
print(' Missing roots:', ', '.join(missing))
if unexpected:
print(' Unexpected roots:', ', '.join(unexpected))
raise SystemExit(1)
print('check-changes filter is aligned with settings.gradle module roots.')
PY
# 2. VALIDATION & BUILD: Delegate to reusable-check.yml
# We disable coverage and desktop builds for PRs to keep feedback fast
# (< 10 mins). Desktop compilation is already covered by the :desktop:test
# task in the shard-app test shard.
validate-and-build:
needs: check-changes
if: needs.check-changes.outputs.android == 'true'
uses: ./.github/workflows/reusable-check.yml
with:
run_lint: true
run_unit_tests: true
run_coverage: false
run_desktop_builds: false
upload_artifacts: true
secrets: inherit
# 3. WORKFLOW STATUS: Ensures required checks are satisfied
check-workflow-status:
name: Check Workflow Status
runs-on: ubuntu-24.04-arm
permissions: {}
needs: [check-changes, verify-check-changes-filter, validate-and-build]
if: always()
steps:
- name: Check Workflow Status
run: |
if [[ "${{ needs.verify-check-changes-filter.result }}" == "failure" || "${{ needs.verify-check-changes-filter.result }}" == "cancelled" ]]; then
echo "::error::check-changes filter verification failed"
exit 1
fi
# If changes were detected but build failed, fail the status check
if [[ "${{ needs.check-changes.outputs.android }}" == "true" && ("${{ needs.validate-and-build.result }}" == "failure" || "${{ needs.validate-and-build.result }}" == "cancelled") ]]; then
echo "::error::Android Check failed"
exit 1
fi
# If no changes were detected, this still succeeds to satisfy required status check
echo "Workflow status satisfied."

353
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,353 @@
name: Make Release
on:
workflow_call:
inputs:
base_version:
description: 'The base version for the release (e.g., 2.3.0)'
required: true
type: string
tag_name:
description: 'The tag that triggered the release'
required: true
type: string
commit_sha:
description: 'The commit SHA to build and tag'
required: false
type: string
channel:
description: 'The channel to create a release for or promote to'
required: true
type: string
build_desktop:
description: 'Whether to build the desktop distribution'
required: false
type: boolean
default: false
secrets:
GSERVICES:
required: true
KEYSTORE:
required: true
KEYSTORE_FILENAME:
required: true
KEYSTORE_PROPERTIES:
required: true
DATADOG_APPLICATION_ID:
required: true
DATADOG_CLIENT_TOKEN:
required: true
GOOGLE_MAPS_API_KEY:
required: true
GOOGLE_PLAY_JSON_KEY:
required: true
GRADLE_ENCRYPTION_KEY:
required: true
GRADLE_CACHE_URL:
required: false
GRADLE_CACHE_USERNAME:
required: false
GRADLE_CACHE_PASSWORD:
required: false
INTERNAL_BUILDS_HOST:
required: false
INTERNAL_BUILDS_HOST_PAT:
required: false
concurrency:
group: ${{ github.workflow }}-${{ inputs.tag_name }}
cancel-in-progress: true
permissions:
contents: write
pull-requests: read
id-token: write
attestations: write
jobs:
prepare-build-info:
runs-on: ubuntu-24.04-arm
outputs:
APP_VERSION_NAME: ${{ steps.prep_version.outputs.APP_VERSION_NAME }}
APP_VERSION_CODE: ${{ steps.calculate_version_code.outputs.versionCode }}
env:
GRADLE_CACHE_URL: ${{ secrets.GRADLE_CACHE_URL }}
GRADLE_CACHE_USERNAME: ${{ secrets.GRADLE_CACHE_USERNAME }}
GRADLE_CACHE_PASSWORD: ${{ secrets.GRADLE_CACHE_PASSWORD }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.tag_name }}
fetch-depth: 0
submodules: 'recursive'
- name: Prep APP_VERSION_NAME
id: prep_version
env:
INPUT_TAG_NAME: ${{ inputs.tag_name }}
run: |
VERSION_NAME=$(echo $INPUT_TAG_NAME | sed 's/-.*//' | sed 's/v//')
echo "APP_VERSION_NAME=$VERSION_NAME" >> $GITHUB_OUTPUT
echo "Parsed Version: $VERSION_NAME"
- name: Extract VERSION_CODE_OFFSET from config.properties
id: get_version_code_offset
run: |
OFFSET=$(grep '^VERSION_CODE_OFFSET=' config.properties | cut -d'=' -f2)
echo "VERSION_CODE_OFFSET=$OFFSET" >> $GITHUB_OUTPUT
- name: Calculate Version Code from Git Commit Count
id: calculate_version_code
run: |
COMMIT_COUNT=$(git rev-list --count HEAD)
OFFSET=${{ steps.get_version_code_offset.outputs.VERSION_CODE_OFFSET }}
VERSION_CODE=$((COMMIT_COUNT + OFFSET))
echo "versionCode=$VERSION_CODE" >> $GITHUB_OUTPUT
shell: bash
release-google:
runs-on: ubuntu-24.04
needs: [prepare-build-info]
environment: Release
env:
GRADLE_CACHE_URL: ${{ secrets.GRADLE_CACHE_URL }}
GRADLE_CACHE_USERNAME: ${{ secrets.GRADLE_CACHE_USERNAME }}
GRADLE_CACHE_PASSWORD: ${{ secrets.GRADLE_CACHE_PASSWORD }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.tag_name }}
fetch-depth: 0
submodules: 'recursive'
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: 'false'
- name: Load secrets
env:
GSERVICES: ${{ secrets.GSERVICES }}
KEYSTORE: ${{ secrets.KEYSTORE }}
KEYSTORE_FILENAME: ${{ secrets.KEYSTORE_FILENAME }}
KEYSTORE_PROPERTIES: ${{ secrets.KEYSTORE_PROPERTIES }}
DATADOG_APPLICATION_ID: ${{ secrets.DATADOG_APPLICATION_ID }}
DATADOG_CLIENT_TOKEN: ${{ secrets.DATADOG_CLIENT_TOKEN }}
GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
GOOGLE_PLAY_JSON_KEY: ${{ secrets.GOOGLE_PLAY_JSON_KEY }}
run: |
rm -f ./app/google-services.json
echo $GSERVICES > ./app/google-services.json
echo $KEYSTORE | base64 -di > ./app/$KEYSTORE_FILENAME
echo "$KEYSTORE_PROPERTIES" > ./keystore.properties
echo "datadogApplicationId=$DATADOG_APPLICATION_ID" >> ./secrets.properties
echo "datadogClientToken=$DATADOG_CLIENT_TOKEN" >> ./secrets.properties
echo "MAPS_API_KEY=$GOOGLE_MAPS_API_KEY" >> ./secrets.properties
echo "$GOOGLE_PLAY_JSON_KEY" > ./fastlane/play-store-credentials.json
- name: Setup Fastlane
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4.9'
bundler-cache: true
- name: Build and Deploy Google Play to Internal Track with Fastlane
env:
VERSION_NAME: ${{ needs.prepare-build-info.outputs.APP_VERSION_NAME }}
VERSION_CODE: ${{ needs.prepare-build-info.outputs.APP_VERSION_CODE }}
run: bundle exec fastlane internal
- name: List outputs
run: ls -R app/build/outputs/
- name: Upload Google AAB artifact
if: always()
uses: actions/upload-artifact@v7
with:
name: google-aab
path: app/build/outputs/bundle/googleRelease/app-google-release.aab
retention-days: 1
- name: Upload Google APK artifact
if: always()
uses: actions/upload-artifact@v7
with:
name: google-apk
path: app/build/outputs/apk/google/release/*.apk
retention-days: 1
- name: Attest Google AAB provenance
if: success()
uses: actions/attest-build-provenance@v4
with:
subject-path: app/build/outputs/bundle/googleRelease/app-google-release.aab
- name: Attest Google APK provenance
if: success()
uses: actions/attest-build-provenance@v4
with:
subject-path: app/build/outputs/apk/google/release/*.apk
release-fdroid:
runs-on: ubuntu-24.04
needs: [prepare-build-info]
environment: Release
env:
GRADLE_CACHE_URL: ${{ secrets.GRADLE_CACHE_URL }}
GRADLE_CACHE_USERNAME: ${{ secrets.GRADLE_CACHE_USERNAME }}
GRADLE_CACHE_PASSWORD: ${{ secrets.GRADLE_CACHE_PASSWORD }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.tag_name }}
fetch-depth: 0
submodules: 'recursive'
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: 'false'
- name: Load secrets
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
KEYSTORE_FILENAME: ${{ secrets.KEYSTORE_FILENAME }}
KEYSTORE_PROPERTIES: ${{ secrets.KEYSTORE_PROPERTIES }}
run: |
echo $KEYSTORE | base64 -di > ./app/$KEYSTORE_FILENAME
echo "$KEYSTORE_PROPERTIES" > ./keystore.properties
- name: Setup Fastlane
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4.9'
bundler-cache: true
- name: Build F-Droid with Fastlane
env:
VERSION_NAME: ${{ needs.prepare-build-info.outputs.APP_VERSION_NAME }}
VERSION_CODE: ${{ needs.prepare-build-info.outputs.APP_VERSION_CODE }}
run: bundle exec fastlane fdroid_build
- name: List outputs
run: ls -R app/build/outputs/
- name: Upload F-Droid APK artifact
if: always()
uses: actions/upload-artifact@v7
with:
name: fdroid-apk
path: app/build/outputs/apk/fdroid/release/*.apk
retention-days: 1
- name: Attest F-Droid APK provenance
if: success()
uses: actions/attest-build-provenance@v4
with:
subject-path: app/build/outputs/apk/fdroid/release/*.apk
release-desktop:
if: ${{ inputs.build_desktop }}
runs-on: ${{ matrix.os }}
needs: [prepare-build-info]
environment: Release
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-24.04, ubuntu-24.04-arm]
env:
GRADLE_CACHE_URL: ${{ secrets.GRADLE_CACHE_URL }}
GRADLE_CACHE_USERNAME: ${{ secrets.GRADLE_CACHE_USERNAME }}
GRADLE_CACHE_PASSWORD: ${{ secrets.GRADLE_CACHE_PASSWORD }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.tag_name }}
fetch-depth: 0
submodules: 'recursive'
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: 'false'
- name: Install dependencies for AppImage
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libfuse2
- name: Package Native Distributions
env:
ORG_GRADLE_PROJECT_appVersionName: ${{ needs.prepare-build-info.outputs.APP_VERSION_NAME }}
APPIMAGE_EXTRACT_AND_RUN: 1
run: ./gradlew :desktop:packageReleaseDistributionForCurrentOS -PaboutLibraries.release=true --no-daemon
- name: List Desktop Binaries
if: runner.os == 'Linux'
run: ls -R desktop/build/compose/binaries/main-release
- name: Upload Desktop Artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: desktop-${{ runner.os }}-${{ runner.arch }}
path: |
desktop/build/compose/binaries/main-release/*/*.dmg
desktop/build/compose/binaries/main-release/*/*.msi
desktop/build/compose/binaries/main-release/*/*.exe
desktop/build/compose/binaries/main-release/*/*.deb
desktop/build/compose/binaries/main-release/*/*.rpm
desktop/build/compose/binaries/main-release/*/*.AppImage
retention-days: 1
if-no-files-found: ignore
github-release:
if: ${{ !cancelled() && !failure() }}
runs-on: ubuntu-24.04-arm
needs: [prepare-build-info, release-google, release-fdroid, release-desktop]
env:
INTERNAL_BUILDS_HOST: ${{ secrets.INTERNAL_BUILDS_HOST }}
permissions:
contents: write
id-token: write
attestations: write
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ inputs.tag_name }}
- name: Download all artifacts
uses: actions/download-artifact@v8
with:
path: ./artifacts
- name: Create or Update GitHub Release
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ inputs.tag_name }}
target_commitish: ${{ inputs.commit_sha || github.sha }}
name: ${{ inputs.tag_name }} (${{ needs.prepare-build-info.outputs.APP_VERSION_CODE }})
generate_release_notes: true
files: ./artifacts/**/*
draft: true
prerelease: true
- name: Create or Update internal GitHub Release
continue-on-error: true
if: ${{ env.INTERNAL_BUILDS_HOST != '' }}
uses: softprops/action-gh-release@v3
with:
repository: ${{ secrets.INTERNAL_BUILDS_HOST }}
token: ${{ secrets.INTERNAL_BUILDS_HOST_PAT }}
tag_name: ${{ inputs.tag_name }}
name: ${{ inputs.tag_name }} (${{ needs.prepare-build-info.outputs.APP_VERSION_CODE }})
generate_release_notes: false
files: ./artifacts/**/*
draft: false
prerelease: true

315
.github/workflows/reusable-check.yml vendored Normal file
View file

@ -0,0 +1,315 @@
name: Reusable Android Check
on:
workflow_call:
inputs:
run_lint:
type: boolean
default: true
run_unit_tests:
type: boolean
default: true
run_coverage:
type: boolean
default: true
run_desktop_builds:
type: boolean
default: true
upload_artifacts:
type: boolean
default: true
secrets:
GRADLE_ENCRYPTION_KEY:
required: false
CODECOV_TOKEN:
required: false
DATADOG_APPLICATION_ID:
required: false
DATADOG_CLIENT_TOKEN:
required: false
GOOGLE_MAPS_API_KEY:
required: false
GRADLE_CACHE_URL:
required: false
GRADLE_CACHE_USERNAME:
required: false
GRADLE_CACHE_PASSWORD:
required: false
env:
DATADOG_APPLICATION_ID: ${{ secrets.DATADOG_APPLICATION_ID }}
DATADOG_CLIENT_TOKEN: ${{ secrets.DATADOG_CLIENT_TOKEN }}
MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
GITHUB_TOKEN: ${{ github.token }}
GRADLE_CACHE_URL: ${{ secrets.GRADLE_CACHE_URL }}
GRADLE_CACHE_USERNAME: ${{ secrets.GRADLE_CACHE_USERNAME }}
GRADLE_CACHE_PASSWORD: ${{ secrets.GRADLE_CACHE_PASSWORD }}
# Fallback VERSION_CODE for the lint-check job itself (which computes the real
# value from git). Downstream jobs override this with the git-derived value.
VERSION_CODE: ${{ github.run_number }}
jobs:
# ── Lint & Static Analysis ──────────────────────────────────────────
lint-check:
runs-on: ubuntu-24.04
permissions:
contents: read
timeout-minutes: 30
outputs:
cache_read_only: ${{ steps.cache_config.outputs.cache_read_only }}
version_code: ${{ steps.version_code.outputs.version_code }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
filter: 'blob:none'
submodules: true
- name: Determine cache read-only setting
id: cache_config
shell: bash
run: |
if [[ "${{ github.ref }}" == "refs/heads/main" ]] || [[ "${{ github.event_name }}" == "merge_group" ]] || [[ "${{ github.ref }}" == gh-readonly-queue/* ]]; then
echo "cache_read_only=false" >> "$GITHUB_OUTPUT"
else
echo "cache_read_only=true" >> "$GITHUB_OUTPUT"
fi
- name: Calculate version code from git commit count
id: version_code
shell: bash
run: |
COMMIT_COUNT=$(git rev-list --count HEAD)
OFFSET=$(grep '^VERSION_CODE_OFFSET=' config.properties | cut -d'=' -f2 || echo 0)
VERSION_CODE=$((COMMIT_COUNT + OFFSET))
echo "version_code=$VERSION_CODE" >> "$GITHUB_OUTPUT"
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: ${{ steps.cache_config.outputs.cache_read_only }}
- name: Lint, Analysis & KMP Smoke Compile
if: inputs.run_lint == true
run: ./gradlew spotlessCheck detekt app:lintFdroidDebug app:lintGoogleDebug core:barcode:lintFdroidDebug core:barcode:lintGoogleDebug core:api:lintDebug kmpSmokeCompile -Pci=true --continue --scan
- name: KMP Smoke Compile (lint skipped)
if: inputs.run_lint == false
run: ./gradlew kmpSmokeCompile -Pci=true --continue --scan
# ── Sharded Unit Tests ──────────────────────────────────────────────
# Tests are split into 3 shards that run in parallel:
# shard-core: core:* KMP module tests (allTests)
# shard-feature: feature:* KMP module tests (allTests)
# shard-app: Pure-Android/JVM tests (app, desktop, core:barcode, etc.)
test-shards:
runs-on: ubuntu-24.04
permissions:
contents: read
timeout-minutes: 45
needs: lint-check
if: inputs.run_unit_tests == true
env:
VERSION_CODE: ${{ needs.lint-check.outputs.version_code }}
strategy:
fail-fast: false
matrix:
shard:
- name: shard-core
tasks: >-
:core:ble:allTests
:core:common:allTests
:core:data:allTests
:core:database:allTests
:core:domain:allTests
:core:model:allTests
:core:navigation:allTests
:core:network:allTests
:core:prefs:allTests
:core:repository:allTests
:core:service:allTests
:core:takserver:allTests
:core:testing:allTests
:core:ui:allTests
kover: >-
:core:ble:koverXmlReport
:core:common:koverXmlReport
:core:data:koverXmlReport
:core:database:koverXmlReport
:core:domain:koverXmlReport
:core:model:koverXmlReport
:core:navigation:koverXmlReport
:core:network:koverXmlReport
:core:prefs:koverXmlReport
:core:repository:koverXmlReport
:core:service:koverXmlReport
:core:takserver:koverXmlReport
:core:testing:koverXmlReport
:core:ui:koverXmlReport
- name: shard-feature
tasks: >-
:feature:connections:allTests
:feature:firmware:allTests
:feature:intro:allTests
:feature:map:allTests
:feature:messaging:allTests
:feature:node:allTests
:feature:settings:allTests
kover: >-
:feature:connections:koverXmlReport
:feature:firmware:koverXmlReport
:feature:intro:koverXmlReport
:feature:map:koverXmlReport
:feature:messaging:koverXmlReport
:feature:node:koverXmlReport
:feature:settings:koverXmlReport
- name: shard-app
tasks: >-
:app:testFdroidDebugUnitTest
:app:testGoogleDebugUnitTest
:desktop:test
:core:barcode:testFdroidDebugUnitTest
:core:barcode:testGoogleDebugUnitTest
kover: >-
:app:koverXmlReportFdroidDebug
:app:koverXmlReportGoogleDebug
:core:barcode:koverXmlReportFdroidDebug
:core:barcode:koverXmlReportGoogleDebug
:desktop:koverXmlReport
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: true
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: ${{ needs.lint-check.outputs.cache_read_only }}
- name: Run Tests & Coverage (${{ matrix.shard.name }})
run: |
kover_tasks=""
if [[ "${{ inputs.run_coverage }}" == "true" ]]; then
kover_tasks="${{ matrix.shard.kover }}"
fi
./gradlew ${{ matrix.shard.tasks }} $kover_tasks -Pci=true --continue --scan
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: meshtastic/Meshtastic-Android
flags: ${{ matrix.shard.name }}
fail_ci_if_error: false
report_type: test_results
files: "**/build/test-results/**/*.xml"
- name: Upload coverage to Codecov
if: ${{ !cancelled() && inputs.run_coverage }}
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: meshtastic/Meshtastic-Android
flags: ${{ matrix.shard.name }}
fail_ci_if_error: false
files: "**/build/reports/kover/report*.xml"
- name: Upload shard reports
if: ${{ always() && inputs.upload_artifacts }}
uses: actions/upload-artifact@v7
with:
name: reports-${{ matrix.shard.name }}
path: |
**/build/reports
**/build/test-results
retention-days: 7
# ── Android Build ────────────────────────────────────────────────────
android-check:
runs-on: ubuntu-24.04
permissions:
contents: read
timeout-minutes: 60
needs: lint-check
env:
VERSION_CODE: ${{ needs.lint-check.outputs.version_code }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: true
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: ${{ needs.lint-check.outputs.cache_read_only }}
- name: Build Android APKs
run: ./gradlew app:assembleFdroidDebug app:assembleGoogleDebug -Pci=true --parallel --configuration-cache --continue --scan
- name: Upload debug artifact
if: ${{ inputs.upload_artifacts }}
uses: actions/upload-artifact@v7
with:
name: app-debug-apks
path: app/build/outputs/apk/*/debug/*.apk
retention-days: 7
- name: Report App Size
if: always()
run: |
echo "### App Size Report" >> $GITHUB_STEP_SUMMARY
echo "| Artifact | Size |" >> $GITHUB_STEP_SUMMARY
echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY
find app/build/outputs/apk -name "*.apk" -exec du -h {} + | awk '{print "| " $2 " | " $1 " |"}' >> $GITHUB_STEP_SUMMARY
# ── Desktop Build ───────────────────────────────────────────────────
build-desktop:
name: Build Desktop Debug (${{ matrix.os }})
if: inputs.run_desktop_builds == true
runs-on: ${{ matrix.os }}
permissions:
contents: read
timeout-minutes: 60
needs: lint-check
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-24.04, ubuntu-24.04-arm]
env:
VERSION_CODE: ${{ needs.lint-check.outputs.version_code }}
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 1
submodules: true
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: ${{ needs.lint-check.outputs.cache_read_only }}
- name: Build Desktop
run: ./gradlew :desktop:createDistributable -Pci=true --scan
- name: Upload Desktop artifact
if: ${{ inputs.upload_artifacts }}
uses: actions/upload-artifact@v7
with:
name: desktop-app-${{ runner.os }}-${{ runner.arch }}
path: desktop/build/compose/binaries/main/app/
retention-days: 7

145
.github/workflows/scheduled-updates.yml vendored Normal file
View file

@ -0,0 +1,145 @@
name: Scheduled Updates (Firmware, Hardware, Translations)
on:
schedule:
- cron: '0 */4 * * *' # Run every 4 hours (was hourly — reduced to cut cascade CI cost)
workflow_dispatch: # Allow manual triggering
jobs:
update_assets:
runs-on: ubuntu-24.04
if: github.repository == 'meshtastic/Meshtastic-Android'
permissions:
contents: write # To commit files and push branches
pull-requests: write # To create pull requests
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{ secrets.CROWDIN_GITHUB_TOKEN }}
- name: Update firmware releases list
run: |
firmware_file_path="app/src/main/assets/firmware_releases.json"
temp_firmware_file="/tmp/new_firmware_releases.json"
echo "Fetching latest firmware releases..."
curl -s --fail https://api.meshtastic.org/github/firmware/list > "$temp_firmware_file"
if ! jq empty "$temp_firmware_file" 2>/dev/null; then
echo "::error::Firmware API returned invalid JSON data. Skipping firmware update."
else
if [ ! -f "$firmware_file_path" ] || ! jq --sort-keys . "$temp_firmware_file" | diff -q - <(jq --sort-keys . "$firmware_file_path"); then
echo "Changes detected in firmware list or local file missing. Updating $firmware_file_path."
cp "$temp_firmware_file" "$firmware_file_path"
else
echo "No changes detected in firmware list."
fi
fi
- name: Update hardware list
run: |
hardware_file_path="app/src/main/assets/device_hardware.json"
temp_hardware_file="/tmp/new_device_hardware.json"
echo "Fetching latest device hardware data..."
curl -s --fail https://api.meshtastic.org/resource/deviceHardware > "$temp_hardware_file"
if ! jq empty "$temp_hardware_file" 2>/dev/null; then
echo "::error::Hardware API returned invalid JSON data. Skipping hardware update."
else
if [ ! -f "$hardware_file_path" ] || ! jq --sort-keys . "$temp_hardware_file" | diff -q - <(jq --sort-keys . "$hardware_file_path"); then
echo "Changes detected in hardware list or local file missing. Updating $hardware_file_path."
cp "$temp_hardware_file" "$hardware_file_path"
else
echo "No changes detected in hardware list."
fi
fi
- name: Sync with Crowdin
uses: crowdin/github-action@v2
with:
base_url: 'https://meshtastic.crowdin.com/api/v2'
config: 'crowdin.yml'
crowdin_branch_name: 'main'
upload_sources: true
upload_sources_args: '--preserve-hierarchy'
upload_translations: false
download_translations: true
download_translations_args: '--preserve-hierarchy'
create_pull_request: false
commit_message: 'chore(l10n): New Crowdin Translations from scheduled update'
push_translations: false
push_sources: false
localization_branch_name: ${{ github.ref_name }}
env:
GITHUB_TOKEN: ${{ secrets.CROWDIN_GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Fix file permissions
run: sudo chown -R $USER:$USER .
- name: Gradle Setup
uses: ./.github/actions/gradle-setup
with:
gradle_encryption_key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
cache_read_only: 'false'
- name: Update Graphs
run: ./gradlew graphUpdate
continue-on-error: true
- name: Create Pull Request if changes occurred
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.CROWDIN_GITHUB_TOKEN }}
commit-message: |
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs)
Automated updates for:
- Firmware releases list
- Device hardware list
- Crowdin source string uploads
- Crowdin translation downloads
- Module dependency graphs
title: 'chore: Scheduled updates (Firmware, Hardware, Translations, Graphs)'
body: |
This PR includes automated updates from the scheduled workflow:
- Updated `firmware_releases.json` from the Meshtastic API (if changed).
- Updated `device_hardware.json` from the Meshtastic API (if changed).
- Source strings were uploaded to Crowdin.
- Latest translations were downloaded from Crowdin (if available).
- Updated module dependency graphs in README.md files (if changed).
Please review the changes.
branch: 'scheduled-updates'
base: 'main'
delete-branch: true
add-paths: |
app/src/main/assets/firmware_releases.json
app/src/main/assets/device_hardware.json
fastlane/metadata/android/**
**/strings.xml
**/README.md
labels: |
automation
l10n
firmware
hardware
check-workflow-status:
name: Check Workflow Status
runs-on: ubuntu-24.04-arm
permissions: {}
needs:
- update_assets
if: always()
steps:
- name: Check Workflow Status
if: "contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')"
run: |
echo "One of the dependent jobs failed or was cancelled. Failing the workflow."
exit 1

26
.github/workflows/stale.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: Close Stale Issues
on:
schedule:
- cron: 0 6 * * *
workflow_dispatch: {}
permissions:
issues: write
pull-requests: write
actions: write
jobs:
stale_issues:
name: Close Stale Issues
runs-on: ubuntu-24.04-arm
if: github.repository == 'meshtastic/Meshtastic-Android'
steps:
- name: Stale PR+Issues
uses: actions/stale@v10.2.0
with:
days-before-stale: 30
stale-issue-message: This issue has not had any comment or update in the last 30 days. If it is still relevant, please post update comments. If no comments are made, this issue will be closed in 7 days.
exempt-issue-labels: 'has sponsor,needs sponsor,help wanted,backlog,security issue,l10n,dependencies'
exempt-pr-labels: 'has sponsor,needs sponsor,help wanted,backlog,security issue,l10n,dependencies'
operations-per-run: 100

60
.gitignore vendored
View file

@ -1,16 +1,58 @@
# Android Studio
/.idea/*
!/.idea/codeStyles
!/.idea/dictionaries/
!/.idea/runConfigurations/
!/.idea/icon.svg
*.iws
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
/.idea/modules/app/google-services.json
.DS_Store
/build
**/build/**
/captures
.externalNativeBuild
.cxx
/app/release
/app/release
/buildSrc/build
**/debug/**
**/release/**
# Java KeyStore certificates
*.jks
keystore.properties
# AGP profiling traces
*.trace
# Kotlin compiler
.kotlin
# VS code
.vscode/settings.json
# Secrets
/secrets.properties
/fastlane/play-store-credentials.json
**/google-services.json
# Generated library definitions
**/src/main/resources/aboutlibraries.json
/fastlane/report.xml
/build-logic/convention/build/*
/build-logic/build/
# Personal build scripts
build-and-install-android.sh
wireless-install.sh
# Git worktrees
.worktrees/
/firebase-debug.log.jdk/
firebase-debug.log
.agent_plans/
.agent_refs/
.agent_artifacts/

9
.gitmodules vendored
View file

@ -1,6 +1,3 @@
[submodule "app/src/main/proto"]
path = app/src/main/proto
url = https://github.com/meshtastic/Meshtastic-protobufs.git
[submodule "geeksville-androidlib"]
path = geeksville-androidlib
url = https://github.com/meshtastic/geeksville-androidlib.git
[submodule "app proto submodule"]
path = core/proto/src/main/proto
url = https://github.com/meshtastic/protobufs.git

1
.idea/.name generated
View file

@ -1 +0,0 @@
Mesh Util

View file

@ -1,5 +1,40 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JavaCodeStyleSettings>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="" withSubpackages="true" static="false" module="true" />
<package name="android" withSubpackages="true" static="true" />
<package name="androidx" withSubpackages="true" static="true" />
<package name="com" withSubpackages="true" static="true" />
<package name="junit" withSubpackages="true" static="true" />
<package name="net" withSubpackages="true" static="true" />
<package name="org" withSubpackages="true" static="true" />
<package name="java" withSubpackages="true" static="true" />
<package name="javax" withSubpackages="true" static="true" />
<package name="" withSubpackages="true" static="true" />
<emptyLine />
<package name="android" withSubpackages="true" static="false" />
<emptyLine />
<package name="androidx" withSubpackages="true" static="false" />
<emptyLine />
<package name="com" withSubpackages="true" static="false" />
<emptyLine />
<package name="junit" withSubpackages="true" static="false" />
<emptyLine />
<package name="net" withSubpackages="true" static="false" />
<emptyLine />
<package name="org" withSubpackages="true" static="false" />
<emptyLine />
<package name="java" withSubpackages="true" static="false" />
<emptyLine />
<package name="javax" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
<emptyLine />
</value>
</option>
</JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>

12
.idea/compiler.xml generated
View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel>
<module name="app" target="1.8" />
<module name="geeksville-androidlib" target="1.7" />
<module name="Mesh Util-geeksville-androidlib" target="1.7" />
<module name="Mesh_Util.app" target="1.8" />
<module name="Mesh_Util.geeksville-androidlib" target="1.7" />
</bytecodeTargetLevel>
</component>
</project>

View file

@ -5,6 +5,7 @@
<w>errormsg</w>
<w>geeksville</w>
<w>meshtastic</w>
<w>protobuf</w>
</words>
</dictionary>
</component>

6
.idea/encodings.xml generated
View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

22
.idea/gradle.xml generated
View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="delegatedBuild" value="false" />
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/geeksville-androidlib" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

16
.idea/icon.svg generated Normal file
View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="512" height="512" viewBox="0 0 512 512" xml:space="preserve">
<desc>Created with Fabric.js 4.6.0</desc>
<defs>
</defs>
<g transform="matrix(1 0 0 1 256 256)" id="xYQ9Gk9Jwpgj_HMOXB3F_" >
<path style="stroke: rgb(213,130,139); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(103,234,148); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-256, -256)" d="M 0 0 L 512 0 L 512 512 L 0 512 z" stroke-linecap="round" />
</g>
<g transform="matrix(1.79 0 0 1.79 313.74 258.36)" id="1xBsk2n9FZp60Rz1O-ceJ" >
<path style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: round; stroke-miterlimit: 2; fill: rgb(44,45,60); fill-rule: evenodd; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-250.97, -362.41)" d="M 250.908 330.267 L 193.126 415.005 L 180.938 406.694 L 244.802 313.037 C 246.174 311.024 248.453 309.819 250.889 309.816 C 253.326 309.814 255.606 311.015 256.982 313.026 L 320.994 406.536 L 308.821 414.869 L 250.908 330.267 Z" stroke-linecap="round" />
</g>
<g transform="matrix(1.81 0 0 1.81 145 256.15)" id="KxN7E9YpbyPgz0S4z4Cl6" >
<path style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: round; stroke-miterlimit: 2; fill: rgb(44,45,60); fill-rule: evenodd; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-115.14, -528.06)" d="M 87.642 581.398 L 154.757 482.977 L 142.638 474.713 L 75.523 573.134 L 87.642 581.398 Z" stroke-linecap="round" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1,17 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PreviewAnnotationInFunctionWithParameters" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewMustBeTopLevelFunction" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewNeedsComposableAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
</profile>
</component>

View file

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="Google" />
<option name="name" value="Google" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
</component>
</project>

9
.idea/misc.xml generated
View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RenderSettings">
<option name="useLiveRendering" value="false" />
</component>
</project>

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SaveActionSettings">
<option name="actions">
<set>
<option value="activate" />
<option value="organizeImports" />
<option value="reformat" />
</set>
</option>
<option name="configurationPath" value="" />
</component>
</project>

8
.idea/vcs.xml generated
View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/app/src/main/proto" vcs="Git" />
<mapping directory="$PROJECT_DIR$/geeksville-androidlib" vcs="Git" />
</component>
</project>

1
.jdk Symbolic link
View file

@ -0,0 +1 @@
/home/james/.jdks/ms-17.0.18

295
.pr5167.diff Normal file
View file

@ -0,0 +1,295 @@
diff --git a/core/common/src/commonMain/kotlin/org/meshtastic/core/common/di/ApplicationCoroutineScope.kt b/core/common/src/commonMain/kotlin/org/meshtastic/core/common/di/ApplicationCoroutineScope.kt
new file mode 100644
index 0000000000..2a27b96906
--- /dev/null
+++ b/core/common/src/commonMain/kotlin/org/meshtastic/core/common/di/ApplicationCoroutineScope.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2026 Meshtastic LLC
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+package org.meshtastic.core.common.di
+
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.SupervisorJob
+import org.koin.core.annotation.Single
+import org.meshtastic.core.common.util.ioDispatcher
+
+/**
+ * A process-wide [CoroutineScope] that outlives individual ViewModels and UI components.
+ *
+ * Use this scope for fire-and-forget cleanup work that must continue after a ViewModel's own scope has been cancelled
+ * (for example, deleting temporary files in `onCleared()`). Backed by a [SupervisorJob] so failures in one child do not
+ * cancel siblings, and by [ioDispatcher] so work runs off the main thread.
+ *
+ * Prefer scoping work to a more specific scope (like `viewModelScope`) whenever possible; this scope is an escape hatch
+ * and should be used sparingly.
+ */
+interface ApplicationCoroutineScope : CoroutineScope
+
+@Single(binds = [ApplicationCoroutineScope::class])
+internal class ApplicationCoroutineScopeImpl : ApplicationCoroutineScope {
+ override val coroutineContext = SupervisorJob() + ioDispatcher
+}
diff --git a/core/ui/src/androidMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt b/core/ui/src/androidMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt
index 231c84d401..5365ab95e2 100644
--- a/core/ui/src/androidMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt
+++ b/core/ui/src/androidMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt
@@ -37,12 +37,12 @@ import androidx.lifecycle.compose.LifecycleEventEffect
import co.touchlab.kermit.Logger
import com.eygraber.uri.toAndroidUri
import com.eygraber.uri.toKmpUri
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jetbrains.compose.resources.StringResource
import org.jetbrains.compose.resources.getString
import org.meshtastic.core.common.gpsDisabled
import org.meshtastic.core.common.util.CommonUri
+import org.meshtastic.core.common.util.ioDispatcher
import java.net.URLEncoder
@Composable
@@ -146,7 +146,7 @@ actual fun rememberReadTextFromUri(): suspend (uri: CommonUri, maxChars: Int) ->
val context = LocalContext.current
return remember(context) {
{ uri, maxChars ->
- withContext(Dispatchers.IO) {
+ withContext(ioDispatcher) {
@Suppress("TooGenericExceptionCaught")
try {
val androidUri = uri.toAndroidUri()
diff --git a/core/ui/src/jvmMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt b/core/ui/src/jvmMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt
index 031e1fe35d..a938f92ea6 100644
--- a/core/ui/src/jvmMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt
+++ b/core/ui/src/jvmMain/kotlin/org/meshtastic/core/ui/util/PlatformUtils.kt
@@ -20,10 +20,10 @@ package org.meshtastic.core.ui.util
import androidx.compose.runtime.Composable
import co.touchlab.kermit.Logger
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jetbrains.compose.resources.StringResource
import org.meshtastic.core.common.util.CommonUri
+import org.meshtastic.core.common.util.ioDispatcher
import java.awt.Desktop
import java.awt.FileDialog
import java.awt.Frame
@@ -89,7 +89,7 @@ actual fun rememberOpenFileLauncher(onUriReceived: (CommonUri?) -> Unit): (mimeT
/** JVM — Reads text from a file URI. */
@Composable
actual fun rememberReadTextFromUri(): suspend (uri: CommonUri, maxChars: Int) -> String? = { uri, maxChars ->
- withContext(Dispatchers.IO) {
+ withContext(ioDispatcher) {
@Suppress("TooGenericExceptionCaught")
try {
val file = File(URI(uri.toString()))
diff --git a/feature/firmware/src/commonMain/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModel.kt b/feature/firmware/src/commonMain/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModel.kt
index dc1c459716..f8ff9fcac8 100644
--- a/feature/firmware/src/commonMain/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModel.kt
+++ b/feature/firmware/src/commonMain/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModel.kt
@@ -35,6 +35,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withTimeoutOrNull
import org.jetbrains.compose.resources.StringResource
import org.koin.core.annotation.KoinViewModel
+import org.meshtastic.core.common.di.ApplicationCoroutineScope
import org.meshtastic.core.common.util.CommonUri
import org.meshtastic.core.common.util.safeCatching
import org.meshtastic.core.database.entity.FirmwareRelease
@@ -91,6 +92,7 @@ class FirmwareUpdateViewModel(
private val firmwareUpdateManager: FirmwareUpdateManager,
private val usbManager: FirmwareUsbManager,
private val fileHandler: FirmwareFileHandler,
+ private val applicationScope: ApplicationCoroutineScope,
) : ViewModel() {
private val _state = MutableStateFlow<FirmwareUpdateState>(FirmwareUpdateState.Idle)
@@ -124,12 +126,10 @@ class FirmwareUpdateViewModel(
override fun onCleared() {
super.onCleared()
- // viewModelScope is already cancelled when onCleared() runs, so launch cleanup in a
- // standalone scope. SupervisorJob prevents the coroutine from propagating failures to a
- // shared parent, and NonCancellable on the launch keeps cleanup running even if the scope
- // is cancelled concurrently.
- @OptIn(kotlinx.coroutines.DelicateCoroutinesApi::class)
- kotlinx.coroutines.GlobalScope.launch(NonCancellable) {
+ // viewModelScope is already cancelled when onCleared() runs, so launch cleanup on the
+ // application-wide scope (SupervisorJob + ioDispatcher). NonCancellable keeps cleanup
+ // running even if something tries to cancel it mid-flight.
+ applicationScope.launch(NonCancellable) {
tempFirmwareFile = cleanupTemporaryFiles(fileHandler, tempFirmwareFile)
}
}
diff --git a/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateIntegrationTest.kt b/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateIntegrationTest.kt
index 4c48a1ced5..030d84effd 100644
--- a/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateIntegrationTest.kt
+++ b/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateIntegrationTest.kt
@@ -108,6 +108,7 @@ class FirmwareUpdateIntegrationTest {
firmwareUpdateManager,
usbManager,
fileHandler,
+ TestApplicationCoroutineScope(testDispatcher),
)
@Test
diff --git a/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelTest.kt b/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelTest.kt
index 7032ed4088..a8eddff838 100644
--- a/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelTest.kt
+++ b/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelTest.kt
@@ -124,6 +124,7 @@ class FirmwareUpdateViewModelTest {
firmwareUpdateManager,
usbManager,
fileHandler,
+ TestApplicationCoroutineScope(testDispatcher),
)
@Test
diff --git a/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/TestApplicationCoroutineScope.kt b/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/TestApplicationCoroutineScope.kt
new file mode 100644
index 0000000000..3ef5c44ef4
--- /dev/null
+++ b/feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/TestApplicationCoroutineScope.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2026 Meshtastic LLC
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+package org.meshtastic.feature.firmware
+
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.SupervisorJob
+import org.meshtastic.core.common.di.ApplicationCoroutineScope
+
+internal class TestApplicationCoroutineScope(dispatcher: CoroutineDispatcher) :
+ ApplicationCoroutineScope,
+ CoroutineScope by CoroutineScope(SupervisorJob() + dispatcher)
diff --git a/feature/firmware/src/jvmTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelFileTest.kt b/feature/firmware/src/jvmTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelFileTest.kt
index acb1545bdd..23a0d03ab2 100644
--- a/feature/firmware/src/jvmTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelFileTest.kt
+++ b/feature/firmware/src/jvmTest/kotlin/org/meshtastic/feature/firmware/FirmwareUpdateViewModelFileTest.kt
@@ -116,6 +116,7 @@ class FirmwareUpdateViewModelFileTest {
firmwareUpdateManager,
usbManager,
fileHandler,
+ TestApplicationCoroutineScope(testDispatcher),
)
// -----------------------------------------------------------------------
diff --git a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt
index c251b4d5ef..315ad1da85 100644
--- a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt
+++ b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt
@@ -27,6 +27,7 @@ import co.touchlab.kermit.Logger
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import org.meshtastic.core.common.util.ioDispatcher
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.debug_export_failed
import org.meshtastic.core.resources.debug_export_success
@@ -48,7 +49,7 @@ actual fun rememberLogExporter(logsProvider: suspend () -> List<DebugViewModel.U
}
private suspend fun exportAllLogsToUri(context: Context, targetUri: Uri, logs: List<DebugViewModel.UiMeshLog>) =
- withContext(Dispatchers.IO) {
+ withContext(ioDispatcher) {
try {
if (logs.isEmpty()) {
withContext(Dispatchers.Main) { context.showToast(Res.string.debug_export_failed, "No logs to export") }
diff --git a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt
index 9afde85e5f..a28a576788 100644
--- a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt
+++ b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt
@@ -24,9 +24,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalContext
import co.touchlab.kermit.Logger
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import org.meshtastic.core.common.util.ioDispatcher
@Composable
actual fun rememberDataPackageExporter(dataPackageProvider: suspend () -> ByteArray): (fileName: String) -> Unit {
@@ -41,7 +41,7 @@ actual fun rememberDataPackageExporter(dataPackageProvider: suspend () -> ByteAr
return { fileName -> exportLauncher.launch(fileName) }
}
-private suspend fun exportZipToUri(context: Context, targetUri: Uri, data: ByteArray) = withContext(Dispatchers.IO) {
+private suspend fun exportZipToUri(context: Context, targetUri: Uri, data: ByteArray) = withContext(ioDispatcher) {
try {
context.contentResolver.openOutputStream(targetUri)?.use { os -> os.write(data) }
Logger.i { "TAK data package exported successfully to $targetUri" }
diff --git a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt
index 5b63cc90a3..a9a7285593 100644
--- a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt
+++ b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/debugging/LogExporter.kt
@@ -19,9 +19,9 @@ package org.meshtastic.feature.settings.debugging
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import co.touchlab.kermit.Logger
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import org.meshtastic.core.common.util.ioDispatcher
import java.awt.FileDialog
import java.awt.Frame
import java.io.File
@@ -41,7 +41,7 @@ actual fun rememberLogExporter(logsProvider: suspend () -> List<DebugViewModel.U
return@launch
}
- withContext(Dispatchers.IO) {
+ withContext(ioDispatcher) {
// Run file dialog to ask user where to save
val fileDialog = FileDialog(null as Frame?, "Export Logs", FileDialog.SAVE)
fileDialog.file = fileName
diff --git a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt
index 9fb71379fc..bfbb85bc0d 100644
--- a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt
+++ b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/tak/PrefExporter.kt
@@ -19,9 +19,9 @@ package org.meshtastic.feature.settings.tak
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import co.touchlab.kermit.Logger
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import org.meshtastic.core.common.util.ioDispatcher
import java.awt.FileDialog
import java.awt.Frame
import java.io.File
@@ -44,7 +44,7 @@ actual fun rememberDataPackageExporter(dataPackageProvider: suspend () -> ByteAr
if (directory != null && file != null) {
val targetFile = File(directory, file)
val data = dataPackageProvider()
- withContext(Dispatchers.IO) { targetFile.writeBytes(data) }
+ withContext(ioDispatcher) { targetFile.writeBytes(data) }
Logger.i { "TAK data package exported successfully to ${targetFile.absolutePath}" }
}
}

1
.ruby-version Normal file
View file

@ -0,0 +1 @@
3.4.9

View file

@ -0,0 +1,32 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Pre-Commit [spotlessApply detekt]" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="--no-parallel" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="spotlessApply" />
<option value="detekt" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<ExternalSystemDebugDisabled>false</ExternalSystemDebugDisabled>
<EXTENSION ID="com.android.tools.idea.testartifacts.testsuite.GradleRunConfigurationExtension">
<com.android.tools.idea.testartifacts.testsuite.SHOW_TEST_RESULT_IN_ANDROID_TEST_SUITE_VIEW>false</com.android.tools.idea.testartifacts.testsuite.SHOW_TEST_RESULT_IN_ANDROID_TEST_SUITE_VIEW>
<android.execution.deploysToLocalDevice>false</android.execution.deploysToLocalDevice>
</EXTENSION>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<GradleProfilingDisabled>false</GradleProfilingDisabled>
<GradleCoverageDisabled>false</GradleCoverageDisabled>
<method v="2" />
</configuration>
</component>

View file

@ -0,0 +1,66 @@
# Skill: Code Review
## Description
Perform comprehensive code reviews for `Meshtastic-Android`, ensuring changes adhere to KMP architecture, Kotlin Multiplatform conventions, MAD standards, and CMP best practices.
## Code Review Checklist
When reviewing code, meticulously verify the following categories. Flag any deviations and propose the canonical project pattern as a fix.
### 1. KMP Architecture & Source Set Boundaries
- [ ] **No Platform Bleed:** Ensure absolutely no `java.*` or `android.*` imports exist in `commonMain` source sets.
- [ ] **KMP Native Alternatives:** Verify the use of KMP alternatives for standard JVM libraries:
- `java.util.concurrent.locks.*` -> `kotlinx.coroutines.sync.Mutex`
- `java.util.concurrent.ConcurrentHashMap` -> `atomicfu` or Mutex-guarded `mutableMapOf()`
- `java.io.*` -> `Okio` (`BufferedSource`/`BufferedSink`)
- `java.util.Locale` -> Kotlin `uppercase()`/`lowercase()` (purged from `commonMain`)
- [ ] **Coroutine Safety:** Use `safeCatching {}` from `core:common` instead of `runCatching {}` in coroutine/suspend contexts. `runCatching` silently swallows `CancellationException`, breaking structured concurrency. Keep `runCatching` only in cleanup/teardown code (abort, close, eviction). Use `kotlinx.coroutines.CancellationException` (not `kotlin.coroutines.cancellation.CancellationException`).
- [ ] **Shared Helpers:** If `androidMain` and `jvmMain` contain identical pure-Kotlin logic, mandate extracting it to a shared function in `commonMain`.
- [ ] **File Naming Conflicts:** For `expect`/`actual` declarations, ensure files sharing the same package namespace have distinct names (e.g., keep `expect` in `LogExporter.kt` and shared helpers in `LogFormatter.kt`) to avoid duplicate class errors on the JVM target.
- [ ] **Interface & DI Over `expect`/`actual`:** Check that `expect`/`actual` is reserved for small platform primitives. Interfaces + DI should be preferred for larger capabilities.
### 2. UI & Compose Multiplatform (CMP)
- [ ] **Compose Multiplatform Resources:** Ensure NO hardcoded strings. Must use `core:resources` (e.g., `stringResource(Res.string.key)` or asynchronous `getStringSuspend(Res.string.key)` for ViewModels/Coroutines). NEVER use blocking `getString()` in a coroutine.
- [ ] **String Formatting:** CMP only supports `%N$s` and `%N$d`. Flag any float formats (`%N$.1f`) in Compose string resources; they must be pre-formatted using `NumberFormatter.format()` from `core:common`. Use `MetricFormatter` for metric-specific displays (temperature, voltage, current, percent, humidity, pressure, SNR, RSSI).
- [ ] **Centralized Dialogs & Alerts:** Flag inline alert-rendering logic. Mandate the use of `AlertHost(alertManager)` or `SharedDialogs` from `core:ui/commonMain`.
- [ ] **Placeholders:** Require `PlaceholderScreen(name)` from `core:ui/commonMain` for unimplemented desktop/JVM features. No inline placeholders in feature modules.
- [ ] **Adaptive Layouts:** Verify use of `currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)` to support desktop/tablet breakpoints (≥ 1200dp).
### 3. Navigation & State
- [ ] **Shared Navigation Graphs:** Feature navigation graphs must be defined as extension functions on `EntryProviderScope<NavKey>` in `commonMain` (e.g., `fun EntryProviderScope<NavKey>.settingsGraph(...)`). Flag any graphs defined in platform-specific source sets.
- [ ] **Navigation Host:** Ensure `MeshtasticNavDisplay` (from `core:ui/commonMain`) is used as the host instead of invoking `NavDisplay` directly. Host modules should not configure `entryDecorators` themselves.
- [ ] **ViewModel Scoping:** ViewModels obtained via `koinViewModel()` must be inside `entry<T>` blocks to correctly tie to the backstack lifetime.
### 4. Dependency Injection (Koin Annotations)
- [ ] **Annotation Usage:** Ensure Koin is configured via annotations (`@Single`, `@Factory`, `@KoinViewModel`).
- [ ] **Root Assembly:** Confirm that the root Koin DI graph is only assembled in host shells (`app` and `desktop`).
### 5. Networking, DB & I/O
- [ ] **Ktor Strictly:** Check that Ktor is used for all HTTP networking. Flag and reject any usage of OkHttp.
- [ ] **HTTP Configuration:** Verify timeouts and base URLs use `HttpClientDefaults` from `core:network`. Never hardcode timeouts in feature modules. `DefaultRequest` sets the base URL; feature API services use relative paths.
- [ ] **Image Loading (Coil):** Coil must use `coil-network-ktor3` in host modules. Feature modules should ONLY depend on `libs.coil` (coil-compose) and never configure fetchers.
- [ ] **Room KMP:** Ensure `factory = { MeshtasticDatabaseConstructor.initialize() }` is used in `Room.databaseBuilder`. DAOs and Entities must reside in `commonMain`.
- [ ] **Room Patterns:** Verify use of `@Upsert` for insert-or-update logic. Check for `LIMIT 1` on single-row queries. Flag N+1 query patterns (loops calling single-row queries) — batch with chunked `WHERE IN` instead.
- [ ] **Bluetooth (BLE):** All Bluetooth communication must be routed through `core:ble` using Kable abstractions.
### 6. Dependency Catalog Aliases
- [ ] **JetBrains vs. AndroidX:**
- In `commonMain`: Must use `jetbrains-*` aliases (e.g., `jetbrains-lifecycle-*`, `jetbrains-navigation3-ui`).
- In `androidMain`: Can use `androidx-*` or `jetbrains-*` as appropriate, but do not mix them up in `commonMain`.
- [ ] **Compose Multiplatform:** Ensure `compose-multiplatform-*` aliases are used instead of plain `androidx.compose` in all KMP modules.
### 7. Testing
- [ ] **Test Placement:** New Compose UI tests must go in `commonTest` using `runComposeUiTest {}` from `androidx.compose.ui.test.v2` (not the deprecated v1 `androidx.compose.ui.test` package) + `kotlin.test.Test`. Do not add `androidTest` (instrumented) tests.
- [ ] **Shared Test Utilities:** Test fakes, doubles, and utilities should be placed in `core:testing`.
- [ ] **Libraries:** Verify usage of `Turbine` for Flow testing, `Kotest` for property-based testing, and `Mokkery` for mocking.
- [ ] **Robolectric Configuration:** Check that Compose UI tests running via Robolectric on JVM are pinned to `@Config(sdk = [34])` to prevent Java 21 / SDK 35 compatibility issues.
### 8. ProGuard / R8 Rules
- [ ] **New Dependencies:** If a new reflection-heavy dependency is added (DI, serialization, JNI, ServiceLoader), verify keep rules exist in **both** `app/proguard-rules.pro` (R8) and `desktop/proguard-rules.pro` (ProGuard). The two files must stay aligned.
- [ ] **Release Smoke-Test:** For dependency or ProGuard rule changes, verify `assembleRelease` and `./gradlew :desktop:runRelease` succeed.
## Review Output Guidelines
1. **Be Specific & Constructive:** Provide exact file references and code snippets illustrating the required project pattern.
2. **Reference the Docs:** Cite `AGENTS.md` and project architecture playbooks to justify change requests (e.g., "Per AGENTS.md, `java.io.*` cannot be used in `commonMain`; please migrate to Okio").
3. **Enforce Build Health:** Remind authors to run `./gradlew test allTests` locally to verify changes, especially since KMP `test` tasks are ambiguous.
4. **Praise Good Patterns:** Acknowledge correct usage of complex architecture requirements, like proper Navigation 3 scene transitions or elegant `commonMain` helper extractions.

View file

@ -0,0 +1,61 @@
# Skill: Compose Multiplatform (CMP) UI
## Description
Guidelines for building shared UI, adaptive layouts, and handling strings/resources in Meshtastic-Android. The codebase uses Material 3 Adaptive.
## 1. UI Components & Layouts
- **Material 3 / Adaptive:** Use `currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)` to support Large (1200dp) and XL (1600dp) breakpoints. Investigate 3-pane "Power User" scenes using Navigation 3 Scenes and draggable dividers for desktop/tablets.
- **Dialogs & Alerts:** Use centralized components like `AlertHost(alertManager)` from `core:ui/commonMain`. Do NOT trigger alerts inline or duplicate alert logic. Use `SharedDialogs(uiViewModel)` for general popups.
- **Placeholders:** Use `PlaceholderScreen(name)` from `core:ui/commonMain` for unimplemented desktop/JVM features.
- **Theme Picker:** Use `ThemePickerDialog` from `feature:settings/commonMain`.
- **Platform Implementations:** Inject platform-specific behavior (e.g., Map providers) via `CompositionLocal` from the `app` or `desktop` shells. Do not tightly couple Google Maps/osmdroid dependencies to `commonMain`.
## 2. Strings & Resources
- **Multiplatform Resources:** MUST use `core:resources` (e.g., `stringResource(Res.string.your_key)`). Never use hardcoded strings.
- **ViewModels/Coroutines:** Use the asynchronous `getStringSuspend(Res.string.your_key)`. NEVER use blocking `getString()` in a coroutine context.
- **Formatting Constraints:** CMP `stringResource` only supports `%N$s` (string) and `%N$d` (integer).
- **No Float formatting:** Formats like `%N$.1f` pass through unsubstituted. Pre-format in Kotlin using `NumberFormatter.format(value, decimalPlaces)` from `core:common` and pass as a string argument (`%N$s`):
```kotlin
val formatted = NumberFormatter.format(batteryLevel, 1) // "73.5"
stringResource(Res.string.battery_percent, formatted) // uses %1$s
```
- **Percent Literals:** Use bare `%` (not `%%`) for literal percent signs in CMP-consumed strings.
### String Formatting Decision Tree
Choose the right tool for the job:
| Scenario | Tool | Example |
|----------|------|---------|
| **Metric display** (temp, voltage, %, signal) | `MetricFormatter.*` | `MetricFormatter.temperature(25.0f, isFahrenheit)``"77.0°F"` |
| **Simple number + unit** | `NumberFormatter` + interpolation | `"${NumberFormatter.format(val, 1)} dB"` |
| **Localized template from strings.xml** | `stringResource(Res.string.key, preFormattedArgs)` | `stringResource(Res.string.battery, formatted)` |
| **Non-composable template** (notifications, plain functions) | `formatString(template, args)` | `formatString(template, label, value)` |
| **Hex formatting** | `formatString` | `formatString("!%08x", nodeNum)` |
| **Date/time** | `DateFormatter` | `DateFormatter.format(instant)` |
**Rules:**
1. **NEVER use `%.Nf` in strings.xml** — CMP cannot substitute them. Use `%N$s` and pre-format floats.
2. **Prefer `MetricFormatter`** over scattered `formatString("%.1f°C", temp)` calls.
3. **`formatString` (pure Kotlin)** is a pure-Kotlin `commonMain` implementation for: hex formats, multi-arg templates fetched at runtime, and chart axis formatters. Located in `core:common` `Formatter.kt`.
4. **`NumberFormatter`** always uses `.` as decimal separator — intentional for mesh networking precision.
- **Workflow to Add a String:**
1. Add to `core/resources/src/commonMain/composeResources/values/strings.xml`.
2. Use the generated `org.meshtastic.core.resources.<key>` symbol.
3. Validate UI presentation.
## 3. Tooling & Capabilities
- **Image Loading:** Use `libs.coil` (Coil Compose) in feature modules. Configuration/Networking for Coil (`coil-network-ktor3`) happens strictly in the `app` and `desktop` host modules.
- **QR Codes:** Use `rememberQrCodePainter` from `core:ui/commonMain` powered by `qrcode-kotlin`. No ZXing or Android Bitmap APIs in shared code.
## 4. Compose Previews
- **Preview in commonMain:** CMP 1.11+ supports `@Preview` in `commonMain` via `compose-multiplatform-ui-tooling-preview`. Place preview functions alongside their composables.
- **Import:** Use `androidx.compose.ui.tooling.preview.Preview`. The JetBrains-prefixed import (`org.jetbrains.compose.ui.tooling.preview.Preview`) is deprecated.
## 5. Dialog & State Patterns
- **Dialog State Preservation:** Use `rememberSaveable` for dialog state (search queries, selected tabs, expanded flags) to preserve across configuration changes. Boolean and String types are auto-saveable — no custom `Saver` needed.
## Reference Anchors
- **Shared Strings:** `core/resources/src/commonMain/composeResources/values/strings.xml`
- **Platform abstraction contract:** `core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/util/MapViewProvider.kt`
- **Provider wiring:** `app/src/main/kotlin/org/meshtastic/app/MainActivity.kt`

View file

@ -0,0 +1,41 @@
# Skill: Implement a Feature
## Description
A step-by-step workflow for implementing a new feature in the Meshtastic-Android codebase, ensuring KMP compatibility and proper architecture.
## Workflow
### 1. Update Dependencies & Aliases
- Check `gradle/libs.versions.toml` before adding libraries.
- Use `jetbrains-*` aliases for lifecycle/navigation/adaptive dependencies in `commonMain`.
- Use `compose-multiplatform-*` aliases for CMP dependencies.
### 2. Define the State & ViewModels
- Follow MVI/UDF patterns.
- Extend shared ViewModel logic in `feature/<name>/src/commonMain/kotlin/org/meshtastic/feature/<name>/<Name>ViewModel.kt`.
- Use `stateInWhileSubscribed` (from `core:ui`) for sharing state flows.
- Keep the ViewModel free of Android framework dependencies.
### 3. Build the UI
- Use Jetpack Compose Multiplatform (CMP).
- Define strings in `core:resources` (see the `compose-ui` skill).
- Support adaptive layouts (Large/XL breakpoints).
### 4. Wire Navigation & DI
- Define typed route objects in `core:navigation`.
- Export the navigation graph as an extension function on `EntryProviderScope<NavKey>` in `commonMain` (e.g., `fun EntryProviderScope<NavKey>.myFeatureGraph()`).
- Add the required DI bindings via Koin Annotations (`@Factory`, `@Single`, `@KoinViewModel`) in `commonMain`.
- **CRITICAL:** Ensure the module is registered in the app root graphs (`AppKoinModule.kt`, `DesktopKoinModule.kt`) and the navigation is injected into the root entry provider in the host shell.
### 5. Validate Platform Separation
- If you need a platform-specific API (like camera or specific mapping SDK), define an interface in `commonMain`, implement it in the host shell, and inject it via `CompositionLocal` or Koin.
### 6. Verify Locally
- Run the baseline checks (see `testing-ci` skill):
```bash
./gradlew spotlessCheck spotlessApply detekt assembleDebug test allTests
```
- If the feature adds a new reflection-heavy dependency, add keep rules to **both** `app/proguard-rules.pro` and `desktop/proguard-rules.pro`, then verify release builds:
```bash
./gradlew assembleFdroidRelease :desktop:runRelease
```

View file

@ -0,0 +1,61 @@
# Skill: KMP Architecture & Source-Set Bridging
## Description
Guidelines on managing Kotlin Multiplatform (KMP) source-sets, expected abstractions, networking, database, and platform integration rules.
## 1. Source-Set Boundaries
- **`commonMain`:** All business logic, DB entities, API network logic, ViewModels, and UI rendering. NO `java.*` or `android.*` imports.
- **`androidMain`:** Android framework integration (`Context`, system services, NFC hardware, BLE Android bindings).
- **`jvmMain` / `jvmAndroidMain`:** Shared JVM code between Android and Desktop. Uses the `meshtastic.kmp.jvm.android` convention plugin to bridge `jvm` and `android` source sets without manual `dependsOn` hacks.
- **`app` / `desktop`:** Host shells. Responsible for Koin DI root wiring, `MainKoinModule`, host-level UI themes, and running the `MeshtasticNavDisplay`.
## 2. Bridging Strategies
- **Interface + DI (Preferred):** Expose an interface in `core:repository` or `core:ui` (e.g. `LocationRepository`, `MapViewProvider`), implement it in `androidMain` or the host `app`, and bind it via Koin or `CompositionLocal`.
- **`expect`/`actual` (Restricted):** Use only when a platform API cannot be abstracted cleanly (e.g. low-level File I/O mappings, `uppercase()` Locale helpers). Avoid deep class hierarchies using `expect`/`actual`.
- **Naming:** Keep `expect` in `FileIo.kt`, but put shared helpers in `FileIoUtils.kt` to prevent JVM duplicate class errors.
- **Shared Helpers:** Do not duplicate pure Kotlin logic between `androidMain` and `jvmMain`. Extract to a `commonMain` helper.
## 3. Core Libraries & Constraints
- **Concurrency:** `kotlinx.coroutines`. Use `org.meshtastic.core.common.util.ioDispatcher` over `Dispatchers.IO` directly. Inject `CoroutineDispatchers` from `core:di` into classes that need dispatchers — never reference `Dispatchers.IO`/`Main`/`Default` directly in business logic.
- **Error Handling:** Use `safeCatching {}` from `core:common` instead of `runCatching {}` in coroutine/suspend contexts. `runCatching` swallows `CancellationException`, breaking structured concurrency. Keep `runCatching` only in cleanup/teardown code (abort, close, eviction loops).
- **Standard Library Replacements:**
- `ConcurrentHashMap` -> `atomicfu` or Mutex-guarded `mutableMapOf()`.
- `java.util.concurrent.locks.*` -> `kotlinx.coroutines.sync.Mutex`.
- `java.io.*` -> `Okio` (`BufferedSource`/`BufferedSink`).
- **Networking:** Pure **Ktor**. No OkHttp. Ktor `Logging` plugin for debugging.
- **HTTP Configuration:** Use `HttpClientDefaults` from `core:network` for shared base URL (`API_BASE_URL`), timeouts, and retry constants. Both Android (`NetworkModule`) and Desktop (`DesktopKoinModule`) HttpClient instances must use these. Feature API services use relative paths; `DefaultRequest` sets the base URL.
- **BLE:** Route through `core:ble` using **Kable**.
- **Room KMP:** Use `factory = { MeshtasticDatabaseConstructor.initialize() }` in `Room.databaseBuilder`.
## 4. Hierarchy & Source-Set Conventions
- **Hierarchy template first:** Prefer Kotlin's default hierarchy template and convention plugins over manual `dependsOn(...)` graphs. Manual source-set wiring should be reserved for cases the template cannot model.
- **`expect`/`actual` restraint:** Prefer interfaces + DI for platform capabilities; use `expect`/`actual` for small unavoidable platform primitives. Avoid broad expect/actual class hierarchies when an interface-based boundary is sufficient.
- **Shared helpers over duplicated lambdas:** When `androidMain` and `jvmMain` contain identical pure-Kotlin logic (formatting, action dispatch, validation), extract to `commonMain`. Examples: `formatLogsTo()`, `handleNodeAction()`, `findNodeByNameSuffix()`, `MeshtasticAppShell`, `BaseRadioTransportFactory`.
## 5. Dependency Catalog Aliases
- **JetBrains fork aliases:** Version catalog aliases for JetBrains-forked AndroidX artifacts use the `jetbrains-*` prefix (e.g., `jetbrains-lifecycle-runtime-compose`, `jetbrains-navigation3-ui`). Plain `androidx-*` aliases are true Google AndroidX artifacts. Never mix them up in `commonMain`.
- **Compose Multiplatform:** Version catalog aliases for Compose Multiplatform artifacts use the `compose-multiplatform-*` prefix (e.g., `compose-multiplatform-material3`, `compose-multiplatform-foundation`). Never use plain `androidx.compose` dependencies in `commonMain`.
- **Dependencies:** Always check `gradle/libs.versions.toml` before assuming a library is available.
## 6. I/O & Serialization
- **Okio standard:** This project standardizes on Okio (`BufferedSource`/`BufferedSink`). JetBrains recommends `kotlinx-io` (built on Okio), but this project has not migrated. Do not introduce `kotlinx-io` without an explicit decision.
- **Room KMP:** Always use `factory = { MeshtasticDatabaseConstructor.initialize() }` in `Room.databaseBuilder` and `inMemoryDatabaseBuilder`. DAOs and Entities reside in `commonMain`.
- **Room Patterns:**
- Use `@Upsert` for insert-or-update operations instead of manual `INSERT OR IGNORE` + `UPDATE` logic.
- Use `LIMIT 1` on `@Query` methods that expect a single row.
- Prevent N+1 queries: batch operations with `@Upsert fun putAll(items: List<T>)` or chunked `WHERE IN` queries (chunk size ≤ 999 to respect SQLite bind parameter limit).
## 7. Build-Logic Conventions
- In `build-logic/convention`, prefer lazy Gradle configuration (`configureEach`, `withPlugin`, provider APIs). Avoid `afterEvaluate` in convention plugins unless there is no viable lazy alternative.
## 8. Onboarding a New Target (Desktop/iOS)
1. Ensure all new logic compiles against the KMP core (`jvm()`, `iosArm64()`, etc.).
2. Do not use platform-specific constructs in `commonMain` or you break the iOS/Desktop builds.
3. Test using `kmpSmokeCompile` to verify cross-platform compilation.
4. For desktop wiring, copy the pattern in `desktop/src/main/kotlin/org/meshtastic/desktop/di/DesktopKoinModule.kt` and use `NoopStubs.kt` to temporarily mock missing platform implementations.
## Reference Anchors
- **Shared Okio I/O:** `core/domain/src/commonMain/kotlin/org/meshtastic/core/domain/usecase/settings/ImportProfileUseCase.kt`
- **Desktop DI Stubs:** `desktop/src/main/kotlin/org/meshtastic/desktop/stub/NoopStubs.kt`
- **Version Catalog:** `gradle/libs.versions.toml`
- **Convention Plugins:** `build-logic/convention/`

View file

@ -0,0 +1,56 @@
# Skill: DI and Navigation 3 Architecture
## Description
This skill covers dependency injection (Koin Annotations 4.2.x) and JetBrains Navigation 3 (1.1.x) architecture, constraints, and anti-patterns within the Meshtastic-Android KMP codebase.
## Dependency Injection (Koin)
### Guidelines
1. **Annotations First:** Use `@Module`, `@ComponentScan`, and `@KoinViewModel` annotations directly in `commonMain` shared modules to encapsulate dependency graphs per feature.
2. **App Root Assembly:** Don't assume feature/core `@Module` classes are active automatically. Ensure they are included by the app root module (`@Module(includes = [...])`) in `app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt` and `desktop/.../DesktopKoinModule.kt`.
3. **No Platform Bleed:** Don't put Android framework dependencies (`Context`, `Activity`, `Application`) into shared `commonMain` business logic. Inject interfaces instead.
4. **Resolution:** Resolve app-layer wrappers via `koinViewModel()` or injected bindings within Compose navigation graphs.
### Anti-Patterns
- **A1 Module Compile Safety:** Do **not** enable `compileSafety`. It is a single boolean that enables A1 per-module checks — there is no separate A3 full-graph mode. Runtime graph verification is handled by `KoinVerificationTest` and `DesktopKoinTest` instead.
- **Default Parameters:** Do **not** expect Koin to inject default parameters automatically. The K2 plugin's `skipDefaultValues = true` behavior skips parameters with default Kotlin values.
### Koin Startup Pattern (K2 Compiler Plugin)
The project uses the **K2 Compiler Plugin** (`koin-compiler-plugin`, not KSP). The canonical startup uses the plugin's typed `startKoin<T>()` stub, which the plugin transforms at compile time via IR:
```kotlin
// Bootstrap class — separate from @Module, references the root module graph
@KoinApplication(modules = [AppKoinModule::class])
object AndroidKoinApp
// In Application.onCreate()
startKoin<AndroidKoinApp> {
androidContext(this@MeshUtilApplication)
workManagerFactory()
}
```
- `@KoinApplication` goes on a **dedicated bootstrap object**, not on a `@Module` class.
- `startKoin<T>()` (from `org.koin.plugin.module.dsl`) is a compiler plugin stub — if the plugin isn't applied, it throws `NotImplementedError`.
- `stopKoin()` uses the standard runtime API (`org.koin.core.context.stopKoin`).
- `compileSafety` must stay **disabled** — it enables A1 per-module checks that break our inverted-dependency architecture. There is no separate A3 full-graph flag.
## Navigation 3
### Guidelines
1. **Types:** Use Navigation 3 types consistently (`NavKey`, `NavBackStack`, `EntryProviderScope`).
2. **Typed Routes:** Keep route definitions in `core:navigation/src/commonMain/.../Routes.kt` as `@Serializable sealed interface` hierarchies. Don't use ad-hoc strings.
3. **Graph Assembly:** Define feature navigation graphs as extension functions on `EntryProviderScope<NavKey>` in `commonMain` (e.g., `fun EntryProviderScope<NavKey>.settingsGraph(backStack)`).
4. **Host Integration:** Use `MeshtasticNavDisplay` (from `core:ui/commonMain`) as the Navigation 3 host. Do not configure decorators manually inside feature modules.
5. **Back Handlers:** Use `NavigationBackHandler` from `androidx.navigationevent:navigationevent-compose` for back gestures in multiplatform code. Do not use Android's `BackHandler`.
6. **Deep Links:** Use `DeepLinkRouter.route()` in `core:navigation` to synthesize typed backstacks from RESTful paths.
### Anti-Patterns
- **Single Backstack for Multiple Tabs:** Do **not** use a single `NavBackStack` list for multiple tabs. Use `MultiBackstack` (from `core:navigation`).
- **Decorator Reuse Across Tabs:** Do **not** reuse the same `NavEntryDecorator` instances across different backstacks. When rendering an active tab in `MeshtasticNavDisplay`, you **must** supply a fresh set of decorators (using `remember(backStack) { ... }`) bound to the active backstack instance to prevent permanent `ViewModelStore` destruction.
- **Custom Backstack Mutation:** Do **not** mutate back navigation with custom stacks disconnected from the app backstack. Mutate `NavBackStack<NavKey>` directly with `add(...)` and `removeLastOrNull()`.
## Reference Anchors
- **App Startup / Koin Bootstrap:** `app/src/main/kotlin/org/meshtastic/app/MeshUtilApplication.kt`
- **DI Bootstrap Object:** `app/src/main/kotlin/org/meshtastic/app/di/AndroidKoinApp.kt`
- **DI App Wiring:** `app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt`
- **Shared Routes:** `core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt`
- **Desktop Nav Shell:** `desktop/src/main/kotlin/org/meshtastic/desktop/ui/DesktopMainScreen.kt`

View file

@ -0,0 +1,79 @@
# Skill: New Branch Bootstrap
## Description
Canonical recipe for spinning up a fresh working branch off the latest upstream `main`. Use this skill
whenever the user says things like *"make a new branch off fetched origin/main"*, *"peel off a fresh
branch"*, *"dust off #NNNN"*, or otherwise signals the start of a new unit of work.
This replaces the ad-hoc prose that used to be retyped at the start of every session.
## When to Use
- Starting any new feature, fix, chore, or refactor.
- Rebasing a stale PR onto current `main` (see [Rebase variant](#rebase-variant)).
- Reproducing a CI failure from a clean baseline.
## Preconditions (verify before branching)
1. **Clean worktree.** If `git status --porcelain` is non-empty, ask the user before proceeding.
2. **Upstream remote present.** `git remote -v` must list `upstream` pointing at
`meshtastic/Meshtastic-Android`. If only `origin` exists on a fork, treat `origin` as upstream.
3. **Submodules initialised.** `core/proto/src/main/proto` must be populated — see AGENTS.md
workspace bootstrap rules.
4. **Secrets bootstrapped.** If `local.properties` is missing, copy `secrets.defaults.properties`
(required for `google` flavor builds).
## Standard Recipe
```bash
# 1. Fetch latest upstream
git fetch upstream --prune --tags
# 2. Create the branch from upstream/main (never from a local stale main)
git switch -c <branch-name> upstream/main
# 3. Ensure submodules track the new base
git submodule update --init --recursive
# 4. Sanity check
git --no-pager log -1 --oneline
```
## Branch Naming
Use conventional-commit style prefixes that match the PR title convention in AGENTS.md
`<git_and_prs>`:
| Prefix | Use for |
| :--- | :--- |
| `feat/<scope>` | New user-visible behavior |
| `fix/<scope>` | Bug fixes |
| `refactor/<scope>` | Code structure changes, no behavior change |
| `chore/<scope>` | Tooling, deps, CI, cleanup |
| `docs/<scope>` | Documentation only |
Keep the slug short and kebab-case, e.g. `fix/r8-animation-release`, `chore/koin-application-migration`.
## Rebase Variant
When the user says *"rebase #NNNN"* or *"dust off PR NNNN"*:
```bash
git fetch upstream --prune
gh pr checkout <NNNN> # checks out the PR head locally
git rebase upstream/main
git submodule update --init --recursive
# Resolve conflicts, then:
git push --force-with-lease
```
Never use plain `--force`. Always `--force-with-lease` to avoid clobbering collaborator pushes.
## Post-Branch Checklist
- [ ] Branch name follows conventional prefix.
- [ ] Submodules up to date.
- [ ] `local.properties` exists.
- [ ] `ANDROID_HOME` exported (see AGENTS.md workspace bootstrap).
- [ ] Optional: run `./gradlew assembleDebug` once to catch environment regressions before editing.
## Tip: Prefer `/delegate` for Long Audits
If the user's opening prompt is a sweeping audit or investigation (e.g. *"audit changes since
v2.7.13 for regressions"*, *"investigate why animations are broken on release"*), consider
suggesting `/delegate` — the GitHub cloud agent can execute the branch + investigation + PR
end-to-end while the user keeps working locally. See AGENTS.md `<copilot_cli_workflow>`.

View file

@ -0,0 +1,83 @@
# Skill: Project Overview & Codebase Map
## Description
Module directory, namespacing conventions, environment setup, and troubleshooting for Meshtastic-Android.
- **Build System:** Gradle (Kotlin DSL). JDK 21 REQUIRED. Target SDK: API 36. Min SDK: API 26.
- **Flavors:** `fdroid` (OSS only) · `google` (Maps + DataDog analytics)
- **Android-only Modules:** `core:api` (AIDL), `core:barcode` (CameraX). Shared contracts abstracted into `core:ui/commonMain`.
## Codebase Map
| Directory | Description |
| :--- | :--- |
| `app/` | Main application module. Contains `MainActivity`, Koin DI modules, and app-level logic. Uses package `org.meshtastic.app`. |
| `build-logic/` | Convention plugins for shared build configuration (e.g., `meshtastic.kmp.feature`, `meshtastic.kmp.library`, `meshtastic.kmp.jvm.android`, `meshtastic.koin`). |
| `config/` | Detekt static analysis rules (`config/detekt/detekt.yml`) and Spotless formatting config (`config/spotless/.editorconfig`). |
| `docs/` | Architecture docs and agent playbooks. See `docs/kmp-status.md` and `docs/roadmap.md` for current status. |
| `core/model` | Domain models and common data structures. |
| `core:proto` | Protobuf definitions (Git submodule). |
| `core:common` | Low-level utilities, I/O abstractions (Okio), and common types. |
| `core:database` | Room KMP database implementation. |
| `core:datastore` | Multiplatform DataStore for preferences. |
| `core:repository` | High-level domain interfaces (e.g., `NodeRepository`, `LocationRepository`). |
| `core:domain` | Pure KMP business logic and UseCases. |
| `core:data` | Core manager implementations and data orchestration. |
| `core:network` | KMP networking layer using Ktor, MQTT abstractions, and shared transport (`StreamFrameCodec`, `TcpTransport`, `SerialTransport`, `BleRadioInterface`). |
| `core:di` | Common DI qualifiers and dispatchers. |
| `core:navigation` | Shared navigation keys/routes for Navigation 3 using `@Serializable sealed interface` hierarchies. `DeepLinkRouter` for typed backstack synthesis, and `MeshtasticNavSavedStateConfig` with `subclassesOfSealed()` for automatic polymorphic backstack persistence. |
| `core:ui` | Shared Compose UI components (`MeshtasticAppShell`, `MeshtasticNavDisplay`, `MeshtasticNavigationSuite`, `AlertHost`, `SharedDialogs`, `PlaceholderScreen`, `MainAppBar`, dialogs, preferences) and platform abstractions. |
| `core:service` | KMP service layer; Android bindings stay in `androidMain`. |
| `core:api` | Public AIDL/API integration module for external clients. |
| `core:prefs` | KMP preferences layer built on DataStore abstractions. |
| `core:barcode` | Barcode scanning (Android-only). |
| `core:nfc` | NFC abstractions (KMP). Android NFC hardware implementation in `androidMain`. |
| `core/ble/` | Bluetooth Low Energy stack using Kable. |
| `core/resources/` | Centralized string and image resources (Compose Multiplatform). |
| `core/testing/` | Shared test doubles, fakes, and utilities for `commonTest` across all KMP modules. |
| `feature/` | Feature modules (e.g., `settings`, `map`, `messaging`, `node`, `intro`, `connections`, `firmware`, `wifi-provision`, `widget`). All are KMP except `widget`. Use `meshtastic.kmp.feature` convention plugin. |
| `feature/wifi-provision` | KMP WiFi provisioning via BLE (Nymea protocol). Uses `core:ble` Kable abstractions. |
| `feature/firmware` | Fully KMP firmware update system: Unified OTA (BLE + WiFi), native Nordic Secure DFU protocol (pure KMP), USB/UF2 updates, and `FirmwareRetriever` with manifest-based resolution. Desktop is a first-class target. |
| `desktop/` | Compose Desktop application. Thin host shell relying on feature modules for shared UI. Full Koin DI graph, TCP, Serial/USB, and BLE transports. Versioning via `config.properties` + `GitVersionValueSource`. |
## Namespacing
- **Standard:** Use the `org.meshtastic.*` namespace for all code.
- **Legacy:** Maintain the `com.geeksville.mesh` Application ID.
## Environment Setup
1. **JDK 21 MUST be used** to prevent Gradle sync/build failures.
2. **Secrets:** Copy `secrets.defaults.properties` to `local.properties`:
```properties
MAPS_API_KEY=dummy_key
datadogApplicationId=dummy_id
datadogClientToken=dummy_token
```
## Workspace Bootstrap (MUST run before any build)
Agents **MUST** perform these steps automatically at the start of every session before running any Gradle task. Do not wait for the user to tell you.
1. **Android SDK:** `ANDROID_HOME` may not be set in agent workspaces. Detect and export it:
```bash
# Check common macOS/Linux locations in order of preference
if [ -z "$ANDROID_HOME" ]; then
for dir in "$HOME/Library/Android/sdk" "$HOME/Android/Sdk" "/opt/android-sdk"; do
if [ -d "$dir" ]; then export ANDROID_HOME="$dir"; break; fi
done
fi
```
All `./gradlew` invocations must include `ANDROID_HOME` in the environment. If the SDK cannot be found, ask the user for the path.
2. **Proto submodule:** `core/proto/src/main/proto` is a Git submodule containing Protobuf definitions. It must be initialized or builds will fail with proto generation errors:
```bash
git submodule update --init
```
3. **Init secrets:** If `local.properties` does not exist, copy `secrets.defaults.properties` to `local.properties`. Without this the `google` flavor build fails:
```bash
[ -f local.properties ] || cp secrets.defaults.properties local.properties
```
## Troubleshooting
- **Build Failures:** Check `gradle/libs.versions.toml` for dependency conflicts.
- **Configuration Cache:** Add `--no-configuration-cache` if cache-related issues persist.
- **Koin Injection Failures:** Verify the component is included in `AppKoinModule`.

View file

@ -0,0 +1,85 @@
# Skill: Testing and CI Verification
## Description
Guidelines and commands for verifying code changes locally and understanding the Meshtastic-Android CI pipeline. Use this to determine which testing matrix is needed based on the change type.
## 1) Baseline local verification order
Run in a single invocation for routine changes to ensure code formatting, analysis, and basic compilation:
```bash
./gradlew spotlessCheck spotlessApply detekt assembleDebug test allTests
```
> **Why no `clean`?** Incremental builds are safe and significantly faster. Only use `clean` when debugging stale cache issues.
> **Why `test allTests` and not just `test`:**
> In KMP modules, the `test` task name is **ambiguous**. Gradle matches both `testAndroid` and
> `testAndroidHostTest` and refuses to run either, silently skipping KMP modules.
> `allTests` is the `KotlinTestReport` lifecycle task registered by the KMP plugin.
> Conversely, `allTests` does **not** cover pure-Android modules (`:app`, `:core:api`, etc.), which is why both `test` and `allTests` are needed.
*Note: If testing Compose UI on the JVM (Robolectric) with Java 21, pin tests to `@Config(sdk = [34])` to avoid SDK 35 compatibility crashes.*
## 2) Change-type verification matrix
- `docs-only` changes: Usually no Gradle run required, but run `spotlessCheck` if practical.
- `UI text/resource` changes: `spotlessCheck`, `detekt`, `assembleDebug`.
- `feature/commonMain logic` changes: `spotlessCheck`, `detekt`, `test allTests`, `assembleDebug`.
- `navigation/DI wiring` changes: `spotlessCheck`, `detekt`, `assembleDebug`, `test allTests`, plus flavor unit tests if available.
- If touching any KMP module, also run `kmpSmokeCompile`.
- `worker/service/background` changes: Broad tests, targeted WorkManager checks.
- `BLE/networking/core repository`: `spotlessCheck`, `detekt`, `assembleDebug`, `test allTests`.
## 3) Flavor checks
Run these when relevant to map, provider, or flavor-specific behavior:
```bash
./gradlew lintFdroidDebug lintGoogleDebug
./gradlew testFdroidDebug testGoogleDebug
```
## 4) CI Pipeline Architecture
CI is defined in `.github/workflows/reusable-check.yml` and structured as four parallel job groups:
1. **`lint-check`** — Runs spotless, detekt, Android lint, and KMP smoke compile in a single Gradle invocation (avoids 3x cold-start overhead). Uses `fetch-depth: 0` (full clone) for spotless ratcheting and version code calculation. Produces `cache_read_only` output and computed `version_code` for downstream jobs.
2. **`test-shards`** — A 3-shard matrix that runs unit tests in parallel (depends on `lint-check`):
- `shard-core`: `allTests` for all `core:*` KMP modules.
- `shard-feature`: `allTests` for all `feature:*` KMP modules.
- `shard-app`: Explicit test tasks for pure-Android/JVM modules (`app`, `desktop`, `core:barcode`).
Each shard generates Kover XML coverage and uploads test results + coverage to Codecov with per-shard flags.
Downstream jobs use `fetch-depth: 1` and receive `VERSION_CODE` from lint-check via env var, enabling shallow clones.
3. **`android-check`** — Builds APKs for all flavors (depends on `lint-check`).
4. **`build-desktop`** — Multi-OS matrix (`macos-latest`, `windows-latest`, `ubuntu-24.04`, `ubuntu-24.04-arm`) that builds desktop distributions via `createDistributable` (depends on `lint-check`).
### Runner Strategy (Three Tiers)
- **`ubuntu-24.04-arm`** — Lightweight/utility jobs (status checks, labelers, triage, changelog, release metadata, stale, moderation). Benefits from ARM runners' shorter queue times.
- **`ubuntu-24.04`** — Main Gradle-heavy jobs (CI `lint-check`/`test-shards`/`android-check`, release builds, Dokka, publish, dependency-submission). Pin for reproducibility.
- **Desktop runners:** Multi-OS matrix (`macos-latest`, `windows-latest`, `ubuntu-24.04`, `ubuntu-24.04-arm`) for the `build-desktop` job and release packaging.
### CI Gradle Properties
`gradle.properties` is tuned for local dev (8g heap, 4g Kotlin daemon). CI uses `.github/ci-gradle.properties`, which the `gradle-setup` composite action copies to `~/.gradle/gradle.properties`. Key CI overrides:
- `org.gradle.daemon=false` (single-use runners)
- `kotlin.incremental=false` (fresh checkouts)
- `-Xmx4g` Gradle heap, `-Xmx2g` Kotlin daemon
- VFS watching disabled, workers capped at 4
- `org.gradle.isolated-projects=true` for better parallelism
- Disables unused Android build features (`resvalues`, `shaders`)
### CI Conventions
- **KMP Smoke Compile:** `./gradlew kmpSmokeCompile` is a lifecycle task (registered in `RootConventionPlugin`) that auto-discovers all KMP modules and depends on their `compileKotlinJvm` + `compileKotlinIosSimulatorArm64` tasks.
- **`maxParallelForks` CI logic:** `ProjectExtensions.kt` checks `project.findProperty("ci") == "true"` and uses full available processors in CI (4 forks on std runners) vs. half locally. All CI invocations pass `-Pci=true`.
- **Detekt report formats:** Detekt.kt checks `project.findProperty("ci") == "true"` and disables html, txt, md reports in CI; only xml + sarif are retained for GitHub annotations.
- **Robolectric SDK caching:** The `gradle-setup` composite action caches `~/.m2/repository/org/robolectric` to prevent flaky `SocketException` on SDK downloads. Cache key is `robolectric-{version}-sdk{level}` — update when bumping version or SDK level.
- **`mavenLocal()` gated:** Disabled by default to prevent CI cache poisoning. Pass `-PuseMavenLocal` for local JitPack testing.
- **JUnit parallel execution:** Enabled project-wide with classes running sequentially (`junit.jupiter.execution.parallel.mode.classes.default=same_thread`) to avoid `Dispatchers.setMain()` races. Cross-module parallelism comes from Gradle forks (`maxParallelForks`).
- **`test-retry` plugin:** Applied to all module types (maxRetries=2, maxFailures=10).
- **`fail-fast: false`:** Test sharding does not cancel other shards on failure.
- **Explicit Gradle task paths:** Prefer `app:lintFdroidDebug` over shorthand `lintDebug` in CI.
- **Pull request CI:** Main-only (`.github/workflows/pull-request.yml` targets `main`).
- **Cache writes:** Trusted on `main` and merge queue runs; other refs use read-only cache.
- **Path filtering:** `check-changes` in `pull-request.yml` must include module dirs plus build/workflow entrypoints (`build-logic/**`, `gradle/**`, `.github/workflows/**`, `gradlew`, `settings.gradle.kts`, etc.).
- **AboutLibraries:** Runs in `offlineMode` by default (no GitHub/SPDX API calls). Release builds pass `-PaboutLibraries.release=true` via Fastlane/Gradle CLI to enable remote license fetching. Do NOT re-gate on `CI` or `GITHUB_TOKEN` alone.

108
AGENTS.md Normal file
View file

@ -0,0 +1,108 @@
# Meshtastic Android - Unified Agent & Developer Guide
<role>
You are an expert Android and Kotlin Multiplatform (KMP) engineer working on Meshtastic-Android, a decentralized mesh networking application. You must maintain strict architectural boundaries, use Modern Android Development (MAD) standards, and adhere to Compose Multiplatform and JetBrains Navigation 3 patterns.
</role>
<context_and_memory>
- **Project Goal:** Decouple business logic from the Android framework for seamless multi-platform execution (Android, Desktop, iOS) while maintaining a high-performance native Android experience.
- **Language & Tech:** Kotlin 2.3+ (JDK 21 REQUIRED), Gradle Kotlin DSL, Ktor, Okio, Room KMP.
- **Core Architecture:**
- `commonMain` is pure KMP. `androidMain` is strictly for Android framework bindings.
- App root DI and graph assembly live in the `app` and `desktop` host shells.
- **Skills Directory:** You **MUST** consult the relevant `.skills/` module before executing work:
- `.skills/project-overview/` - Codebase map, module directory, namespacing, environment setup, troubleshooting.
- `.skills/kmp-architecture/` - Bridging, expect/actual, source-sets, catalog aliases, build-logic conventions.
- `.skills/compose-ui/` - Adaptive UI, placeholders, string resources.
- `.skills/navigation-and-di/` - JetBrains Navigation 3 & Koin 4.2+ annotations.
- `.skills/testing-ci/` - Validation commands, CI pipeline architecture, CI Gradle properties.
- `.skills/implement-feature/` - Step-by-step feature workflow.
- `.skills/code-review/` - PR validation checklist.
- `.skills/new-branch/` - Canonical recipe for branching off upstream/main and rebasing stale PRs.
- **Active Status:** Read `docs/kmp-status.md` and `docs/roadmap.md` to understand the current KMP migration epoch.
</context_and_memory>
<process>
- **Workspace Bootstrap (MUST run first):** Before executing any Gradle task in a new workspace, agents MUST automatically:
1. **Find the Android SDK**`ANDROID_HOME` is often unset in agent worktrees. Probe `~/Library/Android/sdk`, `~/Android/Sdk`, and `/opt/android-sdk`. Export the first one found. If none exist, ask the user.
2. **Init the proto submodule** — Run `git submodule update --init`. The `core/proto/src/main/proto` submodule contains Protobuf definitions required for builds.
3. **Init secrets** — If `local.properties` does not exist, copy `secrets.defaults.properties` to `local.properties`. Without this the `google` flavor build fails.
- **Think First:** Reason through the problem before writing code. For complex KMP tasks involving multiple modules or source sets, outline your approach step-by-step before executing.
- **Plan Before Execution:** Use the git-ignored `.agent_plans/` directory to write markdown implementation plans (`plan.md`) and Mermaid diagrams (`.mmd`) for complex refactors before modifying code.
- **Atomic Execution:** Follow your plan step-by-step. Do not jump ahead. Use TDD where feasible (write `commonTest` fakes first).
- **Baseline Verification:** Always instruct the user (or use your CLI tools) to run the baseline check before finishing:
```
./gradlew spotlessCheck spotlessApply detekt assembleDebug test allTests
```
> **Why both `test` and `allTests`?** In KMP modules, `test` is ambiguous and Gradle silently skips them. `allTests` is the KMP lifecycle task that covers KMP modules. Conversely, `allTests` does NOT cover pure-Android modules (`:app`, `:core:api`), so both tasks are required.
> For KMP cross-platform compilation, also run `./gradlew kmpSmokeCompile` (compiles all KMP modules for JVM + iOS Simulator — used by CI's `lint-check` job).
</process>
<agent_tools>
- **Codebase Search:** Use whatever search and navigation tools your environment provides (file search, grep/ripgrep, symbol lookup, semantic search, etc.) to map out project boundaries before coding. Prefer `rg` (ripgrep) over `grep` or `find` for raw text search.
- **Terminal Pagers:** When running shell commands like `git diff` or `git log`, ALWAYS use `--no-pager` (e.g., `git --no-pager diff`) to prevent getting stuck in an interactive prompt.
- **Fetch Up-to-Date Docs:** If your environment supports web search, MCP servers, or documentation lookup tools, actively query them for the latest documentation on Koin 4.x, JetBrains Navigation 3, and Compose Multiplatform 1.11.
- **Clone Reference Repos:** If documentation is insufficient, use shell commands to clone bleeding-edge KMP dependency repositories into the local `.agent_refs/` directory (git-ignored) to inspect their source and test suites. Recommended:
- `https://github.com/JetBrains/kotlin-multiplatform-dev-docs` (Official Docs)
- `https://github.com/InsertKoinIO/koin` (Koin Annotations 4.x)
- `https://github.com/JetBrains/compose-multiplatform` (Navigation 3, Adaptive UI)
- `https://github.com/JuulLabs/kable` (BLE)
- `https://github.com/coil-kt/coil` (Coil 3 KMP)
- `https://github.com/ktorio/ktor` (Ktor Networking)
- **Formatting Hooks:** Always run `./gradlew spotlessApply` as an automatic formatting hook to fix style violations after editing.
</agent_tools>
<documentation_sync>
`AGENTS.md` is the single source of truth for agent instructions. Agent-specific files redirect here:
- `.github/copilot-instructions.md` — Copilot redirect to `AGENTS.md`.
- `CLAUDE.md` — Claude Code entry point; imports `AGENTS.md` via `@AGENTS.md` and adds Claude-specific instructions.
- `GEMINI.md` — Gemini redirect to `AGENTS.md`. Gemini CLI also configured via `.gemini/settings.json` to read `AGENTS.md` directly.
Do NOT duplicate content into agent-specific files. When you modify architecture, module targets, CI tasks, validation commands, or agent workflow rules, update `AGENTS.md`, `.skills/`, and `docs/kmp-status.md` as needed.
</documentation_sync>
<rules>
- **No Lazy Coding:** DO NOT use placeholders like `// ... existing code ...`. Always provide complete, valid code blocks for the sections you modify to ensure correct diff application.
- **No Framework Bleed:** NEVER import `java.*` or `android.*` in `commonMain`. Use KMP equivalents: `Okio` for `java.io.*`, `kotlinx.coroutines.sync.Mutex` for `java.util.concurrent.locks.*`, `atomicfu` or Mutex-guarded `mutableMapOf()` for `ConcurrentHashMap`. Use `org.meshtastic.core.common.util.ioDispatcher` instead of `Dispatchers.IO` directly.
- **Koin Annotations:** Use `@Single`, `@Factory`, and `@KoinViewModel` inside `commonMain` instead of manual constructor trees. Do not enable A1 module compile safety — A3 full-graph validation (`VerifyModule`) is the correct approach because interfaces and implementations live in separate modules. Always register new feature modules in **both** `AppKoinModule.kt` and `DesktopKoinModule.kt`; they are not auto-activated.
- **CMP Over Android:** Use `compose-multiplatform` constraints. `stringResource` only supports `%N$s` and `%N$d` — pre-format floats with `NumberFormatter.format()` from `core:common` and pass as `%N$s`. In ViewModels/coroutines use `getStringSuspend(Res.string.key)`; never blocking `getString()`. Always use `MeshtasticNavDisplay` (not raw `NavDisplay`) as the navigation host, and `NavigationBackHandler` (not Android's `BackHandler`) for back gestures in shared code.
- **ProGuard:** When adding a reflection-heavy dependency, add keep rules to **both** `app/proguard-rules.pro` and `desktop/proguard-rules.pro` and verify release builds.
- **Always Check Docs:** If unsure about an abstraction, search `core:ui/commonMain` or `core:navigation/commonMain` before assuming it doesn't exist.
- **Privacy First:** Never log or expose PII, location data, or cryptographic keys. Meshtastic is used for sensitive off-grid communication — treat all user data with extreme caution.
- **Dependency Discipline:** Never add a library without first checking `libs.versions.toml` and justifying its inclusion against the project's size and complexity goals. Prefer removing dependencies over adding them.
- **Zero Lint Tolerance:** A task is incomplete if `detekt` fails or `spotlessCheck` does not pass for touched modules.
- **Read Before Refactoring:** When a pattern contradicts best practices, analyze whether it is legacy debt or a deliberate architectural choice before proposing a change.
</rules>
<copilot_cli_workflow>
These tips apply when the agent is the GitHub Copilot CLI. Other agent runtimes may ignore this
section.
- **Delegate long autonomous work.** For sweeping audits, multi-hour investigations, or "fleet"
prompts (*"investigate why X is broken on release"*, *"audit the diff since tag vX.Y.Z"*,
*"review the codebase for best practices against spec Z"*), prefer `/delegate` so the GitHub
cloud agent opens a PR while the user keeps working locally. Don't tie up an interactive
session on work that can run unattended.
- **Use `/research` for "latest hotness" prompts.** When the user asks for *"the latest scoop"*
on Kotlin / KMP / Compose / Koin trends, the built-in `/research` slash command performs deep
research across GitHub and the web with better source grounding than an ad-hoc prompt.
- **Use `/plan` mode for "noodle it out" prompts.** When the user asks for an implementation
plan, a "walk me through next steps", or explicitly says "don't do anything yet" — switch to
plan mode (Shift+Tab or `/plan`). Plans persist in the session workspace and keep the agent
from prematurely editing files. Continue to write long-form plans and Mermaid diagrams to
`.agent_plans/` (git-ignored) for multi-module refactors.
- **`/share` audit and review outputs.** After large audits, PR safety reviews, or release-cycle
quality passes, offer `/share` to export the findings to a gist or markdown file. These
reports are valuable artifacts — don't let them die in session history.
- **Prefer `/rewind` or `ctrl+s` over retyping.** If a turn went sideways, `/rewind` reverts
file changes and the turn; `ctrl+s` submits while preserving the input for quick iteration.
Avoid re-issuing the same prompt verbatim.
- **New-branch flow lives in a skill.** When the user says "fresh branch off fetched origin/main"
or "rebase PR #NNNN", consult `.skills/new-branch/SKILL.md` rather than re-deriving the recipe.
</copilot_cli_workflow>
<git_and_prs>
- **Commit Hygiene:** Squash fixup/polish/review-feedback commits before opening a PR. Each commit should represent a logical, self-contained unit of work — not a back-and-forth conversation.
- **PR Descriptions:** Keep PR descriptions concise and scannable. State *what changed* and *why*, not a per-commit play-by-play. Use a short summary paragraph followed by a bullet list of changes. Avoid tables, headers-per-commit, or verbose breakdowns. Reference the `meshtastic/firmware` repo PRs for tone and style.
- **PR Titles:** Use conventional commit format: `feat(scope):`, `fix(scope):`, `refactor(scope):`, `chore(scope):`. Keep titles under ~72 characters.
</git_and_prs>

9
CLAUDE.md Normal file
View file

@ -0,0 +1,9 @@
# Meshtastic Android - Claude Code Guide
@AGENTS.md
## Claude-Specific Instructions
- **Think First:** Always outline your step-by-step reasoning inside `<thinking>` tags before writing code or shell commands. Claude models perform significantly better on complex KMP tasks when they "think out loud" first.
- **Skills:** The `.skills/` directory contains task-specific instruction modules. Load them as needed — only the skill relevant to your current task.
- **Plan Mode:** Use plan mode for architectural changes spanning multiple modules. Write plans to `.agent_plans/` (git-ignored). The Copilot-CLI-specific `/plan`, `/delegate`, `/research`, and `/share` guidance in `AGENTS.md` does not apply to Claude Code — skip the `<copilot_cli_workflow>` section.

4
CODE_OF_CONDUCT.md Normal file
View file

@ -0,0 +1,4 @@
# Contributor Covenant Code of Conduct
The Meshtastic Firmware project is subject to the code of conduct for the parent project, which can be found here:
https://meshtastic.org/docs/legal/conduct/

94
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,94 @@
# Contributing to Meshtastic-Android
Thank you for your interest in contributing to Meshtastic-Android! We welcome contributions from everyone. Please take a moment to review these guidelines to help us maintain a high-quality, collaborative project.
## How to Contribute
- **Fork the repository** and create your branch from `main` or the appropriate feature branch.
- **Make your changes** in a logical, atomic manner.
- **Test your changes** thoroughly before submitting a pull request.
- **Submit a pull request** (PR) with a clear description of your changes and the problem they solve.
- If you are addressing an existing issue, please reference it in your PR (e.g., `Fixes #123`).
## Code Style
- Follow the [Kotlin Coding Conventions](https://kotlinlang.org/docs/coding-conventions.html) for Kotlin code.
- Use Android Studio's default formatting settings.
- We use [spotless](https://github.com/diffplug/spotless) for automated code formatting. You can run `./gradlew spotlessApply` to format your code automatically.
- You can also run `./gradlew spotlessInstallGitPrePushHook --no-configuration-cache` to install a pre-push Git hook that will run a `spotlessCheck`.
- Write clear, descriptive variable and function names.
- Add comments where necessary, especially for complex logic.
- Keep methods and classes focused and concise.
- **Strings:** Use localised strings via the **Compose Multiplatform Resource** library in `:core:resources`.
- Do **not** use the legacy `app/src/main/res/values/strings.xml`.
- **Definition:** Add strings to `core/resources/src/commonMain/composeResources/values/strings.xml`.
- **Usage:**
```kotlin
import org.jetbrains.compose.resources.stringResource
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.your_string_key
Text(text = stringResource(Res.string.your_string_key))
```
### Linting
Meshtastic-Android uses [Detekt](https://detekt.dev/) for static code analysis and linting of Kotlin code.
- Run `./gradlew detekt` before submitting your pull request to ensure your code passes all lint checks.
- Fix any Detekt warnings or errors reported in your code.
- It is possible to suppress warnings individually, but this should be used very sparingly.
- You can find Detekt configuration in the `config/detekt` directory. If you believe a rule should be changed or suppressed, discuss it in your PR.
Consistent linting helps keep the codebase clean and maintainable.
### Testing
Meshtastic-Android uses unit tests, Robolectric JVM tests, and instrumented UI tests to ensure code quality and reliability.
- **Unit tests** are located in the `src/test/` directory of each module.
- **Compose UI Tests (JVM)** are preferred for component testing and are also located in `src/test/` using **Robolectric**.
- Note: If using Java 21, pin your Robolectric tests to `@Config(sdk = [34])` to avoid SDK 35 compatibility issues.
- **Instrumented tests** (including full E2E UI tests) are located in `src/androidTest/`. For Compose UI, use the [Jetpack Compose Testing APIs](https://developer.android.com/jetpack/compose/testing).
#### Guidelines for Testing
- Add or update tests for any new features or bug fixes.
- Ensure all tests pass by running:
- `./gradlew test` for unit and Robolectric tests
- `./gradlew connectedAndroidTest` for instrumented tests
- For UI components, write Robolectric Compose tests where possible for faster execution.
- If your change is difficult to test, explain why in your pull request.
Comprehensive testing helps prevent regressions and ensures a stable experience for all users.
## Pull Requests
- branches should start with:
- bugfix
- enhancement
- dependencies
- repo
- reserved (release, automation)
- Ensure your branch is up to date with the latest `main` branch before submitting a PR.
- Provide a meaningful title and description for your PR.
- Include information on how to test and/or replicate if it is not obvious.
- Include screenshots or logs if your change affects the UI or user experience.
- Be responsive to feedback and make requested changes promptly.
- Squash commits if requested by a maintainer.
## Issue Reporting
- Search existing issues before opening a new one to avoid duplicates.
- Provide a clear and descriptive title.
- Include steps to reproduce, expected behavior, and actual behavior.
- Attach logs, screenshots, or other helpful context if applicable.
## Community Standards
- Be respectful and considerate in all interactions.
- The Meshtastic Android project is subject to the code of conduct for the parent project, which can be [found here:](https://meshtastic.org/docs/legal/conduct/)
- Help others by reviewing pull requests and answering questions when possible.
Thank you for helping make Meshtastic-Android better!

6
GEMINI.md Normal file
View file

@ -0,0 +1,6 @@
# Meshtastic Android - Google Gemini Guide
> **Note:** The canonical instructions for all AI Agents have been deduplicated.
You MUST immediately read and internalize the unified instructions located at the root of the repository in `AGENTS.md`.
After reading `AGENTS.md`, consult the `.skills/` directory for task-specific playbooks.

3
Gemfile Normal file
View file

@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "fastlane"

238
Gemfile.lock Normal file
View file

@ -0,0 +1,238 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.8)
abbrev (0.1.2)
addressable (2.9.0)
public_suffix (>= 2.0.2, < 8.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.4.0)
aws-partitions (1.1240.0)
aws-sdk-core (3.245.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
bigdecimal
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.123.0)
aws-sdk-core (~> 3, >= 3.244.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.219.0)
aws-sdk-core (~> 3, >= 3.244.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.12.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
benchmark (0.5.0)
bigdecimal (4.1.2)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
csv (3.3.5)
declarative (0.0.20)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.112.0)
faraday (1.10.5)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.8)
faraday (>= 0.8.0)
http-cookie (>= 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.1)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.2.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.4)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.1)
fastlane (2.233.0)
CFPropertyList (>= 2.3, < 4.0.0)
abbrev (~> 0.1.2)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.197)
babosa (>= 1.0.3, < 2.0.0)
base64 (~> 0.2.0)
benchmark (>= 0.1.0)
bundler (>= 1.17.3, < 5.0.0)
colored (~> 1.2)
commander (~> 4.6)
csv (~> 3.3)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.1.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, <= 2.1.1)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
logger (>= 1.6, < 2.0)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
mutex_m (~> 0.3.0)
naturally (~> 2.2)
nkf (~> 0.2.0)
optparse (>= 0.1.1, < 1.0.0)
ostruct (>= 0.1.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.4.1)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.99.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-core (0.18.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 1.9)
httpclient (>= 2.8.3, < 3.a)
mini_mime (~> 1.0)
mutex_m
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
google-apis-iamcredentials_v1 (0.26.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-playcustomapp_v1 (0.17.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-storage_v1 (0.61.0)
google-apis-core (>= 0.15.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (2.1.1)
faraday (>= 1.0, < 3.a)
google-cloud-errors (1.6.0)
google-cloud-storage (1.59.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-core (>= 0.18, < 2)
google-apis-iamcredentials_v1 (~> 0.18)
google-apis-storage_v1 (>= 0.42)
google-cloud-core (~> 1.6)
googleauth (~> 1.9)
mini_mime (~> 1.0)
googleauth (1.11.2)
faraday (>= 1.0, < 3.a)
google-cloud-env (~> 2.1)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.19.4)
jwt (2.10.2)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.20.1)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.3.0)
nkf (0.2.0)
optparse (0.8.1)
os (1.1.4)
ostruct (0.6.3)
plist (3.7.2)
public_suffix (7.0.5)
rake (13.4.2)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.4.1)
rexml (3.4.4)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
security (0.1.5)
signet (0.21.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 4.0)
multi_json (~> 1.10)
simctl (1.6.10)
CFPropertyList
naturally
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
arm64-darwin-24
ruby
DEPENDENCIES
fastlane
BUNDLED WITH
2.7.2

143
README.md
View file

@ -1,71 +1,106 @@
# Meshtastic-Android
<p align="center">
<img src=".github/meshtastic_logo.png" alt="Meshtastic Logo" width="200"/>
</p>
<h1 align="center">Meshtastic-Android</h1>
![Android CI](https://github.com/meshtastic/Meshtastic-Android/workflows/Android%20CI/badge.svg?branch=master)
![GitHub all releases](https://img.shields.io/github/downloads/meshtastic/meshtastic-android/total)
[![Android CI](https://github.com/meshtastic/Meshtastic-Android/actions/workflows/pull-request.yml/badge.svg?branch=main)](https://github.com/meshtastic/Meshtastic-Android/actions/workflows/pull-request.yml)
[![codecov](https://codecov.io/gh/meshtastic/Meshtastic-Android/graph/badge.svg)](https://codecov.io/gh/meshtastic/Meshtastic-Android)
[![Crowdin](https://badges.crowdin.net/e/f440f1a5e094a5858dd86deb1adfe83d/localized.svg)](https://crowdin.meshtastic.org/android)
[![CLA assistant](https://cla-assistant.io/readme/badge/meshtastic/Meshtastic-Android)](https://cla-assistant.io/meshtastic/Meshtastic-Android)
[![Fiscal Contributors](https://opencollective.com/meshtastic/tiers/badge.svg?label=Fiscal%20Contributors&color=deeppink)](https://opencollective.com/meshtastic/)
[![Vercel](https://img.shields.io/static/v1?label=Powered%20by&message=Vercel&style=flat&logo=vercel&color=000000)](https://vercel.com?utm_source=meshtastic&utm_campaign=oss)
This is a tool for using Android with open-source mesh radios. For more information see our webpage: [meshtastic.org](https://www.meshtastic.org). If you are looking for the the device side code, see [here](https://github.com/meshtastic/Meshtastic-esp32).
This is a tool for using Android (and Compose Desktop) with open-source mesh radios. For more information see our webpage: [meshtastic.org](https://www.meshtastic.org). If you are looking for the device side code, see [here](https://github.com/meshtastic/firmware).
This project is currently early-alpha, if you have questions or feedback please [Join our discussion forum](https://meshtastic.discourse.group/). We would love to hear from you.
This project is currently beta testing across various providers. If you have questions or feedback please [Join our discussion forum](https://github.com/orgs/meshtastic/discussions) or the [Discord Group](https://discord.gg/meshtastic) . We would love to hear from you!
The production version of our application is here:
[![Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh](https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png)](https://play.google.com/store/apps/details?id=com.geeksville.mesh&referrer=utm_source%3Dgithub-android-readme)
But if you want the beta-test app now, we'd love to have your help testing. Three steps to opt-in to the test:
## Get Meshtastic
1. Join [this Google group](https://groups.google.com/forum/#!forum/meshtastic-alpha-testers) with the account you use in Google Play. **Optional** - if you just want 'beta builds'
not bleeding edge alpha test builds skip to the next step.
2. Go to this [URL](https://play.google.com/apps/testing/com.geeksville.mesh) to opt-in to the alpha/beta test.
3. If you encounter any problems or have questions, [post in the forum](https://meshtastic.discourse.group/)t and we'll help.
The easiest, and fastest way to get the latest beta releases is to use our [github releases](https://github.com/meshtastic/Meshtastic-Android/releases). It is recommend to use these with [Obtainium](https://github.com/ImranR98/Obtainium) to get the latest updates.
## Build instructions
Alternatively, these other providers are also available, but may be slower to update.
If you would like to develop this application we'd love your help! These build instructions are brief
and should be improved, please send a PR if you can.
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
width="24%">](https://f-droid.org/packages/com.geeksville.mesh/)
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png"
alt="Get it on IzzyOnDroid"
width="24%">](https://apt.izzysoft.de/fdroid/index/apk/com.geeksville.mesh)
[<img src="https://github.com/machiav3lli/oandbackupx/blob/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png"
alt="Get it on GitHub"
width="24%">](https://github.com/meshtastic/Meshtastic-Android/releases)
[<img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"
alt="Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh]"
width="24%">](https://play.google.com/store/apps/details?id=com.geeksville.mesh&referrer=utm_source%3Dgithub-android-readme)
* Use Android Studio 4.0 RC 1 to build/debug (other versions might work but no promises)
* Use "git submodule update --init --recursive" to pull in the various submodules we depend on
* There are a few config files which you'll need to copy from templates included in the project.
Run the following commands to do so:
The play store is the last to update of these options, but if you want to join the Play Store testing program go to [this URL](https://play.google.com/apps/testing/com.geeksville.mesh) and opt-in to become a tester.
If you encounter any problems or have questions, [ask us on the discord](https://discord.gg/meshtastic), [create an issue](https://github.com/meshtastic/Meshtastic-Android/issues), or [post in the forum](https://github.com/orgs/meshtastic/discussions) and we'll help as we can.
```
rm ./app/google-services.json
cp ./app/google-services-example.json ./app/google-services.json
rm ./app/src/main/res/values/mapbox-token.xml
cp ./app/special/mapbox-token.xml ./app/src/main/res/values/
rm ./app/src/main/res/values/curfirmwareversion.xml
cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/
## Documentation
The project's documentation is generated with [Dokka](https://kotlinlang.org/docs/dokka-introduction.html) and hosted on GitHub Pages. It is automatically updated on every push to the `main` branch.
[**View Documentation**](https://meshtastic.github.io/Meshtastic-Android/)
### Generating Locally
You can generate the documentation locally to preview your changes.
1. **Run the Dokka task:**
```bash
./gradlew dokkaGeneratePublicationHtml
```
2. **View the output:**
The generated HTML files will be located in the `build/dokka/html` directory. You can open the `index.html` file in your browser to view the documentation.
## Architecture
### Modern Android Development (MAD)
The app follows modern Android development practices, built on top of a shared Kotlin Multiplatform (KMP) Core:
- **KMP Modules:** Business logic (`core:domain`), data sources (`core:data`, `core:database`, `core:datastore`), and communications (`core:network`, `core:ble`) are entirely platform-agnostic, targeting Android and Compose Desktop.
- **UI:** JetBrains Compose Multiplatform (Material 3) using Compose Multiplatform resources.
- **State Management:** Unidirectional Data Flow (UDF) with ViewModels, Coroutines, and Flow.
- **Dependency Injection:** Koin with Koin Annotations (K2 Compiler Plugin).
- **Navigation:** JetBrains Navigation 3 (Multiplatform routing with RESTful deep linking).
- **Data Layer:** Repository pattern with Room KMP (local DB), DataStore (prefs), and Protobuf (device comms).
### Bluetooth Low Energy (BLE)
The BLE stack uses a multiplatform interface-driven architecture. Platform-agnostic interfaces live in `commonMain`, utilizing the **Kable** multiplatform BLE library to handle device communication across all supported targets (Android, Desktop). This provides a robust, Coroutine-based architecture for reliable device communication while remaining fully KMP compatible. See [core/ble/README.md](core/ble/README.md) for details.
## Translations
You can help translate the app into your native language using [Crowdin](https://crowdin.meshtastic.org/android).
## API & Integration
Developers can integrate with the Meshtastic Android app using our published API library via **JitPack**. This allows third-party applications (like the ATAK plugin) to communicate with the mesh service via AIDL.
For detailed integration instructions, see [core/api/README.md](core/api/README.md).
Additionally, the app includes a built-in **Local TAK Server** feature that can be enabled in settings. This runs a local TCP server on port 8089 to allow ATAK clients to connect directly and route their traffic over the mesh.
## Building the Android App
> [!WARNING]
> Debug and release builds can be installed concurrently. This is solely to enable smoother development, and you should avoid running both apps simultaneously. To ensure proper function, force quit the app not in use.
https://meshtastic.org/docs/development/android/
Note: when building the `google` flavor locally you will need to supply your own [Google Maps Android SDK api key](https://developers.google.com/maps/documentation/android-sdk/get-api-key) `MAPS_API_KEY` in `local.properties` in order to use Google Maps.
e.g.
```properties
MAPS_API_KEY=your_google_maps_api_key_here
```
* Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone
or the emulator. Note: The emulators don't support bluetooth, so some features can not be used in
that environment.
## Contributing guidelines
## Analytics setup
For detailed instructions on how to contribute, please see our [CONTRIBUTING.md](CONTRIBUTING.md) file.
For details on our release process, see the [RELEASE_PROCESS.md](RELEASE_PROCESS.md) file.
* analytics are included but can be disabled by the user on the settings screen
* on dev devices "adb shell setprop debug.firebase.analytics.app com.geeksville.mesh"
adb shell setprop log.tag.FirebaseCrashlytics DEBUG
for verbose logging:
```aidl
adb shell setprop log.tag.FA VERBOSE
```
# Credits
This project is the work of volunteers:
* @artemisoftnian: Contributed Spanish translations.
* @CycloMies: Contributed Swedish, Finnish and German translations.
* @eriktheV-king: Contributed Dutch and French translations.
* @Lgoix: Contributed tooltip for radio mode
* @Eugene: Contributed Russian translation.
* @Konradrundfunk: Contributed German fixes.
* @Mango-sauce: Contributed Chinese translation.
* @NEKLAN: Contributed Japanese translation.
* @Ohcdh: Contributed Irish and Italian translations.
* @Slavino: Contributed Slovak translation.
Copyright 2019, Geeksville Industries, LLC. GPL V3 license
## Repository Statistics
![Alt](https://repobeats.axiom.co/api/embed/1d75239069a6d671fe0b8f80b2e1bf590a98f0eb.svg "Repobeats analytics image")
Copyright 2025, Meshtastic LLC. GPL-3.0 license

65
RELEASE_PROCESS.md Normal file
View file

@ -0,0 +1,65 @@
# Meshtastic-Android Release Process
This guide summarizes the steps for releasing a new version of Meshtastic-Android. The process is fully automated via GitHub Actions and Fastlane.
## Overview
The entire release process is managed by a single, manually-triggered GitHub Action: **`Create or Promote Release`**.
- **Trigger:** To start a new release or promote an existing one, a developer manually runs the workflow from the GitHub Actions tab.
- **Inputs:** The workflow requires two inputs:
1. `version`: The base version number you are releasing (e.g., `2.4.0`).
2. `channel`: The release channel you are targeting (`internal`, `closed`, `open`, or `production`).
- **Automation:** The workflow handles everything automatically:
- **Syncs Assets:** Fetches the latest firmware/hardware lists, protobuf definitions, and translations (Crowdin).
- **Generates Changelog:** Creates a clean changelog from commits since the last production release and commits it to the repo.
- **Updates Config:** Automatically bumps the `VERSION_NAME_BASE` in `config.properties`.
- **Verifies & Tags:** Runs lint checks, builds the app, and *only* tags the release if successful.
- **Deploys:** Uploads the build to the correct Google Play track and attaches artifacts (`.aab`/`.apk`) to a GitHub Release.
- **Changelog:** Release notes are auto-generated from PR labels. Ensure PRs are labeled correctly to maintain an accurate changelog.
## Release Steps
### 1. Start an Internal Release
1. Navigate to the **Actions** tab in the GitHub repository.
2. Select the **`Create or Promote Release`** workflow.
3. Click the **"Run workflow"** dropdown.
4. Enter the base `version` (e.g., `2.4.0`).
5. Select the `internal` channel.
6. Click **"Run workflow"**.
The workflow will:
1. **Create a new commit** on the current branch containing updated assets, translations, and the new changelog.
2. **Tag** that commit with an incremental internal tag (e.g., `v2.4.0-internal.1`).
3. **Build & Deploy** the verified artifact to the Play Store Internal track.
4. Publish a **draft** pre-release on GitHub.
### 2. Promote to the Next Channel
Once an internal build has been verified, you can promote it to a wider audience.
1. Run the **`Create or Promote Release`** workflow again with the same base `version`.
2. Select the next channel in the sequence (e.g., `closed`, then `open`).
3. The workflow will create a new incremental tag for that channel (e.g., `v2.4.0-closed.1`) and create a **published** pre-release on GitHub.
### 3. Promote to Production
After testing is complete on all pre-release channels, you can create the final public release.
1. Run the **`Create or Promote Release`** workflow one last time.
2. Use the same base `version`.
3. Select the `production` channel.
4. The workflow will create a clean version tag (e.g., `v2.4.0`) and create a **published, stable** (non-prerelease) release on GitHub.
### 4. Post-Release
1. **Verify:** Check the Google Play Console to ensure the build is available on the correct track.
2. **Merge:** Merge the release branch (if one was used for stabilization) back into `main`.
## Build Attestations & Provenance
All release artifacts are accompanied by explicit GitHub build attestations (provenance). This provides cryptographic proof that the artifacts were built by our trusted GitHub Actions workflow, ensuring supply chain integrity.
- You can view and verify provenance in the GitHub UI under each release asset.
- For more details, see [GitHub's documentation on build provenance](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#provenance-attestations).

12
SECURITY.md Normal file
View file

@ -0,0 +1,12 @@
# Security Policy
## Supported Versions
| App Version | Supported |
| ---------------- | ------------------ |
| 2.7.x | :white_check_mark: |
| <= 2.6.x | :x: |
## Reporting a Vulnerability
We support the private reporting of potential security vulnerabilities. Please go to the Security tab to file a report with a description of the potential vulnerability and reproduction scripts (preferred) or steps, and our developers will review.

58
TODO.md
View file

@ -1,58 +0,0 @@
# Remaining tasks before declaring 1.0
* add a low level settings screen (let user change any of the RadioConfig parameters)
* add play store link with https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder and the play icon
Things for the betaish period.
* let user change more channel parameters
* really great notes about importance of clean BLE disconnects: https://blog.classycode.com/a-short-story-about-android-ble-connection-timeouts-and-gatt-internal-errors-fa89e3f6a456
# Documentation tasks
Mostly for geeksville
Document the following in application behavior
*change ls_secs is 1 hr normally, which is fine because if there are other nodes in the mesh and they send us a packet we will wake any time during ls_secs and update app state
* use states for meshservice: disconnected -> connected-> devsleep -> disconnected (3 states)
* when device enters LS state radiointerfaceservice publishes "Broadcasting connection=false", meshservice should then enter devicesleepstate for ls_secs + 30s (to allow for some margin)
* describe user experience: devices always point to each other and show distance, you can send texts between nodes
the channel is encrypted, you can share the the channel key with others by qr code or by sharing a special link
* take video of the app
# Post 1.0
* show pointer arrow on the outside of the user icons, always pointing towards them
* Use setLargeIcon to show user icons in the notification: file:///home/kevinh/packages/android-sdk-linux/docs/design/patterns/notifications.html
* Our notification about messages should use VISIBLITY_PRIVATE + setPublicVersion per file:///home/kevinh/packages/android-sdk-linux/docs/guide/topics/ui/notifiers/notifications.html
* Use LocationRequest.setSmallestDisplacement to save battery and decrease net activity
* use platform theme (dark or light)
* Do PRIORITY_BALANCED_POWER_ACCURACY for our gps updates when no one in the mesh is nearer than 200 meters
* spend some quality power consumption tuning with https://developer.android.com/studio/profile/energy-profiler and https://developer.android.com/topic/performance/power/battery-historian
* use google signin to get user name (make optional)
* keep past messages in db, one db per channel (currently we just keep an array in saved preferences)
* show user avatars in chat (use the google user info api)
* let users save old channels (i.e. have a menu of channels the user can use)
* also add a receiver that fires after a new update was installed from the play store
* if the rxpacket queue on the device overflows (because android hasn't connected in a while) send a special packet to android which means 'X packets have been dropped because you were offline' -drop oldest packets first
* make sw update work over BLE
# Signal alpha release
Do this "Signal app compatible" release relatively soon after the alpha release of the android app.
* call onNodeDBChanged after we haven't heard a packet from the mesh in a while - because that's how we decide we have less than 2 nodes in the mesh and should stop listening to the local GPS
* add large packet reassembly?
* optionally turn off crypto in signal - preferably though see if there is a nice way to be a peer of signal/sms and now mesh.
* change signal package ID - if distributing modified binary
* investigate the Signal SMS message flow path, see if I could just make Mesh a third peer to signal & sms?
* make signal work when there is no internet up
* make Signal rx path work
* send Signal message type. It seems to be? " public static final int WHISPER_TYPE = 2;
public static final int PREKEY_TYPE = 3;
public static final int SENDERKEY_TYPE = 4;
public static final int SENDERKEY_DISTRIBUTION_TYPE = 5;"
# Done

4
app/.gitignore vendored
View file

@ -1,4 +0,0 @@
/build
/debug
/release
google-services.json

70
app/README.md Normal file
View file

@ -0,0 +1,70 @@
# `:app`
## Overview
The `:app` module is the entry point for the Meshtastic Android application. It orchestrates the various feature modules, manages global state, and provides the main UI shell.
## Key Components
### 1. `MainActivity` & `Main.kt`
The single Activity of the application. It hosts the shared `MeshtasticNavDisplay` navigation shell and manages the root UI structure (Navigation Bar, Rail, etc.).
### 2. `MeshService`
The core background service that manages long-running communication with the mesh radio. While it is declared in the `:app` manifest for system visibility, its implementation resides in the `:core:service` module. It runs as a **Foreground Service** to ensure reliable communication even when the app is in the background.
### 3. Koin Application
`MeshUtilApplication` is the Koin entry point, providing the global dependency injection container.
## Architecture
The module primarily serves as a "glue" layer, connecting:
- `core:*` modules for shared logic.
- `feature:*` modules for specific user-facing screens.
## Module dependency graph
<!--region graph-->
```mermaid
graph TB
:app[app]:::android-application
:app -.-> :core:ble
:app -.-> :core:common
:app -.-> :core:data
:app -.-> :core:database
:app -.-> :core:datastore
:app -.-> :core:di
:app -.-> :core:domain
:app -.-> :core:model
:app -.-> :core:navigation
:app -.-> :core:network
:app -.-> :core:nfc
:app -.-> :core:prefs
:app -.-> :core:proto
:app -.-> :core:service
:app -.-> :core:resources
:app -.-> :core:ui
:app -.-> :core:barcode
:app -.-> :core:takserver
:app -.-> :feature:intro
:app -.-> :feature:messaging
:app -.-> :feature:connections
:app -.-> :feature:map
:app -.-> :feature:node
:app -.-> :feature:settings
:app -.-> :feature:firmware
:app -.-> :feature:wifi-provision
:app -.-> :feature:widget
classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-application-compose fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef compose-desktop-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef android-library fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-library-compose fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-test fill:#A0C4FF,stroke:#000,stroke-width:2px,color:#000;
classDef jvm-library fill:#BDB2FF,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library-compose fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;
```
<!--endregion-->

View file

@ -1,160 +0,0 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlinx-serialization'
apply plugin: 'com.google.gms.google-services'
// Apply the Crashlytics Gradle plugin
apply plugin: 'com.google.firebase.crashlytics'
// protobuf
apply plugin: 'com.google.protobuf'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.geeksville.mesh"
minSdkVersion 21 // The oldest emulator image I have tried is 22 (though 21 probably works)
targetSdkVersion 29
versionCode 10780 // format is Mmmss (where M is 1+the numeric major number
versionName "0.7.80"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
pseudoLocalesEnabled true
}
}
defaultConfig {
// We have to list all translated languages here, because some of our libs have bogus languages that google play
// doesn't like and we need to strip them (gr)
resConfigs "cs", "de", "en", "es", "fi", "fr", "ga", "it", "ja", "nl", "ru", "sk", "sv", "zh"
// Needed to make mapbox work inside the firebase testlab - FIXME, alas, still doesn't work
ndk {
// abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}
buildFeatures {
// Enables Jetpack Compose for this module
// compose true // NOTE, if true main app crashes if you use regular view layout functions
}
// Set both the Java and Kotlin compilers to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
composeOptions {
//kotlinCompilerVersion "1.3.61-dev-withExperimentalGoogleExtensions-20200129"
//kotlinCompilerExtensionVersion "$compose_version"
}
}
androidExtensions {
experimental = true
}
// per protobuf-gradle-plugin docs, this is recommended for android
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.9.0'
}
generateProtoTasks {
all().each { task ->
task.builtins {
java {
// use the smaller android version of the library
option "lite"
}
}
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.3.0'
implementation 'androidx.fragment:fragment-ktx:1.2.5'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta7'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
// kotlin serialization
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0"
// rate this app
implementation "com.vorlonsoft:androidrate:1.2.1"
// Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
// You need to depend on the lite runtime library, not protobuf-java
// For now I'm not using javalite, because I want JSON printing
//implementation 'com.google.protobuf:protobuf-java:3.11.1'
//implementation 'com.google.protobuf:protobuf-java-util:3.11.1'
implementation 'com.google.protobuf:protobuf-javalite:3.12.2'
// For UART access
// implementation 'com.google.android.things:androidthings:1.0'
implementation 'com.github.mik3y:usb-serial-for-android:v2.2.2'
// mapbox
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.1.0'
// mapbox specifies a really old version of okhttp3 which causes lots of API warnings. trying a newer version
implementation 'com.squareup.okhttp3:okhttp:4.7.2'
// location services
implementation 'com.google.android.gms:play-services-location:17.0.0'
// For Google Sign-In (owner name accesss)
implementation 'com.google.android.gms:play-services-auth:18.0.0'
// Add the Firebase SDK for Crashlytics.
implementation 'com.google.firebase:firebase-crashlytics:17.1.0'
// alas implementation bug deep in the bowels when I tried it for my SyncBluetoothDevice class
// implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3"
// add SDKs for any other desired Firebase products
// https://firebase.google.com/docs/android/setup#available-libraries
// barcode support
// per https://github.com/journeyapps/zxing-android-embedded for support of android version 22
implementation('com.journeyapps:zxing-android-embedded:4.1.0') { transitive = false }
implementation 'com.google.zxing:core:3.4.0'
def work_version = "2.3.4"
// Work Request - used to delay boot event handling
// implementation "androidx.work:work-runtime:$work_version"
implementation "androidx.work:work-runtime-ktx:$work_version"
implementation project(':geeksville-androidlib')
}

338
app/build.gradle.kts Normal file
View file

@ -0,0 +1,338 @@
/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import com.android.build.api.dsl.ApplicationExtension
import com.mikepenz.aboutlibraries.plugin.DuplicateMode
import com.mikepenz.aboutlibraries.plugin.DuplicateRule
import org.meshtastic.buildlogic.GitVersionValueSource
import org.meshtastic.buildlogic.configProperties
import java.io.FileInputStream
import java.util.Properties
val gitVersionProvider = providers.of(GitVersionValueSource::class.java) {}
plugins {
alias(libs.plugins.meshtastic.android.application)
alias(libs.plugins.meshtastic.android.application.flavors)
alias(libs.plugins.meshtastic.android.application.compose)
id("meshtastic.koin")
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.secrets)
alias(libs.plugins.aboutlibraries)
id("dev.mokkery")
}
val keystorePropertiesFile = rootProject.file("keystore.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
FileInputStream(keystorePropertiesFile).use { keystoreProperties.load(it) }
}
configure<ApplicationExtension> {
namespace = "org.meshtastic.app"
signingConfigs {
create("release") {
keyAlias = keystoreProperties["keyAlias"] as String?
keyPassword = keystoreProperties["keyPassword"] as String?
storeFile = keystoreProperties["storeFile"]?.let { file(it) }
storePassword = keystoreProperties["storePassword"] as String?
}
}
defaultConfig {
applicationId = configProperties.getProperty("APPLICATION_ID")
val vcOffset = configProperties.getProperty("VERSION_CODE_OFFSET")?.toInt() ?: 0
println("Version code offset: $vcOffset")
versionCode =
(
project.findProperty("android.injected.version.code")?.toString()?.toInt()
?: System.getenv("VERSION_CODE")?.toInt()
?: (gitVersionProvider.get().toInt() + vcOffset)
)
versionName =
(
project.findProperty("android.injected.version.name")?.toString()
?: System.getenv("VERSION_NAME")
?: configProperties.getProperty("VERSION_NAME_BASE")
)
buildConfigField("String", "MIN_FW_VERSION", "\"${configProperties.getProperty("MIN_FW_VERSION")}\"")
buildConfigField("String", "ABS_MIN_FW_VERSION", "\"${configProperties.getProperty("ABS_MIN_FW_VERSION")}\"")
// We have to list all translated languages here,
// because some of our libs have bogus languages that google play
// doesn't like and we need to strip them (gr)
@Suppress("UnstableApiUsage")
val ci = project.findProperty("ci")?.toString()?.toBoolean() ?: false
if (ci) {
println("CI build detected - limiting locale filters for faster packaging")
androidResources.localeFilters.addAll(listOf("en"))
} else {
androidResources.localeFilters.addAll(
listOf(
"en",
"ar",
"bg",
"ca",
"cs",
"de",
"el",
"es",
"et",
"fi",
"fr",
"ga",
"gl",
"hr",
"ht",
"hu",
"is",
"it",
"iw",
"ja",
"ko",
"lt",
"nl",
"no",
"pl",
"pt",
"pt-rBR",
"ro",
"ru",
"sk",
"sl",
"sq",
"sr",
"srp",
"sv",
"tr",
"uk",
"zh-rCN",
"zh-rTW",
),
)
}
ndk { abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64") }
val disableSplits =
project.gradle.startParameter.taskNames.any {
it.contains("bundle", ignoreCase = true) || it.contains("google", ignoreCase = true)
}
// Enable ABI splits to generate smaller APKs per architecture for F-Droid/IzzyOnDroid
splits {
abi {
isEnable = !disableSplits
reset()
include("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
isUniversalApk = true
}
}
dependenciesInfo {
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
includeInApk = false
// Disables dependency metadata when building Android App Bundles (for Google Play)
includeInBundle = false
}
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
// Configure existing product flavors (defined by convention plugin)
// with their dynamic version names.
productFlavors {
configureEach {
versionName = "${defaultConfig.versionName} (${defaultConfig.versionCode}) $name"
if (name == "google") {
manifestPlaceholders["MAPS_API_KEY"] = "dummy"
}
}
}
buildTypes {
release {
if (keystoreProperties["storeFile"] != null) {
signingConfig = signingConfigs.named("release").get()
} else {
signingConfig = signingConfigs.getByName("debug")
}
isDebuggable = false
}
}
bundle { language { enableSplit = false } }
testOptions { unitTests { isIncludeAndroidResources = true } }
}
secrets {
defaultPropertiesFileName = "secrets.defaults.properties"
propertiesFileName = "secrets.properties"
}
androidComponents {
onVariants(selector().withBuildType("debug")) { variant ->
variant.flavorName?.let { flavor -> variant.applicationId = "com.geeksville.mesh.$flavor.debug" }
}
onVariants(selector().withBuildType("release")) { variant ->
if (variant.flavorName == "google") {
val variantNameCapped = variant.name.replaceFirstChar { it.uppercase() }
val minifyTaskName = "minify${variantNameCapped}WithR8"
val uploadTaskName = "uploadMapping$variantNameCapped"
if (project.tasks.findByName(uploadTaskName) != null && project.tasks.findByName(minifyTaskName) != null) {
tasks.named(minifyTaskName).configure { finalizedBy(uploadTaskName) }
}
}
}
}
project.afterEvaluate {
logger.lifecycle(
"Version code is set to: ${extensions.getByType<ApplicationExtension>().defaultConfig.versionCode}",
)
}
dependencies {
implementation(projects.core.ble)
implementation(projects.core.common)
implementation(projects.core.data)
implementation(projects.core.database)
implementation(projects.core.datastore)
implementation(projects.core.di)
implementation(projects.core.domain)
implementation(projects.core.model)
implementation(projects.core.navigation)
implementation(libs.jetbrains.lifecycle.viewmodel.navigation3)
implementation(projects.core.network)
implementation(projects.core.nfc)
implementation(projects.core.prefs)
implementation(projects.core.proto)
implementation(projects.core.service)
implementation(projects.core.resources)
implementation(projects.core.ui)
implementation(projects.core.barcode)
implementation(projects.core.takserver)
implementation(projects.feature.intro)
implementation(projects.feature.messaging)
implementation(projects.feature.connections)
implementation(projects.feature.map)
implementation(projects.feature.node)
implementation(projects.feature.settings)
implementation(projects.feature.firmware)
implementation(projects.feature.wifiProvision)
implementation(projects.feature.widget)
implementation(libs.jetbrains.compose.material3.adaptive)
implementation(libs.jetbrains.compose.material3.adaptive.layout)
implementation(libs.jetbrains.compose.material3.adaptive.navigation)
implementation(libs.material)
implementation(libs.compose.multiplatform.animation)
implementation(libs.compose.multiplatform.material3)
implementation(libs.compose.multiplatform.ui.tooling.preview)
implementation(libs.compose.multiplatform.ui)
implementation(libs.androidx.glance.appwidget)
implementation(libs.androidx.glance.appwidget.preview)
implementation(libs.androidx.glance.material3)
implementation(libs.androidx.lifecycle.process)
implementation(libs.jetbrains.lifecycle.viewmodel.compose)
implementation(libs.jetbrains.lifecycle.runtime.compose)
implementation(libs.jetbrains.navigation3.ui)
implementation(libs.ktor.client.android)
implementation(libs.ktor.client.content.negotiation)
implementation(libs.ktor.serialization.kotlinx.json)
implementation(libs.ktor.client.logging)
implementation(libs.coil)
implementation(libs.coil.network.ktor3)
implementation(libs.coil.svg)
implementation(libs.androidx.core.splashscreen)
implementation(libs.kotlinx.serialization.json)
implementation(libs.usb.serial.android)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.koin.android)
implementation(libs.koin.compose.viewmodel)
implementation(libs.koin.androidx.workmanager)
implementation(libs.koin.annotations)
implementation(libs.accompanist.permissions)
implementation(libs.kermit)
implementation(libs.kotlinx.datetime)
debugImplementation(libs.androidx.compose.ui.test.manifest)
debugImplementation(libs.androidx.glance.preview)
googleImplementation(libs.location.services)
googleImplementation(libs.play.services.maps)
googleImplementation(libs.maps.compose)
googleImplementation(libs.maps.compose.utils)
googleImplementation(libs.maps.compose.widgets)
googleImplementation(libs.dd.sdk.android.logs)
googleImplementation(libs.dd.sdk.android.rum)
googleImplementation(libs.dd.sdk.android.session.replay)
googleImplementation(libs.dd.sdk.android.session.replay.material)
googleImplementation(libs.dd.sdk.android.timber)
googleImplementation(libs.dd.sdk.android.trace)
googleImplementation(libs.dd.sdk.android.trace.otel)
googleImplementation(platform(libs.firebase.bom))
googleImplementation(libs.firebase.analytics)
googleImplementation(libs.firebase.crashlytics)
fdroidImplementation(libs.osmdroid.android)
fdroidImplementation(libs.osmdroid.geopackage) { exclude(group = "com.j256.ormlite") }
fdroidImplementation(libs.osmbonuspack)
testImplementation(kotlin("test-junit"))
testImplementation(libs.androidx.work.testing)
testImplementation(libs.koin.test)
testRuntimeOnly(libs.junit.vintage.engine)
testImplementation(libs.kotlinx.coroutines.test)
testImplementation(libs.robolectric)
testImplementation(libs.androidx.test.core)
testImplementation(libs.compose.multiplatform.ui.test)
testImplementation(libs.androidx.test.ext.junit)
testImplementation(libs.androidx.glance.appwidget)
}
aboutLibraries {
// Run offline by default to avoid burning GitHub API calls on every build.
// Release builds pass -PaboutLibraries.release=true to fetch full license text + funding info.
val isReleaseBuild = providers.gradleProperty("aboutLibraries.release").map { it.toBoolean() }.getOrElse(false)
val ghToken = providers.environmentVariable("GITHUB_TOKEN")
offlineMode = !isReleaseBuild
collect {
fetchRemoteLicense = isReleaseBuild && ghToken.isPresent
fetchRemoteFunding = isReleaseBuild && ghToken.isPresent
if (ghToken.isPresent) {
gitHubApiToken = ghToken.get()
}
}
export {
excludeFields = listOf("generated")
outputFile = file("src/main/resources/aboutlibraries.json")
}
library {
duplicationMode = DuplicateMode.MERGE
duplicationRule = DuplicateRule.SIMPLE
}
}
// Ensure aboutlibraries.json is always up-to-date during the build.
// This is required since AboutLibraries v11+ no longer auto-exports.
tasks
.matching { it.name.startsWith("process") && it.name.endsWith("Resources") }
.configureEach { dependsOn("exportLibraryDefinitions") }

5
app/detekt-baseline.xml Normal file
View file

@ -0,0 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<SmellBaseline>
<ManuallySuppressedIssues/>
<CurrentIssues/>
</SmellBaseline>

View file

@ -1,40 +0,0 @@
{
"project_info": {
"project_number": "1111",
"firebase_url": "https://xxx.firebaseio.com",
"project_id": "xxx",
"storage_bucket": "xxx.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:xxx:android:1111",
"android_client_info": {
"package_name": "com.geeksville.mesh"
}
},
"oauth_client": [
{
"client_id": "111-xxx.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "xxx-c"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "111-xxx.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

View file

@ -1 +0,0 @@
../../google-services.json

67
app/google-services.json Normal file
View file

@ -0,0 +1,67 @@
{
"project_info": {
"project_number": "1111",
"firebase_url": "https://xxx.firebaseio.com",
"project_id": "xxx",
"storage_bucket": "xxx.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:xxx:android:1111",
"android_client_info": {
"package_name": "com.geeksville.mesh"
}
},
"oauth_client": [
{
"client_id": "111-xxx.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.geeksville.mesh"
}
},
{
"client_id": "111-xxx.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.geeksville.mesh"
}
},
{
"client_id": "111-xxx.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "APlaceholderAPIKeyWith-ThirtyNineCharsX"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "111-xxx.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:xxx:android:1111",
"android_client_info": {
"package_name": "com.geeksville.mesh.google.debug"
}
},
"api_key": [
{
"current_key": "APlaceholderAPIKeyWith-ThirtyNineCharsX"
}
]
}
],
"configuration_version": "1"
}

View file

@ -1,43 +1,45 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
# ============================================================================
# Meshtastic Android ProGuard / R8 rules for release minification
# ============================================================================
# Open-source project: obfuscation and optimization are disabled. We rely on
# tree-shaking (unused code removal) for APK size reduction.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Cross-platform library rules (Koin, kotlinx-serialization, Wire, Room,
# Ktor, Coil, Kable, Kermit, Okio, DataStore, Paging, Lifecycle, Navigation 3,
# AboutLibraries, Markdown, QRCode, CMP resources, core model) live in
# config/proguard/shared-rules.pro and are wired in by the
# AndroidApplicationConventionPlugin. This file holds only Android-specific
# rules and R8-only directives.
# ============================================================================
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# ---- General ----------------------------------------------------------------
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# Open-source no need to obfuscate
-dontobfuscate
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# Disable R8 optimization passes. Tree-shaking (unused code removal) still
# runs only method-body rewrites and call-site transformations are suppressed.
#
# Why: CMP 1.11 ships consumer rules with -assumenosideeffects on
# Composer.<clinit>() and ComposerImpl.<clinit>(), plus -assumevalues on
# ComposeRuntimeFlags and ComposeStackTraceMode. These optimization directives
# let R8 rewrite *call sites* (class-init triggers, flag reads) even when the
# target classes are preserved by -keep rules. The result is that the Compose
# recomposer/frame-clock/animation state machines silently freeze on their
# first frame in release builds. -dontoptimize is the only directive that
# disables processing of -assumenosideeffects/-assumevalues. See #5146.
-dontoptimize
# per https://medium.com/@kenkyee/android-kotlin-coroutine-best-practices-bc033fed62e7
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepclassmembernames class kotlinx.** { volatile <fields>; }
# Dump the full merged R8 configuration (app rules + all library consumer rules)
# for auditing. Inspect this file after a release build to see what libraries inject.
-printconfiguration build/outputs/mapping/r8-merged-config.txt
# Needed for protobufs
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite { <fields>; }
# ---- Networking (transitive references from Ktor on Android) ----------------
# for kotlinx.serialization
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.SerializationKt
-keep,includedescriptorclasses class com.yourcompany.yourpackage.**$$serializer { *; } # <-- change package name to your app's
-keepclassmembers class com.geeksville.mesh.** { # <-- change package name to your app's
*** Companion;
}
-keepclasseswithmembers class com.geeksville.mesh.** { # <-- change package name to your app's
kotlinx.serialization.KSerializer serializer(...);
}
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**
# Our app is opensource no need to obsfucate
-dontobfuscate
# Compose runtime/ui/animation/foundation/material3 keep rules now live in
# config/proguard/shared-rules.pro so both Android (R8) and desktop (ProGuard)
# get the same defence-in-depth coverage against CMP 1.11 optimizer folding.

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- This file is kept in source control because it reflects the last stable
release. It is used by the android app for forcing software updates. Do not edit.
Generated by bin/buildall.sh -->
<resources>
<string name="cur_firmware_version">0.2.0</string>
</resources>

View file

@ -1,5 +0,0 @@
<resources>
<string name="mapbox_access_token">pk.xxx.xxx</string>
</resources>

View file

@ -1,22 +0,0 @@
package com.geeksville.mesh
import androidx.compose.frames.open
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.geeksville.mesh.model.Channel
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class ChannelTest {
@Test
fun channelUrlGood() {
open() // Needed to make Compose think we are inside a Frame
val ch = Channel.emulated
Assert.assertTrue(ch.getChannelUrl().toString().startsWith(Channel.prefix))
Assert.assertEquals(Channel(ch.getChannelUrl()), ch)
}
}

View file

@ -1,22 +0,0 @@
package com.geeksville.mesh
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.geeksville.mesh", appContext.packageName)
}
}

View file

@ -0,0 +1,216 @@
/*
* Copyright (c) 2025 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.map.cluster;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Point;
import android.view.MotionEvent;
import org.meshtastic.app.map.model.MarkerWithLabel;
import org.osmdroid.util.BoundingBox;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.Overlay;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
/**
* An overlay allowing to perform markers clustering.
* Usage: put your markers inside with add(Marker), and add the MarkerClusterer to the map overlays.
* Depending on the zoom level, markers will be displayed separately, or grouped as a single Marker. <br/>
*
* This abstract class provides the framework. Sub-classes have to implement the clustering algorithm,
* and the rendering of a cluster.
*
* @author M.Kergall
*
*/
public abstract class MarkerClusterer extends Overlay {
/** impossible value for zoom level, to force clustering */
protected static final int FORCE_CLUSTERING = -1;
protected ArrayList<MarkerWithLabel> mItems = new ArrayList<MarkerWithLabel>();
protected Point mPoint = new Point();
protected ArrayList<StaticCluster> mClusters = new ArrayList<StaticCluster>();
protected int mLastZoomLevel;
protected Bitmap mClusterIcon;
protected String mName, mDescription;
// abstract methods:
/** clustering algorithm */
public abstract ArrayList<StaticCluster> clusterer(MapView mapView);
/** Build the marker for a cluster. */
public abstract MarkerWithLabel buildClusterMarker(StaticCluster cluster, MapView mapView);
/** build clusters markers to be used at next draw */
public abstract void renderer(ArrayList<StaticCluster> clusters, Canvas canvas, MapView mapView);
public MarkerClusterer() {
super();
mLastZoomLevel = FORCE_CLUSTERING;
}
public void setName(String name){
mName = name;
}
public String getName(){
return mName;
}
public void setDescription(String description){
mDescription = description;
}
public String getDescription(){
return mDescription;
}
/** Set the cluster icon to be drawn when a cluster contains more than 1 marker.
* If not set, default will be the default osmdroid marker icon (which is really inappropriate as a cluster icon). */
public void setIcon(Bitmap icon){
mClusterIcon = icon;
}
/** Add the Marker.
* Important: Markers added in a MarkerClusterer should not be added in the map overlays. */
public void add(MarkerWithLabel marker){
mItems.add(marker);
}
/** Force a rebuild of clusters at next draw, even without a zooming action.
* Should be done when you changed the content of a MarkerClusterer. */
public void invalidate(){
mLastZoomLevel = FORCE_CLUSTERING;
}
/** @return the Marker at id (starting at 0) */
public MarkerWithLabel getItem(int id){
return mItems.get(id);
}
/** @return the list of Markers. */
public ArrayList<MarkerWithLabel> getItems(){
return mItems;
}
protected void hideInfoWindows(){
for (MarkerWithLabel m : mItems){
if (m.isInfoWindowShown())
m.closeInfoWindow();
}
}
@Override public void draw(Canvas canvas, MapView mapView, boolean shadow) {
if (shadow)
return;
//if zoom has changed and mapView is now stable, rebuild clusters:
int zoomLevel = mapView.getZoomLevel();
if (zoomLevel != mLastZoomLevel && !mapView.isAnimating()){
hideInfoWindows();
mClusters = clusterer(mapView);
renderer(mClusters, canvas, mapView);
mLastZoomLevel = zoomLevel;
}
for (StaticCluster cluster:mClusters){
MarkerWithLabel marker = cluster.getMarker();
marker.draw(canvas, mapView, false);
}
}
public Iterable<StaticCluster> reversedClusters() {
return new Iterable<StaticCluster>() {
@Override
public Iterator<StaticCluster> iterator() {
final ListIterator<StaticCluster> i = mClusters.listIterator(mClusters.size());
return new Iterator<StaticCluster>() {
@Override
public boolean hasNext() {
return i.hasPrevious();
}
@Override
public StaticCluster next() {
return i.previous();
}
@Override
public void remove() {
i.remove();
}
};
}
};
}
@Override public boolean onSingleTapConfirmed(final MotionEvent event, final MapView mapView){
for (final StaticCluster cluster : reversedClusters()) {
if (cluster.getMarker().onSingleTapConfirmed(event, mapView))
return true;
}
return false;
}
@Override public boolean onLongPress(final MotionEvent event, final MapView mapView) {
for (final StaticCluster cluster : reversedClusters()) {
if (cluster.getMarker().onLongPress(event, mapView))
return true;
}
return false;
}
@Override public boolean onTouchEvent(final MotionEvent event, final MapView mapView) {
for (StaticCluster cluster : reversedClusters()) {
if (cluster.getMarker().onTouchEvent(event, mapView))
return true;
}
return false;
}
@Override public boolean onDoubleTap(final MotionEvent event, final MapView mapView) {
for (final StaticCluster cluster : reversedClusters()) {
if (cluster.getMarker().onDoubleTap(event, mapView))
return true;
}
return false;
}
@Override public BoundingBox getBounds(){
if (mItems.size() == 0)
return null;
double minLat = Double.MAX_VALUE;
double minLon = Double.MAX_VALUE;
double maxLat = -Double.MAX_VALUE;
double maxLon = -Double.MAX_VALUE;
for (final MarkerWithLabel item : mItems) {
final double latitude = item.getPosition().getLatitude();
final double longitude = item.getPosition().getLongitude();
minLat = Math.min(minLat, latitude);
minLon = Math.min(minLon, longitude);
maxLat = Math.max(maxLat, latitude);
maxLon = Math.max(maxLon, longitude);
}
return new BoundingBox(maxLat, maxLon, minLat, minLon);
}
}

View file

@ -0,0 +1,213 @@
/*
* Copyright (c) 2025 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.map.cluster;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.MotionEvent;
import org.meshtastic.app.map.model.MarkerWithLabel;
import org.osmdroid.bonuspack.R;
import org.osmdroid.util.BoundingBox;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import java.util.ArrayList;
import java.util.Iterator;
/**
* Radius-based Clustering algorithm:
* create a cluster using the first point from the cloned list.
* All points that are found within the neighborhood are added to this cluster.
* Then all the neighbors and the main point are removed from the list of points.
* It continues until the list is empty.
*
* Largely inspired from GridMarkerClusterer by M.Kergall
*
* @author sidorovroman92@gmail.com
*/
public class RadiusMarkerClusterer extends MarkerClusterer {
protected int mMaxClusteringZoomLevel = 7;
protected int mRadiusInPixels = 100;
protected double mRadiusInMeters;
protected Paint mTextPaint;
private ArrayList<MarkerWithLabel> mClonedMarkers;
protected boolean mAnimated;
int mDensityDpi;
/** cluster icon anchor */
public float mAnchorU = MarkerWithLabel.ANCHOR_CENTER, mAnchorV = MarkerWithLabel.ANCHOR_CENTER;
/** anchor point to draw the number of markers inside the cluster icon */
public float mTextAnchorU = MarkerWithLabel.ANCHOR_CENTER, mTextAnchorV = MarkerWithLabel.ANCHOR_CENTER;
public RadiusMarkerClusterer(Context ctx) {
super();
mTextPaint = new Paint();
mTextPaint.setColor(Color.WHITE);
mTextPaint.setTextSize(15 * ctx.getResources().getDisplayMetrics().density);
mTextPaint.setFakeBoldText(true);
mTextPaint.setTextAlign(Paint.Align.CENTER);
mTextPaint.setAntiAlias(true);
Drawable clusterIconD = ctx.getResources().getDrawable(R.drawable.marker_cluster);
Bitmap clusterIcon = ((BitmapDrawable) clusterIconD).getBitmap();
setIcon(clusterIcon);
mAnimated = true;
mDensityDpi = ctx.getResources().getDisplayMetrics().densityDpi;
}
/** If you want to change the default text paint (color, size, font) */
public Paint getTextPaint(){
return mTextPaint;
}
/** Set the radius of clustering in pixels. Default is 100px. */
public void setRadius(int radius){
mRadiusInPixels = radius;
}
/** Set max zoom level with clustering. When zoom is higher or equal to this level, clustering is disabled.
* You can put a high value to disable this feature. */
public void setMaxClusteringZoomLevel(int zoom){
mMaxClusteringZoomLevel = zoom;
}
/** Radius-Based clustering algorithm */
@Override public ArrayList<StaticCluster> clusterer(MapView mapView) {
ArrayList<StaticCluster> clusters = new ArrayList<StaticCluster>();
convertRadiusToMeters(mapView);
mClonedMarkers = new ArrayList<MarkerWithLabel>(mItems); //shallow copy
while (!mClonedMarkers.isEmpty()) {
MarkerWithLabel m = mClonedMarkers.get(0);
StaticCluster cluster = createCluster(m, mapView);
clusters.add(cluster);
}
return clusters;
}
private StaticCluster createCluster(MarkerWithLabel m, MapView mapView) {
GeoPoint clusterPosition = m.getPosition();
StaticCluster cluster = new StaticCluster(clusterPosition);
cluster.add(m);
mClonedMarkers.remove(m);
if (mapView.getZoomLevel() > mMaxClusteringZoomLevel) {
//above max level => block clustering:
return cluster;
}
Iterator<MarkerWithLabel> it = mClonedMarkers.iterator();
while (it.hasNext()) {
MarkerWithLabel neighbor = it.next();
double distance = clusterPosition.distanceToAsDouble(neighbor.getPosition());
if (distance <= mRadiusInMeters) {
cluster.add(neighbor);
it.remove();
}
}
return cluster;
}
@Override public MarkerWithLabel buildClusterMarker(StaticCluster cluster, MapView mapView) {
MarkerWithLabel m = new MarkerWithLabel(mapView, "", null);
m.setPosition(cluster.getPosition());
m.setInfoWindow(null);
m.setAnchor(mAnchorU, mAnchorV);
Bitmap finalIcon = Bitmap.createBitmap(mClusterIcon.getScaledWidth(mDensityDpi),
mClusterIcon.getScaledHeight(mDensityDpi), mClusterIcon.getConfig());
Canvas iconCanvas = new Canvas(finalIcon);
iconCanvas.drawBitmap(mClusterIcon, 0, 0, null);
String text = "" + cluster.getSize();
int textHeight = (int) (mTextPaint.descent() + mTextPaint.ascent());
iconCanvas.drawText(text,
mTextAnchorU * finalIcon.getWidth(),
mTextAnchorV * finalIcon.getHeight() - textHeight / 2,
mTextPaint);
m.setIcon(new BitmapDrawable(mapView.getContext().getResources(), finalIcon));
return m;
}
@Override public void renderer(ArrayList<StaticCluster> clusters, Canvas canvas, MapView mapView) {
for (StaticCluster cluster : clusters) {
if (cluster.getSize() == 1) {
//cluster has only 1 marker => use it as it is:
cluster.setMarker(cluster.getItem(0));
} else {
//only draw 1 Marker at Cluster center, displaying number of Markers contained
MarkerWithLabel m = buildClusterMarker(cluster, mapView);
cluster.setMarker(m);
}
}
}
private void convertRadiusToMeters(MapView mapView) {
Rect mScreenRect = mapView.getIntrinsicScreenRect(null);
int screenWidth = mScreenRect.right - mScreenRect.left;
int screenHeight = mScreenRect.bottom - mScreenRect.top;
BoundingBox bb = mapView.getBoundingBox();
double diagonalInMeters = bb.getDiagonalLengthInMeters();
double diagonalInPixels = Math.sqrt(screenWidth * screenWidth + screenHeight * screenHeight);
double metersInPixel = diagonalInMeters / diagonalInPixels;
mRadiusInMeters = mRadiusInPixels * metersInPixel;
}
public void setAnimation(boolean animate){
mAnimated = animate;
}
public void zoomOnCluster(MapView mapView, StaticCluster cluster){
BoundingBox bb = cluster.getBoundingBox();
if (bb.getLatNorth()!=bb.getLatSouth() || bb.getLonEast()!=bb.getLonWest()) {
bb = bb.increaseByScale(2.3f);
mapView.zoomToBoundingBox(bb, true);
} else //all points exactly at the same place:
mapView.setExpectedCenter(bb.getCenterWithDateLine());
}
@Override public boolean onSingleTapConfirmed(final MotionEvent event, final MapView mapView){
for (final StaticCluster cluster : reversedClusters()) {
if (cluster.getMarker().onSingleTapConfirmed(event, mapView)) {
if (mAnimated && cluster.getSize() > 1)
zoomOnCluster(mapView, cluster);
return true;
}
}
return false;
}
}

View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2025 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.map.cluster;
import org.meshtastic.app.map.model.MarkerWithLabel;
import org.osmdroid.util.BoundingBox;
import org.osmdroid.util.GeoPoint;
import java.util.ArrayList;
/**
* Cluster of Markers.
* @author M.Kergall
*/
public class StaticCluster {
protected final ArrayList<MarkerWithLabel> mItems = new ArrayList<MarkerWithLabel>();
protected GeoPoint mCenter;
protected MarkerWithLabel mMarker;
public StaticCluster(GeoPoint center) {
mCenter = center;
}
public void setPosition(GeoPoint center){
mCenter = center;
}
public GeoPoint getPosition() {
return mCenter;
}
public int getSize() {
return mItems.size();
}
public MarkerWithLabel getItem(int index) {
return mItems.get(index);
}
public boolean add(MarkerWithLabel t) {
return mItems.add(t);
}
/** set the Marker to be displayed for this cluster */
public void setMarker(MarkerWithLabel marker){
mMarker = marker;
}
/** @return the Marker to be displayed for this cluster */
public MarkerWithLabel getMarker(){
return mMarker;
}
public BoundingBox getBoundingBox(){
if (getSize()==0)
return null;
GeoPoint p = getItem(0).getPosition();
BoundingBox bb = new BoundingBox(p.getLatitude(), p.getLongitude(), p.getLatitude(), p.getLongitude());
for (int i=1; i<getSize(); i++) {
p = getItem(i).getPosition();
double minLat = Math.min(bb.getLatSouth(), p.getLatitude());
double minLon = Math.min(bb.getLonWest(), p.getLongitude());
double maxLat = Math.max(bb.getLatNorth(), p.getLatitude());
double maxLon = Math.max(bb.getLonEast(), p.getLongitude());
bb.set(maxLat, maxLon, minLat, minLon);
}
return bb;
}
}

View file

@ -0,0 +1,56 @@
/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.analytics
import co.touchlab.kermit.Logger
import co.touchlab.kermit.Severity
import org.koin.core.annotation.Single
import org.meshtastic.app.BuildConfig
import org.meshtastic.core.repository.DataPair
import org.meshtastic.core.repository.PlatformAnalytics
/**
* F-Droid specific implementation of [PlatformAnalytics]. This provides no-op implementations for analytics and other
* platform services.
*/
@Single
class FdroidPlatformAnalytics : PlatformAnalytics {
init {
// For F-Droid builds we don't initialize external analytics services.
// In debug builds we attach a DebugTree for convenient local logging, but
// release builds rely on system logging only.
if (BuildConfig.DEBUG) {
Logger.setMinSeverity(Severity.Debug)
Logger.i { "F-Droid platform no-op analytics initialized (Debug mode)." }
} else {
Logger.setMinSeverity(Severity.Info)
Logger.i { "F-Droid platform no-op analytics initialized." }
}
}
override fun setDeviceAttributes(firmwareVersion: String, model: String) {
// No-op for F-Droid
Logger.d { "Set device attributes called: firmwareVersion=$firmwareVersion, deviceHardware=$model" }
}
override val isPlatformServicesAvailable: Boolean
get() = false
override fun track(event: String, vararg properties: DataPair) {
Logger.d { "Track called: event=$event, properties=${properties.toList()}" }
}
}

View file

@ -0,0 +1,36 @@
/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.di
import org.koin.core.annotation.Module
import org.koin.core.annotation.Single
import org.meshtastic.core.model.NetworkDeviceHardware
import org.meshtastic.core.model.NetworkFirmwareReleases
import org.meshtastic.core.network.service.ApiService
@Module
class FDroidNetworkModule {
@Single
fun provideApiService(): ApiService = object : ApiService {
override suspend fun getDeviceHardware(): List<NetworkDeviceHardware> =
throw NotImplementedError("API calls to getDeviceHardware are not supported on Fdroid builds.")
override suspend fun getFirmwareReleases(): NetworkFirmwareReleases =
throw NotImplementedError("API calls to getFirmwareReleases are not supported on Fdroid builds.")
}
}

View file

@ -0,0 +1,22 @@
/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.di
import org.koin.core.annotation.Module
@Module(includes = [FDroidNetworkModule::class])
class FlavorModule

View file

@ -0,0 +1,24 @@
/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meshtastic.app.intro
import androidx.compose.runtime.Composable
@Composable
fun AnalyticsIntro() {
// no-op for fdroid
}

Some files were not shown because too many files have changed in this diff Show more