Skip to content

Commit 045790b

Browse files
Merge pull request #3 from Spacecraft-Software/m5-slice4-tui-mutations
feat(vault): M5 slice 4 — TUI mutations: add / edit / delete
2 parents 959616d + e9d76ce commit 045790b

4 files changed

Lines changed: 996 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,41 @@ range may break in any release.
1010

1111
### Added
1212

13+
- **M5 (slice 4) — TUI mutations: `a` add, `e` edit, `d` delete (confirm).**
14+
PRD §7.2's Mutation row goes live, completing the daily-driver loop (browse
15+
→ search → reveal/copy → mutate) without falling back to the CLI. Pure TUI
16+
slice: the agent's M4 write paths (`Request::Add` / `Edit` / `Remove`) are
17+
driven as-is — no protocol changes, no agent changes, no new dependencies.
18+
- **Add (`a`).** A centered form overlay with a Type row (login ⇄ secure
19+
note, toggled with Space/←/→) over Name / User / Pass / URI / Folder /
20+
Notes (notes expose only Name / Folder / Notes). Tab/↓ and Shift-Tab/↑
21+
cycle fields (wrapping); Enter validates (name required) and submits;
22+
Esc discards. **Ctrl+G in the Pass field** fills it with a fresh
23+
default-options password (PRD's "generate into the active field" story).
24+
Values typed under one type survive a toggle, but hidden login fields
25+
never leak into a secure-note submit.
26+
- **Edit (`e`).** Same form, prefilled with the metadata the list already
27+
has (name / username / folder); type is fixed. Submit diffs against the
28+
prefill: untouched fields ride as "unchanged" on the wire (so an edit
29+
never re-encrypts a password it didn't see), a cleared field submits
30+
empty. The selected row's exact cipher id is the selector, so duplicate
31+
names can't mislead it. An edit with no changes is rejected in-form.
32+
- **Delete (`d`).** A small confirm overlay (`Delete 'name'? y/N`);
33+
`y`/Enter sends `Request::Remove` with the exact id, `n`/Esc backs out.
34+
- On success the vault reloads and a toast reports `saved '…'` /
35+
`deleted '…'`; on any error the form stays open so nothing typed is lost.
36+
Opening any mutation overlay re-masks a revealed secret. The unfocused
37+
Pass field renders masked; form secrets are redacted in `Debug`
38+
(`FormState` / `FormSubmit`).
39+
- Known deviation (tracked): PRD §7.2's full CUA bindings
40+
(Ctrl+C/X/V/Z/S/F) and bracketed paste in text inputs are deferred —
41+
fields accept typed input only this slice.
42+
- Tests: 11 new `vault-tui` units (form open/prefill/gating, focus wrap,
43+
type-toggle value preservation, Ctrl+G targeting, submit diff/validation,
44+
note-residue exclusion, confirm gating/take/cancel, overlay re-masking,
45+
`Debug` redaction) plus `TestBackend` smokes for the form overlay
46+
(masked unfocused Pass) and the confirm overlay.
47+
1348
- **M5 (slice 3) — TUI search, generator overlay, and `:` command line.** The
1449
three previewed keys go live: `/` filters the item list as you type, `g`
1550
opens a password-generator overlay, and `:` opens a small vim-style command

0 commit comments

Comments
 (0)