Skip to content

v0.21.29

Choose a tag to compare

@thymikee thymikee released this 20 Oct 15:35
· 64 commits to main since this release
701bb51

What's Changed

  • ci(release): drop the stable approval gate and run nightlies once a day by @thymikee in #3621
  • refactor(replay-port): own the replay backend contract in contracts by @thymikee in #3622
  • fix(settle): arm the dismissal confirmation on the producer's presented-surface fact by @thymikee in #3570
  • fix(lease): return a retried allocation's own lease and refuse an unbound renewed lease by @thymikee in #3619
  • ci: cut runner load from drafts, re-pushes, and the mutation canary by @thymikee in #3624
  • fix(build): resolve tsdown vendor alias with fileURLToPath by @kkkhs in #3629
  • refactor(daemon): move wire request and response types out of the daemon package by @thymikee in #3616
  • refactor(daemon): move CLI-shared daemon modules out of the daemon package and gate CLI reachability (R78) by @thymikee in #3625
  • fix(android): open the macOS emulator window behind the focused app by @thymikee in #3617
  • refactor(maestro): shape the replay backend as a create(host) plugin by @thymikee in #3623
  • refactor(interaction): move the moving-target decision policy into the runtime gate by @thymikee in #3631
  • refactor(daemon): add the single package entry and resolve its metadata consumers by @thymikee in #3633
  • chore(gates): drop the daemon entry's over-ceiling approval now main carries it by @thymikee in #3653
  • chore(interaction): remove retired readiness forwarding by @thymikee in #3637
  • fix(android): refuse close when stop fences expire by @thymikee in #3562
  • refactor(daemon): move the daemon-only transport tests into the package by @thymikee in #3638
  • fix(interaction): preserve failed settle counters by @thymikee in #3640
  • refactor(command-registry): name registry descriptor tests for the module they test by @thymikee in #3644
  • refactor(replay): colocate eight package tests and drop four unused exports by @thymikee in #3647
  • refactor(test): colocate sdk, remote and metro tests with their modules by @thymikee in #3646
  • refactor(move): name the agent-device client tests for their module by @thymikee in #3649
  • refactor(replay): move four daemon tests of replay-port code into replay-port by @thymikee in #3650
  • refactor(contracts,selectors,device-selection): name tests for the module they test by @thymikee in #3651
  • refactor(capture-kit): colocate fifteen tests with the modules they test by @thymikee in #3654
  • refactor(move): colocate client and cli tests with their modules by @thymikee in #3655
  • refactor(command-registry): move the wait-positionals test into the package by @thymikee in #3656
  • refactor(platform-apple): colocate sixteen tests with the modules they test by @thymikee in #3657
  • refactor(move): move the kernel errors tests into the kernel package by @thymikee in #3665
  • refactor(contracts): move the android input ownership test beside its module by @thymikee in #3661
  • refactor(move): move artifact guards to test/repo-guards by @thymikee in #3663
  • refactor(apple): reduce SnapshotPresentedSurface to the element-type rule the runner runs by @thymikee in #3632
  • refactor(tests): colocate platform-web, android, host-kit, kernel, webdriver and vega tests by @thymikee in #3648
  • refactor(interaction): inline unavailable settle result type by @thymikee in #3676
  • fix(limrun): attribute API-key traffic with the SDK userAgent option by @thymikee in #3679
  • refactor(move): move the interaction-guarantee and command-doc guards to test/repo-guards by @thymikee in #3680
  • refactor(platform-apple): split apps.test.ts by the module each test covers by @thymikee in #3671
  • refactor(move): move the snapshot-diagnostics and gesture-plan tests into contracts by @thymikee in #3668
  • refactor(platform-apple): stop exporting the runner test host by @thymikee in #3675
  • refactor(daemon): require composed router capabilities by @thymikee in #3639
  • fix(limrun): normalize variant iOS scalar attributes into snapshot text by @thymikee in #3641
  • refactor(capture): require complete runtime snapshots by @thymikee in #3642
  • chore(tooling): explicitly typecheck coverage verdicts by @thymikee in #3643
  • feat(sdk): export isUnreadableCaptureContentError by @okwasniewski in #3664
  • refactor(move): move the iOS presentation-once test into capture-kit by @thymikee in #3677
  • refactor(move): move the Android capture-failure-reason test into platform-android by @thymikee in #3678
  • refactor(daemon): relocate the server runtime tests by what they assert by @thymikee in #3652
  • refactor(daemon): relocate the handler tests by what they assert by @thymikee in #3666
  • refactor(daemon): relocate the session-lifecycle tests by what they assert by @thymikee in #3670
  • refactor(daemon): relocate the interaction touch tests by what they assert by @thymikee in #3672
  • refactor(layering): R83 forbids package exports that publish test support by @thymikee in #3645
  • refactor(layering): R11 lets test support resolve private siblings through devDependencies by @thymikee in #3659
  • refactor(test-kit): one named-export entry, and pin its shape in R83 by @thymikee in #3667
  • refactor(layering): R84 requires each new unit test to be named for a module beside it by @thymikee in #3669
  • docs: say where tests and fixtures live and which rules hold it by @thymikee in #3673
  • fix(test): migrate the daemon stack's tests to complete runtime snapshots by @thymikee in #3684
  • refactor(settings): declare settings once and admit them per setting by @thymikee in #3662
  • chore(daemon): declare @agent-device/proxy as a devDependency by @thymikee in #3685
  • build(typescript): move root project references into tsconfig.typecheck.json by @thymikee in #3688
  • ci: fold six CI jobs into four with parallel and background steps; cancel superseded and closed-PR runs by @thymikee in #3658
  • refactor(test-kit): host the target classification capture fixture by @thymikee in #3691
  • refactor(test-kit): move the dispatch-disclosure harness out of contracts by @thymikee in #3690
  • fix(ios): handle delayed launch confirmations without stopping XCTest by @thymikee in #3682
  • refactor(test-kit): drop command-registry by making the replay-script generator a root fixture by @thymikee in #3687
  • refactor(test-kit): drop the daemon-contracts dependency by @thymikee in #3686
  • refactor(daemon-contracts): drop the registration and claims fixture exports by @thymikee in #3689
  • feat(react-devtools): inspect React components and profile renders through the Metro inspector by @thymikee in #3613
  • fix(record): start the touch overlay budget when record stop starts finalizing by @thymikee in #3697
  • fix(record): record a remote client's default recording on the daemon host by @thymikee in #3696
  • refactor(react-devtools): reuse CLI output and Metro session ownership by @thymikee in #3694
  • refactor(daemon): relocate the find tests by what they assert by @thymikee in #3693
  • refactor(daemon): relocate the settle, disclosure and capture tests by what they assert by @thymikee in #3698
  • refactor(daemon): relocate the target-evidence tests by what they assert by @thymikee in #3700
  • refactor(daemon): own the replay script source fixture where it is used by @thymikee in #3704
  • test(daemon): fold the touch-forwarding command-surface fake into the touch fake by @thymikee in #3708
  • refactor(test-kit): move the interaction-targeting node fixtures out of selectors by @thymikee in #3709
  • refactor(react-native): collocate Metro, companion, and DevTools by @thymikee in #3706
  • feat(tooling): simplify agent workflows and validation by @thymikee in #3705
  • refactor(capture-kit): move screenshot-diff beside its pixel worker and overlays by @thymikee in #3710
  • feat(settings): add Android mobile-data on|off by @mikolajadamowicz in #3636
  • refactor(plugins): extract the provider plugins into a private package by @thymikee in #3712
  • refactor(remote): extract src/remote into @agent-device/remote by @thymikee in #3711
  • docs(fill): typed-input privacy stops at agent-device surfaces by @thymikee in #3719
  • test(coverage): split gap rows into owed work and accepted limitations by @thymikee in #3717
  • fix(runner): refuse an iOS coordinate fill whose point names no text input by @thymikee in #3718
  • docs(adr): write the replay ADR and proposed ADRs in ASD-STE100 by @thymikee in #3730
  • feat(apps): add standalone uninstall command by @mikolajadamowicz in #3720
  • fix(ios): alert dismiss picks a listed decline, never a guessed one by @thymikee in #3715
  • refactor(platform): colocate the HarmonyOS, Linux and web interactors behind lazy factory facades by @thymikee in #3713
  • test: move root src tests off the daemon's testing exports by @thymikee in #3728
  • fix(maestro): type inputText with a 75 ms per-character delay on Android by @airowe in #3725
  • fix(find): refuse a focus match behind the visible keyboard (#2622) by @thymikee in #3727
  • test(coverage): record Linux uninstall as an accepted limitation by @thymikee in #3740
  • fix(scroll): refuse an unreadable capture before scroll top/bottom decides by @airowe in #3736
  • fix(macos): attach to a running app instead of launching a duplicate on open by @thymikee in #3707
  • feat(android): simulate an incoming call or SMS on an emulator by @mikolajadamowicz in #3724
  • docs(agents): simplify review scope and follow-up rounds by @thymikee in #3741
  • fix(android): ignore emulator log lines in -list-avds output by @airowe in #3743
  • test: move the daemon-composition tests off the daemon's testing exports by @thymikee in #3742
  • fix(apple): name an Xcode too old for its host macOS as a runner startup failure by @thymikee in #3739
  • refactor(plugins): make the plugin framework provider-independent by @thymikee in #3722
  • test: route test/ and scripts/ off the daemon's testing exports by @thymikee in #3733
  • fix(daemon): answer a named missing session on the session, not the device by @thymikee in #3701
  • feat(daemon): quiesce request that retires an idle daemon atomically by @thymikee in #3764
  • feat(client): daemonLifecycle attach mode and ensureDaemon() by @thymikee in #3765
  • feat(cli): ensure the daemon explicitly before attaching in the CLI and MCP by @thymikee in #3766
  • fix(daemon): refuse leases for providers without a registered runtime by @thymikee in #3773
  • fix(daemon-client): wait for an acknowledged quiesce instead of killing the daemon by @thymikee in #3780
  • refactor(daemon): publish a single package entrypoint by @thymikee in #3781
  • feat(plugins): plugin contract v2 and one provider registry by @thymikee in #3767
  • feat(daemon): daemon status lists the registered provider plugins by @thymikee in #3768
  • docs(plugins): document plugin contract v2, the inventory and ADR 0034 by @thymikee in #3769
  • feat(provider-testmu): publish @agent-device/testmu on plugin contract v2 by @thymikee in #3770
  • fix(ios-runner): stop wide sliders from wedging tree snapshots by @gwdp in #3776
  • fix(daemon): scope a transient device claim to the session that holds it by @thymikee in #3714
  • fix(daemon-client): document the drain timeout and tighten ensureDaemon follow-ups by @thymikee in #3783
  • fix: align replay, SDK, and session boundaries with ADRs by @thymikee in #3762
  • fix(daemon): retain cleanup locks and preserve healed snapshots by @thymikee in #3760
  • docs(agents): write agent docs in ASD-STE100 and remove misleading docs by @thymikee in #3723
  • fix(scroll): take edge hints from a same-rect scrollable ancestor by @airowe in #3784
  • build(package): stop shipping Swift test sources by @thymikee in #3785
  • test(ios): isolate smoke contracts and synchronize observable state by @thymikee in #3786
  • fix(help): correct input and MCP descriptions, add a first-screen help gate by @thymikee in #3788
  • fix(resources): point tenant isolation lease errors to leases.allocate by @mvanhorn in #3635
  • feat(host): capture HostEnvironment once at entry points by @thymikee in #3763
  • feat(daemon): the runtime owns its state and never the process by @thymikee in #3772
  • docs(adr): write runtime and architecture ADRs in ASD-STE100 by @thymikee in #3731
  • docs(adr): write ADRs 0001–0011 and 0013–0017 in ASD-STE100 by @thymikee in #3729
  • fix(cli): refuse an empty numeric flag value instead of reading it as 0 by @RaphaelFakhri in #3793
  • perf(android): avoid animation stalls in capture and viewport reads by @thymikee in #3790
  • fix(apple): refuse captures whose window or panel identity is unknown by @thymikee in #3761
  • fix(daemon): close startup and shutdown ownership gaps by @thymikee in #3795
  • docs(adr): correct stale facts in the ADR set by @thymikee in #3796
  • docs(adr): add the ADR format guide and the write route by @thymikee in #3799
  • fix(daemon): replace fixed 15s startup kill with progress-aware startup budget by @thymikee in #3791
  • chore(deps): update fallow to 3.34.0 by @thymikee in #3789
  • chore: remove CHANGELOG.md again and gitignore it by @thymikee in #3803
  • fix(ios): report the alert's own title and surface an unanswered launch confirmation by @thymikee in #3732
  • test(ios): stabilize text clearing and snapshot budget regressions by @thymikee in #3802
  • docs(adr): merge ADR 0003 into the ADR 0008 descriptor decision by @thymikee in #3810
  • feat(android): add settings bluetooth on|off by @mikolajadamowicz in #3721
  • fix(scroll): keep adb-backed Android directional swipes inside the resolved scrollable by @airowe in #3746
  • chore: enforce file size limits with oxlint by @thymikee in #3804
  • refactor(host): read every configuration value from an explicit host (#3794) by @thymikee in #3798
  • refactor(contracts): move telephony input parsing out of device-rotation by @mikolajadamowicz in #3812
  • ci: run iOS and macOS smoke on one Apple runner by @thymikee in #3809
  • perf(ios): reduce capture probes and text entry waits by @thymikee in #3813
  • fix(daemon): preserve recorded ownership through stop and cleanup by @thymikee in #3806
  • fix(daemon): finalize every host-owned close through registration by @thymikee in #3797
  • perf: reduce iOS input readiness and PNG encoding latency by @thymikee in #3820
  • refactor(host): enter one runtime store once per daemon runtime (#3794) by @thymikee in #3818
  • feat(limrun): serve iOS alert get/wait/accept/dismiss from tree capture by @thymikee in #3699
  • test(ios): speed up fixtures and run native regressions nightly by @thymikee in #3824
  • refactor(daemon): resolve configuration from the owning runtime host by @thymikee in #3826
  • refactor(replay): pass runtime hosts through replay and device selection by @thymikee in #3827
  • refactor(runtime): use owning hosts at process and adb boundaries by @thymikee in #3828
  • refactor(commands): read command inputs and output from caller hosts by @thymikee in #3829
  • chore(gates): confine process globals to declared entry points by @thymikee in #3823
  • perf(android): reuse live helper for input and capture by @thymikee in #3811
  • perf(android): bound target readiness and confirm moved clears by @thymikee in #3815
  • feat(apple): admit two-finger gestures on physical iOS devices by @camchis in #3838
  • docs(ios): record SpringBoard sessions as verified on a physical iPhone by @camchis in #3840
  • perf(ci): overlap iOS simulator boot with the native build by @thymikee in #3836
  • test(android): prepare the snapshot helper before landmark waits by @thymikee in #3834
  • fix(sdk): scope released entries and deferred provider calls by @thymikee in #3833
  • feat(android): hand rotation back to the sensor with orientation auto by @mikolajadamowicz in #3822
  • fix(apple): key the toolchain fingerprint memo on the resolved xcode-select dir by @thymikee in #3726
  • feat(scroll): support explicit budgets for long target searches by @thymikee in #3837
  • feat(screenshot): support selector crops on CoreDevice iPhones by @camchis in #3839
  • docs(adr): drop the withdrawn host allocator design from ADR 0021 by @thymikee in #3845
  • fix(alert): align local Apple and Limrun button choices by @thymikee in #3825
  • feat(sdk): start an embedded runtime from the main entry by @thymikee in #3843
  • chore(diagnostics): trace Apple prepare phases and subprocess lifecycle by @thymikee in #3846

New Contributors

Full Changelog: v0.21.28...v0.21.29