Implement Android password-store name search #101

Open
opened 2026-08-17 19:12:20 +00:00 by hugo · 0 comments
Owner

Goal

Find entries quickly by path/name without decrypting their contents.

Scope

  • Add a top-level Search destination with debounced text input and storage-owned typed search results.
  • Match path/folder/filename according to crates/storage rules and show enough canonical location context to distinguish duplicate names.
  • Open a selected result in the same structured viewer/navigation model as Passwords.
  • Use Flow/ViewModel state for query, loading, results, empty/error state, cancellation, and latest-query-wins semantics.
  • Do not store query history by default; never expand this feature into decrypted grep without a separate explicit security design.
  • Preserve safe query state across rotation/window changes, but clear it on manual lock/process recreation if the query can reveal sensitive organizational metadata under the selected threat policy.
  • Cover Unicode, case behavior, path separators, very large stores, repository refresh, and stale result identities with Rust fixtures.

Acceptance criteria

  • Search returns the same typed matches as the shared Rust API and never decrypts an entry.
  • Rapid typing/cancellation cannot display results for an older query.
  • Selecting a stale/deleted result produces a safe typed recovery, not the wrong entry.
  • Compact and expanded layouts, TalkBack, keyboard search action, and empty/error states are complete.
  • Kotlin performs no path matching or repository traversal.

Depends on hierarchical navigation and the Compose shell. Part of #87.

## Goal Find entries quickly by path/name without decrypting their contents. ## Scope - Add a top-level Search destination with debounced text input and storage-owned typed search results. - Match path/folder/filename according to `crates/storage` rules and show enough canonical location context to distinguish duplicate names. - Open a selected result in the same structured viewer/navigation model as Passwords. - Use Flow/ViewModel state for query, loading, results, empty/error state, cancellation, and latest-query-wins semantics. - Do not store query history by default; never expand this feature into decrypted grep without a separate explicit security design. - Preserve safe query state across rotation/window changes, but clear it on manual lock/process recreation if the query can reveal sensitive organizational metadata under the selected threat policy. - Cover Unicode, case behavior, path separators, very large stores, repository refresh, and stale result identities with Rust fixtures. ## Acceptance criteria - Search returns the same typed matches as the shared Rust API and never decrypts an entry. - Rapid typing/cancellation cannot display results for an older query. - Selecting a stale/deleted result produces a safe typed recovery, not the wrong entry. - Compact and expanded layouts, TalkBack, keyboard search action, and empty/error states are complete. - Kotlin performs no path matching or repository traversal. Depends on hierarchical navigation and the Compose shell. Part of #87.
hugo added this to the 06 - Implement an Android version of the software milestone 2026-08-17 19:12:20 +00:00
hugo added the enhancement label 2026-08-17 19:12:20 +00:00
Sign in to join this conversation.