Michał Pierzchała
264c804376
0.17.1
v0.17.1
2026-06-09 17:25:49 +02:00
Michał Pierzchała
16312d073d
fix: use XCTest drag for iOS swipes ( #716 )
...
* fix: use XCTest drag for iOS swipes
* fix: update iOS drag CI expectations
2026-06-09 17:25:31 +02:00
Michał Pierzchała
500f4f3045
refactor: deepen replay test attempt module ( #715 )
2026-06-09 15:07:30 +02:00
Michał Pierzchała
39e4682592
refactor: deepen runner disposal ( #714 )
...
* refactor: deepen runner disposal
* docs: clarify PR descriptions
2026-06-09 15:07:16 +02:00
Michał Pierzchała
49e59d651a
feat: record replay test videos ( #712 )
...
* feat: record replay test videos
* fix: align replay test video timing
* fix: leave replay test video tail visible
* refactor: clarify replay test video lifecycle
* refactor: pass replay video attempt context directly
* fix: warn on replay video finalization failure
2026-06-09 14:17:32 +02:00
Michał Pierzchała
c2b29d5600
fix: stabilize Maestro replay on iOS ( #713 )
...
* fix: stabilize Maestro replay on iOS
* fix: scope iOS runner cleanup to daemon owner
* fix: lease iOS runner ownership per device
* fix: release prepared iOS runner daemon in CI
* fix: inline runner lease release cleanup
2026-06-09 14:12:57 +02:00
Michał Pierzchała
fe728814c4
0.17.0
v0.17.0
2026-06-08 18:39:25 +02:00
Michał Pierzchała
35f54a863c
fix: resolve Maestro taps from regular snapshots ( #709 )
...
* fix: resolve Maestro taps from regular snapshots
* fix: tighten Maestro snapshot compatibility
* test: align Maestro snapshot freshness fixtures
2026-06-08 18:12:09 +02:00
Michał Pierzchała
2014cb6873
fix: harden covered snapshot targets ( #708 )
...
* fix: block covered snapshot targets
* fix: harden covered snapshot targets
2026-06-08 14:08:52 +02:00
Michał Pierzchała
c89719f7ff
fix: decode escaped selector values ( #711 )
2026-06-08 12:58:18 +02:00
Michał Pierzchała
31ce5903a2
feat: add replay test sharding ( #707 )
...
* feat: add replay test sharding
* refactor: simplify sharding device resolution
* fix: address sharding review feedback
2026-06-08 10:56:42 +02:00
Michał Pierzchała
aa741b474b
fix: recover depth-limited iOS snapshots after AX failures ( #706 )
...
* fix: recover depth-limited iOS snapshots after AX failures
* refactor: tighten iOS snapshot AX fallback
* fix: preserve iOS AX fallback guidance
2026-06-08 10:48:24 +02:00
Michał Pierzchała
5c083eacc6
fix: harden iOS replay runner prewarm ( #705 )
...
* fix: harden iOS replay runner prewarm
* fix: avoid stale iOS runner during relaunch
* fix: stop stale iOS runner processes
* fix: clean stale iOS runners before startup
2026-06-07 20:37:23 +02:00
Michał Pierzchała
81448c8f97
feat: add perf metrics and frames commands ( #703 )
...
* feat: add perf metrics and frames commands
* fix: tighten perf command ergonomics
* test: move perf area coverage to provider integration
2026-06-07 20:36:57 +02:00
Michał Pierzchała
86971990cb
fix: scope runner diagnostics to sessions ( #704 )
2026-06-07 11:35:38 +02:00
Michał Pierzchała
76cee982ba
fix: stabilize iOS runner navigation taps ( #702 )
...
* 0.16.14
* fix: stabilize iOS runner navigation taps
* fix: recover iOS runner after AX failures
* docs: clarify AX-unavailable snapshot recovery
* test: cover synthesized ios provider taps
* test: cover iOS runner AX failure paths
* fix: clarify sparse iOS AX recovery hint
2026-06-07 11:17:27 +02:00
Michał Pierzchała
aa5b07faa5
fix: keep iOS runner hot across app closes ( #700 )
...
* fix: keep iOS runner hot across app closes
* fix: keep iOS snapshots fast after relaunch
* fix: bound compact iOS snapshots on broken AX trees
* docs: clarify iOS snapshot backend strategy
* test: update Settings replay selectors
* fix: stabilize Settings replay selectors
* fix: fall back for selector interactions
* chore: simplify flat interactive snapshot query
2026-06-06 21:26:12 +02:00
Michał Pierzchała
f2424f9d3a
refactor: centralize daemon command registry ( #693 )
2026-06-05 18:34:01 +02:00
Michał Pierzchała
7d7b467699
fix: retry iOS runner prepare launch ( #692 )
2026-06-05 18:05:04 +02:00
Michał Pierzchała
36012a9e6f
fix: update docs router dependency ( #691 )
2026-06-05 14:49:21 +02:00
Michał Pierzchała
6babdfb6c5
0.16.13
v0.16.13
2026-06-04 15:37:22 -07:00
Michał Pierzchała
ad7b386444
feat: cache iOS runner artifacts during prepare ( #688 )
...
* feat: cache ios runner artifacts during prepare
* refactor: deepen ios runner lifecycle
* refactor: generalize apple runner prepare
* refactor: simplify apple runner lifecycle
* fix: clarify runner prepare recovery diagnostics
* refactor: trim apple runner provider surface
* test: simplify runner recovery diagnostics assertion
2026-06-04 15:37:05 -07:00
Michał Pierzchała
bf21540b9d
refactor: consolidate android gesture backend selection ( #689 )
2026-06-04 15:15:34 -07:00
Michał Pierzchała
7ab9998645
fix: stabilize Maestro post-gesture snapshots ( #681 )
...
* fix: stabilize maestro post-gesture snapshots
* fix: harden maestro ci diagnostics and ios prepare
* fix: preserve android freshness baseline for optimized taps
* fix: close ios runner host after sessionless commands
* fix: require tracked app for ios snapshots
* fix: keep in-page swipes on visible content
* test: align lock policy probes with ios snapshot guard
* fix: compose post-gesture snapshots with android freshness
* refactor: clarify post-action snapshot policies
* fix: avoid redundant swipe stabilization flag
* fix: route android swipes through gesture helper
* test: cover android swipe helper fallback
2026-06-04 14:44:33 -07:00
Michał Pierzchała
1881f6f28b
0.16.12
v0.16.12
2026-06-03 12:20:25 -07:00
Michał Pierzchała
3a93071748
docs: update public documentation links ( #684 )
2026-06-03 12:01:23 -07:00
Michał Pierzchała
86db7e837f
fix: align iOS runner cache target metadata ( #682 )
...
* fix: align iOS runner cache target metadata
* test: surface iOS cache metadata script stderr
2026-06-03 09:35:34 -07:00
Michał Pierzchała
4eeec6093d
0.16.11
v0.16.11
2026-06-03 05:16:24 -07:00
Michał Pierzchała
86687feba6
fix: restore snapshot request timeout ( #680 )
2026-06-03 05:15:55 -07:00
Michał Pierzchała
7400701857
perf: speed up iOS swipes and harden runner cache ( #676 )
...
* perf: speed up ios swipes and harden runner cache
* fix: harden maestro replay smoke tests
2026-06-03 04:59:13 -07:00
Michał Pierzchała
6946c2f156
fix: allow fresh session device binding ( #677 )
2026-06-02 20:16:42 -07:00
Michał Pierzchała
491ad7e922
fix: improve session ownership and recovery guidance ( #674 )
...
* fix: improve session recovery guidance
* fix: quote session recovery commands
* test: simplify record session cleanup fixtures
* test: cover recovery hint edge cases
* test: trim duplicate recovery quoting coverage
* fix: scope implicit sessions by caller workspace
* fix: surface session state directory
* fix: remove unused session store check
* test: trim duplicate session recovery coverage
2026-06-02 14:06:00 -07:00
Michał Pierzchała
041b48222f
feat: add iOS runner prepare command ( #673 )
...
* feat: add ios runner prepare command
* fix: shorten snapshot request timeout
* fix: refine prepare and snapshot timeouts
* test: cover prepare ios runner provider scenario
2026-06-02 12:08:34 -07:00
Michał Pierzchała
6f637d0e93
fix: filter covered Android snapshot surfaces ( #675 )
...
* fix: filter covered android snapshot surfaces
* fix: guard android drawing order metadata
2026-06-02 12:01:34 -07:00
Michał Pierzchała
0313262a6a
docs: clarify physical device signing help ( #672 )
2026-06-02 08:50:35 -07:00
Michał Pierzchała
6247a3d4a5
0.16.10
v0.16.10
2026-06-02 06:42:54 -07:00
Michał Pierzchała
3847f71c50
perf: avoid android hierarchy probe for scroll ( #671 )
2026-06-02 06:41:53 -07:00
Michał Pierzchała
66119e21bb
perf: adapt ios runner uptime preflight ( #662 )
2026-06-01 21:15:15 -07:00
Michał Pierzchała
7f035f34b4
fix: reduce ios runner invalidation after status recovery ( #666 )
2026-06-01 20:58:50 -07:00
Michał Pierzchała
7e30a83057
fix: tune iOS runner response retention ( #665 )
...
* fix: tune iOS runner response retention
* fix: require explicit runner response retention
2026-06-01 20:24:04 -07:00
Michał Pierzchała
3ae2472d44
fix: keep iOS runner status transport visible ( #663 )
2026-06-01 20:23:29 -07:00
Michał Pierzchała
f2ef68871c
docs(ios): note idleTimeout: false guardrail + why swipe/mouseClick bypass performGesture (review nits) ( #664 )
2026-06-01 21:27:07 -05:00
Michał Pierzchała
57cd3f3a07
perf: recover iOS runner responses by status ( #661 )
...
* perf: recover ios runner responses by status
* docs: plan ios runner protocol optimizations
* fix: clarify ios runner recovery errors
* fix: retry read-only in-flight runner commands
* refactor: split ios runner status recovery handling
2026-06-01 21:26:15 -05:00
Michał Pierzchała
daaf71a661
refactor(ios): safely(tag:default:) wrapper for the catch-log-and-default band-aid ( #660 )
...
Consolidate the repeated `var x = default; catchException({ x = expr }); if let m {
NSLog("..._IGNORED_EXCEPTION=%@", m); return default }; return x` shape used around
exception-prone XCUITest queries into one generic helper (RunnerTests+Exceptions.swift):
func safely<T>(_ tag:, _ fallback:, _ block:) -> T
func safely<T>(_ tag:, _ block: () -> T?) -> T? // nil-default convenience
11 uniform sites adopt it: SystemModal (4), Snapshot (2), TextEntry (2), Interaction (3).
Each drops from ~7-12 lines to 1-3. The NSLog format is preserved byte-for-byte via the tag arg
(tag "MODAL_QUERY" -> "AGENT_DEVICE_RUNNER_MODAL_QUERY_IGNORED_EXCEPTION=%@"), so the
silently-logged-and-continued path keeps its searchable format and now has a single place to add
per-tag exception telemetry.
Left inline by design (not the uniform pattern): the silent `_ = catchException` KVC reads
(elementHasFocus, snapshotHasFocus), the throw-on-AX snapshot path, executeOnMainSafely's
retry-driving catch, and the bespoke pressKeyboardReturn fallback / performElementTap branches
whose result depends on the exception message.
Behavior-preserving: same defaults, same log output, same returned values. catchException is
non-escaping, so the inout capture in safeIsActionableCandidate is preserved.
Verified: xcodebuild build-for-testing -> TEST BUILD SUCCEEDED.
2026-06-01 21:25:43 -05:00
Michał Pierzchała
3f65124ea4
refactor: add iOS runner lifecycle protocol ( #658 )
...
* refactor: add ios runner lifecycle protocol
* fix: avoid journaling ios runner status probes
* fix: cap ios runner journal responses
* perf: avoid snapshot journal serialization
* perf: skip ids for ios runner status probes
* refactor: keep ios runner status off main thread
2026-06-01 20:40:09 -05:00
Michał Pierzchała
cbe725d49b
refactor(ios): gesture-response factory + performGesture wrapper in CommandExecution ( #659 )
...
Collapse the gesture-command boilerplate in the executeOnMain switch behind two seams:
- performGesture(app, idleTimeout:) -> (timing, outcome): folds measureGesture + the scroll
idle-timeout/quiescence-skip wrap. Parameterized: touch gestures wrap (idleTimeout: true,
default); synthesis gestures (pinch/rotate/transform) pass idleTimeout: false because
RunnerSynthesizedGesture governs its own timing — a distinction that was previously implicit.
- gestureResponse(message:timing:frame:) over a GestureFrame (none/touch/drag): one factory for
the success DataPayload (message + gesture timing + optional touch/drag visualization frame).
The 13 gesture cases (tap x3, tapSeries x2, longPress, drag, dragSeries, swipe, mouseClick, pinch,
rotateGesture, transformGesture) now use the seams; ~120 lines of repeated quartet (measureGesture +
idle-wrap + unsupported check + 8-field DataPayload) collapse. CommandExecution.swift 949 -> 867.
Behavior-preserving: identical outcomes, timing capture, DataPayload fields/messages, and the same
touch-wrapped vs synthesis-unwrapped distinction. No wire change (the factory emits the already
wire-locked DataPayload internally). mouseClick (throws) and swipe (returns an optional frame) keep
their bespoke measure/wrap but route the success payload through gestureResponse.
Verified: xcodebuild build-for-testing -> TEST BUILD SUCCEEDED (no warnings).
2026-06-01 20:32:18 -05:00
Michał Pierzchała
e96de318cd
fix: stabilize android perf harness setup ( #657 )
2026-06-01 20:10:09 -05:00
Michał Pierzchała
b1aaa3a4b6
chore: update glama mcp metadata ( #655 )
2026-06-01 19:29:50 -05:00
Michał Pierzchała
25d5a2a72e
fix: bound iOS simulator app termination ( #654 )
2026-06-01 19:24:11 -05:00
Michał Pierzchała
be5081d4d6
0.16.9
v0.16.9
2026-06-01 17:10:06 -05:00