# D0 — 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: APP-STATE FIXTURE: empty drawer seeded by dev module; no terminal sessions | 00:00.15 | 00:00.15 |
| Chapter: new terminal from empty drawer | 00:09.14 | 00:08.61 |
| empty drawer top+3 | 00:01.19–00:02.29; 280→300px (Δ+20); pointercancel; terminal labels 0→0 | 00:01.13–00:02.21; 280→360px (Δ+80); pointerup; terminal labels 0→0 |
| empty drawer top+12 | 00:05.94–00:07.14; 280→280px (Δ+0); pointercancel; terminal labels 0→0 | 00:05.81–00:06.84; 280→360px (Δ+80); pointerup; terminal labels 0→0 |
| empty New Terminal remains usable | 00:08.19–00:08.32; 280→280px (Δ+0); pointerup; terminal labels 0→0 | 00:07.80–00:07.92; 360→360px (Δ+0); pointerup; terminal labels 0→0 |

| Before recording | After recording |
|---|---|
| [before-D0.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/52a17977e6790675/before-D0.mp4)<br>[4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | [after-D0.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/afb1af07cf675165/after-D0.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/1d1a8edc67d36756/before-D0.png) | ![After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/348661c06e724400/after-D0.png) | ![Diff0 ×255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29c7d529a547b1fa/D0-diff0.png) | ![DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/076e659fa929ddb3/D0-diff5.png) |

[Before full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f4195a5047727cd4/before-D0.jsonl) · [After full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8409315481ba5eba/after-D0.jsonl)

[Before matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/76cd0f526dc24052/before-D0-video-frame.png) · [After matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/afa046e63e87b010/after-D0-video-frame.png)

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

Changed pixels: exact=96559; threshold >5=95424.

D0 is the labelled real-app empty-drawer state fixture, seeded through the terminal UI store on a valid synthetic thread with zero server terminal sessions.
