Commit 595aeaf
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
- crates/vault-tui
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
13 | 37 | | |
14 | 38 | | |
15 | 39 | | |
| |||
0 commit comments