show OTP codes on normal detail page, too, not just from the TOTP pane #75

Closed
opened 2026-08-11 20:13:21 +00:00 by hugo · 2 comments
Owner

when an entry is opened with a TOTP settings in it, show the current OTP code at the top of the details with a progress bar for remaining time, just as we do in the TUI. The TOTP pane is just a way to collect all entries that are having those details, but normal entry details must show the code, too.

Also, whenever an entry is discovered that matches that, check its entry in the TOTP cache and add / update it, if it is missing or outdated. Essentially, whenever a detail page is shown and an entry is decrypted, check the state of its cache entry and update accordingly, so that TOTP is kept updated for edits or creations happening in the iphone app.

when an entry is opened with a TOTP settings in it, show the current OTP code at the top of the details with a progress bar for remaining time, just as we do in the TUI. The TOTP pane is just a way to collect all entries that are having those details, but normal entry details must show the code, too. Also, whenever an entry is discovered that matches that, check its entry in the TOTP cache and add / update it, if it is missing or outdated. Essentially, whenever a detail page is shown and an entry is decrypted, check the state of its cache entry and update accordingly, so that TOTP is kept updated for edits or creations happening in the iphone app.
hugo added this to the 04 - iPhone and Apple Watch apps milestone 2026-08-11 20:13:21 +00:00
hugo added the enhancementcritical labels 2026-08-11 20:13:21 +00:00
hugo added the untested label 2026-08-11 21:55:41 +00:00
Author
Owner

Implemented in commit 2026637. Normal password details now show the storage-generated current TOTP code and determinate remaining-time progress at the top using the same native UIKit presentation as the TOTP detail pane. Opening a decrypted entry reconciles its path, ciphertext hash, and TOTP classification into the local cache without persisting the URI, secret, account, password, or plaintext. Successful iPhone edits and creations also reconcile the cache, and interrupted discovery updates remain serialized with detail-page updates. Verification passed: cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace; xcodegen generate; signed Debug simulator build; Xcode Analyze; signed Release physical-device build; and Release install on the paired iPhone. The device was locked, so launch and decrypted visual interaction remain pending; the issue is closed with the untested label as agreed.

Implemented in commit 2026637. Normal password details now show the storage-generated current TOTP code and determinate remaining-time progress at the top using the same native UIKit presentation as the TOTP detail pane. Opening a decrypted entry reconciles its path, ciphertext hash, and TOTP classification into the local cache without persisting the URI, secret, account, password, or plaintext. Successful iPhone edits and creations also reconcile the cache, and interrupted discovery updates remain serialized with detail-page updates. Verification passed: cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace; xcodegen generate; signed Debug simulator build; Xcode Analyze; signed Release physical-device build; and Release install on the paired iPhone. The device was locked, so launch and decrypted visual interaction remain pending; the issue is closed with the untested label as agreed.
hugo closed this issue 2026-08-11 21:55:41 +00:00
Author
Owner

Non-destructive validation completed on 2026-08-12. In the iPhone simulator, a locked password entry was opened, Unlock was explicitly triggered, Face ID success was simulated with Features > Face ID > Matching Face, and the normal password detail then displayed its TOTP current-code presentation and countdown. Cache reconciliation passed in the current isolated Rust workspace tests. No OTP value is included in this report. Removing the untested label.

Non-destructive validation completed on 2026-08-12. In the iPhone simulator, a locked password entry was opened, Unlock was explicitly triggered, Face ID success was simulated with Features > Face ID > Matching Face, and the normal password detail then displayed its TOTP current-code presentation and countdown. Cache reconciliation passed in the current isolated Rust workspace tests. No OTP value is included in this report. Removing the untested label.
hugo removed the untested label 2026-08-12 17:32:59 +00:00
Sign in to join this conversation.