James Rich
|
3cdad0da28
|
refactor: delete transport layer and dead intermediaries, slim RadioInterfaceService
- Delete entire transport layer: BleRadioTransport, TcpRadioTransport,
SerialRadioTransport, StreamTransport, HeartbeatSender, StreamFrameCodec,
AndroidRadioTransportFactory, BaseRadioTransportFactory, MockRadioTransport,
NopRadioTransport, BleReconnectPolicy, TcpTransport, SerialTransport
- Delete MeshConfigHandler interface + impl (replaced by RadioConfigRepository)
- Delete RadioTransportCallback, RadioTransport, RadioTransportFactory interfaces
- Delete FakeRadioTransport, RadioTransportTest, MeshConfigHandlerImplTest
- Delete UseCase tests (impls restored, tests for deleted patterns removed)
- Slim RadioInterfaceService interface: remove transport internals, keep only
device-address/connection surface needed by Scanner and connections UIs
- Create SdkRadioInterfaceService: thin SDK-backed impl delegating to
RadioPrefs + RadioClientAccessor
- Update NoopRadioInterfaceService to match slimmed interface
- Update JvmUsbScanner to use SDK's JvmSerialPorts.list() instead of
deleted SerialTransport.getAvailablePorts()
- Remove DesktopRadioTransportFactory from desktop DI module
- Fix NodeListViewModel: replace RadioInterfaceService with RadioPrefs
- Fix MeshServiceOrchestratorTest: align with updated constructor params
- Fix UIViewModel: use emptyFlow() for meshActivity (SDK doesn't emit
raw transport-level activity events)
All targets compile clean, all JVM + Android unit tests pass.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-05-06 17:52:05 -05:00 |
|
James Rich
|
74ba959b24
|
feat: DRY SDK integration — shared bridge, Desktop cutover, dead infra deletion
Major architectural changes:
1. SHARED KMP BRIDGE (core/data/radio/):
- RadioClientAccessor: Platform-agnostic interface for SDK RadioClient
- SdkRadioController: Shared RadioController impl (replaces per-platform copies)
- SdkStateBridge: Shared SDK→repository bridge (event dispatch, node sync)
- SdkPacketHandler: Thin SDK-backed PacketHandler for MQTT/XModem/History
2. DESKTOP SDK CUTOVER:
- DesktopRadioClientProvider: TCP + Serial transport support
- Removed DirectRadioControllerImpl (old desktop radio path)
- Desktop now shares the same SDK bridge code as Android
3. DEAD INFRASTRUCTURE DELETION (~5,100 LOC removed):
- PacketHandlerImpl, MeshDataHandlerImpl, MeshRouterImpl
- CommandSenderImpl, MeshActionHandlerImpl, MeshConfigFlowManagerImpl
- MeshConnectionManagerImpl, AdminPacketHandlerImpl
- ServiceBroadcasts (Android intent-based pub/sub)
- NodeRepositoryImpl (Room-backed, replaced by SdkNodeRepositoryImpl)
- 8 trivial UseCases (SetLocale, SetTheme, ToggleAnalytics, etc.)
- All associated test files for deleted impls
- Deleted interfaces: AdminPacketHandler, CommandSender, MeshActionHandler,
MeshConfigFlowManager, MeshConnectionManager, MeshRouter, ServiceBroadcasts
4. NEW FEATURES:
- NodeMetadataEntity + Room migration 38→39 (persistent favorites/notes)
- AppMetadataRepository (clean access to node metadata)
- MessagePersistenceHandler (focused rememberDataPacket for StoreForward)
All three targets compile clean: :app:compileGoogleDebugKotlin,
:desktop:compileKotlin, :core:data:jvmTest passes.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-05-06 17:52:05 -05:00 |
|
James Rich
|
2162e0a340
|
feat: full SDK integration — drop AIDL, eliminate pipeline, SDK-backed nodes
Phase 1: Drop AIDL
- Delete all 6 .aidl files (core/api/src/main/aidl/)
- Strip binder object from MeshService (onBind returns null)
- Simplify MeshServiceClient to lifecycle observer (no AIDL binding)
- Remove meshService field from AndroidServiceRepository
- Delete ServiceClient, AndroidRadioControllerImpl, FakeIMeshService,
IMeshServiceContractTest
Phase 2: Migrate TAK to RadioController
- GenericCoTHandler: RadioController replaces CommandSender
- TAKMeshIntegration: RadioController replaces CommandSender
- CoreTakServerModule: DI updated
Phase 3: Port remaining consumers
- MeshConnectionManagerImpl: RadioController, remove time sync/passkey
(SDK handles internally), wrap telemetry in coroutine
- MeshConfigFlowManagerImpl: remove CommandSender dependency, use 0L
for currentPacketId
- RefreshLocalStatsAction: RadioController for widget telemetry
- EnsureRemoteAdminSessionUseCase: serviceRepository.onServiceAction()
replaces meshActionHandler
Phase 4: Delete dead pipeline
- Delete FromRadioPacketHandler interface + FromRadioPacketHandlerImpl
- Delete MeshMessageProcessor interface + MeshMessageProcessorImpl
- Delete related tests
- Remove MeshMessageProcessor dep from MeshActionHandlerImpl
- Keep CommandSender/MeshRouter/MeshActionHandler for
DirectRadioControllerImpl (desktop target)
Phase 5: SDK-backed NodeRepository
- New SdkNodeRepositoryImpl: in-memory StateFlow backed by NodeManager
- SDK handles persistence via its own SqlDelight storage
- Deactivate Room-backed NodeRepositoryImpl (@Single removed)
- NodeManagerImpl propagates myNodeNum to SdkNodeRepositoryImpl
- Cold start: brief empty state until SDK emits snapshot (<1s)
- Node notes: in-memory for POC (does not survive process death)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-05-06 17:52:05 -05:00 |
|
James Rich
|
2de57a9e81
|
feat: align theme with Design Standards v1.3, remove contrast setting (#5355)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-05-04 16:10:06 -05:00 |
|
James Rich
|
2822290908
|
refactor(build): build-logic cleanup, CC safety, and detekt 2.0 upgrade (#5311)
|
2026-05-01 02:48:37 +00:00 |
|
James Rich
|
f14ae2643c
|
feat(node): smoother remote-admin UX with per-node session tracking (#5217)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-04-22 14:21:04 -05: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
|
14b381c1eb
|
fix: harden reliability, clean up KMP compliance, and improve code quality (#5023)
|
2026-04-09 18:21:46 +00:00 |
|
James Rich
|
1649e46dd5
|
chore(deps): remove 7 unused dependencies across modules (#5017)
|
2026-04-09 12:35:28 -05: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 |
|
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
|
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
|
57242d905c
|
refactor: Consolidate UI preference handling (#4895)
|
2026-03-23 19:36:02 +00: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
|
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
|
dcbbc0823b
|
feat: Integrate Mokkery and Turbine into KMP testing framework (#4845)
|
2026-03-18 18:33:37 -05: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
|
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
|
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 |
|
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
|
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 |
|
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
|
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
|
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 |
|