ReviewOS

also looking at this

craft-native/craft

fix(mobile): preserve native editing, navigation, and durable media requests

#369
Merged chris wants to merge codex/native-vertical-scroll-tab-swipes into main
36 files +864 -185

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

packages/ios/templates/CraftHybrid.swiftmodified+8-1
Changes to packages/ios/templates/CraftHybrid.swift
@@ -1936,7 +1936,14 @@ final class CraftHybridController: UIViewController, UINavigationControllerDeleg
19361936 /// The edge swipe goes ahead of the web view's own gestures, which
19371937 /// otherwise hold every touch over the page until the page has answered it.
19381938 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
1939 gestureRecognizer === visibleStack?.interactivePopGestureRecognizer
1939 if gestureRecognizer === visibleStack?.interactivePopGestureRecognizer { return true }
1940 guard tabSwipeRecognizers.contains(where: { $0 === gestureRecognizer }),
1941 let scroll = otherGestureRecognizer.view as? UIScrollView,
1942 otherGestureRecognizer === scroll.panGestureRecognizer,
1943 scroll.isScrollEnabled else { return false }
1944 // A vertical list must not suppress the shell's horizontal tab pan.
1945 // Horizontal content keeps ownership of its own drag instead.
1946 return !scroll.alwaysBounceHorizontal && scroll.contentSize.width <= scroll.bounds.width + 1
19401947 }
19411948
19421949 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {