v0.20.7
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 --foregroundcan 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.
appstateimproved from roughly 146 ms to 68 ms in benchmarks. [#1681](#1681) -
Better iOS automation:
snapshot --actionsexposes 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-28revision 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
- @vwww-droid made their first contribution in #1683
Full Changelog: v0.20.6...v0.20.7