James Rich
97efcca224
refactor(remote-shell): use proto fields for replay/heartbeat metadata
...
Align with firmware refactor (meshtastic/firmware#10123 ) and protobufs
PR meshtastic/protobufs#894 which adds last_tx_seq and last_rx_seq
fields to the RemoteShell message.
- ACK: use last_rx_seq proto field instead of encoding replay-from
seq into payload bytes
- PING: use last_tx_seq/last_rx_seq proto fields instead of encoding
heartbeat status as 8-byte payload
- PONG: read last_tx_seq/last_rx_seq from proto fields instead of
decoding payload
- SentFrame: store flags/lastTxSeq/lastRxSeq for faithful replay
- Remove unused encodeUint32BE, encodeHeartbeatStatus,
decodeHeartbeatStatus helpers and associated constants
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 13:13:10 -05:00
James Rich
bd25730633
fix(remote-shell): resolve KMP compilation, detekt, and spotless failures
...
- Import kotlin.concurrent.Volatile instead of JVM-auto-resolved variant
- Replace synchronized() with Mutex.withLock for KMP compatibility
- Replace String.format() with DataPacket.nodeNumToDefaultId()
- Add iosMain actual for CrtCurvatureModifier (no-op stub)
- Extract magic numbers to named constants (UINT32_BYTES, MAX_FLUSH_WINDOW_MS, CRT_STRENGTH_SCALE)
- Add detekt suppressions for protocol-inherent complexity
- Remove unnecessary safe calls on non-nullable Wire proto fields
- Fix spotless formatting in RemoteShellHandler.kt
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 13:13:10 -05:00
James Rich
8701b8645d
feat(remote-shell): PTY-over-mesh terminal with retro-CRT UI
...
Adds a full RemoteShell (portnum=13) implementation matching Jonathan's
dmshell_client.py protocol:
Protocol layer:
- Seq/ack reliability: incrementing seq on every non-ACK frame, piggybacked
ack_seq, out-of-order frame buffering, gap detection and replay requests
- TX history ring buffer (last 50 frames) for retransmission on request
- ACK frames carry optional 4-byte big-endian REPLAY_REQUEST payload
- PING/PONG heartbeat with 8-byte status payload (lastTxSeq, lastRxSeq);
PONG handler triggers replay if peer is behind
- PKI: DataPacket.PKC_CHANNEL_INDEX so CommandSenderImpl applies
Curve25519 encryption (firmware rejects non-PKI DMShell packets)
- Input batching: 500ms debounce (matches Python client), immediate flush
on \r, \t, buffer-full (64 bytes), or Enter
Terminal UI:
- Retro-CRT composables: TerminalCanvas (phosphor glow, two-pass bloom),
ScanlinesOverlay, FlickerEffect (animated brightness variation),
CrtCurvatureModifier (AGSL barrel distortion on Android 12+, no-op on JVM)
- PhosphorPreset enum: GREEN (P1), AMBER (P3), WHITE (P4)
- Pending-input rendered inline in preset.dim colour; snaps to confirmed on flush
- Hidden zero-size BasicTextField captures soft and hardware keyboard input
- Phosphor colour picker dropdown in top bar
Capabilities gate:
- supportsRemoteShell gated to UNRELEASED (9.9.9)
- Entry only visible in AdministrationSection when node.capabilities.supportsRemoteShell
2026-04-15 13:13:10 -05:00
James Rich
a2763bdfeb
fix(charts): apply Vico 3.1.0 best-practice audit fixes ( #5138 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 02:20:33 +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
bf0deef708
fix(icons): audit and correct icon migration regressions from #5030 #5040 #5056 ( #5136 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 01:14:31 +00:00
James Rich
f48fc61729
feat(environment): add 1-Wire multi-thermometer (DS18B20) display support ( #5130 )
...
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 00:03:24 +00:00
James Rich
3c7e1266f8
fix: truncate traceroute chart x-values to whole seconds to prevent Vico crash ( #5122 )
2026-04-14 11:01:03 +00:00
James Rich
e46a8296cb
feat(core/ui): add safeLaunch, UiState, KMP permissions, and CMP lifecycle modernization ( #5118 )
2026-04-14 00:45:34 +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
76386e419c
refactor: migrate remaining raw stateIn(WhileSubscribed) to stateInWhileSubscribed extension ( #5113 )
2026-04-13 20:02:06 +00:00
James Rich
39620d063b
fix(nav): restore broken traceroute map navigation ( #5104 )
2026-04-13 12:25:21 +00:00
James Rich
a11dee42a7
test: migrate Compose UI tests from androidTest to commonTest ( #5091 )
2026-04-12 20:20:00 +00:00
James Rich
0441093ce8
refactor(node): move Position to last in telemetry list on node details ( #5068 )
2026-04-11 17:06:17 +00:00
James Rich
3794c79dae
refactor: adopt M3 Expressive components from material3 1.11.0-alpha06 ( #5063 )
2026-04-11 02:10:03 +00:00
James Rich
a6423d0a0f
feat(metrics): redesign position log with SelectableMetricCard and add CSV export to all metrics screens ( #5062 )
2026-04-11 01:26:26 +00:00
James Rich
37e9e2c8f0
fix(charts): hoist rememberVicoZoomState above vararg layers to prevent ClassCastException ( #5060 )
2026-04-11 00:05:56 +00:00
James Rich
ce32e640de
fix(icons): replace outline (FILL=0) pathData with filled (FILL=1) from upstream Material Symbols ( #5056 )
2026-04-10 22:15:43 +00:00
James Rich
520fa717a9
refactor(metrics/map): DRY up charts, decompose MapView monoliths, add test coverage ( #5049 )
2026-04-10 20:54:09 +00:00
James Rich
02f6fd67b8
fix: clean up flaky, duplicated, and misplaced tests; remove redundant deps ( #5048 )
2026-04-10 19:46:45 +00:00
James Rich
1390a3cd4f
ci: cache Robolectric SDK jars to prevent flaky SocketException failures ( #5045 )
2026-04-10 10:05:07 -05:00
James Rich
dba037466e
refactor(icons): migrate to self-hosted VectorDrawable XMLs via MeshtasticIcons ( #5030 )
2026-04-10 01:35:52 +00:00
James Rich
9c0e9b82d6
feat(charts): adopt Vico best practices, add sensor data, and migrate TracerouteLog ( #5026 )
2026-04-09 23:44:59 +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
51251ab16a
feat(ci): shard test suite and enable JUnit 5 parallel execution ( #4977 )
2026-04-03 13:08:49 +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
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
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 )
...
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
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 )
...
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-24 22:31:40 +00:00
James Rich
96060a0a4d
refactor: coroutine dispatchers and modernize testing infrastructure ( #4901 )
...
Dependency Submission / dependency-submission (push) Waiting to run
Main CI (Verify & Build) / validate-and-build (push) Waiting to run
Main Push Changelog / Generate main push changelog (push) Waiting to run
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
57242d905c
refactor: Consolidate UI preference handling ( #4895 )
2026-03-23 19:36:02 +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
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
1b0dc75dfe
feat: Complete app module thinning and feature module extraction ( #4844 )
2026-03-19 00:21:18 +00:00
James Rich
dcbbc0823b
feat: Integrate Mokkery and Turbine into KMP testing framework ( #4845 )
2026-03-18 18:33:37 -05:00
Victorio Berra
eae5a6bdac
Add "Exclude MQTT" filter to Nodes view. ( #4825 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <james.a.rich@gmail.com>
2026-03-18 15:39:59 +00:00
James Rich
cb95cace25
chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) ( #4832 )
2026-03-17 16:51:09 -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
0b2e89c46f
refactor: Replace Nordic, use Kable backend for Desktop and Android with BLE support ( #4818 )
...
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-16 23:06:43 +00:00
James Rich
6e81ceec91
feat: Complete ViewModel extraction and update documentation ( #4817 )
2026-03-16 20:05:50 +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