deepseek-harness/apps/web/tests
Chinesezjc b588060b90 fix(web): close a run at the line end and count columns correctly
Eight findings, each terminal case verified in a real terminal first:

`\x1b[32mdone\rok\x1b[0m` then `plain` shows `okne` green and `plain` in the
DEFAULT color. The replay returned the last written cell's state, so a reset
landing after the final write vanished from both the text and the returned
state — and every build tool writes exactly that shape, so the color leaked
onto all later output. The replay now converges to the state the scan ended
in, which is also what it hands to the next line.

`abcd\b\x1b[1K|` shows `   |`: CSI 1K erases THROUGH the cursor column, and
the loop stopped before it. The erase mode also reads only the first
parameter now, since a terminal treats `1;2K` exactly as `1K`.

`éx\rYZ` shows `YZ`: a combining mark takes no column, so it attaches
to the cell already written instead of advancing the cursor and leaving the
`x` standing.

`中x\rA` shows `A x`: overwriting a wide character's lead cell leaves its
spacer as a blank rather than closing the gap, which would shift everything
after it one column left.

The banner lost its span when the gutter became padding — a plain block child
only reaches the content box, so the reserved column was painted in the body
color and the card's top-left radius drawn in it. Invisible in the light
theme, where banner and body share a token; visible in the dark one. The
header now pulls back across the gutter and re-insets by the same amount.

The replay trigger matches the same CSI shape the parser accepts, so a form
like `\x1b[1;2K` can no longer skip its own erase, and `replayLine`'s JSDoc
documents its new parameter and returned pair.

Docs: four places still described the dot as sitting left of the card surface,
which stopped being true when the gutter became the card's own padding, and
two fixture comments still referenced the exit marker that was deliberately
removed.
2026-07-29 16:10:37 +08:00
..
snapshots Merge remote-tracking branch 'origin/master' into feat/web-terminal-card 2026-07-29 15:44:58 +08:00
code-mode-fixture.snapshot.ts Merge remote-tracking branch 'origin/master' into feat/web-terminal-card 2026-07-28 19:03:03 +08:00
code-mode-round.e2e.ts fix: ci 2026-07-28 15:21:34 +08:00
cordis-tool-round.e2e.ts refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
details-session-lifecycle.e2e.ts refactor: simplify sidebar logics 2026-07-29 14:52:41 +08:00
lifecycle-chrome.e2e.ts refactor: simplify sidebar logics 2026-07-29 14:52:41 +08:00
live-interactions.e2e.ts test(web): connect a Workspace in the e2e boot path and refresh goldens 2026-07-27 08:25:00 +08:00
message-actions.e2e.ts Merge branch 'master' into feat/agent-action 2026-07-29 14:21:44 +08:00
navigation-panes.e2e.ts fix(web): model erase-in-line, tab stops, and cross-line SGR 2026-07-29 15:36:16 +08:00
question-composer.e2e.ts fix(ui-question): stop option rows absorbing the capped card's shortfall 2026-07-27 19:20:33 +08:00
replay-round-trip.e2e.ts refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
scaffold.ts Merge branch 'master' into feat/agent-action 2026-07-29 14:21:44 +08:00
seeded-history.e2e.ts Merge remote-tracking branch 'origin/master' into worktree-guifork 2026-07-28 17:48:48 +08:00
session-title.snapshot.ts test(web): answer the fixture approval takeover; refresh aria goldens 2026-07-29 01:15:31 +08:00
settings-chrome.e2e.ts fix(review): harden web replay verification 2026-07-26 22:38:33 +08:00
sidebar-scrollbar.e2e.ts fix(client): rebind the scrollbar indirection on three missed elevated surfaces 2026-07-28 17:42:57 +08:00
slash-flow.snapshot.ts feat(gui): add native workspace folder picker 2026-07-27 03:50:22 -07:00
smoke-real.e2e.ts refactor: simplify sidebar logics 2026-07-29 14:52:41 +08:00
steering.e2e.ts test(web): connect a Workspace in the e2e boot path and refresh goldens 2026-07-27 08:25:00 +08:00
support.ts feat(gui): add native workspace folder picker 2026-07-27 03:50:22 -07:00
terminal-card.snapshot.ts fix(web): close a run at the line end and count columns correctly 2026-07-29 16:10:37 +08:00
todo-display.snapshot.ts Merge origin/master into feat/close-todo 2026-07-28 19:43:56 +08:00
workspace-flow.snapshot.ts fix(host): harden the browser dialog against review round-2 races 2026-07-28 23:37:07 +08:00
workspace-management.e2e.ts fix(web): root USERPROFILE for the browser golden; re-record it against fresh bundles 2026-07-29 01:57:19 +08:00