James Rich
5cae109ec9
fix(map): address code review findings — precision, naming, icons, i18n
...
- Fix Int.toFloat() precision loss in track point filter by storing
time as string in GeoJSON and using string-based equality comparison
- Rename MapStyle enum values to match actual tile styles: Satellite→Light
(Positron), Hybrid→RoadMap (Americana), with updated string resources
- Reset bearingUpdate to IGNORE when gesture cancels location tracking
- Use LocationOn icon for ALWAYS_NORTH tracking mode instead of
misleading LocationDisabled
- Remove dead isOfflineManagerAvailable() expect/actual declarations
- Replace hardcoded English strings in offline map UI with
stringResource() calls backed by core:resources entries
2026-04-14 22:30:42 -05:00
James Rich
01d2642275
fix(map): delete leftover fdroid OSMDroid cluster Java files breaking lint
...
The MarkerClusterer, RadiusMarkerClusterer, and StaticCluster Java files
under app/src/fdroid/java/ were missed during the MapLibre migration and
still referenced the removed osmdroid dependency, causing lintFdroidDebug
to fail on CI.
2026-04-14 22:30:42 -05:00
James Rich
7971ec4b9a
feat(map): add maplibre-compose API enhancements — scale bar, bearing tracking, gestures, hillshade, offline tiles, map styles
...
Leverage underused maplibre-compose 0.12.1 APIs to improve UX parity:
- OrnamentOptions: enable built-in scale bar on all map screens
- GestureOptions: per-screen gesture control (Standard, PositionLocked,
RotationLocked, ZoomOnly) based on tracking state
- BearingUpdate 3-state cycling: Off → Track+Bearing → Track+North → Off
with CameraMoveReason.GESTURE auto-cancel
- Offline tile downloads: expect/actual OfflineManagerFactory with
Android/iOS actuals using rememberOfflineManager + OfflinePackListItem
- HillshadeLayer + RasterDemSource: terrain visualization with free AWS
Terrarium tiles when Terrain style is selected
- Map loading callbacks: onMapLoadFinished/onMapLoadFailed propagated
- Map styles: all 5 styles now use distinct URIs (Liberty, Positron,
Bright, Americana, Fiord)
- NodeTrackLayers: fix selected highlight filter expression
- LocationProviderFactory: check permissions before calling
rememberDefaultLocationProvider to prevent PermissionException
2026-04-14 22:30:42 -05:00
James Rich
757a3b5010
chore: ignore Eclipse/Buildship IDE metadata files
2026-04-14 22:30:42 -05:00
James Rich
2aab65bd1b
feat(map): add feature parity — filters, style selector, waypoint dialog, cluster zoom, bounds fitting, location tracking
...
Wire remaining map feature gaps identified in the parity audit:
- MapFilterDropdown: favorites, waypoints, precision circle toggles and
last-heard slider matching the old Google/OSMDroid filter UIs
- MapStyleSelector: dropdown with 5 predefined MapStyle entries
- EditWaypointDialog: create, edit, delete waypoints via long-press or
marker tap, with icon picker and lock toggle
- Cluster zoom-to-expand: tap a cluster circle to zoom +2 levels
centered on the cluster position
- Bounds fitting: NodeTrackMap and TracerouteMap compute a BoundingBox
from all positions and animate the camera to fit on first load
- Location tracking: expect/actual rememberLocationProviderOrNull()
bridges platform GPS into maplibre-compose LocationPuck with
LocationTrackingEffect for auto-pan and bearing follow
- Per-node marker colors via data-driven convertToColor() expressions
- Waypoint camera animation on deep-link selection
- Compass click resets bearing to north
2026-04-14 22:30:42 -05:00
James Rich
598cae564e
feat(map): replace Google Maps + OSMDroid with unified MapLibre Compose Multiplatform
...
Replace the dual flavor-specific map implementations (Google Maps for google,
OSMDroid for fdroid) with a single MapLibre Compose Multiplatform implementation
in feature:map/commonMain, eliminating ~8,500 lines of duplicated code.
Key changes:
- Add maplibre-compose v0.12.1 dependency (KMP: Android, Desktop, iOS)
- Create unified MapViewModel with camera persistence via MapCameraPrefs
- Create MapScreen, MaplibreMapContent, NodeTrackLayers, TracerouteLayers,
InlineMap, NodeTrackMap, TracerouteMap, NodeMapScreen in commonMain
- Create MapStyle enum with predefined OpenFreeMap tile styles
- Create GeoJsonConverters for Node/Waypoint/Position to GeoJSON
- Move TracerouteMapScreen from feature:node/androidMain to commonMain
- Wire navigation to use direct imports instead of CompositionLocal providers
- Delete 61 flavor-specific map files (google + fdroid source sets)
- Remove 8 CompositionLocal map providers from core:ui
- Remove SharedMapViewModel (replaced by new MapViewModel)
- Remove dead google-maps and osmdroid entries from version catalog
- Add MapViewModelTest with 10 test cases in commonTest
Baseline verified: spotlessCheck, detekt, assembleGoogleDebug, allTests all pass.
2026-04-14 22:30:27 -05: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