Skip to content

v0.5.1

Choose a tag to compare

@mabry1985 mabry1985 released this 25 Sep 23:24
· 18 commits to main since this release
fb5dd97

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_version bumps 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 SIGHUP instead of SIGKILL to 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 a settings block 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.