Files
Meshtastic-Android/feature/widget
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
..