Prepare Apple App Store distribution (#59)

This commit is contained in:
2026-08-16 17:55:59 +02:00
parent b50e47ab73
commit f894d43eb6
46 changed files with 20694 additions and 166 deletions

View File

@@ -9,7 +9,7 @@ actually exercised.
| Area | Implemented boundary | Automated evidence | Manual release evidence |
| --- | --- | --- | --- |
| Home tab, remote activity, pull-to-refresh | UIKit renders Rust `MobileHomePage` and typed Commit/Fetch/Pull/Push actions | `mobile_home` unit tests, `git_embedded`, and `crates/apple` bridge tests | Exercise refresh and all four actions against a disposable HTTPS remote, including expired application-token recovery |
| Home tab, local history, and optional remote activity | UIKit renders Rust `MobileHomePage` and typed Commit/Fetch/Pull/Push actions | `mobile_home` unit tests, `git_embedded`, and `crates/apple` bridge tests | Verify a clean local store first, then attach a disposable HTTPS remote and exercise refresh and all four actions, including expired application-token recovery |
| Passwords tab, navigation, view, and edit | Rust supplies typed paths, fields, drafts, revisions, and mutations; UIKit presents them | `mobile_passwords`, `entry_documents`, `mobile_mutation`, and `mobile_authentication` tests | Open nested entries, edit/save/cancel, and confirm stale-edit recovery |
| Swipe move/copy/delete | Rust plans destinations, collisions, dirty-editor handling, and commits; UIKit also exposes accessibility actions | `plans_destinations_collisions_hidden_paths_and_stale_revisions` and authentication serialization tests | Exercise swipe and VoiceOver alternatives; confirm destructive prompts |
| TOTP tab and sharing | Rust discovers, caches, parses, selects, and generates OTP data | `mobile_totp`, `otp`, and `mobile_watch` integration tests | Discover entries, read a code, change Watch selection, and verify countdown |
@@ -46,8 +46,7 @@ Git, non-TOTP Watch features, and production AutoFill behavior.
- Face ID and camera access have purpose strings in `project.yml`. No custom
entitlement is currently required: default signing supplies each target's
application identifier and Keychain group, WatchConnectivity needs no added
capability, and no App Group is used. Alternative-distribution entitlements
belong to the final distribution issue.
capability, and no App Group is used.
`cargo test -p ironstorage --test apple_mobile_audit` enforces the source and privacy-manifest
parts of this review so those boundaries cannot silently regress.
@@ -83,7 +82,8 @@ the tester is ready to enter the passphrase again.
## Manual evidence still required
Record the device model/OS, build commit, and pass/fail result for each manual
row above. Physical paired-Watch deployment and WatchConnectivity testing are
currently skipped by project direction, so issues closed without that evidence
must carry the `untested` label. Do not describe a simulator build or an opened
Xcode project as device validation.
row above. Simulator validation is required during implementation. The final
distribution issue remains open until the approved App Store build is installed
and verified on the paired physical iPhone and Apple Watch. Never overwrite that
installation with a development-signed build, and do not describe a simulator
build or an opened Xcode project as physical-device validation.