v0.19.0
Highlights
- Act and observe in one step:
--settlenow returns a settled diff with fresh refs, backed bywait stableand optional--verifyevidence. - Safer refs, selectors, and taps:
tapaliasespress, stale/out-of-viewport refs get warnings, non-hittable targets include hints, and MCP can auto-pin snapshot refs. - Cleaner snapshot verification: snapshot output deduplicates inherited labels/identifiers, and
diff snapshotis promoted for compact before/after checks. - Better diagnostics for agents: typed errors, ADB timeout hints, stderr excerpts, and the new
capabilitiescommand make failures and platform support easier to act on. - More reliable iOS automation: capture stalls are bounded, runner recovery preserves sessions, text entry is faster, and main-thread timeout hints are clearer.
- More durable artifacts and recordings: artifacts have semantic types and deterministic downloads, and Android recordings can recover after daemon restarts.
What's Changed
- fix: hint @ref when a bare snapshot ref is passed as interaction target by @thymikee in #1039
- Surface targetHittable/hint for non-hittable press/fill targets (#1037) by @thymikee in #1040
- fix: report unknown command before flag-support validation by @thymikee in #1038
- feat: accept tap as an alias of press by @thymikee in #1053
- refactor: add shared TTL memo reset registry by @thymikee in #1060
- docs: document conservative revisit triggers by @thymikee in #1056
- refactor: centralize known CLI command checks by @thymikee in #1057
- fix: clarify prepare ios-runner timing overlap by @thymikee in #1058
- refactor: split runner xctestrun module by @thymikee in #1062
- feat(help): document behavioral guarantees in help workflow by @thymikee in #1054
- refactor: split oversized session and apple app files by @thymikee in #1061
- perf: smaller minified output and a lighter eager CLI startup path by @thymikee in #1065
- feat(snapshot): dedup inherited labels/identifiers in output; promote diff snapshot by @thymikee in #1063
- fix: surface stderr excerpts from hand-rolled exec failure wraps by @thymikee in #1072
- fix: make artifact inventory consumption deterministic on download by @thymikee in #1073
- fix: surface typed error codes for metro, MCP, and batch validation failures by @thymikee in #1070
- fix: accept selector-first
isform and print find action confirmations by @thymikee in #1068 - feat: add wait stable settle primitive by @thymikee in #1059
- fix: report expired daemon resources as expiry, not INVALID_ARGS by @thymikee in #1069
- feat(interaction): opt-in --verify evidence for press/click/fill by @thymikee in #1064
- feat: tag daemon artifacts with semantic types by @sjchmiela in #1066
- feat: classify adb failures with actionable hints at the executor level by @thymikee in #1067
- fix(errors): close call-site and consumer gaps around the central error system by @thymikee in #1071
- refactor: harden exec failure wrapping end to end by @thymikee in #1074
- fix: honor wait budgets, preserve the daemon on polling timeouts, refuse off-screen selector taps by @thymikee in #1075
- RFC: ADR 0011 — interaction guarantee contract (path × guarantee matrix) by @thymikee in #1080
- feat: preflight native-ref fast path with shared interaction guards (ADR 0011) by @thymikee in #1082
- refactor: single construction site for interaction responses (ADR 0011 Layer 2) by @thymikee in #1083
- refactor: declare command timeout policy on descriptors (ADR 0011) by @thymikee in #1084
- feat: warn on out-of-viewport coordinate taps (ADR 0011) by @thymikee in #1085
- feat: golden tap-point parity table for TS and the iOS runner (ADR 0011) by @thymikee in #1086
- build: migrate the library build from rslib to tsdown (Rolldown) by @thymikee in #1087
- chore: delete dead tap-by-text runner arm and settledAfterMs; hint on tiny stable trees by @thymikee in #1089
- feat: actionable hint for adb timeouts by @thymikee in #1090
- test: interaction contract suite with registry-driven coverage gate (ADR 0011 Layer 3) by @thymikee in #1092
- ci: drop duplicate unit-test run, cache Size base dist, typecheck with tsgo by @thymikee in #1094
- feat: direct iOS selector falls back to tree resolution on semantic failures (ADR 0011) by @thymikee in #1091
- feat: warn when @refs outlive the session snapshot they came from by @thymikee in #1093
- docs: native-ref dispatch path is web-only in production by @thymikee in #1095
- docs: refocus AGENTS.md on principles and enforcement gates by @thymikee in #1097
- test: slow-test ratchet and speed rules from measured experiments by @thymikee in #1099
- feat: versioned snapshot refs with MCP auto-pinning by @thymikee in #1096
- build: drop tsc entirely and fix sandbox-hostile tests by @thymikee in #1100
- test: split the args.test.ts aggregation along source topology by @thymikee in #1102
- docs: tighten agent operating guide by @thymikee in #1104
- fix: bound iOS capture stalls and make runner recovery session-preserving (#1105) by @thymikee in #1107
- build: support packaged CLI on Node 22.12 by @thymikee in #1116
- test: split interaction runtime tests by @thymikee in #1113
- ci: deepen Node 22 packaged CLI smoke by @thymikee in #1125
- fix: name split declaration chunks by @thymikee in #1127
- test: split the Android platform test aggregation and share the scripted adb stub by @thymikee in #1103
- fix: harden apple runner recovery by @thymikee in #1126
- build: strip runner unit-test blocks from package by @thymikee in #1128
- fix: recover Android recordings after daemon restart by @thymikee in #1129
- fix: reap managed web browser orphans by @thymikee in #1112
- refactor: extract host process primitives by @thymikee in #1134
- feat: add capabilities command by @thymikee in #1133
- feat: --settle returns the settled diff in the interaction response (#1101) by @thymikee in #1106
- refactor: derive command exposure lists from descriptors by @thymikee in #1137
- fix: speed up iOS text entry by @thymikee in #1139
- fix: hint on iOS runner main-thread timeouts by @thymikee in #1140
- fix: simplify Android recording recovery by @thymikee in #1135
- fix: normalize interaction response wire shapes by @thymikee in #1114
- fix: recover completed Android recording from pending-only manifest by @thymikee in #1141
New Contributors
- @sjchmiela made their first contribution in #1066
Full Changelog: v0.18.3...v0.19.0