Repository navigation
v0.2.0 - SSH Terminal — Input Routing & Live Render
SSH Terminal — Input Routing & Live Render
The TTY terminal's SSH session is now fully interactive. Commands typed over SSH reach the remote shell and output renders immediately on screen.
Using the Terminal
- Open Terminal tab in the bottom navigation and type '@'tty (no ' marks)
- Type
/ssh user@host -p port(e.g./ssh test@10.0.2.2 -p 2222) - Accept the host key when prompted
- Enter your password
- You're in — type commands normally, output renders live
Special keys: Use the key row below the terminal for Tab, Ctrl, Esc, and Alt modifiers. Ctrl+C, Ctrl+D, and arrow keys work as expected.
Local shell: The terminal also supports a local Android shell (no SSH needed) — just start typing without the /ssh prefix.
Fixes
- SSH input routing: commands now reach the remote shell reliably — the full write chain (Kotlin → FFI → russh channel) is verified end-to-end
- Live render updates: terminal output refreshes immediately after each command, no longer frozen on the MOTD
- Zombie polling coroutine: cancelled render-polling coroutines no longer survive through blocking FFI calls to overwrite valid frames with stale data
- Duplicate polling race:
startHostKeyPollingandsshSubmitPasswordno longer race to create competing render loops - PARTIAL frame stale cache: render snapshots now always extract all row data, eliminating blank/stale output from StateFlow conflation
- Fallback frame blank screen: empty-row race-loser snapshots no longer trigger unrenderable fallback frames
CI
- Clippy pedantic lints configured at workspace level
- Rust host tests gracefully skip when ghostty native symbols are unavailable