Terminal Screen Scroll¶
Motivation¶
The terminal screen did not scroll with the mouse wheel because a custom xterm wheel handler intercepted native xterm viewport scrolling. The local browser terminal could also enter a reconnect loop because each ttyd connection launched tmux new-session -A -D, which detached the previous ttyd client and caused its close handler to reconnect again.
User-facing change¶
The terminal screen now relies on native xterm scrollback behavior with a larger explicit scrollback buffer. The terminal sidecar no longer passes -D to tmux, and tmux mouse mode plus a larger history limit are configured for wheel scrolling inside the persistent session. The Cockpit and Manual side menus are mutually exclusive so only one can be visible at a time.
API / IaC diff summary¶
No API or IaC changes. This updates the frontend terminal page and terminal sidecar tmux/ttyd wiring.
Validation evidence¶
cd web && npx tsc --noEmitcd web && npm run builduv run pytest -q api/tests/test_terminal_entrypoint.py api/tests/test_terminal_toolchain.pydocker compose -p elb-control-local -f scripts/dev/docker-compose.full.yml up -d --build terminalgit --no-pager diff --check -- web/src/theme/glass.css docs/features_change/2026-05/2026-05-16-terminal-panel-scroll.md- Runtime inspection confirmed ttyd starts
tmux new-session -A -s elbwithout-D,tmux show-options -g mousereturnsmouse on, andhistory-limitis100000. - Browser inspection confirmed only one of Cockpit / Manual is visible at a time, the terminal stays
connected, and mouse wheel enters tmux history scrolling.