Implement complete Android Settings and recovery controls #104

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

Goal

Expose all Android-relevant shared and mobile preferences without displaying or duplicating secret state.

Scope

  • Build Material 3 settings sections for repository/server identity, optional HTTPS remote setup, application-token replacement/removal, default GPG key identity, Git author name/email, inactivity timeout, biometric unlock capability/status/toggle, appearance, manual Lock, TOTP cache status/rebuild, and GPG QR import/export.
  • Read/write shared settings through crates/storage and config.toml; use DataStore only for explicitly presentation-only Android choices approved by #88.
  • Store tokens/passphrases only through secure-secret APIs. Existing secret values are never displayed, returned as placeholders that could be mistaken for data, or copied.
  • Enabling biometrics performs capability/authentication/enrollment before committing the setting; disabling removes the protected credential.
  • Validate dependent changes atomically in Rust and present typed errors without partial state.
  • Link to Android Credential Manager/Autofill provider system settings and accurately report enabled/disabled capability without requesting broad settings privileges.
  • Include version/licenses/privacy/support information and recovery explanations for invalidated Keystore data, missing repository, corrupt cache, and offline operation.
  • Omit all Apple Watch pairing/sharing/status controls.

Acceptance criteria

  • Shared values stay consistent with CLI/TUI/desktop configuration.
  • Git name/email are used by Android commits.
  • Secret replacement/removal and biometric enable/disable are transactional and redacted.
  • Settings are searchable/navigable where platform conventions support it and pass TalkBack/large-font/adaptive checks.
  • No Watch-only setting appears, and Kotlin does not directly edit config.toml.

Depends on onboarding, Keystore, biometric authentication, TOTP cache, and app shell. Part of #87.

## Goal Expose all Android-relevant shared and mobile preferences without displaying or duplicating secret state. ## Scope - Build Material 3 settings sections for repository/server identity, optional HTTPS remote setup, application-token replacement/removal, default GPG key identity, Git author name/email, inactivity timeout, biometric unlock capability/status/toggle, appearance, manual Lock, TOTP cache status/rebuild, and GPG QR import/export. - Read/write shared settings through `crates/storage` and `config.toml`; use DataStore only for explicitly presentation-only Android choices approved by #88. - Store tokens/passphrases only through secure-secret APIs. Existing secret values are never displayed, returned as placeholders that could be mistaken for data, or copied. - Enabling biometrics performs capability/authentication/enrollment before committing the setting; disabling removes the protected credential. - Validate dependent changes atomically in Rust and present typed errors without partial state. - Link to Android Credential Manager/Autofill provider system settings and accurately report enabled/disabled capability without requesting broad settings privileges. - Include version/licenses/privacy/support information and recovery explanations for invalidated Keystore data, missing repository, corrupt cache, and offline operation. - Omit all Apple Watch pairing/sharing/status controls. ## Acceptance criteria - Shared values stay consistent with CLI/TUI/desktop configuration. - Git name/email are used by Android commits. - Secret replacement/removal and biometric enable/disable are transactional and redacted. - Settings are searchable/navigable where platform conventions support it and pass TalkBack/large-font/adaptive checks. - No Watch-only setting appears, and Kotlin does not directly edit `config.toml`. Depends on onboarding, Keystore, biometric authentication, TOTP cache, and app shell. Part of #87.
hugo added this to the 06 - Implement an Android version of the software milestone 2026-08-17 19:15:15 +00:00
hugo added the enhancement label 2026-08-17 19:15:15 +00:00
Sign in to join this conversation.