Appearance
Viewport holds on output
Category: scrollback · Baseline: modern · Tags: Xterm Extensions · Specification ↗
Tests whether the visible scrollback viewport stays anchored when new output arrives while the user is scrolled up in the main screen. This is a terminal UI policy, not a VT escape sequence: the application can write output, but the terminal emulator owns the user's viewport position.
This behavior matters for long-running inline applications, build logs, and agent UIs. If output forces the viewport back to the live bottom, users lose their place while reading history. If the viewport stays anchored, the newest output remains below the visible region until the user scrolls back down or presses a key that the terminal treats as an explicit return to the live region.
Terminals expose this policy under different names and defaults. xterm has
scrollTtyOutput; Ghostty exposes scroll-to-bottom with separate keystroke and output flags. Synchronized output (DECSET 2026) should only batch painting, but the manual probe repeats the test inside a synchronized-output block because terminal UI policies can still differ around batched output.How this is testedmanual
Manual UI probe. Fill scrollback with at least two pages of lines, scroll the viewport up until the live bottom is no longer visible, then emit a uniquely named marker line without keyboard input. Pass if the viewport remains on the old lines; fail if it jumps to the marker at the bottom. Repeat with the marker wrapped in
Manual UI probe. Fill scrollback with at least two pages of lines, scroll the viewport up until the live bottom is no longer visible, then emit a uniquely named marker line without keyboard input. Pass if the viewport remains on the old lines; fail if it jumps to the marker at the bottom. Repeat with the marker wrapped in
\x1b[?2026h ... \x1b[?2026l to check synchronized output, and record any terminal setting that changes the result.The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.
Supported by 0 of 14 backends (0%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ? unknown | |
| Ghostty | 1.3.1 | ? unknown | |
| VS Code | ? unknown | ||
| Warp | ? unknown | ||
| Kitty | 0.46.2 | ? unknown | |
| Cursor | ? unknown | ||
| Terminal.app | ? unknown |