James Rich
19eba729f7
chore(database): Room migration 39→40 — drop legacy node tables
...
- Remove my_node, nodes, metadata tables via AutoMigration with @DeleteTable
- Parameterize all 34 PacketDao queries to accept myNodeNum directly
- Delete NodeInfoDao, NodeEntity, MyNodeEntity, MetadataEntity
- Delete CommonNodeInfoDaoTest (dead)
- Rewrite PacketRepositoryImpl to inject NodeRepository for myNodeNum
- Rewrite CommonPacketDaoTest and CommonPacketRepositoryTest
- Update MigrationTest to remove nodeInfoDao usage
- Update core/database README to reflect current schema
SDK is now sole source of truth for all node data.
Room only stores messages, logs, and user annotations.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-06 17:52:05 -05:00
James Rich
1dd3637b50
refactor: eliminate NodeInfoReadDataSource, use NodeRepository directly
...
MeshLogRepositoryImpl was the sole external consumer of
NodeInfoReadDataSource — it only needed myNodeNum to identify the
local node in logs. Replace with NodeRepository.myNodeInfo (already
SDK-backed via SdkNodeRepositoryImpl).
PacketRepositoryImpl referenced NodeInfoDao.MAX_BIND_PARAMS — inlined
as a private constant since it's just the SQLite bind-param limit.
With zero external consumers remaining, delete:
- NodeInfoReadDataSource interface
- SwitchingNodeInfoReadDataSource implementation
The Room NodeInfoDao/NodeEntity/MyNodeEntity remain in the database
module for now (internal tests + migration history) but have no
external dependents — ready for a future Room migration 40 to DROP.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-06 17:52:05 -05:00
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
3c75510f01
fix(mqtt): harden TLS enforcement, add user CA trust, and improve error diagnostics ( #5365 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-06 12:09:49 -05:00
James Rich
400e0404f6
fix(data): default new-node notifications off for event firmware ( #5323 )
2026-05-02 02:02:30 +00:00
James Rich
e198f52de5
refactor(coroutines): migrate to kotlinx-coroutines 1.11.0-rc02 ( #5312 )
...
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-01 03:11:22 +00: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
3d2b21843e
refactor: update user lookups and localize traceroute responses ( #5294 )
2026-04-29 16:42:02 +00:00
James Rich
bbb7f8b23f
fix(crashlytics): resolve beta 2.7.14 crash issues ( #5245 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-25 19:23:21 +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
765594f7ee
fix: MQTT proxy connection and probe test failures ( #5215 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-22 11:05:24 -05:00
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
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
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
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
17e69c6d4c
chore: review-cleanup fleet (audit + fix + hardening) ( #5158 )
2026-04-17 00:02:59 +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
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
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
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
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
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
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
14b381c1eb
fix: harden reliability, clean up KMP compliance, and improve code quality ( #5023 )
2026-04-09 18:21:46 +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
James Rich
b3be9e2c38
fix: improve PKI message routing and resolve database migration racecondition ( #4996 )
2026-04-05 00:37:20 +00: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
51251ab16a
feat(ci): shard test suite and enable JUnit 5 parallel execution ( #4977 )
2026-04-03 13:08:49 +00: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
c75c9b34d6
feat: implement XModem file transfers and enhance BLE connection robustness ( #4959 )
2026-03-31 03:49:31 +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
6516287c62
refactor: BLE transport and UI for Kotlin Multiplatform unification ( #4911 )
...
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com >
2026-03-25 02:15:51 +00:00
James Rich
96060a0a4d
refactor: coroutine dispatchers and modernize testing infrastructure ( #4901 )
...
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
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
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
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
cb95cace25
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) ( #4832 )
2026-03-17 16:51:09 -05:00
James Rich
807db83f53
feat: service extraction ( #4828 )
2026-03-17 14:06:01 -05: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
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