iOS terminal viewport verification

PR 12844 by Abdulaziz Albahar · source e2476b0c22b · tag alv2

Settings → Terminal → Use Full Terminal Height defaults off. Off fits alternate-screen apps below the top toolbar and above the bottom dock or keyboard. On restores the existing full-height behavior for every terminal screen. Primary-screen shells keep their existing scroll-under-toolbar behavior in both states.

The full-height surface retains Ghostty render insets for continuous background behind the toolbar. Logical grid changes wait for keyboard, rotation, and composer transitions to finish. The connected app then redraws through the existing resize protocol; network latency still applies. No Mac client or Ghostty fork change is needed.

20 cases verified in the real paired app on an isolated iPhone 17 Simulator (iOS 26.3.1). Each uncut, normal-speed recording performs 14 major actions: scroll both directions in portrait, show the keyboard and scroll, rotate to landscape and scroll, hide the keyboard and scroll, show it again, return to portrait, and hide it. Maximum action gap across this matrix: 4.58 seconds.

Vim, default off, including two extra scrolls after the final resize.
Vim, preference on: original overflow behavior.
Codex transcript with 120 generated lines.
OpenCode with 120 generated lines.
AppContentPreferenceLengthLargest action gapEvidence
Vimshortoff27.8s2.22sWatch · actions · resize log
Vimlongoff27.1s2.30sWatch · actions · resize log
Vimshorton26.1s2.21sWatch · actions · resize log
Vimlongon26.9s2.35sWatch · actions · resize log
Shellshortoff34.1s3.34sWatch · actions · resize log
Shelllongoff41.3s4.58sWatch · actions · resize log
Shellshorton35.4s4.15sWatch · actions · resize log
Shelllongon42.1s4.26sWatch · actions · resize log
lessshortoff28.6s3.87sWatch · actions · resize log
lesslongoff27.1s2.13sWatch · actions · resize log
lessshorton26.9s2.53sWatch · actions · resize log
lesslongon28.0s2.74sWatch · actions · resize log
Codex transcriptshortoff26.3s2.14sWatch · actions · resize log
Codex transcriptlongoff26.8s2.17sWatch · actions · resize log
Codex transcriptshorton28.0s3.09sWatch · actions · resize log
Codex transcriptlongon27.0s2.56sWatch · actions · resize log
OpenCodeshortoff26.1s2.15sWatch · actions · resize log
OpenCodelongoff26.2s2.09sWatch · actions · resize log
OpenCodeshorton26.4s2.20sWatch · actions · resize log
OpenCodelongon29.1s2.88sWatch · actions · resize log

Short fixtures fit the portrait viewport before keyboard presentation. Shell short cases use a fresh terminal without the earlier long scrollback. Codex normal chat uses the primary screen; these matrix cases explicitly open its alternate-screen transcript. Short Codex recordings use the installed development build, and the 120-line recordings use installed Codex 0.146.0. The short transcript includes a pre-existing optional Computer Use startup warning; no model tools or file edits were used.

Settings switch recording · Keyboard transition frames, 10 fps · Rotation frames, 10 fps · Machine-readable matrix

Extra layout recording: rotate with the keyboard hidden, open and close the composer, and scroll after each change. 13 major actions; maximum gap 2.45 seconds.

Checks and limits

Recordings are downscaled without cuts or speed changes. Original simulator recordings are retained on the verification host until the PR closes. The durable local evidence directory contains all normal-speed proof videos, action timestamps, frame sheets, test logs, and an archive receipt with original-file checksums.