The right pane's document: a standalone page in its own browsing context, framed by the shell at #ws, so htmx swaps, history restores, and content-page JS structurally cannot touch the session.
{# The right pane's document (web-server-guide § The site): a standalone page in its own browsing context, framed by the shell at #ws, so htmx swaps, history restores, and content-page JS structurally cannot touch the session. xterm.js + the fit addon are vendored classic scripts (SRI-pinned, `'self'`); terminal.js opens /ws, arms the beforeunload guard while connected, and forwards the shell's OSC 5379 `show`/`edit` sequences to the parent, which swaps the left pane. site.js is loaded (without defer) only for the pre-paint theme: this document reads the same CSS custom properties for its palette. Every web rung gets a terminal (attach sits at the reader floor); what differs is the command set the shell inside it registers. A refused attach (1008) is reported in the terminal itself rather than retried. #}<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1"><title>solver terminal</title><metaname="robots"content="noindex"><linkrel="stylesheet"href="{{asset('/vendor/xterm/xterm.css')}}"integrity="sha384-8Xk9wy/gzEDUKrXtrmCFa2bBuK3BpjpDuL/p0SeKQX19Khl/M+lHOgD/CyYf7efP"crossorigin="anonymous"><linkrel="stylesheet"href="{{asset('/assets/site.css')}}"><scriptsrc="{{asset('/assets/vault.js')}}"></script><scriptsrc="{{asset('/assets/site.js')}}"></script><scriptsrc="{{asset('/vendor/xterm/xterm.js')}}"integrity="sha384-M169f14mRZOXm3hD/v2Ti0ThIT/RnAQagXA9nlE15yHAtrW19gdePJh/HaTzUOe/"crossorigin="anonymous"defer></script><scriptsrc="{{asset('/vendor/xterm/xterm-addon-fit.js')}}"integrity="sha384-iF+jqbuti4XlB64clWgFWYEscb+UnSRv3VgVikGYZu+otNFnSHr7y7NcKfBnGizn"crossorigin="anonymous"defer></script><scriptsrc="{{asset('/assets/terminal.js')}}"defer></script></head><bodyclass="terminal-doc"><divid="term"class="term-host"role="application"aria-label="solver terminal"></div><divid="logout-notice"class="logout-notice"role="status"hidden></div></body></html>