v0.2.0 80c61e3

vt-extraction-preparation.md RawHistoryFolder

VT extraction preparation checkpoint

The standalone module owns the frontend-neutral VT engine and ANSI renderer; vev consumes the released github.com/bnema/vev-vt v0.2.1 module. VT behavior, renderer output, wire bytes, transport, ACK/rebase, and cursor-tail policy remain unchanged.

Evidence

  • The feature worktree was created from a clean checkout.
  • make test passes (go test ./... -race).
  • make lint passes (goimports has no changes and go vet ./... passes).
  • External-package contract tests pass under -race for parsing, callbacks, borrowing, snapshots, history views, stable chunk identity, and single-owner usage.
  • VTH3 golden vectors round-trip byte-for-byte across empty, plain, continuation, styled/RGB, bounded, and line-bound cases. Truncation, corruption, invalid fields, and trailing bytes are rejected.
  • The VEVS v4 restore envelope golden decodes through the existing restore path, including sealed history, tail history, and recovery transcript blobs. Truncated, corrupted, trailing, and malformed nested VT payloads are rejected.
  • Representative VT/history/snapshot benchmarks pass; benchmark output is retained in the implementation run rather than committed as machine-specific data.
  • git diff --check passes.
  • The standalone module owns the frontend-neutral Cell, Style, RGB, Frame, Damage, RuneWidth, VT parser, history, snapshots, and ANSI output packages.
  • The cutover has no local VT, core, ANSI, or renderer implementation owner; vev resolves the released module through normal module download semantics.
  • A standalone core-only frame consumer test builds ANSI output without importing the VT parser.

Scope guard

The vev cutover changes only module ownership and import paths; no VT parser behavior, VTH3/VEVS bytes, or wire/protocol definition changed. There is no committed replace directive or compatibility owner in vev. Any unrelated behavior, wire, or dependency change discovered while maintaining the standalone module must be split into a separate plan.

source
1# VT extraction preparation checkpoint
2
3The standalone module owns the frontend-neutral VT engine and ANSI renderer;
4vev consumes the released `github.com/bnema/vev-vt v0.2.1` module. VT behavior,
5renderer output, wire bytes, transport, ACK/rebase, and cursor-tail policy remain
6unchanged.
7
8## Evidence
9
10- The feature worktree was created from a clean checkout.
11- `make test` passes (`go test ./... -race`).
12- `make lint` passes (`goimports` has no changes and `go vet ./...` passes).
13- External-package contract tests pass under `-race` for parsing, callbacks,
14  borrowing, snapshots, history views, stable chunk identity, and single-owner
15  usage.
16- VTH3 golden vectors round-trip byte-for-byte across empty, plain,
17  continuation, styled/RGB, bounded, and line-bound cases. Truncation,
18  corruption, invalid fields, and trailing bytes are rejected.
19- The VEVS v4 restore envelope golden decodes through the existing restore path,
20  including sealed history, tail history, and recovery transcript blobs.
21  Truncated, corrupted, trailing, and malformed nested VT payloads are rejected.
22- Representative VT/history/snapshot benchmarks pass; benchmark output is
23  retained in the implementation run rather than committed as machine-specific
24  data.
25- `git diff --check` passes.
26- The standalone module owns the frontend-neutral Cell, Style, RGB, Frame,
27  Damage, RuneWidth, VT parser, history, snapshots, and ANSI output packages.
28- The cutover has no local VT, core, ANSI, or renderer implementation owner;
29  vev resolves the released module through normal module download semantics.
30- A standalone core-only frame consumer test builds ANSI output without
31  importing the VT parser.
32
33## Scope guard
34
35The vev cutover changes only module ownership and import paths; no VT parser
36behavior, VTH3/VEVS bytes, or wire/protocol definition changed. There is no
37committed `replace` directive or compatibility owner in vev. Any unrelated
38behavior, wire, or dependency change discovered while maintaining the standalone
39module must be split into a separate plan.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 12

Tags 11

↑↓ moveenter openesc close