# T1 — touch — dark
Linux x86_64; Playwright Chromium 148.0.7778.96, headless; DPR 1; font scaling 100% (UI 16px, code 13px, terminal 12px); viewport/hasTouch only; dark 1280×800 (N1: 980×800, 700×800, 390×844, then 1280×800); reduced motion; fixed browser clock 2026-11-10T12:00:00Z. Touch: pointer:coarse=true and any-pointer:coarse=true; M1 mouse: both false.

Before [4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63); After [30ab341](https://git.cafe/pingdotgg/t3code/commit/30ab3415f19f1c18e0ae2e6f0a86b302983a73a1).

Contact timestamps below are start–end, logged immediately before dispatch (never after the contact/wait). Video time is calibrated to the first visible pink marker at 25 fps; allow about 0.1s encoding precision.

| Step | Before contact / result | After contact / result |
|---|---|---|
| Chapter: right-panel single terminal baseline; split setup follows | 00:00.15 | 00:00.15 |
| Chapter: right-panel terminals: no drawer handle; top-edge drag and header taps | 00:03.67 | 00:03.43 |
| Chapter: panel terminal remains usable | 00:08.55 | 00:08.36 |
| panel terminal top edge | 00:04.64–00:05.68; no drawer; pointerup; terminal labels 2→2 | 00:04.39–00:05.42; no drawer; pointerup; terminal labels 2→2 |
| panel header New | 00:06.61–00:06.73; no drawer; pointerup; terminal labels 2→0 | 00:06.37–00:06.49; no drawer; pointerup; terminal labels 2→0 |
| panel header Close | 00:07.46–00:07.56; no drawer; pointerup; terminal labels 0→0 | 00:07.21–00:07.32; no drawer; pointerup; terminal labels 0→0 |

| Before recording | After recording |
|---|---|
| [before-T1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5bc056c5d81d9fc3/before-T1.mp4)<br>[4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | [after-T1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1031c44f94fac639/after-T1.mp4)<br>[30ab341](https://git.cafe/pingdotgg/t3code/commit/30ab3415f19f1c18e0ae2e6f0a86b302983a73a1) |

Narration is composited below the app viewport; stills and diffs contain only app pixels. Every still passed reduced motion, network idle, fonts ready and two pixel-identical screenshots 500ms apart.

| Before | After | Diff0 | DiffT (>5/255 maximum RGB channel difference) |
|---|---|---|---|
| ![Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/430a882079a8afeb/before-T1.png) | ![After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/406447edd6de2d31/after-T1.png) | ![Diff0 ×255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/31f53d397abf8748/T1-diff0.png) | ![DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9a3d69e7e30b17a/T1-diff5.png) |

[Before full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b46fe71a3a2e40a4/before-T1.jsonl) · [After full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d226fadb47daf3e/after-T1.jsonl)

[Before matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ed793ee854ccf99/before-T1-video-frame.png) · [After matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/93af6e0145b28583/after-T1-video-frame.png)

![Before / After / Diff0 / DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b658d8b1f172442b/T1-sheet.png)

Changed pixels: exact=0; threshold >5=0.

The still milestone is the ready single-terminal panel baseline. The recording then splits it into two terminals and performs the top-edge guard and New/Close taps; these all have full probe logs.
