Repository navigation
v0.5.1
Persistent Sessions
- Shells now outlive the WebSocket connection; switching views, reloading, or network drops detach the socket while the session persists in a bounded replay buffer.
- Detached sessions are reaped after the configured
keep_alive_minutes(read live at disconnect, so settings changes apply to open tabs immediately). - A second viewer can take over an existing session, and
min_protoagent_versionbumps to 0.82.0 to support background mounting.
Terminal Reliability
- Closing a shell no longer signals the server's own process group; the server verifies the child leads its own process group before sending
killpg, otherwise targeting only the child. - Shell termination sends
SIGHUPinstead ofSIGKILLto allow interactive shells to exit cleanly, and the master tty is drained during shutdown to prevent hangs on macOS. - Multi-byte UTF-8 characters split across reads no longer render as replacement glyphs due to incremental decoding.
Configuration & Authentication
- Font size and scrollback settings are now read live from the configuration registry on every view load, replacing hardcoded values.
- New configuration keys
keep_alive_minutes,max_sessions, and asettingsblock for terminal-specific parameters are now available. - The WebSocket credential moved out of the URL into the socket's first frame, so it never lands in access logs or history.
- The terminal now works on fleet members reached through the hub (it said "unauthorized"): each connect first mints a single-use, ~30s ticket from the bearer-gated
POST /api/plugins/terminal/ticket— the hub authenticates that request and forwards it with the member's fleet token — and presents it in the first frame. - Direct connections can still authenticate with the operator token in the first frame.