037: A panel keeps a box's desktop and terminal across tab switches
Status: accepted, 1 October 2026. Extends 008: a hidden tab counts as a viewer gone. Extends 035: how long a hidden shell lives.
Context
BB remounts a panel tab each time a person switches tabs, and a plugin cannot keep one mounted. Each switch connected the desktop again, with a handshake and a blank frame, and the terminal again, with its backlog sent again. The operator saw it on every switch (#160).
Decision
- The panel’s app keeps each desktop’s noVNC client and canvas, and each terminal’s xterm and socket, in memory, by box and by viewer or session. A tab that mounts takes its kept session; a tab that goes leaves it hidden.
- A hidden session closes after 10 minutes, when it ends, when its box stops or goes, and when the app reloads. A hidden desktop never connects again by itself.
- A box on screen in two places at once, such as the Desktops page and a thread’s panel, has a session in each, as their viewer IDs differ (020).
- Control. A hidden tab that holds a desktop’s control counts as a viewer gone (008). After 60 s the panel hands control back to the agent, unless the person has come back or someone else holds it by then. The server does not change; its own 60 s still covers a closed socket.
Consequences
- Switching back to a tab shows the desktop or shell at once.
- A hidden desktop costs what a visible one does, in the box’s VNC encoder and the network, for up to 10 minutes. noVNC cannot pause a stream, so the choice was to keep it or close it.
- A hidden terminal’s shell lives up to 20 minutes: 10 hidden in the panel, then 035’s 10 with no tab.
- A reload of the app drops kept sessions, and tabs connect again as before.