Implement the authenticated structured entry viewer in the main pane.
Scope
Render storage-provided dynamic fields, notes and OTP metadata without assuming a fixed schema.
Treat the first password field and storage-marked sensitive fields as masked by default.
Use Tab and Shift-Tab to move field focus; provide explicit reveal/hide and copy-focused-field actions.
Support scrolling multiline values and closing the entry without changing sidebar selection.
Automatically hide revealed fields when focus changes, the pane closes or the authentication lease ends.
Acceptance criteria
Arbitrary field counts, duplicate names, long values, multiline notes and Unicode render correctly.
Passwords never appear in status lines, help, command history, logs or snapshots unless a reveal assertion explicitly opts in.
Focus and masking behavior remains correct through resize, copy, lock and entry changes.
The viewer uses only structured storage objects and storage actions.
Prerequisites
Sidebar navigation; authentication and relock UI; structured entry document API.
## Objective
Implement the authenticated structured entry viewer in the main pane.
## Scope
- Render storage-provided dynamic fields, notes and OTP metadata without assuming a fixed schema.
- Treat the first password field and storage-marked sensitive fields as masked by default.
- Use Tab and Shift-Tab to move field focus; provide explicit reveal/hide and copy-focused-field actions.
- Support scrolling multiline values and closing the entry without changing sidebar selection.
- Automatically hide revealed fields when focus changes, the pane closes or the authentication lease ends.
## Acceptance criteria
- Arbitrary field counts, duplicate names, long values, multiline notes and Unicode render correctly.
- Passwords never appear in status lines, help, command history, logs or snapshots unless a reveal assertion explicitly opts in.
- Focus and masking behavior remains correct through resize, copy, lock and entry changes.
- The viewer uses only structured storage objects and storage actions.
## Prerequisites
Sidebar navigation; authentication and relock UI; structured entry document API.
hugo
added this to the 02 - Mutt-style terminal UI milestone 2026-08-09 19:10:41 +00:00
The TUI now loads authenticated entries through EntryDocumentService with the generation-bound authentication handle and renders the storage-owned structured document dynamically. Sensitive fields (including the first password and OTP URIs) are masked by default; Tab/Shift-Tab focus fields, v/V reveal and hide, y copies only the focused structured value through the timed native clipboard lifecycle, j/k and paging scroll wrapped content, and Esc closes the document without changing sidebar selection. Reveal state is cleared on field focus changes, overlays, close, authentication failure, terminal focus loss, manual lock, and lease expiry. OTP kind, issuer, account, algorithm, digits, period/counter metadata is now parsed and supplied by crates/storage rather than inferred by the frontend. Clipboard work is cancellable and joined so process exit cannot skip cleanup.
The review also verifies arbitrary field counts and duplicate names remain ID/order based, long values wrap and scroll across responsive layouts, Unicode renders correctly, sidebar selection survives close, and secrets stay redacted from status/help/debug/default render snapshots unless a test explicitly performs reveal.
Implemented in cf7a621.
The TUI now loads authenticated entries through EntryDocumentService with the generation-bound authentication handle and renders the storage-owned structured document dynamically. Sensitive fields (including the first password and OTP URIs) are masked by default; Tab/Shift-Tab focus fields, v/V reveal and hide, y copies only the focused structured value through the timed native clipboard lifecycle, j/k and paging scroll wrapped content, and Esc closes the document without changing sidebar selection. Reveal state is cleared on field focus changes, overlays, close, authentication failure, terminal focus loss, manual lock, and lease expiry. OTP kind, issuer, account, algorithm, digits, period/counter metadata is now parsed and supplied by crates/storage rather than inferred by the frontend. Clipboard work is cancellable and joined so process exit cannot skip cleanup.
Verification:
- cargo fmt --all -- --check
- RUSTFLAGS="-D warnings" cargo check --workspace --all-targets
- cargo clippy --workspace --all-targets -- -D warnings
- cargo test --workspace
- focused TUI viewer tests: 37 passed
- structured document integration tests: 4 passed
The review also verifies arbitrary field counts and duplicate names remain ID/order based, long values wrap and scroll across responsive layouts, Unicode renders correctly, sidebar selection survives close, and secrets stay redacted from status/help/debug/default render snapshots unless a test explicitly performs reveal.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Implement the authenticated structured entry viewer in the main pane.
Scope
Acceptance criteria
Prerequisites
Sidebar navigation; authentication and relock UI; structured entry document API.
Implemented in
cf7a621.The TUI now loads authenticated entries through EntryDocumentService with the generation-bound authentication handle and renders the storage-owned structured document dynamically. Sensitive fields (including the first password and OTP URIs) are masked by default; Tab/Shift-Tab focus fields, v/V reveal and hide, y copies only the focused structured value through the timed native clipboard lifecycle, j/k and paging scroll wrapped content, and Esc closes the document without changing sidebar selection. Reveal state is cleared on field focus changes, overlays, close, authentication failure, terminal focus loss, manual lock, and lease expiry. OTP kind, issuer, account, algorithm, digits, period/counter metadata is now parsed and supplied by crates/storage rather than inferred by the frontend. Clipboard work is cancellable and joined so process exit cannot skip cleanup.
Verification:
The review also verifies arbitrary field counts and duplicate names remain ID/order based, long values wrap and scroll across responsive layouts, Unicode renders correctly, sidebar selection survives close, and secrets stay redacted from status/help/debug/default render snapshots unless a test explicitly performs reveal.