#1814

Adapt iOS navigation and controls for iPhone Duo

Openpkyanamwants to merge intofrom

iOS now uses a native people/conversation split view that expands on the Duo inner display and collapses on compact displays. Chat actions use system toolbars and vertical side bars, while selection and composer drafts stay in one root across resizing.

Changes

  • Remove UIRequiresFullScreen and support outer-display landscape.
  • Use one NavigationSplitView on iOS 17+, with a stable detail navigation stack and explicit public/private conversation routing. Preserve the existing iOS 16 and macOS sheet flow.
  • Give split navigation one alert owner; coordinate verification, fingerprints, private-media consent, and media presentations.
  • Move iOS header actions into labeled native toolbar items and availability-gated system overflow. Keep identity editing, channel/connectivity information, and private transport/encryption status visible in content.
  • Make verification, fingerprints, and location-channel content scrollable. Adapt notices controls, QR sizing, media/globe actions, and safe-area handling.
  • Rotate the QR camera preview with the capture-device rotation coordinator on iOS 17+, with a local-scene camera fallback on iOS 16.
  • Cancel an interrupted microphone hold on gesture cancellation, width changes, disappearing content, or scene inactivity.
  • Add live-scene regression tests for draft/selection preservation and recording-HUD versus width changes.

The deployment target remains iOS 16. Optimized Duo chrome requires linking the iOS 27.1 SDK; newer APIs have SDK/runtime gates. No Duo dimensions or hinge widths are hard-coded. The approach follows Apple's preparation guide and adaptive-layout guidance.

Validation

  • Xcode 27.1 RC, build 27A9275.
  • Final iOS app and test bundle: build-for-testing passed.
  • Final macOS app build passed.
  • SwiftLint exits 0; two existing image aspect-ratio warnings remain.
  • Duo lint reviewed: nine macOS-only width reports and one iOS 16 camera-rendering orientation fallback; no confirmed iOS layout finding.
  • An intermediate run passed 52 tests across view smoke, composer drafts, and private-conversation coordination, including the live-scene resize/draft test.
  • Inner-display split navigation, native side controls, and verification presentation inspected in the Duo simulator.

Draft acceptance work

The final simulator test rerun has not completed. After the camera/microphone follow-up, Xcode stalls before test execution while reporting IDESchemeActionSDKRecord / IDESchemeActionDeviceRecord parsing runtime build 24A94232 as invalidDigitCount(94232). A dedicated simulator reboot and isolated retry did not resolve it. The final test bundle compiles, including the new recording-HUD/resize test; it is not claimed as passing.

Hinge commands dispatch, but their confirmation fails because CoreDevice rejects the automation's hinge-angle --device argument. Full Closed/Partially Open/Open transitions, both rotations, Split View on both sides, pinned PiP, and resizable iPhone Mirroring remain manual acceptance work. Real Bluetooth/media exchange, camera rotation, and interrupted physical touches need hardware.

Reproduction commands, the detailed acceptance matrix, and Apple references are in IPHONE-DUO.md.

Related Duo work: #1792, #1801.

Activity

2
chatgpt-codex-connector[bot]5d ago

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code Review⚠️ Failed 2026-10-25T16:11:19.432847Z
We couldn’t complete this review. Comment @codex review to try again.
b3285fcDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.