Skip to content

v0.20.9

Choose a tag to compare

@thymikee thymikee released this 17 Aug 17:04
· 223 commits to main since this release

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 devicectl syntax, 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

Full Changelog: v0.20.8...v0.20.9