# Reproduce the option-preview comparison

Use a clean checkout of main at [dbfbe3993f](https://github.com/pingdotgg/t3code/commit/dbfbe3993f) (the scenario runner comes from this checkout). Install with `vp i`.

1. Put the attached web and iOS scenario files in `scripts/scenarios/`.
2. Apply `replay-configuration.patch` with `git apply`. It changes only the runner startup fixture setup: the replay question has Approve, Shorter and Cancel options; Approve and Shorter receive the exact synthetic multiline drafts at the adapter question boundary. Generic ACP elicitation does not otherwise retain preview fields. The same setup runs on each commit, with no client patch.
3. Run either command:

```sh
T3CODE_DEV_SEED=0 vp run scenarios:prove scripts/scenarios/issue-33127.e2e.ts --base ddc4f576023b3bf7ead6c831510c1d72316bb1c2 --head dbe306f7a9a27de966a4cdea85e219c6562a9e14
T3CODE_DEV_SEED=0 vp run scenarios:prove scripts/scenarios/issue-33127-mobile.e2e.ts --base ddc4f576023b3bf7ead6c831510c1d72316bb1c2 --head dbe306f7a9a27de966a4cdea85e219c6562a9e14
```

The runner creates each commit's own fresh database, starts its real server and client, and creates a project and pending question through the real CLI/replay pipeline. No real user data or paid provider is used. iOS requires the device-pool environment credentials already configured for the scenario runner.

Web uses Chromium at 1280 x 800 with the default light theme. Stills crop the same 680 x 500 question/composer region from both runs, excluding the unrelated elapsed-turn clock. Full frames remain beside each still and the recordings show the full client. The script waits for pixel-identical captures 500 ms apart before the final still. It checks both preview visibility and the three soft line breaks across the two Body paragraphs.

The iOS scenario uses the same question on a pooled iPhone 18 Pro (402 x 874 logical pixels, light theme). It saves full frames beside stability crops of the lower 75 percent. Published stills apply `sh crop-ios.sh <003-option-previews-full.png> <output.png>` to each full frame: the same 402 x 594 question-card region at x=0, y=280, without scaling or retouching. Preview text and preserved line layout are judged from the images. The test disables video because the pool recorder timed out before the first attempt could run; this is a static rendering comparison.

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