Sensitive content is unavailable before authentication and after relock/background policy takes effect.
Reveal and copy require explicit action and operate only on values returned by storage.
The viewer contains no entry parser, serialization logic, or secret policy.
## Goal
Present an authenticated, structured password-entry viewer suited to iPhone.
## Scope
- Render the storage-provided structured entry document as native sections for password, named fields, notes, OTP metadata, and unknown/repeated fields.
- Hide sensitive values by default and provide explicit reveal/hide and copy controls with clear feedback.
- Trigger authentication only when decrypted content is requested, then respect the shared lease and immediately mask on expiry or app lock.
- Support long and multiline values, Dynamic Type, VoiceOver labels, text selection where safe, and compact/large device layouts.
- Offer Edit and applicable storage actions through native navigation/overflow controls without parsing or normalizing entry content in Swift.
- Show storage-provided diagnostics for malformed or partially understood entries without losing fields.
## Acceptance criteria
- Ordinary, dynamic, repeated, multiline, OTP-bearing, and partially malformed fixtures display losslessly.
- Sensitive content is unavailable before authentication and after relock/background policy takes effect.
- Reveal and copy require explicit action and operate only on values returned by storage.
- The viewer contains no entry parser, serialization logic, or secret policy.
hugo
added this to the 04 - iPhone and Apple Watch apps milestone 2026-08-09 20:00:31 +00:00
The Rust storage crate now projects lossless entry documents into typed iPhone sections for passwords, named/repeated fields, OTP metadata, notes, unknown fields, empty fields, and storage diagnostics. Sensitivity policy, reveal/copy values, authenticated lease checks, recoverable edits, serialization, and automatic Git commits remain storage-owned; the UniFFI/UIKit layer only presents those records and invokes typed actions.
The native viewer masks password and OTP secrets, leaves tags/comments/notes visible, preserves multiline and long values, supports Dynamic Type/VoiceOver/selection, aligns a fixed action rail, provides eye/edit controls, and copies on row tap with Apple-native row highlight, haptic/VoiceOver feedback, and a stable navigation-bar checkmark. It masks immediately on lock/background and discards decrypted page state.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Present an authenticated, structured password-entry viewer suited to iPhone.
Scope
Acceptance criteria
Implemented in commit
900e62e.The Rust storage crate now projects lossless entry documents into typed iPhone sections for passwords, named/repeated fields, OTP metadata, notes, unknown fields, empty fields, and storage diagnostics. Sensitivity policy, reveal/copy values, authenticated lease checks, recoverable edits, serialization, and automatic Git commits remain storage-owned; the UniFFI/UIKit layer only presents those records and invokes typed actions.
The native viewer masks password and OTP secrets, leaves tags/comments/notes visible, preserves multiline and long values, supports Dynamic Type/VoiceOver/selection, aligns a fixed action rail, provides eye/edit controls, and copies on row tap with Apple-native row highlight, haptic/VoiceOver feedback, and a stable navigation-bar checkmark. It masks immediately on lock/background and discards decrypted page state.
Verified in isolation:
cargo fmt --all -- --checkRUSTFLAGS="-D warnings" cargo check --workspace --all-targetscargo clippy --workspace --all-targets -- -D warningscargo test --workspace(including 9 entry-document tests)xcodegen generatede.rfc1437.ironstorage