Implement the standard two-pane desktop layout and expandable password-store navigation tree.
Scope
Render a resizable left sidebar and right content pane, with sensible minimum sizes and persisted presentation preferences only where the shared config supports them.
Populate the sidebar exclusively from typed tree/list models returned by crates/storage.
Support expand/collapse, selection, keyboard navigation, mouse activation, scrolling, focus indication, and empty/loading/error states.
Preserve expansion and selection where stable storage-provided identities allow it after refresh; never infer identity from labels or paths rendered as strings.
Opening an entry selects the appropriate viewer/editor state in the right pane; folders are navigation nodes, not entries fabricated by the GUI.
Keep filesystem traversal, filtering rules, .gpg-id semantics, and entry ordering in crates/storage.
Acceptance criteria
Nested folders can be expanded and collapsed using mouse and keyboard.
Sidebar and content pane remain usable at supported window sizes and with long names.
Refreshes preserve valid expansion/selection and clear invalid selections safely.
Tests cover navigation, expansion, focus transfer, empty stores, and storage errors without repository access from the GUI.
## Goal
Implement the standard two-pane desktop layout and expandable password-store navigation tree.
## Scope
- Render a resizable left sidebar and right content pane, with sensible minimum sizes and persisted presentation preferences only where the shared config supports them.
- Populate the sidebar exclusively from typed tree/list models returned by `crates/storage`.
- Support expand/collapse, selection, keyboard navigation, mouse activation, scrolling, focus indication, and empty/loading/error states.
- Preserve expansion and selection where stable storage-provided identities allow it after refresh; never infer identity from labels or paths rendered as strings.
- Opening an entry selects the appropriate viewer/editor state in the right pane; folders are navigation nodes, not entries fabricated by the GUI.
- Keep filesystem traversal, filtering rules, `.gpg-id` semantics, and entry ordering in `crates/storage`.
## Acceptance criteria
- Nested folders can be expanded and collapsed using mouse and keyboard.
- Sidebar and content pane remain usable at supported window sizes and with long names.
- Refreshes preserve valid expansion/selection and clear invalid selections safely.
- Tests cover navigation, expansion, focus transfer, empty stores, and storage errors without repository access from the GUI.
hugo
added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:04 +00:00
Implemented and pushed in commit 08f74bf (Add desktop navigation tree).
Added a resizable Iced pane grid with minimum window/pane sizes, a scrollable navigation sidebar, and a focused content pane.
Added storage-owned TreeNodeId values backed by typed EntryPath and DirectoryPath identities; the desktop consumes TreeModel ordering, labels, kinds, and indicators without filesystem traversal or display-string identity inference.
Added mouse activation and keyboard navigation for expand/collapse, parent/child, previous/next, first/last, entry opening, Tab focus transfer, and automatic scroll positioning.
Added loading, refresh, empty-store, retained-tree error, long-name, and storage-indicator presentation.
Refresh preserves only valid typed expansion and selection state. Entry activation uses the shared dirty-document guard, and Cancel restores the active entry selection.
Folders only navigate/toggle; only storage-typed entries enter the authenticated editor path.
Review completed against every acceptance criterion. Repository-free desktop tests cover navigation, expansion, activation, focus transfer, empty trees, refresh preservation/removal, long names, and injected storage errors. Verification passed:
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.
Goal
Implement the standard two-pane desktop layout and expandable password-store navigation tree.
Scope
crates/storage..gpg-idsemantics, and entry ordering incrates/storage.Acceptance criteria
Implemented and pushed in commit
08f74bf(Add desktop navigation tree).Review completed against every acceptance criterion. Repository-free desktop tests cover navigation, expansion, activation, focus transfer, empty trees, refresh preservation/removal, long names, and injected storage errors. Verification passed: