You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Route bare iOS type after a tapped input with a hidden software keyboard through the runner's process-targeted first-responder synthesis path.
This avoids XCTest's flaky XCUIElement.typeText behavior that could deliver only the first character. Tap-witness provenance is now explicit, the regression test pins the synthesized route, and an unavailable synthesis bridge returns a typed error instead of falling back to the unreliable path.
Document TEXT_INPUT_SYNTHESIS_UNAVAILABLE and its “show the software keyboard, then retry” recovery in the command reference. Generated help/metadata and skills are unchanged because they do not own error-specific recovery guidance.
Scope: five iOS runner files and one command-reference file; no expansion beyond iOS text entry.
Validation
iPhone 17 Pro simulator, iOS 26.2: testBareTypeUsesTappedInputWhenSoftwareKeyboardIsHidden passed with all 17 characters and synthesized-first-responder
Same simulator: testBareDelayedTypeFailsWhenTappedInputDisappearsMidCommand passed
Same simulator: route-policy and private-synthesis status tests passed
Reviewed exact head c172c7c93. The runtime change is sound: the one-shot, bundle/PID-bound tap witness selects the hidden-keyboard bare-type route; synthesis is process-targeted; unavailable synthesis fails closed; and the disappearing-target test prevents silent mid-command success. The exact-head iPhone 17 Pro evidence exercises the production route and observes all 17 characters.
One readiness finding:
P2 — document the new user-facing failure contract. This PR adds stable error TEXT_INPUT_SYNTHESIS_UNAVAILABLE with recovery semantics, but the body says docs are unchanged because there is no command-surface change. website/docs/docs/commands.md already documents the sibling TEXT_INPUT_NOT_FOCUSED outcome for type; add the new error and its “show the software keyboard, then retry” recovery there (and update generated help/metadata only if that surface owns the same guidance). This is observable command behavior, not purely internal routing.
No further code finding or device-evidence gap. The branch is mergeable; required CI lanes have not appeared yet beyond queued CodeQL, but pending CI is separate from this documentation blocker.
Re-reviewed at 48eded2ce. The missing user-facing recovery guidance for TEXT_INPUT_SYNTHESIS_UNAVAILABLE is now documented in the command reference, and the PR body correctly identifies that generated help/metadata do not own error-specific recovery guidance. Runtime diff and device evidence are unchanged; pnpm check:affected --run passed. No remaining code findings. Mergeable; CodeQL is queued with no confirmed failure.
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
ready-for-humanValid work that needs human implementation, judgment, or maintainer merge
1 participant
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.
Summary
Route bare iOS
typeafter a tapped input with a hidden software keyboard through the runner's process-targeted first-responder synthesis path.This avoids XCTest's flaky
XCUIElement.typeTextbehavior that could deliver only the first character. Tap-witness provenance is now explicit, the regression test pins the synthesized route, and an unavailable synthesis bridge returns a typed error instead of falling back to the unreliable path.Document
TEXT_INPUT_SYNTHESIS_UNAVAILABLEand its “show the software keyboard, then retry” recovery in the command reference. Generated help/metadata and skills are unchanged because they do not own error-specific recovery guidance.Scope: five iOS runner files and one command-reference file; no expansion beyond iOS text entry.
Validation
testBareTypeUsesTappedInputWhenSoftwareKeyboardIsHiddenpassed with all 17 characters andsynthesized-first-respondertestBareDelayedTypeFailsWhenTappedInputDisappearsMidCommandpassedAGENT_DEVICE_XCUITEST_INCLUDE_UNIT_TESTS=1 pnpm build:xcuitest:iospnpm check:affected --run