Releases: callstack/agent-device
Releases · callstack/agent-device
Release list
v0.19.1
Highlights
- TV remote control: Added
tv-remotefor Android TV and tvOS focus navigation. [#1147](#1147) - Session event timeline: Added
agent-device eventsandevents.ndjsonfor compact request/action history. [#1032](#1032) - Re.Pack support:
metro preparenow supports Re.Pack apps and auto-detects Re.Pack projects. [#1145](#1145) - Better visual evidence: iOS simulator screenshots now use logical 1x density by default, and recordings are app-scoped unless requested otherwise. [#1160](#1160), [#1163](#1163)
- More reliable iOS automation: Hardened iOS snapshots, drags, and XCTest recovery paths. [#1144](#1144), [#1148](#1148), [#1158](#1158)
- Clearer agent guidance: Help/docs now better explain
--settle,fillvstype,doctor, and Android IME handling. [#1154](#1157), [#1164](#1164)
What's Changed
- test: remove slow-test ratchet pins by @thymikee in #1143
- fix: soften recovered snapshot warning by @thymikee in #1146
- fix: omit interaction uptime from wire responses by @thymikee in #1142
- fix: keep XCTest tree snapshots on main by @thymikee in #1144
- feat: add TV remote command by @thymikee in #1147
- fix: keep iOS synthesized drags off AX by @thymikee in #1148
- feat: support Re.Pack dev server prepare by @thymikee in #1145
- fix: derive interaction response data transforms by @thymikee in #1149
- fix: improve settle observation guidance by @thymikee in #1154
- refactor: make iOS synthesized gesture policy explicit by @thymikee in #1152
- refactor: derive command identity from descriptors by @thymikee in #1151
- fix: handle Android IME overlays in snapshots by @thymikee in #1157
- fix: narrow client result contracts by @thymikee in #1155
- chore: migrate to TypeScript 7 by @thymikee in #1161
- fix: normalize iOS simulator screenshot density by @thymikee in #1160
- fix: harden iOS XCTest recovery paths by @thymikee in #1158
- feat: add session event timeline by @szdziedzic in #1032
- docs: clarify agent setup and text entry guidance by @thymikee in #1164
- fix: make record app-scoped by default by @thymikee in #1163
Full Changelog: v0.19.0...v0.19.1
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
v0.18.3
What's Changed
- feat: warm the iOS runner build cache from doctor and boot by @thymikee in #1033
- feat: expose daemon artifact inventory by @szdziedzic in #1020
- feat: list daemon artifacts through proxy sessions by @thymikee in #1027
- fix: capture ios device logs with devicectl console by @thymikee in #1026
New Contributors
- @szdziedzic made their first contribution in #1020
Full Changelog: v0.18.2...v0.18.3
v0.18.2
What's Changed
- refactor: collapse public Platform ios/macos into apple (#979) by @thymikee in #1002
- fix: project doctor output platform to the public leaf after the Platform collapse by @thymikee in #1004
- test: surface-wide guard that no command response emits the internal apple platform by @thymikee in #1005
- docs: retire plans/perfect-shape.md — roadmap complete by @thymikee in #1003
- fix: pin agent-cdp 1.6.1 by @thymikee in #1006
- feat: route recording + provider platform gates through PlatformPlugin facets by @thymikee in #1007
- docs: require provider-integration + coverage verification for platform/response changes by @thymikee in #1008
- feat: surface appleOs discriminant on public device output by @thymikee in #1009
- perf: cut iOS open --relaunch from 11s to 2.85s by @thymikee in #1010
- fix: reduce iOS runner keepalive log noise by @thymikee in #1017
- perf: overlap iOS runner prewarm, seed booted-memo, hand runners off across daemon restarts by @thymikee in #1011
- fix: stop retaining iOS runner for scoped and leased closes by @thymikee in #1021
- fix: clarify clean-xcuitest output by @thymikee in #1018
- feat: add opt-in exec command diagnostics by @thymikee in #1019
- fix: surface open timing in debug diagnostics by @thymikee in #1023
- fix: bound retained iOS runner lifetime with an idle stop by @thymikee in #1025
- perf: collapse iOS simulator relaunch into one simctl launch call by @thymikee in #1024
- fix(aws-device-farm): send requested platform in WebDriver capabilities by @devin-ai-integration[bot] in #1028
- fix(cloud-webdriver): extend remote lease TTL for cloud provider connections by @devin-ai-integration[bot] in #1029
- fix(cloud-webdriver): stop artifacts command from allocating a new provider session by @devin-ai-integration[bot] in #1030
New Contributors
- @devin-ai-integration[bot] made their first contribution in #1028
Full Changelog: v0.18.1...v0.18.2
v0.18.1
What's Changed
- refactor: type-safe recording backends + exhaustive capability gating by @thymikee in #894
- perf: reduce Apple runner build overhead by @thymikee in #898
- refactor: derive platform allow-lists from the canonical device tuples by @thymikee in #895
- feat: add AppleOS discriminant to the device model (additive) by @thymikee in #896
- refactor: validate JSON-RPC at the MCP/HTTP boundary by @thymikee in #897
- refactor: derive replay metadata platforms from the canonical selectors by @thymikee in #899
- refactor: remove shallow re-export modules and a dead branch by @thymikee in #901
- refactor: collapse duplicated batch-step validation to one schema by @thymikee in #902
- refactor: extract shared Android instrumentation-helper by @thymikee in #903
- refactor: dedup daemon handler capability/session/recordAction boilerplate by @thymikee in #904
- docs: ADR 0008 (command descriptor) + ADR 0009 (Apple consolidation) by @thymikee in #905
- feat: command-descriptor registry (additive, parity-tested) — Phase 1 step 1 by @thymikee in #906
- feat: build daemon command registry from descriptors, delete the hand table — Phase 1 step 2 by @thymikee in #907
- feat: build capability matrix from descriptors, delete the hand table — Phase 1 step 3 by @thymikee in #908
- feat: build batch allowlist from descriptors, delete the hand list — Phase 1 step 4 by @thymikee in #909
- feat: registry-driven exhaustive command dispatch — Phase 1 step 5 by @thymikee in #910
- feat: additive CommandResult type spine — Phase 1 step 6 by @thymikee in #911
- feat: derive the batch command union from the as-const registry (simplify #909) — Phase 1 step 7 by @thymikee in #912
- feat: PlatformDescriptor registry deriving the capability bucket — Phase 3 step 1 by @thymikee in #914
- feat: typed command results, batch 1 (Phase 2 typed-results) by @thymikee in #913
- docs: add cloud agents video by @thymikee in #915
- refactor: consolidate apple/mobile platform family-groupings via shared predicates — Phase 3 by @thymikee in #921
- feat: opt-in agent-cost wallClockMs behind --cost — Phase 4 slice 1 by @thymikee in #922
- feat: infer install target from artifact by @thymikee in #923
- perf: speed up iOS simulator screenshots by @thymikee in #918
- feat: opt-in agent-cost runnerRoundTrips — Phase 4 slice 2 by @thymikee in #925
- feat: expose opt-in agent-cost over MCP via includeCost — Phase 4 slice 2 by @thymikee in #924
- feat: add opt-in agent-cost nodeCount signal — Phase 4 slice 3 by @thymikee in #926
- perf: reuse Apple runner cache across version bumps by @thymikee in #900
- perf: reduce iOS simulator screenshot overhead by @thymikee in #927
- refactor: extract screenshot-diff domain out of utils — Phase 5 slice 1 by @thymikee in #928
- feat: support resumable proxy uploads by @thymikee in #919
- refactor: break snapshot.ts <-> snapshot-quality.ts type cycle — Phase 5 prep by @thymikee in #931
- refactor: seed src/kernel with snapshot.ts type module — Phase 5 slice 2 by @thymikee in #932
- feat: typed command results, batch 2 (home/back/rotate/app-switcher) — Phase 2 by @thymikee in #934
- feat: typed command results, batch 3 (clipboard, appstate) — Phase 2 by @thymikee in #937
- refactor: add provider device runtime foundation by @thymikee in #933
- feat: typed command results, batch 4 (keyboard) — Phase 2 by @thymikee in #938
- feat: typed errors — supportedOn + retriable signals — Phase 2 by @thymikee in #939
- feat: add replay test reporters by @thymikee in #936
- fix: clean up maestro test reporter output by @thymikee in #935
- feat: per-command MCP outputSchema — Phase 4 by @thymikee in #941
- refactor: move errors/redaction/device into src/kernel — Phase 5 slice 3 by @thymikee in #940
- fix: repoint MCP output-schemas import to kernel/device (unbreak main) by @thymikee in #943
- feat: leveled response views + --level knob with snapshot digest — Phase 4 by @thymikee in #942
- refactor: delete WaitCommandResult/AlertCommandResult mirror types — Phase 2c by @thymikee in #946
- refactor: extract metro/ folder — Phase 5 by @thymikee in #947
- feat: expose responseLevel over MCP — Phase 4 by @thymikee in #944
- feat: screenshot digest response-view — Phase 4 by @thymikee in #945
- refactor: move contracts.ts into src/kernel — Phase 5 by @thymikee in #950
- refactor: extract remote/ folder — Phase 5 by @thymikee in #951
- chore: exclude helper readmes from package by @thymikee in #954
- refactor: extract snapshot/ folder — Phase 5 by @thymikee in #953
- feat: find/get digest response-views + batch-step elision — Phase 4 by @thymikee in #955
- refactor: absorb CLI parser into cli/parser/ — Phase 5 by @thymikee in #958
- fix: avoid unsafe iOS keyboard dismissal by @thymikee in #957
- refactor: PlatformPlugin registry foundation (step a) — Phase 3 by @thymikee in #956
- refactor: extract client/ folder — Phase 5 by @thymikee in #960
- chore: prune public package exports by @thymikee in #961
- refactor: split daemon client driver into daemon/client/ — Phase 5 by @thymikee in #962
- refactor: route capability bucket through PlatformPlugin + pin supports() closures (Phase 3 step b) by @thymikee in #965
- fix: extend iOS physical install timeout by @thymikee in #964
- ci: automate iOS runner request-count gate for the Apple runner unwind (Phase 3 step c prep) by @thymikee in #966
- fix: respect prepare timeout for runner health checks by @thymikee in #967
- feat: support live replay test reporters by @thymikee in #959
- refactor: consolidate Apple platform internals by @thymikee in #968
- docs: fix stale platforms/ios paths after Apple consolidation (#968) + remaining-work plan by @thymikee in #969
- fix: restore runnerRoundTrips agent-cost field dropped in #968 by @thymikee in #970
- docs: distinguish removed request-count CI gate from restored cost.runnerRoundTrips (Phase 3 plan) by @thymikee in #971
- docs: retire phase3-platform-plugin-progress.md; track remaining work in issues (#972) by @thymikee in #982
- test: relocate Apple engine unit tests into platforms/apple/core (#980) by @thymikee in #983
- feat: enforce import-direction DAG (Phase-5 layering lint) by @thymikee in #984
- refactor: split daemon server runtime into daemon/server/ — Phase 5 by @thymikee in #985
- refactor: consolidate public SDK entry barrels into src/sdk/ — Phase 5 by @thymikee in #986
- fix: exempt sdk/ public barrels from R3 platforms-seam — unblock red main by @thymikee in #987
- test: r...
v0.18.0
What's Changed
- docs: clarify agent-device help entrypoint by @thymikee in #884
- feat: support cdp remote bridge sessions by @thymikee in #878
- refactor: tighten daemon output helpers by @thymikee in #892
- refactor: model recording backends by @thymikee in #893
- feat: expose web screen recording by @thymikee in #891
- feat: add integrated device leasing by @thymikee in #890
Full Changelog: v0.17.10...v0.18.0
v0.17.10
What's Changed
- docs: configure agent skill conventions by @thymikee in #871
- fix: avoid copying pnpm node_modules into worktrees by @thymikee in #872
- docs: clarify agent-device QA mental model by @thymikee in #875
- test: migrate Android recording sizing coverage by @thymikee in #876
- fix: refine Apple provider pressure reporting by @thymikee in #877
- test: migrate test app to expo dev client by @thymikee in #881
- fix: clarify proxy runner ownership by @thymikee in #882
- feat: add cdp command agent-cdp passthrough by @thymikee in #873
Full Changelog: v0.17.9...v0.17.10
v0.17.9
What's Changed
- refactor: share daemon HTTP contract helpers by @thymikee in #846
- fix: validate batch steps through command contracts by @thymikee in #848
- refactor: deepen runner command traits by @thymikee in #847
- chore: add worktree include config by @thymikee in #853
- refactor: centralize command family facets by @thymikee in #849
- docs: add README articles and videos by @thymikee in #855
- docs: add selector capture reliability contract by @thymikee in #858
- refactor: migrate command families to facets by @thymikee in #854
- test: guard Maestro swipe stabilization flag by @thymikee in #860
- refactor: unify selector capture runtime by @thymikee in #857
- refactor: extract daemon selector capture runtime by @thymikee in #859
- fix: clean up Android snapshot helper sessions by @thymikee in #862
- fix: add web viewport control and screenshot aliases by @thymikee in #865
- fix: recover Android snapshots from system-only helper output by @thymikee in #861
- fix: use desktop scroll events on macOS by @thymikee in #863
- fix: honor scroll duration across platform plumbing by @thymikee in #866
- fix: resolve web find locators by @thymikee in #870
- fix: enable ios runner prepare in sandboxed environments by @thymikee in #869
Full Changelog: v0.17.8...v0.17.9
v0.17.8
v0.17.7
What's Changed
- feat: add web platform vocabulary by @thymikee in #824
- feat: add semantic web provider seam by @thymikee in #825
- test: cover web provider scenario by @thymikee in #827
- fix: align web snapshot and capability support by @thymikee in #828
- fix: clean daemon-owned ios runner leases by @thymikee in #829
- feat: bridge web provider to agent-browser by @thymikee in #826
- feat(recording): align quality and max-size controls by @ryanda9910 in #816
- feat: manage web backend setup by @thymikee in #833
- fix: preserve web backend setup hint by @thymikee in #835
- chore: remove test-only dead exports by @thymikee in #836
- test: add live web platform smoke by @thymikee in #832
- docs: document minimal web support by @thymikee in #831
- docs: mention web in README tagline by @thymikee in #837
- test: improve SkillGym guidance coverage by @thymikee in #839
- feat: expose web network dump through agent-browser by @thymikee in #838
- docs: document multi-worktree Metro workflow by @thymikee in #841
- docs: simplify CLI help flag scoping by @thymikee in #840
New Contributors
- @ryanda9910 made their first contribution in #816
Full Changelog: v0.17.6...v0.17.7