Present search and entry mutation workflows #39

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

Goal

Present search and entry mutation workflows for the complete base pass feature set.

Scope

  • Add entry-name search and decrypted-content search using storage-provided query/result models, with authentication only when the requested search needs plaintext.
  • Present search results with stable entry identities and navigate to the selected result.
  • Add copy, move/rename, and delete actions with destination selection, validation feedback, and appropriate confirmations.
  • Keep traversal, matching semantics, collision handling, encryption, filesystem mutation, and commits in crates/storage.
  • Integrate actions into menus, context menus, keyboard shortcuts where conventional, and the command palette.

Acceptance criteria

  • Name and content search match the storage crate/CLI semantics without GUI-side repository scans.
  • Results remain associated with storage-provided identities rather than display strings.
  • Move/copy/delete cannot bypass conflicts, authentication, or destructive confirmation.
  • Cancellation or storage failure leaves the sidebar, selection, and dirty document in a coherent state.
## Goal Present search and entry mutation workflows for the complete base pass feature set. ## Scope - Add entry-name search and decrypted-content search using storage-provided query/result models, with authentication only when the requested search needs plaintext. - Present search results with stable entry identities and navigate to the selected result. - Add copy, move/rename, and delete actions with destination selection, validation feedback, and appropriate confirmations. - Keep traversal, matching semantics, collision handling, encryption, filesystem mutation, and commits in `crates/storage`. - Integrate actions into menus, context menus, keyboard shortcuts where conventional, and the command palette. ## Acceptance criteria - Name and content search match the storage crate/CLI semantics without GUI-side repository scans. - Results remain associated with storage-provided identities rather than display strings. - Move/copy/delete cannot bypass conflicts, authentication, or destructive confirmation. - Cancellation or storage failure leaves the sidebar, selection, and dirty document in a coherent state.
hugo added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:17 +00:00
hugo added the enhancement label 2026-08-09 19:30:17 +00:00
Author
Owner

Implemented and pushed as commit de5dea2.

Implementation review:

  • Added storage-backed name search using FindRequest/FindResults with exact multi-term OR semantics and no authentication, plus authenticated decrypted regex/fixed-string search using GrepRequest/GrepResults and all existing grep flags.
  • Name matches now carry storage-owned TreeNodeId values; decrypted matches retain typed EntryPath identities. Selecting a result expands the typed navigation lineage and opens entries through the normal authentication/dirty-draft guard.
  • Added authenticated copy, move/rename, and recursive entry/folder deletion through DesktopMutationRequest and TreeMutator. crates/storage remains responsible for traversal, collision detection, recipient-aware re-encryption, rollback-safe filesystem changes, and embedded Git commits.
  • Added typed destination selection, explicit overwrite and permanent-removal confirmations, storage validation feedback, post-mutation typed reselection, and right-click context actions. All actions are in the shared native/in-window menu and command-palette registry; Cmd/Ctrl-F searches names and Shift-Cmd/Ctrl-F searches decrypted contents.
  • Cancellation and injected storage failures retain the sidebar selection and dirty editor. Authentication loss removes decrypted search results.

Verification completed from the repository root:

  • cargo fmt --all -- --check
  • RUSTFLAGS="-D warnings" cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace

All gates passed. The full suite includes 24 desktop tests and 94 TUI tests; the isolated desktop regression verifies search semantics, typed identities, collision refusal, copy/move/delete contents, clean embedded-Git state, and one automatic commit per mutation. No Apple project files changed.

Implemented and pushed as commit de5dea2. Implementation review: - Added storage-backed name search using FindRequest/FindResults with exact multi-term OR semantics and no authentication, plus authenticated decrypted regex/fixed-string search using GrepRequest/GrepResults and all existing grep flags. - Name matches now carry storage-owned TreeNodeId values; decrypted matches retain typed EntryPath identities. Selecting a result expands the typed navigation lineage and opens entries through the normal authentication/dirty-draft guard. - Added authenticated copy, move/rename, and recursive entry/folder deletion through DesktopMutationRequest and TreeMutator. crates/storage remains responsible for traversal, collision detection, recipient-aware re-encryption, rollback-safe filesystem changes, and embedded Git commits. - Added typed destination selection, explicit overwrite and permanent-removal confirmations, storage validation feedback, post-mutation typed reselection, and right-click context actions. All actions are in the shared native/in-window menu and command-palette registry; Cmd/Ctrl-F searches names and Shift-Cmd/Ctrl-F searches decrypted contents. - Cancellation and injected storage failures retain the sidebar selection and dirty editor. Authentication loss removes decrypted search results. Verification completed from the repository root: - cargo fmt --all -- --check - RUSTFLAGS="-D warnings" cargo check --workspace --all-targets - cargo clippy --workspace --all-targets -- -D warnings - cargo test --workspace All gates passed. The full suite includes 24 desktop tests and 94 TUI tests; the isolated desktop regression verifies search semantics, typed identities, collision refusal, copy/move/delete contents, clean embedded-Git state, and one automatic commit per mutation. No Apple project files changed.
hugo closed this issue 2026-08-10 17:23:21 +00:00
Sign in to join this conversation.