# D2 — 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: two separate groups; empty header space top+8 | 00:00.15 | 00:00.15 |
| Chapter: multi header ^Split Terminal Horizontally at top+8 | 00:07.34 | 00:07.94 |
| Chapter: multi header ^Split Terminal Vertically at top+8 | 00:10.21 | 00:11.04 |
| Chapter: multi header ^New Terminal at top+8 | 00:13.09 | 00:13.98 |
| Chapter: multi Close tap at top+8 | 00:15.97 | 00:17.12 |
| Chapter: active group four; both split actions disabled; inactive group retained | 00:19.75 | 00:21.12 |
| empty sidebar header -80 | 00:01.09–00:02.10; 280→300px (Δ+20); pointercancel; terminal labels 2→2 | 00:01.15–00:02.27; 280→360px (Δ+80); pointerup; terminal labels 2→2 |
| empty sidebar header 80 | 00:05.40–00:06.40; 280→260px (Δ-20); pointercancel; terminal labels 2→2 | 00:05.74–00:06.93; 280→200px (Δ-80); pointerup; terminal labels 2→2 |
| ^Split Terminal Horizontally | 00:07.87–00:07.98; 280→280px (Δ+0); pointerup; terminal labels 2→3 | 00:08.46–00:08.58; 280→280px (Δ+0); pointerup; terminal labels 2→3 |
| ^Split Terminal Vertically | 00:10.75–00:10.86; 280→280px (Δ+0); pointerup; terminal labels 2→3 | 00:11.56–00:11.68; 280→280px (Δ+0); pointerup; terminal labels 2→3 |
| ^New Terminal | 00:13.62–00:13.72; 280→280px (Δ+0); pointerup; terminal labels 2→3 | 00:14.52–00:14.65; 280→280px (Δ+0); pointerup; terminal labels 2→3 |
| multi header Close | 00:16.49–00:16.61; 280→280px (Δ+0); pointerup; terminal labels 2→2 | 00:17.66–00:17.77; 280→280px (Δ+0); pointerup; terminal labels 2→2 |
| disabled horizontal split | 00:20.27–00:20.39; 280→280px (Δ+0); pointerup; terminal labels 5→5; panes 4→4; guarded max-4; native disabled=False,False | 00:21.66–00:21.83; 280→280px (Δ+0); pointerup; terminal labels 5→5; panes 4→4; guarded max-4; native disabled=False,False |
| disabled vertical split | 00:21.04–00:21.16; 280→280px (Δ+0); pointerup; terminal labels 5→5; panes 4→4; guarded max-4; native disabled=False,False | 00:22.50–00:22.62; 280→280px (Δ+0); pointerup; terminal labels 5→5; panes 4→4; guarded max-4; native disabled=False,False |

| Before recording | After recording |
|---|---|
| [before-D2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ec54b770048fc6a/before-D2.mp4)<br>[4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | [after-D2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d1de74f30c84ff99/after-D2.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/383088cc526b24ce/before-D2.png) | ![After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/586b03351cdaab17/after-D2.png) | ![Diff0 ×255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/873972faf4b4bb61/D2-diff0.png) | ![DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b5b8276967a73c8/D2-diff5.png) |

[Before full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f522ab87cd88e31d/before-D2.jsonl) · [After full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e2f51ea872ce4ee/after-D2.jsonl)

[Before matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6dd83c4d2d51299f/before-D2-video-frame.png) · [After matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/081c8f56d14f9c47/after-D2-video-frame.png)

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

Changed pixels: exact=112079; threshold >5=98023.

At four panes in the active group, split taps are guarded by the max-4 limit on both revisions; native disabled/aria-disabled remain false.
