# Preview annotation keyboard evidence

Desktop Electron 44.10.1, Linux/Xvfb, light theme, 1600x900 app window.
Each commit ran its own desktop dev app, server database, and Chromium profile.
Every launch used T3CODE_DEV_SEED=0. The synthetic project contains index.html.
No agent turn or paid provider is used.

Run a local HTTP server on 127.0.0.1:18470 with index.html as its document.
Run `vp i` in each checkout and install its Electron runtime.
Start `T3CODE_DEV_SEED=0 T3CODE_DESKTOP_REMOTE_DEBUGGING_PORT=<port> vp run dev:desktop`
under headless-desktop. Give each launch its own XDG_CONFIG_HOME to avoid
Electron's shared development-profile single-instance lock.
Retain DISPLAY and XAUTHORITY from that session.

Set APP_ROOT to the checkout, DEMO_PATH to the synthetic git project,
CDP_PORT to that desktop's debugging port, DISPLAY and XAUTHORITY to its X session.
Run `node setup.cjs` to dismiss onboarding without importing history,
add the synthetic project, open the browser page, close DevTools and size the app.

Set OUTPUT_DIR to an evidence output directory, MODE=escape and run `node record.cjs`.
It clicks the composer, clicks Annotate preview, presses Escape without a page
click, presses R, then clicks an empty page area and presses Escape as a control.
Run the same driver again with MODE=tools: it starts annotation and presses
R, D, E, V, Escape without clicking the page, followed by the same page-click control.
All reproduction input is real xdotool input; CDP only reads geometry and focus.
Delays allow the viewer to see each keypress. Browser-pane stills are retained
only after two screenshots 500 ms apart match byte for byte.

The recordings mask provider controls for privacy and add live action captions.
The stills crop to the browser pane. Neither transformation obscures annotation
controls or the page. The Escape clip's later R key types into the restored
composer on the head; no message is submitted.

Observed base: host focus becomes Cancel annotation button; Escape and tool
shortcuts do not reach the page. Select stays active until a page click.
Observed head: focus becomes WEBVIEW; Escape exits and restores composer focus;
R/D/E/V change the active tool without a page click.

AI-assisted; verified with the tests and tools listed above.
