feat(mobile): drag iOS threads from their context menus - #10497
Closed
juliusmarminge wants to merge 7 commits into
Closed
feat(mobile): drag iOS threads from their context menus#10497juliusmarminge wants to merge 7 commits into
juliusmarminge wants to merge 7 commits into
Conversation
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
from
September 7, 2026 10:44
11388e0 to
d0481a7
Compare
juliusmarminge
force-pushed
the
t3code/mobile-drag-drop-threads
branch
from
September 7, 2026 10:52
fc8642d to
8813025
Compare
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
5 times, most recently
from
September 8, 2026 22:56
6b39d75 to
f1a9a77
Compare
juliusmarminge
force-pushed
the
t3code/mobile-drag-drop-threads
branch
from
September 8, 2026 22:56
d577ee4 to
9fcca6d
Compare
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
from
September 8, 2026 23:24
f1a9a77 to
0b57213
Compare
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
from
September 8, 2026 23:30
0b57213 to
893b2be
Compare
juliusmarminge
force-pushed
the
t3code/mobile-drag-drop-threads
branch
from
September 8, 2026 23:58
4cec59e to
c2e9ca7
Compare
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
from
September 8, 2026 23:58
893b2be to
caff97e
Compare
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
3 times, most recently
from
September 9, 2026 00:23
4d15e4d to
2d54f0f
Compare
juliusmarminge
force-pushed
the
t3code/mobile-thread-native-drag
branch
from
September 9, 2026 00:33
2d54f0f to
2f3ee76
Compare
juliusmarminge
removed this pull request from stack #10498
September 9, 2026 02:00
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.
Long-press thread menus need to coexist with direct dragging, including moves between Pinned and Active. This adds native iOS drag/drop to the context-menu host view and routes drops through the lifecycle-aware arrangement actions from #10496.
All live thread rows can initiate a drag, including expanded Snoozed and Settled rows. Pinned and Active rows and headers accept drops. The Settled divider accepts settling drops and remains available when empty. Headers remain available when a section is empty, in both Home and the navigation sidebar. Moving into a section pins, unpins, wakes, or un-settles the source before saving its position. Starting a drag suppresses row taps. Android uses the shared Arrange screen.
During a native drag, snapshots of visible rows slide aside to open a full insertion gap. UIKit drop targets keep their original coordinates so the animated rows cannot destabilize hit testing. Pictures and original opacity are restored on completion or cancellation; recycled cells are refreshed during edge scrolling. Animation runs only during the gesture and respects Reduce Motion. A live native action badge follows the dragged card and updates as it crosses sections. Source-provided action labels use the same mapping as Arrange; invalid targets hide the badge, and unsupported settlement is rejected. The thread snapshot stays stable.
Validation: 78 focused tests and mobile TypeScript pass. The shared drop actions passed real Android Arrange gestures for reorder, pin, unpin, empty-section pinning, wake, and un-settle, with persisted server state checked. The first layer contains screenshots and a recording.
Draft limitation: the updated native iOS gesture still needs an on-device pass. The UIKit preview and live badge helper passes Swift typechecking against the iOS Simulator SDK, but Xcode 27 automation cannot inject the required drag movement. Shared Arrange motion passed a real Android emulator run; the first layer contains the recording.
This native patch requires a new binary. Standalone builds without Metro are queued from the final stack: iOS, Android.
Model: GPT-6. Harness: Codex.