Open vault folders through the shared configuration #35

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

Goal

Connect desktop vault opening and lifecycle to the configuration shared with the CLI and TUI.

Scope

  • Implement Open Folder through the platform folder picker and the standard primary-modifier+O shortcut (Command-O on macOS, Ctrl-O elsewhere).
  • Pass the chosen folder to crates/storage for validation and opening; do not inspect the password-store structure in the GUI.
  • Load and update the same config.toml through storage-owned configuration APIs, including vault path, default key, editor setting, and authentication timeout.
  • Present startup behavior for configured, missing, moved, invalid, and inaccessible vault folders.
  • Coordinate opening another vault with the dirty-document confirmation flow; cancellation must leave the current vault unchanged.
  • Expose reload/refresh through UI actions without using filesystem watchers unless a demonstrated requirement later needs them.

Acceptance criteria

  • CLI, TUI, and GUI resolve and update the same configuration contract.
  • Open Folder validates through crates/storage and changes vault only after success.
  • Invalid or inaccessible folders produce actionable errors and do not replace the current session.
  • Opening another folder cannot silently lose unsaved changes.
## Goal Connect desktop vault opening and lifecycle to the configuration shared with the CLI and TUI. ## Scope - Implement Open Folder through the platform folder picker and the standard primary-modifier+O shortcut (`Command-O` on macOS, `Ctrl-O` elsewhere). - Pass the chosen folder to `crates/storage` for validation and opening; do not inspect the password-store structure in the GUI. - Load and update the same `config.toml` through storage-owned configuration APIs, including vault path, default key, editor setting, and authentication timeout. - Present startup behavior for configured, missing, moved, invalid, and inaccessible vault folders. - Coordinate opening another vault with the dirty-document confirmation flow; cancellation must leave the current vault unchanged. - Expose reload/refresh through UI actions without using filesystem watchers unless a demonstrated requirement later needs them. ## Acceptance criteria - CLI, TUI, and GUI resolve and update the same configuration contract. - Open Folder validates through `crates/storage` and changes vault only after success. - Invalid or inaccessible folders produce actionable errors and do not replace the current session. - Opening another folder cannot silently lose unsaved changes.
hugo added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:04 +00:00
hugo added the enhancement label 2026-08-09 19:30:04 +00:00
Author
Owner

Implemented and pushed in commit 491d7b1. Added native macOS/Windows and XDG portal Linux folder selection with Cmd/Ctrl-O; storage-owned vault/config validation and atomic config.toml updates for vault, default key, editor, and authentication timeout; session replacement only after full repository/key/tree validation; actionable cancellation/failure states; shared dirty-document coordination; explicit refresh/reload actions; and in-flight switch lifecycle guards. Verification: cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace. All passed. Focused configuration contract and desktop tests also passed, including failed/cancelled switches retaining config/session and dirty drafts.

Implemented and pushed in commit 491d7b1. Added native macOS/Windows and XDG portal Linux folder selection with Cmd/Ctrl-O; storage-owned vault/config validation and atomic config.toml updates for vault, default key, editor, and authentication timeout; session replacement only after full repository/key/tree validation; actionable cancellation/failure states; shared dirty-document coordination; explicit refresh/reload actions; and in-flight switch lifecycle guards. Verification: cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace. All passed. Focused configuration contract and desktop tests also passed, including failed/cancelled switches retaining config/session and dirty drafts.
hugo closed this issue 2026-08-10 15:22:17 +00:00
Sign in to join this conversation.