vt: fix wire snapshots (S1/S5 follow-ups) #1
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The spike is done; this issue is the "Fix now, in
crates/vt" work it found (seven fixes, prototyped in the spike'ssrc/patched.rs), plus the build-tag and upstream items.From PLAN.md, section "S: spikes → S1/S5 follow-ups".
New fixtures: Claude Code (it draws in the alt screen), origin mode,
DECSLRM, the saved cursor in primary and alt screens (1049 and 47),
Kitty graphics and sixel.
Checkpoints (GHOSTSNP) round-trip all of them exactly, except Kitty
images, which GHOSTSNP v1 leaves out by design. libghostty doesn't parse
sixel, so there's nothing to carry.
The wire path is wrong today on 13 of 18 fixtures, in Ghostty and in
xterm.js. This is the formatter snapshot plus fix-ups that the browser
gets on attach. The visible failures:
text (after a program exits, after
clear);Claude Code's logo);
shows.
S1's fixtures all left the cursor on their last line of text, so they
missed this.
Fix now, in
crates/vt(not tied to a milestone). All seven fixesare prototyped in the spike's
src/patched.rs, and with them all 17non-image fixtures are exact in both engines:
move;
restoring on the clone to read it;
(colours, hyperlinks, protection);
(
set_kitty_image_storage_limit(0)): today the engine tells programsimages work, and each pane holds up to 10 MB of images nobody sees;
to the crate's tests.
Snapshots then take 1–3.3 ms instead of 0.03–0.5 ms, mostly from the
prototype's slow cell compare.
Cross-build: the pinned Ghostty (
22d13172) andmain(0081d453)can't read each other's GHOSTSNP. Both directions fail cleanly with
INVALID_VALUEon every fixture (the 64-byte BLAKE3 removal). So M2's"discard and replay" is safe.
build_infosays0.1.0-devin both, and
engine_tag()is identical.GHOSTSNP.
Upstream issues to file:
build_info: include the git hash;emitted, cursor move before the scroll region, only the active
screen's Kitty keyboard flags.
Still open: a pending wrap on the live cursor (no fixture ends with
one); a longer Claude Code session with tool output.