Implement the Apple Watch TOTP interface #57
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Implement the focused Apple Watch interface for quickly reading shared TOTP codes.
Scope
Acceptance criteria
Implemented in
e54d91a. Replaced the placeholder with a native SwiftUI TOTP list and large-code detail screen using Rust-provided states, labels, codes, periods, and remaining time. Rust now owns ready/empty/syncing/stale/locked/unavailable/error presentation, while native List/ScrollView navigation supplies Digital Crown scrolling, semantic fonts support Dynamic Type, and privacySensitive masks codes for system privacy/Always-On behavior. Offline saved snapshots remain usable and newer contexts reconcile through the existing receiver. Verified with focused Watch state/lifecycle tests, regenerated UniFFI bindings, a successful ARM64 Watch simulator compile/link, and all required Rust formatting/check/Clippy/workspace-test gates. Marked untested because Apple Watch deployment and interactive Watch testing were explicitly skipped.Completed the Apple Watch TOTP interface in commits
e54d91aandb50e47a. The Watch consumes Rust-provided selected-entry records only, keeps the snapshot in the Watch Keychain for offline use, presents a names-only list, and shows the selected entry on a detail screen with a larger privacy-sensitive code and a draining remaining-validity bar. Verified on the paired iPhone 17 Pro / IronStorage Watch simulators with normally signed builds: one iPhone-selected entry was the only Watch list item; tapping it opened the large-code detail; the seconds and bar advanced; the Rust-provided code changed at rollover; and the entry survived stopping the iPhone app plus terminating/relaunching the Watch app. Required checks 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 ARM64 iPhone/Watch simulator build. Physical Apple Watch testing remains intentionally skipped, so the untested label is retained.