Commit Graph
7813 Commits
Author SHA1 Message Date
James Rich e981e8e4df feat(remote-shell): size the PTY from the viewport, make output selectable
OPEN and RESIZE carried a hardcoded 80x24, so the remote shell wrapped to
a width the phone does not have. The viewport is now measured in monospace
cells and the session waits for that measurement, so OPEN carries the real
size - 'stty size' on a medium_phone emulator reports 29 54.

Output sits in a SelectionContainer, so a command's output can be copied
out instead of retyped.
2026-08-24 14:51:59 -05:00
James Rich 5a8028172c feat(remote-shell): show session state, inline the caret, add control keys
Three gaps the rig made obvious:

- The ViewModel tracked a full session lifecycle that nothing rendered, so
  a refused or stalled session was indistinguishable from a working one -
  both are a blank screen. A status bar now reports anything that is not
  OPEN and offers Reconnect.
- Pending input was its own list row, putting the caret under the prompt
  rather than after it, which reads as a hung terminal.
- No way to send Ctrl-C, Tab, Esc or arrows. A key bar sends them, and
  typeControlSequence() bypasses the keystroke debounce so an interrupt is
  not queued behind a 500 ms batch window.

The input sink moved into its own composable with hoisted callbacks.

Verified against meshtasticd: 'uname -s' echoes exactly and returns Linux;
Ctrl-C interrupts and returns a fresh prompt.
2026-08-24 14:42:53 -05:00
James Rich 122a627d76 feat(remote-shell): plain terminal UI, turn-taking, and a correct input sink
Three things stood between the April branch and a working session:

- The CRT theatrics are gone - scanlines, phosphor presets, flicker, and
  the AGSL curvature shader, which rendered the block cursor as a skewed
  amber quad in the corner. The terminal is now monospace text on the app
  theme.
- Turn-taking ('talking stick', RemoteShell.flags) landed on the firmware
  side after this branch was written. DMShellModule marks every session
  turn-managed and withholds output until the peer grants a turn, so a
  client that never grants sees an open session and no prompt, and the
  device re-sends RTS every 250 ms until its TX queue fills. We now grant
  on every frame we originate and answer any request immediately.
- The invisible input sink passed a constant "" as its value, so Compose
  re-delivered characters we had already consumed: 'whoami' reached the
  PTY as 'wwhwhowhoa'. It now tracks what it consumed and forwards the
  delta, mapping a shrinking field to backspaces.

Verified against meshtasticd: session opens, 'whoami' echoes exactly and
returns 'root'.
2026-08-24 14:28:39 -05:00
James Rich df70f6b207 fix(remote-shell): re-integrate the April branch with current APIs
- license header year: the tree standardised on 2026, not 2025-2026
- spotless: ktlint's blank-line-between-when-conditions is new since
- MeshDataHandlerImpl: drop shouldBroadcast, removed with the AIDL
  service rework (#5586); nothing broadcasts on this path any more
- RemoteShellViewModel: DataPacket.nodeNumToDefaultId and
  DataPacket.PKC_CHANNEL_INDEX both moved to NodeAddress
2026-08-24 14:04:07 -05:00
James Rich 4d75e88cec Merge origin/main into remote-shell-revival
Conflicts, all re-integration of the April branch into the current tree:
- MeshDataHandlerImpl/Test: keep main's constructor (ServiceScope, session
  context, geofence/beacon collaborators) and re-add remoteShellHandler.
- Capabilities.kt: re-add supportsRemoteShell, still gated to UNRELEASED.
- strings.xml: main re-sorted the file; re-insert remote_shell and
  phosphor_colour in their sorted positions.
- NodesNavigation/AdministrationSection: union both sides.
2026-08-24 12:35:09 -05:00
James Rich 8e1e94c97e chore: Scheduled updates (Firmware, Hardware, Translations) (#6852) 2026-08-24 11:00:20 -05:00
James Rich 1ab4da0fa6 feat(messaging): per-contact drafts and a quieter composer (#6851) 2026-08-24 10:43:59 -05:00
James Rich ef18af3610 feat(messaging): swipe to reply, double-tap reactions, day separators (#6850) 2026-08-24 15:01:47 +00:00
James Rich e549d24ea3 fix(messaging): clear and suppress notifications for the conversation on screen (#6849) 2026-08-24 15:01:46 +00:00
github-actions[bot] b46c553e07 docs: update CHANGELOG.md (#6838) v2.8.2-internal.1 2026-08-24 06:20:21 -05:00
James RichandClaude Fable 5 bd2863243b fix(mqtt): tolerate object-typed payload in MQTT JSON messages (#6839)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 06:19:35 -05:00
James RichandClaude Fable 5 f3d843629b fix(map): survive the WebView provider update race in Site Planner (#6846)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 06:19:18 -05:00
James RichandClaude Fable 5 5447674bb4 fix(connection): extend BLE handshake deadlines while config progress flows (#6848)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 06:18:42 -05:00
James RichandClaude Fable 5 7c62ee592d fix(ui): bound pane content height under the adaptive three-pane scaffold (#6845)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 10:55:52 +00:00
James RichandClaude Fable 5 9665eafe41 fix(metrics): eliminate the Vico canvas restore underflow crash (#6847)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 10:49:41 +00:00
James RichandClaude Fable 5 3027f544f0 fix(navigation): never let the active backstack empty under NavDisplay (#6844)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 10:46:47 +00:00
renovate[bot] 123a160326 chore(deps): update com.android.tools:common to v32.3.2 (#6842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-24 03:31:09 -07:00
renovate[bot] 8f12101d0b chore(deps): update agp to v9.3.2 (#6841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-24 03:30:57 -07:00
James RichandClaude Fable 5 ba205927ed fix(firmware): map SoftDevice variants for the new nrf52840 boards (#6843)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 03:30:37 -07:00
github-actions[bot]andgithub-actions[bot] c10ed4a6eb docs: update CHANGELOG.md (#6835)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-23 17:39:00 -07:00
James Rich 046b7868e5 chore: Scheduled updates (Graphs, Baseline Profile) (#6837) 2026-08-23 17:38:39 -07:00
James Rich 5f5d5e2dbf chore: Scheduled updates (Firmware, Hardware, Translations) (#6822) 2026-08-23 17:35:31 -07:00
James RichandClaude Fable 5 60002de56d chore(detekt): scan flavor, iosMain and jvmAndroidMain sources (#6836)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 23:24:19 +00:00
James Rich 93a01ccd0d chore: Scheduled updates (Graphs, Baseline Profile) (#6823) 2026-08-23 22:26:50 +00:00
James Rich 0daac75009 fix(map): parse KMZ archives in the F-Droid map overlay renderer (#6834) 2026-08-23 22:25:49 +00:00
James RichandClaude Opus 5 10d52c8e33 chore: bump VERSION_NAME_BASE to 2.8.2 (#6820)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 19:12:41 +00:00
renovate[bot] 92793075e2 chore(deps): update org.meshtastic:protobufs to v2.7.26.155-g1b4cb00-snapshot (#6819) 2026-08-21 14:13:46 -05:00
James RichandClaude Opus 5 f650030dac build: opt in to parallel Tooling API model building for IDE sync (#6821)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 14:12:59 -05:00
github-actions[bot] 222e982793 docs: update CHANGELOG.md (#6800) 2026-08-21 13:50:45 -05:00
renovate[bot] b84bb7c926 chore(deps): update maps.compose to v8.5.0 (#6818) 2026-08-21 13:50:16 -05:00
James RichandClaude Fable 5 817b3ea120 ci(scheduled): refresh the bootloader-quirks and maintenance-UF2 seeds from the API (#6813)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 18:28:27 +00:00
James Rich 3449c6b446 chore: Scheduled updates (Firmware, Hardware, Translations) (#6817) 2026-08-21 17:59:30 +00:00
renovate[bot] 92b347f2df chore(deps): update org.meshtastic:protobufs to v2.7.26.153-ge701e5d-snapshot (#6816)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 17:59:23 +00:00
renovate[bot] 8bc96156e2 chore(deps): update aboutlibraries to v15.1.1 (#6815)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 17:59:17 +00:00
James RichandClaude Sonnet 5 99075c5dbe feat(hardware): fetch the maintenance UF2 manifest from the API, digest-pinned (#6803)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 17:58:51 +00:00
James RichandClaude Opus 5 6cebda84cb fix(analytics): don't initialize the Datadog SDK under Robolectric (#6814)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 16:56:27 +00:00
James Rich a276cda62c fix(firmware): show the erase wait and upload retries during Legacy DFU (#6812) 2026-08-21 15:15:57 +00:00
James RichandClaude Fable 5 35c13122da ci(scheduled): refresh the bootloader-quirks and maintenance-UF2 seeds from the API (#6813)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 09:49:50 -05:00
James Rich 090e4dd543 chore: Scheduled updates (Firmware, Hardware, Translations) (#6801) 2026-08-21 13:24:25 +00:00
James Rich 01f11c536c chore: Scheduled updates (Graphs, Baseline Profile) (#6805) 2026-08-21 13:24:20 +00:00
James RichandClaude Sonnet 5 4651c85361 feat(hardware): fetch bootloader OTA quirks from the API, seeded from the bundled asset (#6802)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 13:23:32 +00:00
James RichandClaude Fable 5 459eb61948 fix(database): give every SQLite connection a busy timeout (#6809)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 12:42:59 +00:00
James RichandClaude Fable 5 106570d230 fix(map): raise android-maps-utils to 5.1.1 so KML import survives xmlutil 1.0.x (#6811)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 12:24:00 +00:00
James RichandClaude Fable 5 b6213f94ec fix(database): rebuild the packet FTS index after the schema-52 table recreation (#6808)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 12:23:57 +00:00
github-actions[bot] 7b50b07001 docs: update CHANGELOG.md (#6788) 2026-08-20 14:35:47 -05:00
James Rich 08ac3978f9 chore: Scheduled updates (Firmware, Hardware, Translations) (#6799) 2026-08-20 14:35:26 -05:00
James Rich f2a21227c7 chore: Scheduled updates (Firmware, Hardware, Translations) (#6789) 2026-08-20 13:58:37 -05:00
github-actions[bot] 6c4b8cbc1a docs: release CHANGELOG.md for v2.8.1 (#6790) 2026-08-20 13:58:11 -05:00
renovate[bot] 357c2e029d chore(deps): update aboutlibraries to v15.1.0 (#6797) 2026-08-20 13:57:37 -05:00
James RichandClaude Fable 5 950c9a1592 fix(ui): give feedback when a contact or channel import arrives while disconnected (#6798)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 18:27:52 +00:00