Skip to content

ipb 0.3.0 — deep AX and element operations

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:19
· 42 commits to main since this release
59d8502

Adds native deep accessibility snapshots and direct element operations over the existing paired USB / DevicesApp AX connection. The product installs no phone server and starts no XCTest session.

New commands

  • ipb ui --deep: native ordered hierarchy, logical-point rectangles, identifiers, hints and AX visibility; repeated native handles retain their real paths.
  • ipb ui --deep --full-state: additional structural enabled/focused/selected and role/placeholder reads. This mode costs extra requests and is opt-in.
  • ipb ui hit-test --point X Y: the actual native element at a normalized point.
  • ipb ui press --identifier ID: resolve a fresh exact identifier, verify state/geometry/centre hit and foreground, then submit one native press. No automatic replay or HID fallback. Failure after submission uses exit 6 and preserves accepted/refused/unknown status; native acceptance is separate from UI-effect proof.

Default ui retains ordinary AXChildren. See the UI guide for setup, output and limits.

Validation and requirements

Native build, 59 AX regressions, existing host checks, archive/hash checks and a real precompiled Homebrew install/test pass on macOS 27 CI. Same-page iPhone 13 Pro / iOS 27 controls match every ordered path against XCTest on Calculator (45), History (99) and Settings (171), with matching usable rectangles. Guarded Calculator actions have independent tree/screenshot effects, including after the reference Runner is removed. The current local tag build reads Settings 138 after the reference stops and successfully presses Three; counts are session/page scoped.

Stable precompiled package: macOS 27 ARM64 with compatible Apple Xcode 27 development components, paired iOS 27+, Developer Mode and an unlocked device. AX additionally needs Python 3.11+ with pymobiledevice3==11.10.2; install the optional host environment separately. No Apple frameworks/DDI or Python dependencies are bundled. Signatures are ad-hoc, without Developer ID notarization.

Known limits

AX visibility/focus are distinct from XCTest semantics, native classes are not a complete XCTest type mapper, and output remains non-atomic. Changing Bilibili login/keyboard backgrounds can fail strict reconciliation. Press effects are Calculator-validated; prior Automation Mode dependence on a never-automated device is unresolved. The complete supported native macOS 27 device/HID/media/interactive gate remains open. The maintainer authorizes this scoped validation release using the recorded AX controls and CI/package/Homebrew checks; it does not certify universal page or device acceptance.

Install with brew install ipbtools/ipb/ipb; update stable installations with ipb update or brew upgrade ipbtools/ipb/ipb. macOS 26 development hosts can build the same tag locally as supplemental testing; the stable formula retains its macOS 27 guard.

Build/package/Homebrew verification: release run 38402750792. Tagged source: 59d850254c5d6c3417e113b07776ce2d80d20816.