# Rendered Markdown selection reproduction

Environment: real web development apps at base 2c74ea6915e4f8013992816697c4b27905e88e7e and head 53427ad2517c4e012001a4933f3033e68576a9d3, Linux Chromium, 1280 by 800 CSS pixels, light theme. Each app uses its own fresh database; seed.sh creates identical synthetic project, Markdown file, and replayed conversation.

Each checkout was installed with `vp i` and started with `T3CODE_DEV_SEED=0`. The start-app helper from main started the real server and Vite with isolated state and disabled paid providers. No application code was modified.

The manual browser driver used T3 preview tools, in this order on both sides:

1. Open the startup pairing URL, then the sidebar button for Surrounding conversation.
2. Click Toggle right panel, Files, the selection.md treeitem, and Show rendered markdown.
3. Start recording.
4. Click the paragraph "Only this paragraph belongs to the file."
5. Press Control+A. Read window.getSelection().toString() and capture the visible selection.
6. Press Control+C, click the message composer, and press Control+V. Read the composer's text and inspect the pasted result. Do not submit it.
7. In the composer, press Control+A and Backspace to clear it.
8. Click the rendered file's task checkbox, then press Control+A.
9. Read the selection and capture it; press Control+C, click the composer, and press Control+V.
10. Inspect the pasted result and stop recording. Head additionally presses Tab after the final paste to remove the blinking caret for a still.

Before: both selections include surrounding application text. Both pastes include the conversation, application controls, and the file. The bottom of the pasted result visibly includes "Search files" and "Toggle Sidebar".

After: both selections contain only Field notes, the paragraph, the task, and End of file. Both pastes contain the file's content with no surrounding application text; rich text paste retains the task checkbox.

Stills retained for publication were matched against a second identical screenshot at least 500 milliseconds later. Videos were inspected through sampled frames across their full duration. Captures show only synthetic content.

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