NS10 slice: Cover raw input, cursor movement, and mode switches in E2E #71
Reference in New Issue
Block a user
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?
OBJECTIVE: Add browser-terminal E2E scenarios that prove raw input and mode behavior visually and semantically: Esc, Space leader, Esc mobile/attached escape, arrows/Home/End/Page, digit counts,
%match jump, insert/normal/select/panel transitions, and cursor movement.AUTHORITY: Parent #65; KEYMAP.md modal grammar; REQUIREMENTS.md req: input/001-007, session/004, testing/001-004.
AGENT AUTHORITY:
PARENT: #65 NS10 via explicit parent link and parent checklist.
SCOPE: terminal-e2e scenarios and assertions for input/mode/cursor behavior; fixtures only as needed.
BOUNDARIES:
Clienttests; this slice must exercise the browser terminal harness.REGRESSION CLASS: catches raw-input and modal regressions: Esc echoing as
^[, Space leader ignored, Esc mobile escape broken, cursor movement drift, and attached-key aliases diverging from mobile paths.EVIDENCE ARTIFACTS: browser screenshots before/after mode transitions, semantic transcript with visible controls, final buffer/cursor/mode assertions, and input event log.
REQUIREMENT IMPACT: protects existing input/session/testing requirement authority; update authority if new modal-key invariants become durable requirements not already covered by KEYMAP.md/REQUIREMENTS.md.
ACCEPTANCE:
^[instead of switching mode.%.VERIFICATION:
zig build terminal-e2ezig build testzig build v1-smokeredgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.mdBLOCKERS: depends on terminal harness #69 and matrix runner #66 enough to add scenarios.
SLICE_CONTRACT:
objective: Add E2E coverage for raw keys, cursor movement, and mode switches.
authority: #65, KEYMAP.md, REQUIREMENTS.md input/testing rows.
acceptance: browser-terminal tests fail on Esc echo, broken spaces, broken leader, cursor/mode regressions, and key alias regressions.
verification: terminal-e2e plus canonical gates.
non_goals: native iOS automation, keymap redesign.
blockers: terminal harness exists.
Progress committed in
9aafe0e(Fix terminal input mode and cursor rendering).What changed:
mimnow starts in Normal mode; Insert is explicit (i/commands).input/002and KEYMAP docs updated accordingly.Space Q(Shift+Q is iOS-reachable); regularSpace qremains protected.▌glyph into text. Cursor and selections are rendered as cell background attributes; E2E artifacts derive debug markers (☻,░) from ANSI color evidence and SVG screenshots include color swatches.Verification:
zig build terminal-e2e✅zig build test✅zig build✅zig build v1-smoke✅redgate list /opt/repositories/mim/REQUIREMENTS.md && redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md✅Not closing #71 yet: remaining acceptance still needs browser-terminal coverage for select mode entry/exit, PageUp/PageDown, digit counts, and
%match jump.Progress committed in
0d4d0ec(Expand terminal input E2E coverage).Covered in the browser-terminal matrix now:
PageUp/PageDownnow reach input parsing);3l),%match jump;attr:selection/░from ANSI evidence);Space Q;Aappends at EOL, Insert Enter inserts newline with current indent, and Tab follows tab-indented buffers.Verification on committed tree before commit:
zig build terminal-e2e✅zig build test✅zig build✅zig build v1-smoke✅redgate list /opt/repositories/mim/REQUIREMENTS.md && redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md✅Not closing yet: this issue acceptance still explicitly says
Space-nmobile escape, but current source/requirements now intentionally make Insert-mode Space literal immediately. We still need a durable mobile-safe Insert->Normal path that does not use hold timing and does not corrupt ordinary typing, or the #71 acceptance should be revised to match the new product rule.Closing receipt for #71.
Acceptance note: the original
Space-nmobile escape text is superseded by the current product/keymap rule from this build: Insert-mode Space is always literal, and mobile SSH clients commonly expose Esc/Ctrl, so Esc is the durable mobile/attached Insert→Normal path. The issue body has been updated accordingly to avoid reintroducing a Space-prefix ambiguity that corrupts ordinary Insert-mode spaces.Browser-terminal E2E coverage now includes:
^[;%, ragged vertical preferred-column motion, and horizontal cursor scroll;Verification on clean tree
2277ed2:zig build terminal-e2e✅zig build test✅Recent broader gates also passed in this build stream:
zig build✅zig build run -- --help✅redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md✅