Complete the iPhone and Watch integration audit #58

Closed
opened 2026-08-09 20:00:48 +00:00 by hugo · 2 comments
Owner

Goal

Prove the iPhone and Apple Watch implementation is secure, native, and ready for the final distribution issue.

Scope

  • Maintain a coverage matrix for the requested four iPhone tabs, remote activity/pull-to-refresh, entry navigation/view/edit, swipe mutations, Commit/Fetch/Pull/Push, biometric unlock, key QR transfer, TOTP sharing, Watch synchronization, and Watch display.
  • Explicitly mark full CLI/TUI parity, command mode/palette, SSH Git, non-TOTP Watch features, and AutoFill as outside this milestone rather than stubbing them.
  • Audit Swift/UniFFI/Rust boundaries for repository access, domain parsing, OTP calculation, secure-secret policy, transfer semantics, and subprocess launch.
  • Exercise biometric enrollment/cancellation/change, application-token expiry, app background/foreground, protected-data loss, screenshots/logs/pasteboard, QR interruption, Git conflicts, dirty edits, Watch pairing changes, offline Watch use, and replay/stale snapshots.
  • Verify VoiceOver, Dynamic Type, contrast, keyboard where available, swipe-action alternatives, destructive confirmations, iPhone size classes, and supported Watch sizes.
  • Add/update Apple privacy strings, entitlements, privacy manifest, and testing documentation; run required Rust checks, xcodegen generate, affected simulator builds/tests, and physical paired-device Watch Connectivity tests.

Acceptance criteria

  • The coverage matrix has no unexplained gaps in the milestone's stated mobile scope.
  • Security review finds no plaintext secrets in ordinary storage/logs, no domain logic in Swift, no external process use, and no non-HTTPS Git path.
  • Required Rust checks and affected iPhone/watchOS simulator builds/tests pass.
  • Biometric Keychain behavior and Watch background transfer are verified on physical paired devices, with remaining platform limitations documented rather than silently stubbed.
## Goal Prove the iPhone and Apple Watch implementation is secure, native, and ready for the final distribution issue. ## Scope - Maintain a coverage matrix for the requested four iPhone tabs, remote activity/pull-to-refresh, entry navigation/view/edit, swipe mutations, Commit/Fetch/Pull/Push, biometric unlock, key QR transfer, TOTP sharing, Watch synchronization, and Watch display. - Explicitly mark full CLI/TUI parity, command mode/palette, SSH Git, non-TOTP Watch features, and AutoFill as outside this milestone rather than stubbing them. - Audit Swift/UniFFI/Rust boundaries for repository access, domain parsing, OTP calculation, secure-secret policy, transfer semantics, and subprocess launch. - Exercise biometric enrollment/cancellation/change, application-token expiry, app background/foreground, protected-data loss, screenshots/logs/pasteboard, QR interruption, Git conflicts, dirty edits, Watch pairing changes, offline Watch use, and replay/stale snapshots. - Verify VoiceOver, Dynamic Type, contrast, keyboard where available, swipe-action alternatives, destructive confirmations, iPhone size classes, and supported Watch sizes. - Add/update Apple privacy strings, entitlements, privacy manifest, and testing documentation; run required Rust checks, `xcodegen generate`, affected simulator builds/tests, and physical paired-device Watch Connectivity tests. ## Acceptance criteria - The coverage matrix has no unexplained gaps in the milestone's stated mobile scope. - Security review finds no plaintext secrets in ordinary storage/logs, no domain logic in Swift, no external process use, and no non-HTTPS Git path. - Required Rust checks and affected iPhone/watchOS simulator builds/tests pass. - Biometric Keychain behavior and Watch background transfer are verified on physical paired devices, with remaining platform limitations documented rather than silently stubbed.
hugo added this to the 04 - iPhone and Apple Watch apps milestone 2026-08-09 20:00:48 +00:00
hugo added the enhancement label 2026-08-09 20:00:48 +00:00
hugo added the untested label 2026-08-16 12:55:13 +00:00
Author
Owner

Implemented in c2c7a64. Added the complete Apple mobile coverage/security matrix and manual release checklist, privacy manifests for the iPhone, AutoFill, and Watch bundles, XcodeGen resource wiring, and a Rust regression audit enforcing the Swift/UniFFI/process/logging/privacy boundaries. Verified cargo fmt, warning-denied workspace check, Clippy, full workspace tests, xcodegen generation, ARM64 iPhone+Watch simulator build, AutoFill simulator build, and manifest presence in every produced bundle. Biometric simulator validation was skipped because no user was available for the passphrase step. Physical Watch validation was skipped by project direction. The paired-iPhone Release deploy was attempted but command-line signing is blocked by missing authenticated Apple account/provisioning profiles for the bundle identifiers; no development build was installed. The untested label records these platform limitations.

Implemented in c2c7a64. Added the complete Apple mobile coverage/security matrix and manual release checklist, privacy manifests for the iPhone, AutoFill, and Watch bundles, XcodeGen resource wiring, and a Rust regression audit enforcing the Swift/UniFFI/process/logging/privacy boundaries. Verified cargo fmt, warning-denied workspace check, Clippy, full workspace tests, xcodegen generation, ARM64 iPhone+Watch simulator build, AutoFill simulator build, and manifest presence in every produced bundle. Biometric simulator validation was skipped because no user was available for the passphrase step. Physical Watch validation was skipped by project direction. The paired-iPhone Release deploy was attempted but command-line signing is blocked by missing authenticated Apple account/provisioning profiles for the bundle identifiers; no development build was installed. The untested label records these platform limitations.
hugo closed this issue 2026-08-16 12:55:29 +00:00
hugo reopened this issue 2026-08-16 12:57:44 +00:00
Author
Owner

Completed the Apple mobile integration audit in commit c2c7a64. Added the milestone coverage/security matrix, documented exclusions and manual evidence requirements, added per-target privacy manifests, wired them into the generated project, and added automated source/privacy boundary checks. The full required Rust gate set and a normally signed ARM64 iPhone/Watch simulator build pass. Behavioral paired-simulator validation also passed: the iPhone exposed multiple TOTP entries with one selected for Watch; the Watch showed only that selected entry, navigated to the large-code detail with live remaining-validity progress and rollover, and retained the selected snapshot after the iPhone app was stopped and the Watch app was terminated/relaunched. Physical paired-Watch testing remains skipped by project direction, and physical iPhone Release deployment was unavailable because this machine has no valid Apple signing identity/profile; the documented limitation and untested label are therefore retained.

Completed the Apple mobile integration audit in commit c2c7a64. Added the milestone coverage/security matrix, documented exclusions and manual evidence requirements, added per-target privacy manifests, wired them into the generated project, and added automated source/privacy boundary checks. The full required Rust gate set and a normally signed ARM64 iPhone/Watch simulator build pass. Behavioral paired-simulator validation also passed: the iPhone exposed multiple TOTP entries with one selected for Watch; the Watch showed only that selected entry, navigated to the large-code detail with live remaining-validity progress and rollover, and retained the selected snapshot after the iPhone app was stopped and the Watch app was terminated/relaunched. Physical paired-Watch testing remains skipped by project direction, and physical iPhone Release deployment was unavailable because this machine has no valid Apple signing identity/profile; the documented limitation and untested label are therefore retained.
hugo closed this issue 2026-08-16 13:21:21 +00:00
Sign in to join this conversation.