Skip to content

v0.20.7

Choose a tag to compare

@thymikee thymikee released this 10 Aug 19:41
· 234 commits to main since this release

Highlights

  • HarmonyOS support: Automate HarmonyOS devices through HDC, including discovery, snapshots, app lifecycle, HAP deployment, interactions, gestures, keyboard actions, logs, performance sampling, screen recording, and diagnostics. [#1683](#1683)

  • Start working in fewer turns: open --foreground can attach to the active app on an unambiguous iOS simulator and return the first interactive snapshot immediately. [#1670](#1670), [#1671](#1671), [#1693](#1693)

  • Faster CLI startup: Common warm commands are up to 54% faster by keeping HTTP and ICU initialization off the local CLI startup path. appstate improved from roughly 146 ms to 68 ms in benchmarks. [#1681](#1681)

  • Better iOS automation: snapshot --actions exposes custom accessibility actions on merged elements, such as React Native feed cards. Hidden-keyboard text entry now waits for the complete text commit before reporting success. [#1665](#1665), [#1676](#1676)

  • More reliable Android interactions: Snapshot recovery now retires unhealthy helper sessions, masked fills return target-bound verification evidence, and free-text shell arguments are safely quoted. [#1708](#1708), [#1645](#1645)

  • Stronger cloud and remote-device support: BrowserStack and AWS Device Farm iOS sessions can capture snapshots reliably, while cloud fills wait for evidence that the intended field received focus. Concurrent remote connections are isolated correctly. [#1666](#1666), [#1675](#1675)

  • Modern MCP compatibility: The MCP server supports the stateless 2026-07-28 revision alongside legacy handshake clients, including discovery and cacheable tool metadata. [#1678](#1678)

  • Safer targeting and recovery: Mutating selectors now reject genuinely distinct ambiguous matches instead of silently choosing one. Device inventory, logs, and network capture also moved onto request-bound platform runtimes, improving cancellation, recovery, and process-relaunch handling. [#1667](#1667), [#1699](#1699), [#1701](#1701), [#1702](#1702)

What's Changed

  • perf(cli): lazy-load dedicated client command handlers by @thymikee in #1660
  • fix(daemon): SESSION_NOT_FOUND hint names the detected foreground app by @thymikee in #1662
  • [RFC] prototype: open --foreground collapses the snapshot->hint->open->snapshot dance into one call by @thymikee in #1670
  • fix(test): deterministic temp-dir cleanup across node --test lanes by @thymikee in #1661
  • feat(cli): compact workflow help card + version header by @thymikee in #1663
  • fix: heal dangling XCTestDevices redirect and prove lock-owner death before reclaim by @thymikee in #1672
  • fix(cloud): unblock iOS snapshot and gate cloud fill on text-entry focus (#1658) by @thymikee in #1666
  • fix(test): clean Swift toolchain temporary directories by @thymikee in #1664
  • fix: enforce replay timeout envelope by @thymikee in #1674
  • fix(ios): wait for hidden-keyboard synthesized text to commit before responding by @thymikee in #1676
  • feat(ios): expose AX custom actions on merged accessibility elements by @thymikee in #1665
  • refactor(find): resolve a mutating find's target once, not twice (#1654) by @thymikee in #1669
  • fix(daemon): open --foreground P1 hotfix — selector rejection, interactive snapshot, capture-failure masking by @thymikee in #1671
  • fix: isolate concurrent remote connections by @thymikee in #1675
  • perf(cli): keep node:http and ICU off the CLI startup path (-54% warm call) by @thymikee in #1681
  • fix: reject distinct ambiguous mutation targets by @thymikee in #1667
  • test: measure oracle liveness suite-wide; pin the one dead-path oracle by @thymikee in #1679
  • docs(cli): advertise open --foreground and snapshot --actions in the workflow card by @thymikee in #1682
  • feat(mcp): serve the stateless 2026-07-28 revision alongside the legacy handshake by @thymikee in #1678
  • fix: harden artifact ingestion boundaries by @thymikee in #1692
  • perf: collapse app-driving startup turns by @thymikee in #1693
  • docs: split device cloud integration guides by @thymikee in #1695
  • feat: add HarmonyOS support by @vwww-droid in #1683
  • docs: adopt request-bound platform runtime by @thymikee in #1697
  • refactor: extract platform device inventory runtime by @thymikee in #1699
  • fix: harden Android snapshot and fill reliability by @thymikee in #1708
  • fix(android): shell-quote free-text arguments reaching the device shell by @thymikee in #1645
  • test: cap Vitest workers for parallel worktrees by @thymikee in #1710
  • fix(test): include workspace packages in changed-line coverage by @thymikee in #1711
  • docs: align snapshot fallback and actions guidance by @thymikee in #1713
  • refactor: extract platform log runtime by @thymikee in #1701
  • refactor: extract platform network runtime by @thymikee in #1702
  • docs: record platform runtime adoption checkpoint by @thymikee in #1703
  • fix(record): make an aborted authoring recording terminal by construction by @thymikee in #1712
  • perf: speed up iOS agent recovery and streamline CLI guidance by @thymikee in #1700
  • test: add daemon RPC wire-surface compatibility gate by @thymikee in #1717
  • docs: prefer design fixes over regression-only guards by @thymikee in #1722
  • feat: add simulator verification skills by @thymikee in #1716

New Contributors

Full Changelog: v0.20.6...v0.20.7