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
|
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
|
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
|
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
|
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
|
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
|
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)
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
|
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
|
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
|
57242d905c
|
refactor: Consolidate UI preference handling (#4895)
|
2026-03-23 19:36:02 +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
|
c4087c2ab7
|
feat: Migrate to Room 3.0 and update related documentation and tracks (#4865)
|
2026-03-20 21:40:08 +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
|
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
|
6e81ceec91
|
feat: Complete ViewModel extraction and update documentation (#4817)
|
2026-03-16 20:05:50 +00:00 |
|
James Rich
|
84bb6d24e4
|
docs: summarize KMP migration progress and architectural decisions (#4770)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
|
2026-03-13 02:23:25 +00:00 |
|
James Rich
|
ac6bb5479b
|
feat: introduce Desktop target and expand Kotlin Multiplatform (KMP) architecture (#4761)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
|
2026-03-12 21:14:49 +00:00 |
|
James Rich
|
875cf1cff2
|
refactor: migrate from Hilt to Koin and expand KMP common modules (#4746)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
|
2026-03-10 01:19:46 +00:00 |
|
James Rich
|
cffbd08806
|
refactor: migrate core modules to Kotlin Multiplatform and consolidat… (#4735)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
|
2026-03-06 22:06:50 +00:00 |
|
James Rich
|
b9b68d2779
|
refactor: migrate preferences to DataStore and decouple core:domain for KMP (#4731)
|
2026-03-05 20:37:35 -06:00 |
|
James Rich
|
68b2b6d88e
|
refactor(ble): improve connection lifecycle and enhance OTA reliability (#4721)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
|
2026-03-05 18:58:34 +00:00 |
|
James Rich
|
b0258d0cf1
|
feat: Add "Mark all as read" and unread message count indicators (#4720)
|
2026-03-05 18:18:34 +00:00 |
|
James Rich
|
2c49db8041
|
feat/decoupling (#4685)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
|
2026-03-03 13:15:28 +00:00 |
|