fix(ios): publish a placed iPad window's capture in screen space
Summary
An iPad window that does not fill the screen (Windowed Apps) reported subtree frames from its own top-left while its viewport was the window's screen box. As a result, captures clipped, rects named no screenshot position, and taps landed at the point minus the window origin. The capture now publishes screen space through one rule, SnapshotContentTranslation.offset, applied in SnapshotGeometrySpace.normalized. Text-entry probing owns one screen box, ResolvedTextEntryInput.frameOnScreen, from a non-defaulted known/none/unknown vector read once per command. An unknown vector dispatches nothing. Synthesized rotation turns about the sole display. Full-screen iPad, iPhone, and ADR 0025 foldables read no offset and are unchanged. ADR 0004 is amended. 23 files. Closes #3899.
Validation
Head dd067b8932. Size pass: comment; it restores the moved-window, keyboard, and SpringBoard fixture rows and the retap skip-reason log.
pnpm check:affected --run --head dd067b8932: all runnable checks passed.swift test: 23/23.- Runner unit lane, iPhone 17 Pro iOS 27.0: 148/148 at
f8b3d990d7. The readiness and fill-pin slice passed 8/8 on iPhone and iPad atdd067b8932. - iPad Pro 11 (M5): 147/148.
testOverBudgetTypeWithoutResolvableElementTypesApplicationWidefails identically atorigin/main, so the failure is pre-existing. - Windowed iPad live check: root published at (230,305,375Ć486);
press @refandfillworked inside the placed window. iPhonefillread back correctly.
Earlier device evidence (Calendar windowed, moved window, full-screen parity 48/48): https://github.com/callstack/agent-device/pull/3920#issuecomment-6353185335
Risks: landscape under Windowed Apps, Stage Manager, and partly off-screen windows are unmeasured. PR CI does not run the on-device runner unit lane.
š¤ Generated with Claude Code