Repository navigation
fix: IAM layout fixes for iPhone Duo, resizable scenes and tall content - #1795
Merged
Merged
Conversation
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…it (#1791) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Multi-model review
Claude Opus 5.5, GPT 5.6 Sol, and Grok 4.7 independently reviewed this iam-fixes → main rollup (#1789, #1791, #1793). Substantive diff: 868 lines (excluding project.pbxproj). GPT reported no findings; Opus and Grok overlapped on layout, reserved-region, and scroll-handoff risks. Those were checked against the current code.
Act on
sceneViewonly accepts a window whose frame is bitwise-equal to the scene bounds. During a fold or resize that match fails, so the lookup falls back to the banner-sized window whose insets the comments say are unstable — the case this PR is trying to fix. (Grok; verified)- iOS 27.1 reserved-region lookup uses
NSClassFromStringand informal protocols with norespondsToSelector:/ nil-class guard, and it runs on everyviewDidLayoutSubviews. A renamed or missing selector is an unrecognized-selector crash on the main thread for every non-fullscreen IAM. (Opus+Grok)
Consider
updateVerticalInsetsstill readsself.view.safeAreaInsetswhile banner window height usessceneViewinsets. If the overlapping-edge inset also shrinks, the card can sit in the notch / home indicator. (Grok)message.heightis not updated on page change or page resize (assignment still commented out), so a later taller page stays uncapped and cannot scroll. New tests only cover the pure helpers, not pan/scroll handoff. (Opus+Grok)- Fullscreen is always treated as capped; a 1pt WK overflow (e.g. safe-area padding on
100vh) changes drag-to-dismiss to edge-only. (Opus+Grok) beginPanAtLocationstill toggles the web pan off and on in the same turn while simultaneous recognition is enabled — card and document can both move. (Grok; leftover from #1793)
Noted
- Banner/height-cap gating in
updateScrollEnabledand cancellingmaxDisplayTimewhen the content pan begins — both raised on #1793 — are in this rollup.
Dismissed
- Vertical
MAX(margin, safe area)vs sum — documented as intentional. - Demo
LogView.background(_:ignoresSafeAreaEdges:)— this API is iOS 15+, not 17+; demo ships 16.0. - GPT’s clean bill of health — not used to drop the verified Opus/Grok issues.
Sent by Cursor Automation: PR Reviews
Collaborator
Author
|
Replies to the summary items:
|
fadi-george
force-pushed
the
iam-fixes
branch
from
November 6, 2026 22:36
696dcdc to
c392279
Compare
nan-li
approved these changes
Nov 6, 2026
nan-li
left a comment
Contributor
There was a problem hiding this comment.
these are already reviewed PRs
This was referenced Nov 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Description
One Line Summary
Merge the reviewed IAM layout fixes from
iam-fixesintomain.Details
Motivation
IAMs were laid out wrong on iPhone Duo and resizable scenes, and tall HTML IAMs were clipped with no way to reach the bottom in landscape. These fixes were reviewed and merged into
iam-fixesone at a time.Scope
Rolls up already reviewed PRs, rebased onto
main:Only In-App Messaging UI changes. No public API changes.
Follow-ups
message.heightis not updated when a page resizes. That was already the case before these changes.Testing
Unit testing
OSInAppMessageInsetsTestsandOSInAppMessageScrollTestscover the inset math and the scroll and drag rules.Manual testing
Demo app on simulators: iPhone Duo (folded portrait and landscape, unfolded both shapes), iPhone 18 Pro (portrait and both landscapes) and iPad Pro 11-inch (portrait and landscape). Checked every IAM type plus push notifications. Recaptured screenshots for all poses from this branch.
Affected code checklist
Checklist
Overview
Testing
Final pass
🤖 Generated with Claude Code