Files
hugo c0ba6d43d8
Android ARM verification / rust (push) Failing after 47m18s
Android ARM verification / android (push) Failing after 8s
Dependency security audit / rustsec (push) Successful in 22s
Implement structured Android entry viewer (#99)
2026-10-09 17:36:38 +02:00

50 lines
3.1 KiB
Markdown

# Android structured entry viewer (#99)
The viewer renders Rust-provided sections and fields without parsing or serializing
entries in Compose. Passwords, PINs, OTP URIs and other sensitive fields start masked.
Reveal, copy and edit use the field ID together with the exact document revision.
An external replacement rejects the old field IDs and locks the authentication
lease. Editing saves through Rust's recoverable encryption and automatic Git commit
workflow, then refreshes the checked navigation and document revisions.
Rust supplies TOTP codes, account labels and remaining seconds. The presentation
refresh does not renew the lease. Expiry, backgrounding and manual lock remove
sections, codes, editor inputs and mutation dialogs. Decrypted values never enter
saved state; secret-bearing facade objects redact their string representation.
The Material top bar offers an editable-field picker and Move, Copy and Delete
plans. Rust supplies destinations, overwrite requirements and checked mutation
revisions. Confirmation is explicit. Compact and adaptive list/detail panes share
the same viewer; wrapped values, multiline notes and repeated fields remain intact.
Headings, labelled actions and keyboard submission expose the same typed operations.
Only fields marked selectable by Rust permit text selection. Selection-copy and
explicit Copy both request the complete stored field from Rust, preserving its
clipboard timeout. The editor explains that copying uses the saved value; saving
first makes edits available to copy. Android marks clips sensitive, and Rust clears
its own clip on timeout or lock without restoring previous clipboard contents or
erasing a newer clip. Screen capture is blocked for the activity and dialogs.
## Validation
Rust regressions cover revision-bound field actions, external edits, lease expiry,
TOTP countdown boundaries and clearing clipboard behavior. Existing document
fixtures cover dynamic, repeated, multiline, Unicode, malformed and OTP-only
entries without replacing their original format. Native Android instrumentation
creates an isolated GPG-encrypted store through Rust and exercises reveal, hide,
copy, save, copy/delete mutations, stale revisions and expiry during TOTP refresh.
Compose checks cover masking, field actions, diagnostics, dialog revocation,
mutation confirmation, clipboard sensitivity and screen-capture protection.
All four required Rust workspace gates and the complete Android build, lint,
dependency/license, module-boundary and native-package gates passed. Full app,
core and bridge instrumentation plus five cold starts passed on ARM64 API 26/4 KB,
API 37/4 KB and API 37/strict 16 KB. Both ARM64 and ARMv7 release artifacts were
built and audited.
Computer use in Android Studio's embedded emulator checked the disposable viewer,
masked PIN editor, repeated fields, Unicode and contextual selection at 200% font
size. Native contextual Copy was observed dispatching the Username's field ID.
Manual TalkBack speech was not checked; labelled accessibility actions are covered
by instrumentation. ARMv7 is built and packaged but has no available emulator
image. Physical-device testing is outside this milestone's scope.