fix(ios): support remote-hosted alerts on physical devices#1232
Conversation
|
Review at
Also, No fixer was dispatched. An external Claude pass was not run because export was not separately authorized. |
…est probe routing Addresses review on callstack#1232: - Gate the remote-host probe to a foreground host (RemoteHostedSystemModalPolicy.isEligibleHostState); background/unknown hosts fail closed instead of substituting an unrelated action tree. - Wrap the alert-resolution fallback query in safeElementsQuery so a dismissed remote host raising kAXErrorServerNotFound is absorbed. - Extract routing/gating into RemoteHostedSystemModalPolicy and add simulator-free unit tests under AGENT_DEVICE_RUNNER_UNIT_TESTS.
|
Pushed 1. Dismissal re-query throwing 2. 3. Foreground not proven before substituting the tree. Now fails closed to 4. Executable coverage for routing/fail-closed. Extracted the routing + gating into a pure Also switched |
On-device evidenceTo back the fixes with something concrete rather than a "will attach later": below are the on-device observations behind each branch. Captured on a physical iPhone 14 / iOS 26.5, picker on screen (one discovered accessory, Host process is foreground — backs the SpringBoard mirror is present but its actions are unusable — backs The mirror reports 3 buttons, but Direct host-scope query sees and can act on the real elements — backs the probe path: Query completed in ~0.92s. Dismissal raises Re-querying the host immediately after it dismisses throws — exactly what the wrapped SpringBoard path can itself yield the modal snapshot when the mirror is momentarily hittable: an interactive snapshot at one point returned the picker as a 5-node To be precise about what this is and isn't: these are observations from the stock runner + a probe test, mapping 1:1 to the patch's four branches (foreground gate, zero-action probe trigger, direct-scope readability, post-dismiss |
|
Re-review at Readiness is still withheld because the attached device evidence explicitly uses the stock
The added policy tests compile, but CI's |
…) when the springboard mirror yields no hittable actions
…est probe routing Addresses review on callstack#1232: - Gate the remote-host probe to a foreground host (RemoteHostedSystemModalPolicy.isEligibleHostState); background/unknown hosts fail closed instead of substituting an unrelated action tree. - Wrap the alert-resolution fallback query in safeElementsQuery so a dismissed remote host raising kAXErrorServerNotFound is absorbed. - Extract routing/gating into RemoteHostedSystemModalPolicy and add simulator-free unit tests under AGENT_DEVICE_RUNNER_UNIT_TESTS.
14eb8a5 to
d15613b
Compare
Fixes #1231.
Summary
Make physical-iOS system alerts reliable, including AccessorySetupKit pickers hosted by
com.apple.AccessorySetupUI.alerton physical iOS while keeping physical iPadOS, visionOS, tvOS, clipboard, and settings gated pending separate verification.Validation
thymikee-iphone:alert get,alert wait,alert dismiss, andalert acceptagainst the current Agent Device Tester app.alertis capability-gated — queryingcom.apple.AccessorySetupUIdirectly works reliably #1231: direct host queries reliably expose and dismiss the picker; the host is never activated.pnpm build:xcuitest(iOS Simulator and macOS build-for-testing).pnpm check:affected --base origin/main --run(4,035 related/unit tests and 121 provider-integration tests, plus coverage, build, formatting, lint, typecheck, layering, and fallow).