Implement native hierarchical password navigation #46

Closed
opened 2026-08-09 20:00:29 +00:00 by hugo · 1 comment
Owner

Goal

Implement native hierarchical password navigation modeled on Gotcha's repository file browser.

Scope

  • Present each password-store folder as a native table hierarchy and push the next directory controller/view when selected.
  • Render storage-provided folder and entry rows with system icons, disclosure indicators, stable identities, loading, empty, and error states.
  • Selecting a password entry opens its viewer; browsing folders must not decrypt entries or prompt for authentication.
  • Preserve valid path/selection state across a local refresh and return safely when a folder or entry disappears.
  • Support refresh of the current storage-provided directory model without traversing the app container in Swift.
  • Leave mutation gestures to their dedicated issue so navigation behavior stays independently testable.

Acceptance criteria

  • Nested stores can be traversed with the same native push-navigation pattern as Gotcha's repository directories.
  • Folder browsing stays locked and uses storage-provided stable identities rather than display strings.
  • Empty folders, long names, deep hierarchies, refreshes, and typed storage errors remain usable and accessible.
  • No Swift code reads directory contents or interprets .gpg-id or .gpg paths.
## Goal Implement native hierarchical password navigation modeled on Gotcha's repository file browser. ## Scope - Present each password-store folder as a native table hierarchy and push the next directory controller/view when selected. - Render storage-provided folder and entry rows with system icons, disclosure indicators, stable identities, loading, empty, and error states. - Selecting a password entry opens its viewer; browsing folders must not decrypt entries or prompt for authentication. - Preserve valid path/selection state across a local refresh and return safely when a folder or entry disappears. - Support refresh of the current storage-provided directory model without traversing the app container in Swift. - Leave mutation gestures to their dedicated issue so navigation behavior stays independently testable. ## Acceptance criteria - Nested stores can be traversed with the same native push-navigation pattern as Gotcha's repository directories. - Folder browsing stays locked and uses storage-provided stable identities rather than display strings. - Empty folders, long names, deep hierarchies, refreshes, and typed storage errors remain usable and accessible. - No Swift code reads directory contents or interprets `.gpg-id` or `.gpg` paths.
hugo added this to the 04 - iPhone and Apple Watch apps milestone 2026-08-09 20:00:29 +00:00
hugo added the enhancement label 2026-08-09 20:00:29 +00:00
Author
Owner

Implemented in commit 3295761.

The Rust storage layer now provides locked, repository-only password directory pages from the existing validated tree model, including stable typed identities, deterministic rows, storage-owned labels/icons, and typed configuration/path/missing-directory/repository failures. The UniFFI bridge exposes that model without key loading or decryption.

The iPhone app now uses native inset-grouped folder tables and navigation pushes, preserves storage identities across reloads, refreshes the current directory, safely returns when a directory disappears, renders loading/empty/error states, exposes accessibility labels and hints, and opens entries in a locked viewer without decrypting or prompting. No Swift filesystem traversal or mutation gestures were added.

Verification: cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace. xcodegen generate and final iPhone 17 Pro simulator build/install passed. Visual traversal of the configured clone covered Passwords -> Login -> Amazon -> amazon.de and confirmed native hierarchy, locked entry presentation, and accessibility output. The final signed build was also installed successfully on the paired iPhone 17.

Implemented in commit 3295761. The Rust storage layer now provides locked, repository-only password directory pages from the existing validated tree model, including stable typed identities, deterministic rows, storage-owned labels/icons, and typed configuration/path/missing-directory/repository failures. The UniFFI bridge exposes that model without key loading or decryption. The iPhone app now uses native inset-grouped folder tables and navigation pushes, preserves storage identities across reloads, refreshes the current directory, safely returns when a directory disappears, renders loading/empty/error states, exposes accessibility labels and hints, and opens entries in a locked viewer without decrypting or prompting. No Swift filesystem traversal or mutation gestures were added. Verification: cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace. xcodegen generate and final iPhone 17 Pro simulator build/install passed. Visual traversal of the configured clone covered Passwords -> Login -> Amazon -> amazon.de and confirmed native hierarchy, locked entry presentation, and accessibility output. The final signed build was also installed successfully on the paired iPhone 17.
hugo closed this issue 2026-08-11 15:32:36 +00:00
Sign in to join this conversation.