Skip to content

Commit 595aeaf

Browse files
UnbreakableMJclaude
andcommitted
feat(vault-tui): M5 slice 1 — read-only three-pane browser
Turn the vault-tui stub into a real cruxpass-style TUI (ratatui + crossterm): left folder list, center filterable item list, right item detail, status bar. It is just another UDS client of the agent — the user key never crosses into it — and drives only the existing Request::Status + Request::List, so there is no IPC change. - Requires a pre-unlocked agent; locked/absent agent shows a centered banner. r refreshes (Status + List). Keys: q/Esc/Ctrl+C quit, j/k + arrows move, Tab/h/l switch pane focus. Folder selection (All/Unfiled/named, derived from entries) filters the item list. The status bar previews / c u o g : as coming-soon so the layout is final. - Detail is read-only and secret-free this slice: only the non-secret ListEntry metadata (name/type/username/folder/id) the agent already returned. Reveal/copy (which need Request::Get) land with the copy slice. - Terminal teardown is RAII + a panic hook, so a panic never leaves the terminal in raw mode. Input is read on a dedicated OS thread and forwarded over a tokio mpsc channel the loop awaits (no busy-poll). vault-tui --version carries the §13.2 attribution block. New modules: app (state + pure nav/filter logic, 6 unit tests), ui (rendering + #RRGGBB->Color helper over vault_theme::steelbore, 2 TestBackend smoke tests), client (UDS request helper). deny.toml ignores RUSTSEC-2024-0436 (paste unmaintained) — a build-time-only proc-macro with no runtime surface, pulled in transitively by ratatui. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 1a17f7b commit 595aeaf

9 files changed

Lines changed: 1282 additions & 8 deletions

File tree

CHANGELOG.md

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

1111
### Added
1212

13+
- **M5 (slice 1) — `vault-tui` skeleton (read-only browser).** The TUI stub is
14+
now a real cruxpass-style three-pane interface (`ratatui` + `crossterm`):
15+
**left** folder list, **center** filterable item list, **right** item detail,
16+
with a status bar. It is just another UDS client of the agent — the user key
17+
never crosses into it — and drives only the existing `Request::Status` +
18+
`Request::List`, so no IPC change.
19+
- Requires a pre-unlocked agent; a locked or absent agent shows a centered
20+
banner (`Locked` / `No agent`). `r` refreshes (re-runs Status + List).
21+
- Keys: `q`/`Esc`/`Ctrl+C` quit, `j`/`k` + arrows move, `Tab`/`h`/`l` switch
22+
pane focus. Folder selection filters the item list (`All` / `Unfiled` /
23+
named folders, derived from the entries). The status bar previews the
24+
`/ c u o g :` keys as coming-soon so the layout is final.
25+
- Detail is **read-only and secret-free** this slice: it shows only the
26+
non-secret `ListEntry` metadata (name, type, username, folder, id) the agent
27+
already returned — reveal/copy (which need `Request::Get`) land with the copy
28+
slice. Terminal teardown is RAII + a panic hook, so a panic never leaves the
29+
terminal in raw mode. `vault-tui --version` carries the §13.2 block.
30+
- New modules `app` (state + pure nav/filter logic, 6 unit tests), `ui`
31+
(rendering + a `#RRGGBB``Color` theme helper over `vault_theme::steelbore`,
32+
2 `TestBackend` render smoke tests), and `client` (UDS request helper).
33+
- `deny.toml` ignores **RUSTSEC-2024-0436** (`paste` unmaintained) — a
34+
build-time-only proc-macro with no runtime surface, pulled in transitively
35+
by `ratatui`; documented with a revisit note.
36+
1337
- **M4 (slice 4) — `--json` on the lifecycle verbs + a real `vault sync`.**
1438
Closes the two remaining M4 items.
1539
- `unlock`, `lock`, `sync`, and `stop-agent` now take `--json`. They stay

0 commit comments

Comments
 (0)