Commit Graph

672 Commits

Author SHA1 Message Date
James Rich
a74d5d470a feat(core): implement batched node info handling for mesh handshake
This commit optimizes the mesh handshake protocol by introducing explicit support for `NodeInfoBatch` messages. It updates the configuration flow to handle both primary batched node delivery and legacy single-node delivery for backwards compatibility with older firmware.

Key changes include:

- **Batch Processing Optimization:**
    - Added `handleNodeInfoBatch` to the `MeshConfigFlowManager` interface to allow bulk processing of node information, reducing per-item overhead during the initial handshake.
    - Updated `MeshConfigFlowManagerImpl` to accumulate batched nodes efficiently using `addAll`.
    - Refactored `FromRadioPacketHandlerImpl` to delegate batch processing directly to the manager instead of iterating through individual items.

- **Handshake Protocol Updates:**
    - Updated `HandshakeConstants` to distinguish between `BATCH_NODE_INFO_NONCE` (primary Stage 2) and `NODE_INFO_NONCE` (legacy Stage 2).
    - Modified `handleConfigComplete` logic to trigger Stage 2 completion for both batched and legacy nonces.
    - Ensured `MeshConnectionManager` prioritizes the batch nonce when requesting node information.

- **Testing & Simulation:**
    - Created `MeshConfigFlowManagerImplTest` to validate node accumulation, batch handling, and handshake nonce routing.
    - Improved `MockInterface` to better simulate real-world packet ordering by delaying live traffic until after the handshake completion coroutine has processed the node database.
    - Added verification tests to ensure the connection manager uses the correct batching nonces.

Specific changes:
- Added `handleNodeInfoBatch` implementation to `MeshConfigFlowManagerImpl`.
- Updated documentation in `HandshakeConstants` regarding two-stage mesh handshake protocol.
- Refactored `MockInterface.sendStage2NodeInfoResponse` to handle packet encoding and simulation delays.
- Added unit tests covering edge cases for empty and mixed node info batches.
2026-04-03 10:51:17 -05:00
James Rich
b708b2ff76 feat: implement batched NodeInfo delivery in handshake protocol
This commit introduces support for `NodeInfoBatch` messages, allowing the application to receive and process multiple node records efficiently during the second stage of the device handshake. This replaces the legacy approach of sending node information individually, improving synchronization performance.

Key changes include:

- **Handshake Protocol:**
    - Added `BATCH_NODE_INFO_NONCE` to `HandshakeConstants`.
    - Updated `MeshConnectionManagerImpl` to request batched node information by default during the handshake process.
    - Updated `MeshConfigFlowManagerImpl` to handle the batch-specific completion nonce, ensuring Stage 2 of the handshake finalizes correctly.

- **Packet Handling:**
    - Enhanced `FromRadioPacketHandlerImpl` to detect `node_info_batch` packets.
    - Implemented logic to iterate through batched items and process each `NodeInfo` record via the `MeshConfigFlowManager`.
    - Updated connection progress reporting to reflect the count of nodes received within a batch.

- **Testing and Simulation:**
    - Updated `MockInterface` to simulate batched node delivery, refactoring the mock response logic into distinct Stage 1 (config) and Stage 2 (node info) phases.
    - Added a unit test in `FromRadioPacketHandlerImplTest` to verify that batched items are correctly routed and that the UI connection status is updated.

Specific changes:
- Modified `HandshakeConstants` to document the transition to batched NodeInfo delivery in Stage 2.
- Updated `MeshConnectionManagerImpl.startNodeInfoOnly()` to use the new batch nonce.
- Added `nodeInfoBatch` processing branch to the `handleFromRadio` logic.
2026-04-03 10:51:17 -05:00
James Rich
fda96e2f8c chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4975) 2026-04-03 09:13:23 -05: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
7e041c00e1 feat(wifi): introduce BLE-based WiFi provisioning for nymea-compatible devices (#4968) 2026-04-02 17:31:17 +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
d1ca8ec527 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4967) 2026-04-01 10:56:33 -05:00
James Rich
fefe74d217 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4965) 2026-04-01 12:45:23 +00:00
James Rich
89547afe6b Refactor and unify firmware update logic across platforms (#4966) 2026-04-01 12:14:26 +00:00
James Rich
d8e295cafb chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4964) 2026-03-31 21:15:06 -05:00
James Rich
7c9d007a1f chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4962) 2026-03-31 21:26:24 +00:00
James Rich
464a12b9f7 chore: standardize resources and update documentation for Navigation 3 (#4961) 2026-03-31 21:25:37 +00:00
James Rich
1faa802fe6 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4958) 2026-03-31 14:07:18 +00:00
James Rich
6a5115b897 Refactor navigation to use NodeDetail route and fix radio settings (#4960) 2026-03-31 14:03:02 +00:00
James Rich
c75c9b34d6 feat: implement XModem file transfers and enhance BLE connection robustness (#4959) 2026-03-31 03:49:31 +00:00
Roman Vlasenko
ae4465d7c8 fix(strings): Fix public key description (#4957) 2026-03-30 20:34:54 +00:00
James Rich
f2d09ff79d Refactor nav3 architecture and enhance adaptive layouts (#4944)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-27 14:43:44 +00:00
James Rich
141b54ff9c feat: migrate to Material 3 Expressive APIs (#4934)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 16:42:46 +00:00
James Rich
518096ddc8 build: update Compose Multiplatform and migrate lifecycle dependencies (#4932)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-26 15:18:45 +00:00
James Rich
7484cc69b4 refactor(ui): remove labels from navigation suite items (#4924) 2026-03-25 21:14:17 -05: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
8ce17defb7 refactor: remove demoscenario and enhance BLE connection stability (#4914)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-25 14:24:42 +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
b0e91a390c feat: implement unified deep link routing for Kotlin Multiplatform (#4910)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-25 00:21:24 +00:00
James Rich
553ca2f8ed feat: implement global SnackbarManager and consolidate common UI setup (#4909)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-24 22:31:40 +00:00
James Rich
b45bc9be90 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4905) 2026-03-24 15:49:49 +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
57242d905c refactor: Consolidate UI preference handling (#4895) 2026-03-23 19:36:02 +00:00
James Rich
82466be072 feat: Integrate AlertHost into desktop application and add UI tests (#4893) 2026-03-23 18:19:41 +00:00
James Rich
7b327215f3 refactor: adaptive UI components for Navigation 3 (#4891) 2026-03-23 12:35:02 -05: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
d5d4aa4577 refactor(service): update string formatting for local stats notif (#4885)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-22 15:55:30 +00:00
renovate[bot]
883ab5f7da chore(deps): update core/proto/src/main/proto digest to cb1f893 (#4882)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-22 12:56:23 +00:00
James Rich
55729c9e2d chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4880) 2026-03-22 12:52:15 +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
88d11aafec fix: Update messaging feature with contact item keys and MQTT limits (#4871) 2026-03-21 14:25:23 +00:00
renovate[bot]
d61c0c9a67 chore(deps): update core/proto/src/main/proto digest to ee7df89 (#4868)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-21 13:07:44 +00:00
James Rich
3bd8669cbe fix: Implement reconnection logic and stabilize BLE connection flow (#4870) 2026-03-21 12:49:03 +00:00
James Rich
6e50db0b91 docs: Unify notification channel management and migrate unit tests (#4867) 2026-03-20 22:58:47 +00:00
James Rich
c4087c2ab7 feat: Migrate to Room 3.0 and update related documentation and tracks (#4865) 2026-03-20 21:40:08 +00:00
James Rich
1e55e554be feat: Add KMP URI handling, import, and QR code generation support (#4856) 2026-03-19 13:36:19 -05:00
James Rich
b982b145e6 feat: Implement KMP ServiceDiscovery for TCP devices (#4854) 2026-03-19 17:19:58 +00:00
James Rich
cdba140eeb chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4846) 2026-03-19 12:30:01 +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
1b0dc75dfe feat: Complete app module thinning and feature module extraction (#4844) 2026-03-19 00:21:18 +00:00