v0.20.9
Highlights
- More resilient snapshots across Android and iOS: Android no longer lets empty focusable overlays hide app content, sparse captures now include a fallback screenshot, compact action labels survive presentation, and private-AX settling/custom-action reads are more stable. #1737, #1764, #1773, #1749, #1784
- Safer device ownership and command execution: Local device claims recover stale owners, while boot, apps, app state, shutdown, installation, and application lifecycle move onto request-bound runtimes for consistent cancellation, admission, and provider behavior. #1735, #1747, #1755, #1756, #1757, #1758, #1759
- Better failure evidence: Batch recovery keeps typed signals, URL credential errors are preserved, request-timeout cleanup is platform-aware, recording evidence survives faults, and iOS final-probe diagnostics remain available. #1761, #1762, #1751, #1734, #1776
- Physical-device and recording fixes: Physical iOS screenshots use the current
devicectlsyntax, iOS runner releases install their dependencies, and macOS recording finalization is validated before success is reported. #1769, #1785, #1732 - Stronger release and architecture gates: CLI help examples are checked against the schema, the built daemon is fingerprinted from its real import graph, previously missing CI checks now run, and runtime cutovers are enforced structurally. #1766, #1771, #1770, #1745, #1753
Release breakdown
- 40 commits
- 39 merged pull requests
- 3 contributors
What's Changed
- refactor: tighten capture ownership boundaries by @thymikee in #1736
- refactor: narrow perf API to actionable evidence by @thymikee in #1731
- feat: enforce local device claims and reconcile stale owners by @thymikee in #1735
- docs: amend ADR 0019 with broader-migration governance by @thymikee in #1738
- refactor(daemon): absorb androidAdbExecutor DI slot into the generic provider scope by @thymikee in #1742
- refactor(contracts): consolidate per-domain defineUse wrappers into one neutral defineUse by @thymikee in #1741
- fix(android): stop empty focusable overlays from hiding app content by @thymikee in #1737
- refactor(daemon): split touch interaction orchestration into semantic modules by @thymikee in #1748
- fix(layering): stop double-reporting contracts-authority violations by @thymikee in #1746
- refactor: route selector-resolution structural stages into typed policy by @thymikee in #1744
- fix(batch): preserve typed error recovery signals by @cosin2077 in #1761
- fix(install-source): preserve URL credential validation error by @cosin2077 in #1762
- refactor(registry): exhaustive platformExecution discriminator (ADR 0019 §6) by @thymikee in #1740
- chore: drive unused production exports to zero by @thymikee in #1743
- refactor(layering): give each colliding rule id its own number by @thymikee in #1750
- refactor(layering): one parametrized runtime-command-cutover gate (ADR 0019 §8) by @thymikee in #1745
- refactor: route boot through readiness runtime by @thymikee in #1747
- refactor: route apps through request runtime by @thymikee in #1756
- fix(ios): use current devicectl capture-screenshot syntax for physical devices by @thymikee in #1769
- test(cli-help): gate every help example against the CLI schema by @thymikee in #1766
- fix: preserve recording evidence across fault boundaries by @thymikee in #1734
- fix(ci): run the three checks no workflow was running by @thymikee in #1770
- fix: validate macOS recording finalization by @thymikee in #1732
- fix(ios): make custom-action reads atomically single-flight by @thymikee in #1749
- fix: harden iOS alert smoke scenario by @thymikee in #1767
- refactor(snapshot): clean snapshot ownership by @thymikee in #1754
- refactor(ci): make gate ownership structural (#1429) by @thymikee in #1753
- refactor: route appstate through platform runtime by @thymikee in #1755
- fix(daemon): make request-timeout cleanup and hints platform-aware by @thymikee in #1751
- fix: fingerprint the built daemon's real import graph (#1545) by @thymikee in #1771
- refactor: route shutdown through device runtime by @thymikee in #1757
- refactor: route install commands through platform runtime by @thymikee in #1758
- refactor: route application lifecycle through runtime facts by @thymikee in #1759
- fix: preserve compact snapshot action labels by @thymikee in #1773
- feat(snapshot): attach a fallback screenshot to sparse captures by @thymikee in #1764
- fix(ios): preserve final-probe xcodebuild diagnostics by @emmanuelchucks in #1776
- docs: reposition README around mobile app automation for AI agents by @thymikee in #1780
- fix: install dependencies for iOS runner releases by @thymikee in #1785
- fix: stabilize private AX settle snapshots by @thymikee in #1784
Contributors
- @thymikee — 36 pull requests
- @cosin2077 — 2 pull requests (first contribution)
- @emmanuelchucks — 1 pull request (first contribution)
Full Changelog: v0.20.8...v0.20.9