# v0.3 — Vim editing > Part of the [Typoena macro plan](macroplan.md). Requirements and targets: > [qfd.md](qfd.md). Load-bearing decisions: [adr.md](adr.md). **Status:** COMPLETE in core 2026-07-11, host-tested (65 editor + 28 keymap tests) and **partially smoke-tested on the panel 2026-07-11**. The three remaining pieces landed together: a single unnamed **register** with `y`/`yy`/`p`/`P` (and `x`/`d`/`c` filling it, so `dd`…`p` moves a line), **undo/redo** (`u`/`Ctrl-r`, snapshot-based, bounded to 100 groups in PSRAM — a whole Insert session undoes as one group), and **`.` repeat** (keystroke-recorded, so it replays an insert session like `ciwfoo`). The `d`/`c` operator grammar and text objects had already landed ahead of schedule. On device, `dd`, `yy`, and `Ctrl-r` confirmed good; the one issue found was that a **multi-line paste near the bottom left its later lines below the fold** — `adjust_scroll` only kept the caret's (first) pasted line visible. Fixed by a `reveal()` that scrolls the end of the pasted block into view while the caret stays on its first line (reflash to re-confirm on panel). - [x] `x dd`, `dw dd d$` (✓); `yy p P` (✓) and `.` repeat (✓) — register + a keystroke-recorded last-change both landed 2026-07-11 - [x] Undo / redo (`u`, `Ctrl-r`) — snapshot history bounded to 100 groups in PSRAM; one Insert session = one undo group - [x] Numeric prefixes (`3dd`, `5j`) - [x] Ahead of schedule: `c` change operator + text objects (`ciw`, `di(`, `ca"`, … — inner/around, nesting-aware) Known limits (deferred): `.` drops a *leading* count (`3x` then `.` deletes one; a count inside an operator like `d2w` is kept); no named registers; `.` after an aborted operator (`d`) is a no-op.