Implement the in-process structured entry editor #21

Closed
opened 2026-08-09 19:10:44 +00:00 by hugo · 1 comment
Owner

Objective

Implement the flexible in-process structured entry editor in the main pane.

Scope

  • Edit any storage-provided field and free-form section with Tab/Shift-Tab focus traversal.
  • Add, remove and reorder dynamic fields; edit multiline notes; and keep sensitive values masked unless explicitly revealed.
  • Offer storage-backed password generation for the focused sensitive field.
  • Save through the structured document API, present concurrent-change conflicts, and support explicit cancel/discard decisions.
  • Keep the TUI editor fully in-process and never invoke the CLI editor or another executable.

Acceptance criteria

  • Round-trip tests cover arbitrary fields, duplicate labels, field reordering, notes, OTP URIs and empty documents.
  • Save, cancel, conflict, encryption failure and relock behavior never leave a partial repository mutation.
  • Focus remains predictable after add/remove/reorder and at terminal size boundaries.
  • Repository serialization, encryption and Git commits remain exclusively in storage.

Prerequisites

Structured entry viewer; structured entry document API.

## Objective Implement the flexible in-process structured entry editor in the main pane. ## Scope - Edit any storage-provided field and free-form section with Tab/Shift-Tab focus traversal. - Add, remove and reorder dynamic fields; edit multiline notes; and keep sensitive values masked unless explicitly revealed. - Offer storage-backed password generation for the focused sensitive field. - Save through the structured document API, present concurrent-change conflicts, and support explicit cancel/discard decisions. - Keep the TUI editor fully in-process and never invoke the CLI editor or another executable. ## Acceptance criteria - Round-trip tests cover arbitrary fields, duplicate labels, field reordering, notes, OTP URIs and empty documents. - Save, cancel, conflict, encryption failure and relock behavior never leave a partial repository mutation. - Focus remains predictable after add/remove/reorder and at terminal size boundaries. - Repository serialization, encryption and Git commits remain exclusively in storage. ## Prerequisites Structured entry viewer; structured entry document API.
hugo added this to the 02 - Mutt-style terminal UI milestone 2026-08-09 19:10:44 +00:00
hugo added the enhancement label 2026-08-09 19:10:44 +00:00
hugo closed this issue 2026-08-10 07:23:02 +00:00
Author
Owner

Implemented in b503de8 and pushed to main.

Implementation:

  • Added a fully in-process Ratatui structured editor with Tab and Shift-Tab focus traversal, UTF-8 input, multiline line splitting, dynamic add/remove/reorder, explicit reveal, masked sensitive input, and discard confirmation.
  • Added storage-backed zeroizing password generation for focused sensitive non-OTP fields.
  • Added recoverable structured saves so conflicts, validation, encryption, and commit failures retain the exact draft and leave repository contents unchanged.
  • Added storage-owned automatic Git repository selection and commits; the TUI only invokes typed storage APIs.
  • Added coverage for arbitrary and duplicate fields, reordering, notes, OTP metadata, empty entries, masking, terminal widths, conflict/failure recovery, relock, generation, encrypted save, and an automatic Git commit.

Review confirmed no external executable or unsafe Rust was introduced and storage remains the sole owner of serialization, encryption, generation rules, and Git commits.

Verification passed:

  • cargo fmt --all -- --check
  • RUSTFLAGS=-D warnings cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
Implemented in b503de8 and pushed to main. Implementation: - Added a fully in-process Ratatui structured editor with Tab and Shift-Tab focus traversal, UTF-8 input, multiline line splitting, dynamic add/remove/reorder, explicit reveal, masked sensitive input, and discard confirmation. - Added storage-backed zeroizing password generation for focused sensitive non-OTP fields. - Added recoverable structured saves so conflicts, validation, encryption, and commit failures retain the exact draft and leave repository contents unchanged. - Added storage-owned automatic Git repository selection and commits; the TUI only invokes typed storage APIs. - Added coverage for arbitrary and duplicate fields, reordering, notes, OTP metadata, empty entries, masking, terminal widths, conflict/failure recovery, relock, generation, encrypted save, and an automatic Git commit. Review confirmed no external executable or unsafe Rust was introduced and storage remains the sole owner of serialization, encryption, generation rules, and Git commits. Verification passed: - cargo fmt --all -- --check - RUSTFLAGS=-D warnings cargo check --workspace --all-targets - cargo clippy --workspace --all-targets -- -D warnings - cargo test --workspace
Sign in to join this conversation.