Implement adaptive hierarchical password navigation on Android #96

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

Goal

Browse nested password-store folders without decrypting entries, using native adaptive list/detail navigation.

Scope

  • Render storage-provided folder and entry rows with stable IDs, semantic icons, disclosure behavior, loading/empty/error states, and current-path context.
  • Use compact push navigation and Material 3 Adaptive list-detail panes on expanded windows while preserving coherent selection through resize/fold changes.
  • Selecting a folder requests the next typed directory page; selecting an entry opens the structured viewer.
  • Support explicit refresh, deep hierarchies, long/Unicode names, empty folders, disappearing rows, and repository changes without reading the app filesystem in Kotlin.
  • Preserve only non-secret path/selection identifiers across configuration changes; verify their revision before reuse after process death.
  • Provide long-press/overflow and accessibility action entry points that later mutation issues can attach without coupling navigation to mutation rules.

Acceptance criteria

  • Folder traversal never prompts for GPG authentication and never decrypts entries.
  • Compact/expanded transitions preserve a valid path and selection or safely return to the nearest existing ancestor.
  • Stable row identities prevent stale taps/actions targeting a replacement row.
  • TalkBack, large fonts, keyboard/D-pad, touch, and list-detail navigation are usable.
  • Kotlin does not inspect .gpg, .gpg-id, directory entries, or display strings to determine type.

Depends on onboarding, the Compose shell, and the shared mobile contract. Part of #87.

## Goal Browse nested password-store folders without decrypting entries, using native adaptive list/detail navigation. ## Scope - Render storage-provided folder and entry rows with stable IDs, semantic icons, disclosure behavior, loading/empty/error states, and current-path context. - Use compact push navigation and Material 3 Adaptive list-detail panes on expanded windows while preserving coherent selection through resize/fold changes. - Selecting a folder requests the next typed directory page; selecting an entry opens the structured viewer. - Support explicit refresh, deep hierarchies, long/Unicode names, empty folders, disappearing rows, and repository changes without reading the app filesystem in Kotlin. - Preserve only non-secret path/selection identifiers across configuration changes; verify their revision before reuse after process death. - Provide long-press/overflow and accessibility action entry points that later mutation issues can attach without coupling navigation to mutation rules. ## Acceptance criteria - Folder traversal never prompts for GPG authentication and never decrypts entries. - Compact/expanded transitions preserve a valid path and selection or safely return to the nearest existing ancestor. - Stable row identities prevent stale taps/actions targeting a replacement row. - TalkBack, large fonts, keyboard/D-pad, touch, and list-detail navigation are usable. - Kotlin does not inspect `.gpg`, `.gpg-id`, directory entries, or display strings to determine type. Depends on onboarding, the Compose shell, and the shared mobile contract. Part of #87.
hugo added this to the 06 - Implement an Android version of the software milestone 2026-08-17 19:12:19 +00:00
hugo added the enhancement label 2026-08-17 19:12:19 +00:00
Sign in to join this conversation.