# F2 — 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: maximized Changes; structured synthetic worktree diff | 00:00.15 | 00:00.15 |
| Chapter: Changes tree hidden | 00:07.93 | 00:07.99 |
| Changes inner wider | 00:01.07–00:02.07; 256→276px (Δ+20); pointercancel; terminal labels 0→0 | 00:01.07–00:02.07; 256→336px (Δ+80); pointerup; terminal labels 0→0 |
| Changes inner narrower | 00:03.40–00:04.39; 276→256px (Δ-20); pointercancel; terminal labels 0→0 | 00:03.39–00:04.38; 336→256px (Δ-80); pointerup; terminal labels 0→0 |
| hide Changes tree | 00:07.20–00:07.31; see size/target log; pointerup; terminal labels 0→0 | 00:07.25–00:07.36; see size/target log; pointerup; terminal labels 0→0 |

| Before recording | After recording |
|---|---|
| [before-F2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/32d39f3a80fd85bc/before-F2.mp4)<br>[4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | [after-F2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6d5f698cb337b04/after-F2.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/f09a92a36b538bd7/before-F2.png) | ![After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5907de22a845aab9/after-F2.png) | ![Diff0 ×255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d45aa375c07113c5/F2-diff0.png) | ![DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac5780d2548ebfdc/F2-diff5.png) |

[Before full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/18c43a463ec5de02/before-F2.jsonl) · [After full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/591f9858889cc9c3/after-F2.jsonl)

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

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

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

The still milestone follows the wider/narrower round trip, after both revisions return to the same explorer width; the recording and logs retain both touch drags.
