mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-09-14 06:11:20 -04:00
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'.
:feature:node
Overview
Targets: Android · JVM (Desktop) · iOS
The :feature:node module handles node-centric features, including the node list, detailed node information, telemetry charts, and the compass.
Key Components
1. NodeListScreen
Displays all nodes currently known to the application.
2. NodeDetailScreen
Shows exhaustive details for a specific node, including hardware info, position history, and last heard status.
3. MetricsViewModel
Manages the retrieval and display of telemetry data (e.g., battery, SNR, environment metrics) using charts.
4. CompassViewModel
Provides a compass interface to show the relative direction and distance to other nodes.
Dependency Graph
graph TB
:feature:node[node]:::kmp-feature
:feature:node -.-> :core:common
:feature:node -.-> :core:data
:feature:node -.-> :core:database
:feature:node -.-> :core:datastore
:feature:node -.-> :core:domain
:feature:node -.-> :core:model
:feature:node -.-> :core:navigation
:feature:node -.-> :core:repository
:feature:node -.-> :core:resources
:feature:node -.-> :core:service
:feature:node -.-> :core:ui
:feature:node -.-> :core:di
:feature:node -.-> :feature:map
:feature:node -.-> :core:testing
classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-application-compose fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef compose-desktop-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef android-library fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-library-compose fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-test fill:#A0C4FF,stroke:#000,stroke-width:2px,color:#000;
classDef jvm-library fill:#BDB2FF,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library-compose fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;