Commit Graph

806 Commits

Author SHA1 Message Date
Michał Pierzchała efc0b213d4 0.16.7 v0.16.7 2026-05-31 12:22:28 +02:00
Michał Pierzchała 1bdd9eeb49 0.16.6 2026-05-31 11:51:59 +02:00
Michał Pierzchała 3cb126ea34 fix: avoid iOS edge lane for in-page swipes (#631) 2026-05-31 11:11:27 +02:00
Michał Pierzchała ece193e76b fix: improve React Navigation Maestro reliability (#628) 2026-05-30 22:52:45 +02:00
Michał Pierzchała 8e1f8a9f8f perf: lazy load daemon handlers and report bundle size (#608)
* perf: lazy load daemon handlers

* perf: thin command metadata paths

* refactor: isolate platform inventory loading

* refactor: trim lazy loading cleanup

* test: guard daemon routing metadata drift

* ci: report startup timing with size
2026-05-30 16:49:21 +02:00
Michael Garfinkle b7ca4fbcf9 feat: forward --launch-args to adb shell am start on Android (#599)
* feat: forward --launch-args to adb shell am start on Android

Stacked on top of the iOS-only --launch-args PR (#598). Removes the
Android UNSUPPORTED_OPERATION guard added with the Maestro work and
threads launchArgs through all five Android open paths.

Per-path threading:

- openAndroidPackage           (-p package launch + activity-fallback)
- openAndroidPackageActivity   (-n component override)
- openAndroidIntent            (named intent action)
- openAndroidDeepLink          (-a VIEW -d <url>, with optional -p)
- openAndroidAppBoundDeepLink  (-a VIEW -d <url> -p <resolved>)

`adb shell` joins its argv with spaces and feeds the result to a
device shell, which re-tokenises. The other am-start arguments are
well-known and never contain shell-significant characters, so they
round-trip untouched. Launch arguments are user-supplied and may
contain JSON, spaces, `#`, etc.; each is single-quoted unless it
consists entirely of safe shell characters (the same approach long
used in adb-driven tooling for the same reason).

Help text on --launch-args is updated to describe the Android shape
(`adb shell am start args, e.g. --es key value` for typed Intent
extras) and macOS remains the only rejected platform.

Tests:

- src/platforms/android/__tests__/index.test.ts: five new tests
  cover package, activity-override, deep-link URL, app-bound URL,
  and JSON-with-shell-metacharacters quoting paths.
- src/core/__tests__/dispatch-open.test.ts: the previous
  "rejects Android launch arguments" test is inverted into a
  forwarding test that asserts openAndroidApp receives the args.

Validated end-to-end on a Pixel emulator running a debug build whose
launcher activity reads an Intent extra to bootstrap test
configuration: a JSON value containing `#`, `/`, `:` survived
single-quoted transit through `adb shell` and arrived at the
activity unchanged.

* fix: reject unsupported launch args openings

---------

Co-authored-by: Michał Pierzchała <thymikee@gmail.com>
2026-05-30 16:45:25 +02:00
Michael Garfinkle dc37f86931 feat: expose iOS launch args for open (#598)
Co-authored-by: Michał Pierzchała <thymikee@gmail.com>
2026-05-30 16:06:32 +02:00
Michał Pierzchała ae73b77b2b refactor: narrow Maestro flow runtime bridge (#626)
* refactor: narrow Maestro flow runtime bridge

* fix: address maestro replay control review

* test: guard maestro replay control boundary

* chore: trim maestro flow control cleanup
2026-05-30 16:04:38 +02:00
Michael Garfinkle 10501b0ce3 fix: preserve remote config for interaction commands (#616) 2026-05-30 15:48:00 +02:00
Michał Pierzchała 7f2c2b7261 refactor: converge Maestro assertion waits (#625)
* refactor: converge Maestro assertion waits

* fix: retry maestro assertVisible snapshot failures
2026-05-30 15:44:59 +02:00
Michał Pierzchała 10fc86f1bd refactor: converge Maestro gesture handling (#624)
* refactor: converge Maestro gesture handling

* fix: clarify Maestro gesture clamping
2026-05-30 15:44:41 +02:00
Michał Pierzchała ea69ebd445 refactor: converge Maestro input handling (#623)
* refactor: converge Maestro input handling

* fix: preserve Maestro optional input semantics
2026-05-30 15:44:07 +02:00
Michał Pierzchała 7909290a49 refactor: share Maestro target matching primitives (#622)
* refactor: share Maestro target matching primitives

* test: cover shared snapshot ancestor traversal
2026-05-30 15:43:15 +02:00
Michał Pierzchała 3522aa32a9 fix: chunk long Android recordings (#617)
* fix: chunk long Android recordings

* refactor: simplify Android recording chunks

* fix: satisfy Android recording fallow audit
2026-05-30 15:39:03 +02:00
Michał Pierzchała 3283e5e3e5 ci: skip core CI for docs-only PRs (#619) 2026-05-30 15:38:50 +02:00
Michał Pierzchała 5d68483f1e test: add Maestro provider integration guards (#620)
* test: add maestro provider integration guards

* test: cover maestro provider input coalescing

* test: align maestro input provider guard
2026-05-30 15:38:38 +02:00
Michał Pierzchała 0932ad56a7 ci: publish MCP registry metadata (#627) 2026-05-30 15:38:06 +02:00
Michał Pierzchała 14bbcf4f69 docs: map Maestro compatibility debt (#621) 2026-05-30 13:33:56 +02:00
Michał Pierzchała f74f4e0f3c 0.16.5 2026-05-30 12:21:37 +02:00
Michał Pierzchała 434bf70ab0 fix: stabilize Maestro React Navigation flows (#618) 2026-05-30 12:20:22 +02:00
Michał Pierzchała c78ccea5a4 0.16.4 2026-05-29 22:09:48 +02:00
Michał Pierzchała d087a62d1d fix: improve Maestro Android reliability and snapshot speed (#612)
* fix: improve maestro tab target swipes

* fix: stop replay suites on pending timeout cleanup

* fix: tighten maestro compat support plumbing

* fix: resolve ios simulator url open targets

* fix: speed up Android Maestro snapshots

* fix: resolve android snapshot ci regressions

* perf: reduce android snapshot helper overhead

* docs: record persistent helper session architecture

* chore: address snapshot session review

* perf: add persistent Android snapshot helper session

* fix: stabilize Android replay interactions

* fix: stabilize Maestro visibility resolution

* refactor: simplify Android keyboard parsing
2026-05-29 22:09:18 +02:00
Michał Pierzchała 9a026bf28f 0.16.3 2026-05-29 12:05:06 +02:00
Michał Pierzchała e1b8686e44 fix: hint sparse snapshot fallback (#614)
* fix: hint sparse snapshot fallback

* fix: suppress sparse hint for depth-limited snapshots
2026-05-29 11:26:27 +02:00
Michał Pierzchała ab760b6cf9 fix: apply app icon to iOS UI test runner (#611) 2026-05-29 09:16:15 +02:00
Michał Pierzchała 34713df18b 0.16.2 2026-05-28 19:21:09 +02:00
Michał Pierzchała 0dead15c2b fix: improve maestro text tap targets (#610) 2026-05-28 19:20:09 +02:00
Michał Pierzchała 99e97c873e feat: stream replay test progress (#605)
* feat: stream replay test progress

* fix: format replay test progress duration

* fix: harden replay progress transports

* refactor: clean up replay progress fallow findings

* refactor: trim replay progress cleanup
2026-05-28 17:54:44 +02:00
Michał Pierzchała 0bbb06ebcf refactor: vendor png codec (#609)
* refactor: vendor png codec

* fix: satisfy fallow audit

* fix: bound png inflate output
2026-05-28 17:54:07 +02:00
Michał Pierzchała 46784f2e81 fix: internalize xml parsing (#606) 2026-05-28 17:44:15 +02:00
Michał Pierzchała 5083d04560 ci: stop waiting for preview pages build (#607) 2026-05-28 17:24:35 +02:00
Michał Pierzchała b2a39d2368 ci: gate PR preview builds (#603)
* ci: gate PR preview builds

* ci: include setup action in preview trigger
2026-05-28 17:10:44 +02:00
Michał Pierzchała 233df070f1 ci: skip platform smoke for docs-only PRs (#604) 2026-05-28 17:06:51 +02:00
Michał Pierzchała 7a2428e5e2 ci: reduce duplicated runner work (#602) 2026-05-28 15:57:58 +02:00
Michał Pierzchała af206140c8 0.16.1 2026-05-28 15:42:36 +02:00
Michał Pierzchała 2212062dbd 0.16.0 2026-05-28 15:42:08 +02:00
Michał Pierzchała ee57e1b114 fix: improve Maestro test suite replay (#601) 2026-05-28 15:40:19 +02:00
Michał Pierzchała 136d313a19 build: enable noUncheckedIndexedAccess (#600)
* build: enable noUncheckedIndexedAccess

* refactor: remove redundant indexed access fallbacks

* fix: address rebased unchecked indexed access

* fix: address unchecked access review feedback

* refactor: simplify replay fill positional typing

* refactor: avoid wait positional assertion

* refactor: prefer value guards for indexed access

* chore: keep fallow baseline for strictness changes
2026-05-28 11:02:43 +02:00
Michał Pierzchała 819d7dc8aa feat: expose structured MCP command tools (#593)
* feat: expose semantic MCP tools

* docs: remove semantic mcp prd

* refactor: deepen semantic command surface

* refactor: add mcp execution seam

* refactor: deepen command grammar

* refactor: remove legacy command definitions

* refactor: collapse semantic cli wrappers

* refactor: remove local mcp placeholders

* refactor: derive semantic cli routing

* refactor: trim mcp status metadata

* refactor: derive semantic input contracts

* refactor: split semantic grammar modules

* refactor: derive batch input schema

* refactor: centralize cli command schema catalog

* refactor: share semantic cli output projections

* refactor: remove legacy cli output paths

* refactor: consolidate command interface surface

* docs: align command contract wording

* refactor: split command projection from cli grammar

* refactor: trim projection exports

* fix: satisfy fallow command contract audit

* refactor: structure public batch steps

* chore: clean batch architecture references

* fix: keep legacy cli batch steps working

* fix: serialize mcp batches

* chore: tighten command surface cleanup

* fix: serialize mcp stdin requests

* chore: keep mcp config out of command contracts

* fix: project structured batch targets

* chore: harden command input typing

* fix: project maestro backend for replay tests

* fix: preserve session mcp request options
2026-05-28 09:20:55 +02:00
Michał Pierzchała a5fffc6e49 feat: add Maestro YAML replay compatibility (#581)
* feat: add Maestro replay compatibility

* fix: harden Maestro replay compatibility

* fix: address Maestro replay review feedback

* fix: finalize Maestro replay compatibility

* refactor: tighten Maestro replay compatibility boundary

* refactor: reduce Maestro replay quality debt

* refactor: satisfy Maestro replay fallow audit

* fix: stabilize Android provider snapshot tests
2026-05-27 21:45:51 +02:00
Michał Pierzchała 25c7ade769 test: remove 151 unit tests fully covered by integration tests (#595)
* test: remove 151 unit tests fully covered by integration tests

Per-test coverage analysis confirmed every statement and branch these
tests exercise is already covered by the provider-integration suite.
Removes 8 fully redundant test files and 132 individual tests from
54 files (2,598 lines). Coverage unchanged at 82.4% statements / 84.5%
lines, both above configured thresholds.

* fix: restore package export-map contract test

This test validates the package.json exports field, not runtime code.
Its Istanbul fingerprint is empty, making it trivially "subsumed" by
the coverage analysis — but no integration test checks the export map.

* fix: remove unused imports left behind by test pruning

* fix: restore snapshot-routing contract test, remove orphaned comment

snapshot-routing.test.ts validates that every command in the snapshot
catalog has a handler — a structural check invisible to Istanbul.
Same false-positive pattern as package-exports.test.ts.
2026-05-27 16:08:58 +02:00
Michał Pierzchała dcc7421892 fix: recover Android app-owned ANRs (#592)
* fix: recover Android app-owned ANRs

* refactor: tidy Android ANR recovery helpers

* fix: satisfy Android ANR fallow audit
2026-05-26 11:07:46 +02:00
Michał Pierzchała bbe7c06fb6 feat: auto-reverse Android localhost opens (#590)
* feat: auto-reverse Android localhost opens

* test: cover Android localhost reverse edge cases

* fix: reduce Android reverse error complexity

* docs: simplify Android Metro reverse guidance

* docs: prefer scripted SkillGym checks

* test: clarify Android Metro SkillGym plan
2026-05-26 10:44:51 +02:00
Michał Pierzchała 87f087ca2b fix: capture Android snapshot timeout evidence (#591)
* fix: capture Android snapshot timeout evidence

* refactor: isolate Android snapshot timeout evidence

* fix: satisfy fallow snapshot timeout checks

* refactor: tighten snapshot timeout evidence payload

* refactor: tighten Android timeout evidence cleanup
2026-05-26 10:44:29 +02:00
Michał Pierzchała ea21793154 feat: support ios transform gesture (#586) 2026-05-26 09:58:33 +02:00
Michał Pierzchała c72cf0e1d2 fix: clarify Android gesture transform behavior (#584)
* fix: clarify Android gesture transform behavior

* fix: stabilize Android transform injection
2026-05-26 09:47:07 +02:00
Michał Pierzchała 93b04b2cbb docs: simplify README overview (#585) 2026-05-25 20:24:23 +02:00
Michał Pierzchała bda96f1b6d fix: allow inventory selectors with session locks (#583)
* fix: allow inventory selectors with session locks

* fix: reduce lock policy complexity

* refactor: simplify lock policy helpers

* refactor: trim lock policy cleanup

* fix: preserve explicit inventory selectors
2026-05-25 18:55:04 +02:00
Michał Pierzchała 47b981c8ad feat: add gesture command coverage (#576)
* feat: add gesture command coverage

* fix: align iOS fling provider fixture

* feat: group gesture commands

* fix: clarify android gesture support

* feat: add android multitouch gestures

* fix: address gesture review feedback

* refactor: simplify gesture plumbing

* fix: keep gesture subcommands internal

* fix: update iOS provider pan transcript
2026-05-22 18:01:58 +02:00
Michał Pierzchała 168de53bee fix: improve Android snapshot fidelity (#580)
* fix: improve Android snapshot fidelity

* fix: address Android snapshot review edge cases

* refactor: simplify Android snapshot cleanup helpers

* test: guard SkillGym external runners in sandbox
2026-05-22 15:14:50 +02:00