mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
feat: Implement iOS support and unify Compose Multiplatform infrastructure (#4876)
This commit is contained in:
parent
f04924ded5
commit
d136b162a4
170 changed files with 2208 additions and 2432 deletions
|
|
@ -185,7 +185,7 @@ Ordered by impact × effort:
|
|||
|
||||
| Priority | Extraction | Impact | Effort | Enables |
|
||||
|---:|---|---|---|---|
|
||||
| 1 | `java.*` purge from `commonMain` (B1, B2) | High | Low | iOS target declaration |
|
||||
| 1 | ~~`java.*` purge from `commonMain` (B1, B2)~~ | High | Low | ~~iOS target declaration~~ ✅ Done |
|
||||
| 2 | Radio transport interfaces to `core:repository` (A2) | High | Medium | Transport unification |
|
||||
| 3 | `core:testing` shared fixtures (D2) | Medium | Low | Feature commonTest |
|
||||
| 4 | Feature `commonTest` (D1) | Medium | Medium | KMP test coverage |
|
||||
|
|
@ -194,7 +194,7 @@ Ordered by impact × effort:
|
|||
| 7 | ~~Desktop Koin auto-wiring (C1, C2)~~ | Medium | Low | ✅ Resolved 2026-03-13 |
|
||||
| 8 | MQTT KMP (B3) | Medium | High | Desktop/iOS MQTT |
|
||||
| 9 | KMP charts (B4) | Medium | High | Desktop metrics |
|
||||
| 10 | iOS target declaration | High | Low | CI purity gate |
|
||||
| 10 | ~~iOS target declaration~~ | High | Low | ~~CI purity gate~~ ✅ Done |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -205,7 +205,7 @@ Ordered by impact × effort:
|
|||
| Shared business/data logic | 8.5/10 | **9/10** | RadioTransport interface unified; all core layers shared |
|
||||
| Shared feature/UI logic | 9.5/10 | **8.5/10** | All 7 KMP features; connections unified; Vico charts in commonMain |
|
||||
| Android decoupling | 8.5/10 | **9/10** | Connections, Navigation, Services, & Widgets extracted; GMS purged; app ~40->target 20 files |
|
||||
| Multi-target readiness | 8/10 | **8/10** | Full JVM; release-ready desktop; iOS not declared |
|
||||
| Multi-target readiness | 8/10 | **9/10** | Full JVM; release-ready desktop; iOS simulator builds compiling successfully |
|
||||
| CI confidence | 8.5/10 | **9/10** | 25 modules validated; feature:connections + desktop in CI; native release installers |
|
||||
| DI portability | 7/10 | **8/10** | Koin annotations in commonMain; supportedDeviceTypes injected per platform |
|
||||
| Test maturity | — | **8/10** | 131 commonTest + 89 platform-specific = 219 tests across all 7 features; core:testing established |
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
# Navigation 3 Parity Strategy (Android + Desktop)
|
||||
|
||||
**Date:** 2026-03-11
|
||||
**Status:** Active
|
||||
**Status:** Implemented (2026-03-21)
|
||||
**Scope:** `app` and `desktop` navigation structure using shared `core:navigation` routes
|
||||
|
||||
## Context
|
||||
|
|
@ -27,13 +27,14 @@ Both modules still define separate graph-builder files (`app/navigation/*.kt`, `
|
|||
- Both shells iterate `TopLevelDestination.entries` from `core:navigation/commonMain`.
|
||||
- Shared icon mapping lives in `core:ui` (`TopLevelDestinationExt.icon`).
|
||||
- Parity tests exist in both `core:navigation/commonTest` (`NavigationParityTest`) and `desktop/test` (`DesktopTopLevelDestinationParityTest`).
|
||||
2. **Feature coverage differs by intent and by implementation.**
|
||||
- Desktop intentionally uses placeholders for map and several node/message detail flows.
|
||||
- Android wires real implementations for map, message/share flows, and more node detail paths.
|
||||
3. **Saved-state route registration is desktop-only and manual.**
|
||||
- `DesktopMainScreen.kt` maintains a large `SavedStateConfiguration` serializer list that must stay in sync with `Routes.kt` and desktop graph entries.
|
||||
4. **Route keys are shared; graph registration is per-platform.**
|
||||
- This is the expected state — platform shells wire entries differently while consuming the same route types.
|
||||
2. **Feature coverage is unified via `commonMain` feature graphs.**
|
||||
- The `settingsGraph`, `nodesGraph`, `contactsGraph`, `connectionsGraph`, `firmwareGraph`, and `mapGraph` are now fully shared and exported from their respective feature modules' `commonMain` source sets.
|
||||
- Desktop acts as a thin shell, delegating directly to these shared graphs.
|
||||
3. **Saved-state route registration is fully shared.**
|
||||
- `MeshtasticNavSavedStateConfig` in `core:navigation/commonMain` maintains the unified `SavedStateConfiguration` serializer list.
|
||||
- Both Android and Desktop reference this shared config when instantiating `rememberNavBackStack`.
|
||||
4. **Predictive back handling is KMP native.**
|
||||
- Custom `PredictiveBackHandler` wrapper was removed in favor of Jetpack's official KMP `NavigationBackHandler` from `androidx.navigationevent:navigationevent-compose`.
|
||||
|
||||
## Alpha04 Changelog Impact Check (2026-03-13)
|
||||
|
||||
|
|
@ -147,9 +148,11 @@ Adopt a **hybrid parity model**:
|
|||
## Source Anchors
|
||||
|
||||
- Shared routes: `core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt`
|
||||
- Shared saved-state config: `core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/NavigationConfig.kt`
|
||||
- Android shell: `app/src/main/kotlin/org/meshtastic/app/ui/Main.kt`
|
||||
- Android graph registrations: `feature/*/src/androidMain/kotlin/org/meshtastic/feature/*/navigation/`
|
||||
- Shared graph registrations: `feature/*/src/commonMain/kotlin/org/meshtastic/feature/*/navigation/`
|
||||
- Platform graph content: `feature/*/src/{androidMain,jvmMain}/kotlin/org/meshtastic/feature/*/navigation/`
|
||||
- Desktop shell: `desktop/src/main/kotlin/org/meshtastic/desktop/ui/DesktopMainScreen.kt`
|
||||
- Desktop graph registrations: `desktop/src/main/kotlin/org/meshtastic/desktop/navigation/`
|
||||
- Desktop graph assembly: `desktop/src/main/kotlin/org/meshtastic/desktop/navigation/DesktopNavigation.kt`
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue