Expand description
Terminal lifecycle and the main select loop.
All four legacy tick cadences are preserved: 100ms UI, 1s scheduled tasks + feedback, 1s stats/projection, 5s state reapers. The task tick in particular is load-bearing — without it scheduled tasks never fire.
The loop itself (run_loop) is generic over the ratatui backend it draws
to and the stream of input events it reads, and owns no terminal. run
is the native front: raw mode, alternate screen, CrosstermBackend on
stdout and crossterm’s EventStream. The browser build
(crates/netget-web) calls run_loop with a backend that emits ANSI into
xterm.js and a channel of events built from DOM KeyboardEvents, and the
dashboard cannot tell the difference.