Implement Android entry and folder creation, editing, and password generation #103

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

Goal

Provide native create/edit workflows over storage-owned structured entry documents and repository mutations.

Scope

  • Add Compose forms to create folders and entries, edit dynamic named fields and multiline notes, add/remove/reorder fields, and request generated/replacement passwords.
  • Use storage-provided field kinds, stable IDs, sensitivity metadata, validation, generation options, revision tokens, recipients, and save outcomes.
  • Keep passwords hidden by default with explicit reveal and generation confirmation; use secure keyboard/autofill semantics without exposing values to screenshots or saved state.
  • Hold dirty form state only in memory, scoped to the editor ViewModel/native session. Confirm before back, destination replacement, lock, background cleanup, or another operation discards it.
  • Save atomically through Rust; Kotlin must not serialize entries, generate passwords, choose .gpg-id recipients, encrypt, write files, or create Git commits.
  • On validation failure, stale revision, merge conflict, authentication expiry, or interrupted save, retain the safe in-memory draft and present storage-provided recovery options.
  • Support IME actions, focus, hardware keyboard, drag/accessibility reordering alternatives, long values, large fonts, and adaptive layouts.
  • Ensure process death never writes plaintext drafts to SavedStateHandle; recovery starts locked and explains that an unsaved draft was discarded.

Acceptance criteria

  • Dynamic, unknown, repeated, multiline, PIN, and OTP fields round-trip without loss.
  • Create folder, create entry, edit, add/remove/reorder, generate, save, cancel, failed save, stale conflict, and lock-during-edit paths are tested.
  • Ordinary navigation cannot discard dirty changes without confirmation.
  • No secret draft enters saved state, logs, clipboard, DataStore, or screenshots.
  • Kotlin contains no entry serialization, generation, recipient, encryption, filesystem, or Git policy.

Depends on the structured viewer, biometric authentication, and hierarchical navigation issues. Part of #87.

## Goal Provide native create/edit workflows over storage-owned structured entry documents and repository mutations. ## Scope - Add Compose forms to create folders and entries, edit dynamic named fields and multiline notes, add/remove/reorder fields, and request generated/replacement passwords. - Use storage-provided field kinds, stable IDs, sensitivity metadata, validation, generation options, revision tokens, recipients, and save outcomes. - Keep passwords hidden by default with explicit reveal and generation confirmation; use secure keyboard/autofill semantics without exposing values to screenshots or saved state. - Hold dirty form state only in memory, scoped to the editor ViewModel/native session. Confirm before back, destination replacement, lock, background cleanup, or another operation discards it. - Save atomically through Rust; Kotlin must not serialize entries, generate passwords, choose `.gpg-id` recipients, encrypt, write files, or create Git commits. - On validation failure, stale revision, merge conflict, authentication expiry, or interrupted save, retain the safe in-memory draft and present storage-provided recovery options. - Support IME actions, focus, hardware keyboard, drag/accessibility reordering alternatives, long values, large fonts, and adaptive layouts. - Ensure process death never writes plaintext drafts to `SavedStateHandle`; recovery starts locked and explains that an unsaved draft was discarded. ## Acceptance criteria - Dynamic, unknown, repeated, multiline, PIN, and OTP fields round-trip without loss. - Create folder, create entry, edit, add/remove/reorder, generate, save, cancel, failed save, stale conflict, and lock-during-edit paths are tested. - Ordinary navigation cannot discard dirty changes without confirmation. - No secret draft enters saved state, logs, clipboard, DataStore, or screenshots. - Kotlin contains no entry serialization, generation, recipient, encryption, filesystem, or Git policy. Depends on the structured viewer, biometric authentication, and hierarchical navigation issues. Part of #87.
hugo added this to the 06 - Implement an Android version of the software milestone 2026-08-17 19:15:14 +00:00
hugo added the enhancement label 2026-08-17 19:15:14 +00:00
Sign in to join this conversation.