Files
roro9stack/site/data/screens.toml
twislaandClaude Opus 5.5 6b71aace4f
CI / build (pull_request) Successful in 2m22s
Site / build (pull_request) Successful in 10s
SSH client: a terminal on another machine (#2)
The SSH App opens one session to a shell, over libssh (LibSSH-ESP32 5.10.0)
on mbedTLS. A server is trusted the first time on its fingerprint, and a
changed key is a warning with Cancel selected. The password is typed each
time and kept nowhere; or the device makes itself an Ed25519 key, whose
public half is shown, written to /ssh/id_ed25519.pub and printed by
`ssh status`.

lib/term is the terminal: what a shell, less, top, nano and vim send, with
sixteen colours, scroll regions, the alternate screen and 100 lines of
scrollback. Five text sizes with Ctrl and + or -, from 60x20 to 26x8, told
to the far end. The session goes on when the App is left; SSH shows in the
Status Bar. `ssh user@host` in the Shell opens the App.

Also:
- Keys that aren't characters carry Shift, Ctrl and Alt. The terminal needs
  it, and it makes Ctrl+Fn+up/down in a note and Shift+Tab in Gemini work
  from the real keyboard.
- IRC doesn't try to connect under 60 KB free: started with a session open,
  its TLS handshake took the heap down to 236 bytes.
- libssh's own curve25519 is left out of the build (scripts/libssh_filter.py):
  libsodium's has the same names.

Costs 292 KB of flash and about 50 KB of heap while a session is open; not
started under 75 KB free.

Docs: guide page, how-to, FAQ, home page, Status Bar, SD card folders, the
memory how-to, README, glossary, N1 notes with Q254 to Q266 and the checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
2026-10-08 04:38:36 +02:00

91 lines
4.0 KiB
TOML

# Real screenshots (the Debug Console's `screenshot` command, 240 x 135 pixels, shown at twice that).
[[screen]]
file = "sweep.png"
alt = "The LoRa Scanner's Sweep view: bars of signal strength from 863.0 to 870.0 MHz with peak marks, a waterfall under them, and a footer reading floor -100, 863.2 MHz at -89 dBm"
caption = "LoRa Scanner, Sweep"
[[screen]]
file = "sniffer.png"
alt = "The LoRa Scanner's packet list on LongFast 869.525 MHz while a Capture is recording: three packets, each with its time, RSSI, SNR and Meshtastic sender and hops"
caption = "LoRa Scanner, packets"
[[screen]]
file = "sky.png"
alt = "The GNSS App's sky view: a circle with the satellites of four constellations as coloured dots, and a legend counting them: GPS 7 of 10, GLONASS 5 of 5, Galileo 1 of 1, BeiDou 4 of 5, 3D Fix"
caption = "GNSS, sky"
[[screen]]
file = "gemini.png"
alt = "The Gemini App on the page Project Gemini at geminiprotocol.net: a heading, then the start of the text, Gemini in 100 words"
caption = "Gemini"
[[screen]]
file = "system.png"
alt = "The System App's overview: Core 0 at 47 percent, Core 1 at 64 percent, memory 49 KB free, network, battery 97 percent, uptime, and a graph of both cores over two minutes"
caption = "System"
[[screen]]
file = "notes.png"
alt = "The Notes editor on shopping-list.txt, 66 bytes, saved: Shopping list, milk, and a longer line that wraps on the screen"
caption = "Notes"
[[screen]]
file = "storage.png"
alt = "The Storage App at the top of the SD card: the folders captures, gemini, gnss, irc, updates and wifi, and a Maintenance row, with 7.3 GB free"
caption = "Storage"
[[screen]]
file = "update.png"
alt = "The full-screen progress of a firmware update: Receiving v0.10.0, a bar at 28 percent"
caption = "A firmware update"
[[screen]]
file = "shell.png"
alt = "The Shell after rm -f /gt2/*: the command in blue, then rm: 5 match /gt2/* and five lines rm: ok 1 files, above an empty input line"
caption = "Shell"
[[screen]]
file = "picture.png"
alt = "A picture open in the Storage App: colour bars, grey and colour gradients and a yellow ellipse, shrunk to fit the screen and dithered to its 256 colours"
caption = "Storage, a picture"
[[screen]]
file = "share.png"
alt = "The Storage App's Share screen: a QR code, the address 172.16.42.25, the code 825 132, Nothing asked yet, Not encrypted, and the key that stops sharing"
caption = "Storage, sharing with a browser"
[[screen]]
file = "vpn.png"
alt = "Settings, VPN: VPN On, Start with Wi-Fi On, Import /vpn/wg0.conf, Forget it; then It is up, heard 66 s ago, the server's address, and This device 10.9.0.2, through it everything. VPN shows in the Status Bar"
caption = "Settings, VPN"
[[screen]]
file = "ssh.png"
alt = "The SSH App's list: a saved host, tester at 172.16.42.249 port 2222, then New connection and This device's key"
caption = "SSH, the hosts"
[[screen]]
file = "ssh-trust.png"
alt = "A dialog over the SSH App: A server not met before, the address 172.16.42.249, and a SHA256 fingerprint on two lines; buttons Cancel, selected, and Trust it"
caption = "SSH, a server met for the first time"
[[screen]]
file = "ssh-terminal.png"
alt = "The SSH App's terminal showing top on a remote machine: uptime, tasks, memory, then a reverse-video header and five processes. SSH shows in the Status Bar"
caption = "SSH, top on another machine"
[[screen]]
file = "ssh-key.png"
alt = "This device's key: its public half, for a server's authorized_keys file, a line starting ssh-ed25519; it is also in /ssh/id_ed25519.pub, and the private half never leaves"
caption = "SSH, this device's key"
[[screen]]
file = "ssh-changed.png"
alt = "A dialog over the SSH App: THE SERVER'S KEY CHANGED. Someone in between? Now it is, and a SHA256 fingerprint; buttons Cancel, selected, and Replace"
caption = "SSH, a server whose key changed"
[[screen]]
file = "help.png"
alt = "The help panel over the Launcher: Keys: Launcher, up and down, Enter opens the App, then Everywhere: back, home, the arrows, Fn h for these keys and Fn p for a screenshot"
caption = "The help panel (Fn+h)"