Commit graph

314 commits

Author SHA1 Message Date
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
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
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
9acdf5309f
refactor: modern APIs — Koin 4.2, CMP 1.11, Ktor resilience, Room @Upsert, injected dispatchers (#5119) 2026-04-14 11:41:01 +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
b13f9bf989
fix(resources): add resourcePrefix to KMP + widget modules, rename prefixed resources (#5111) 2026-04-13 18:25:23 +00:00
James Rich
39620d063b
fix(nav): restore broken traceroute map navigation (#5104) 2026-04-13 12:25:21 +00:00
James Rich
5c47256b3f
test(prefs): migrate DataStore tests from androidHostTest to commonTest (#5092) 2026-04-12 20:45:19 +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
bc44af1597
fix(connections): show device name during connecting state (#5085) 2026-04-12 17:29:25 +00:00
James Rich
7ca7179197
build: migrate Compose dependencies to Compose Multiplatform (#5084) 2026-04-12 14:45:11 +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
62264b10c6
refactor(model): remove ConnectionState helper methods and fix updateStatusNotification return type (#5074) 2026-04-11 23:41:34 +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
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
9c8532f80d
refactor: leverage new dependency features from recent updates (#5057) 2026-04-10 22:51:08 +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
3d51a48da2
feat(messaging): add IME Send action to message input (#5047) 2026-04-10 16:02:55 +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
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
ad08a6c7b7
feat(settings): add DNS support and fix UDP protocol toggle (#5013) 2026-04-09 14:23:31 +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
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)
Some checks are pending
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
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
89547afe6b
Refactor and unify firmware update logic across platforms (#4966) 2026-04-01 12:14:26 +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
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)
Some checks are pending
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
2026-03-31 03:49:31 +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