Repository navigation
MOB-380: on_press_in/on_press_out, held-press Mob.Test API, press-node taps survive re-render - #187
Merged
Merged
Conversation
…tolerant taps Press in/out on any node (iOS UIKit observer, Android via the generated bridge), paired through a touch-down snapshot of press_out's routing. Mob.Test.press_down_xy/press_move_xy/press_up_xy/hold_xy hold a real in-process pointer on Android; by-tag press_in/press_out/hold everywhere. Taps resolve identity-tolerantly: a press's re-render was dropping them. Pre-commit review: reviewer subagent (Codex rate-limited until 7:20 PM); findings fixed (timeout code, max-hold vs move race, doc accuracy). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merge review: reviewer subagent (Codex rate-limited until 7:20 PM). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review found that making every tap identity-tolerant lets a stale
positional tag (Mob.List's {:select, id, index}) reach whichever row the
list moved into that index. mob_send_tap is strict again. The new
mob_send_press_tap resolves by identity and is used only for a node that
also declares on_press_in / on_press_out (iOS: chosen in the on_tap
deserialiser; Android: the generated bridge's nativeSendPressTap).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ror), held-press note on tap_xy Reviewer subagent (Codex rate-limited until 7:20 PM): MERGE; these are its nitpicks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
Merge review: reviewer subagent (Codex rate-limited until 7:20 PM): DO NOT MERGE on f8c1a4c (stale positional tap via identity-tolerant taps) → fixed in 486ac5b (plain taps strict; only press nodes use mob_send_press_tap) → MERGE; nitpicks fixed in e7fdce4 → re-review MERGE, no findings. Emulator re-run after the fix: 20/20 taps at 300 ms and 80 ms gaps on two press nodes and on a plain re-rendering node, press_in/press_out paired. CI tests run 37167577852 green on e7fdce4. Not changed (reviewer: non-blocking): disabled nodes still report press_in/press_out. |
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.
Linear: MOB-380 (speech part: MOB-21 → mob_speech plugin).
on_press_in/on_press_outon any node →{:press_in, tag}/{:press_out, tag}; observe without consuming; paired via a touch-down snapshot of press_out's routing (zigmob_press_begin/end, iOSmob_begin_press). iOS 18+ UIKit observer, iOS 17 DragGesture fallback. Android observer lives in mob_new's bridge (GenericJam/mob_new MOB-380 PR, mob_new 0.6.5).mob_send_press_tap(same slot+pid+tag): a press's re-render was dropping 1–9/80 tap_xy taps on the emulator; 0/160 after. Plain taps keep the generation-strictmob_send_tap(486ac5b, after review found a stale positional Mob.List{:select, id, index}could otherwise hit a moved row). Re-verified on the emulator: 20/20 taps at 300 ms and 80 ms gaps on two press nodes and a plain re-rendering node.Mob.Test.press_down_xy/4,press_move_xy/3,press_up_xy/3,hold_xy/4hold a real in-process pointer on Android (Compose detectTapGestures sees onPress/tryAwaitRelease); by-tagpress_in/2,press_out/2,hold/3everywhere; iOS xy →:not_supported.Verified: Android emulator (hold_xy 1500 → press_in..press_out 1669ms → tap; Compose probe pressed/long_press/released held_ms≈hold); iOS 26 simulator with real XCTest touches. Not run on physical iPhone.
Review: reviewer subagent (Codex rate-limited until 7:20 PM): DO NOT SHIP only on mob_new's mob floor (fixed in the mob_new PR); other findings fixed. Merge-time re-review pending.
Release: mob 0.9.12 (after 0.9.11, MOB-379).