Michał Pierzchała
876f091c00
feat: close macOS parity gaps ( #311 )
...
* feat: close macos parity gaps
* fix: support targeted macOS menubar app snapshots
* chore: clarify menubar fallback heuristics
* chore: address review nits
* fix: complete macOS parity flow
2026-03-28 19:06:52 +01:00
Michał Pierzchała
f13ad2054d
feat: add screenshot ref overlays ( #307 )
...
* feat: add screenshot ref overlays
* fix: refresh overlay refs from a fresh snapshot
* chore: tighten screenshot overlay plumbing
* fix: improve screenshot overlay targeting
* docs: trim screenshot overlay docs
* feat: add overlay ref centers
* docs: trim fallback guidance
* fix: improve android overlay labels
2026-03-27 19:04:34 +01:00
Michał Pierzchała
73298e5c9a
Bound scrollintoview with max-scroll and progress guards ( #290 )
...
* fix: bound scrollintoview termination
* fix: finish scrollintoview review follow-ups
* fix: finish rebased scrollintoview follow-ups
* refactor: address remaining scroll review nits
* fix: finalize rebased scrollintoview merge
2026-03-27 12:52:02 +01:00
Michał Pierzchała
1669c7a101
feat: support pixel-based scroll gestures ( #293 )
...
* feat: add pixel-based scroll gestures
* fix: address remaining scroll review comments
* chore: make scroll direction switch exhaustive
* docs: keep readme informational
* docs: revert readme changes
* refactor: reuse shared apple scroll planning
* refactor: reduce apple scroll runner churn
2026-03-27 12:06:57 +01:00
Michał Pierzchała
11b47a25a7
Fix keyboard dismiss semantics across iOS and Android ( #291 )
...
* fix: correct keyboard dismiss semantics
* fix: address PR review feedback
* fix: preserve iOS keyboard dismiss contract
* fix: restore session handler platform import
* docs: update skill guidance for keyboard commands
2026-03-27 11:49:30 +01:00
Michał Pierzchała
c9ca550f1e
feat: add --delay-ms support to type and fill ( #292 )
...
* feat: add delayed typing support
* fix: keep literal delay tokens in replay
* chore: tighten delay-ms follow-up polish
2026-03-27 10:43:52 +01:00
Michał Pierzchała
90b8544c75
feat: improve cli batch output and acknowledgments ( #280 )
...
* feat: improve cli batch output and acknowledgments
* docs: clarify skill guidance for cheaper models
* fix: move success messages into command responses
* refactor: add shared success message helpers
* refactor: address PR review follow-ups
* refactor: reuse daemon success payloads
2026-03-27 10:34:31 +01:00
Michał Pierzchała
55c1341304
fix: align is visible with snapshot semantics ( #286 )
...
* fix: align is visible with snapshot semantics
* fix: address visibility review feedback
2026-03-27 10:28:25 +01:00
Michał Pierzchała
dc8f318f76
Split back navigation into explicit in-app and system semantics ( #288 )
...
* feat: split back navigation semantics
* fix: address back review feedback
* fix: make in-app back the default
2026-03-27 10:18:00 +01:00
Michał Pierzchała
c393ffe612
feat: add light test runner for .ad scripts ( #266 )
...
* feat: add metadata-aware ad test runner
* test: migrate platform integrations to replay suites
* fix: stop macos runner during close
* fix: harden ad test runner
* fix: tighten ad test runner retries and reporting
* refactor: tighten replay test suite runtime
* test: cover replay suite helpers
* docs: trim replay test guidance in skill
* refactor: extract replay test cli helpers
2026-03-26 19:21:16 +01:00
Michał Pierzchała
e8065b87d4
fix: bump rspress core to remediate docs advisories ( #265 )
2026-03-26 13:00:34 +01:00
Michał Pierzchała
7100fc5920
feat: add macOS desktop snapshot surfaces ( #258 )
...
* feat: add macOS desktop snapshot surfaces
* fix: tighten macos desktop surface routing
* refactor: harden macos helper snapshot traversal
* fix: scope frontmost macos snapshots to visible windows
2026-03-25 15:10:52 +01:00
Michał Pierzchała
9c37d76381
feat: improve macOS phase 1 support ( #256 )
...
* feat: improve macOS phase 1 support
* fix: address macOS phase 1 review comments
* fix: address macOS PR review feedback
* chore: remove unused apple log alias
* fix: allow mocked macOS helper outside darwin
2026-03-25 13:45:40 +01:00
Michał Pierzchała
0cca41f673
feat: add gesture telemetry recording overlays ( #245 )
...
* feat: add gesture telemetry recording overlays
* fix: stabilize recording validation and telemetry artifacts
* fix: tighten recording telemetry helpers
* fix: clean up android recording stop fallback
* refactor: split ios recording handlers
* fix: tighten runner-backed touch telemetry
* refactor: simplify touch recording recovery
* feat: add gesture telemetry recording overlays
* refactor: split touch interaction recording flow
* fix: rebase gesture telemetry onto main
* test: fix recording overlay CI expectations
2026-03-24 13:38:41 +01:00
Michał Pierzchała
4b8fc2f4f6
fix: improve macOS runner snapshot and context menus ( #252 )
...
* fix: improve macos runner snapshot and context menus
* fix: address macos runner review feedback
* refactor: simplify xctestrun product resolution
* refactor: future-proof macos runner and click flows
* refactor: remove secondary click alias
* fix: tighten macos runner review follow-ups
* update readme
* fix: discover macos apps from standard bundles
* fix: stabilize macos app listing test on linux
2026-03-23 16:01:52 +01:00
Michał Pierzchała
9e1991daf6
feat: add apple-family macOS desktop support ( #246 )
...
* feat: add apple-family macos desktop support
* feat: extend macos desktop command support
* fix: stabilize CI for macos runner build
* fix: harden macos app resolution
* fix: tighten apple-family session routing
* fix: align macos log capabilities
* fix: support macos wait text
* fix: make iOS session refresh test host-agnostic
2026-03-23 10:22:55 +01:00
Michał Pierzchała
aebc59b2a6
feat: streamline remote metro open flow ( #240 )
...
* feat: streamline remote metro open flow
* fix: honor remote config defaults and cli precedence
2026-03-20 14:07:17 +01:00
Michał Pierzchała
da9d4527ad
feat: add client metro prepare command ( #236 )
...
* feat: add client metro prepare command
* fix: tighten metro prepare cli behavior
2026-03-18 16:29:22 +01:00
Michał Pierzchała
11010192a2
feat: add install-from-source CLI command ( #235 )
2026-03-18 12:47:41 +01:00
Michał Pierzchała
22fbca81e2
fix: return Android identity from install_from_source ( #226 )
...
* 0.8.1
* fix: derive android launch target for installFromSource
* fix: return android identity from install source
* fix: resolve android package from install artifacts
* docs: move typed client docs out of readme
2026-03-16 14:10:27 +01:00
Michał Pierzchała
c874eeb4a5
feat: centralize CLI option resolution ( #223 )
...
* 0.7.22
* feat: centralize CLI option resolution
* refactor: introduce canonical CLI option specs
* fix: preserve enum config parsing in option specs
* docs: clarify canonical config values
* fix: honor config-backed session bindings
2026-03-14 20:55:59 +01:00
Michał Pierzchała
c34639ec4d
feat: share session lock policy across clients ( #222 )
...
* 0.7.22
* fix: add cli session binding lock mode
* fix: add cli session lock flags
* fix: preserve batch platform inheritance
* chore: clean up cli binding flow
* docs: update session-bound automation guidance
* feat: simplify session lock policy
* feat: share session lock policy across clients
* docs: add shared session lock examples
* refactor: simplify session lock policy helpers
* test: cover shared session lock policy cases
* test: cover strip mode router dispatch
2026-03-14 20:46:15 +01:00
Michał Pierzchała
674ae974ec
feat: add typed runtime to open ( #217 )
...
* feat: add typed runtime to open
* fix: normalize typed runtime validation errors
* fix: defer runtime replacement until open succeeds
* feat: add typed openApp client helper
2026-03-13 19:35:05 +01:00
Michał Pierzchała
b79cbce951
feat: support android shutdown on close ( #213 )
...
* feat: support android shutdown on close
* fix: stub android readiness in relaunch test
2026-03-13 14:36:57 +01:00
Michał Pierzchała
884e48ba27
fix: harden Android runtime relaunch flows ( #211 )
...
* fix: harden Android runtime relaunch flows
* docs: clarify mobile QA skill flows
2026-03-12 17:29:40 +01:00
Michał Pierzchała
f23df4d9c8
docs: add missing command reference entries ( #201 )
...
* docs: add missing command reference entries
* docs: clarify wait ref behavior
2026-03-10 12:59:36 +01:00
Michał Pierzchała
e2bf4ef7a1
docs: add missing command reference entries ( #200 )
2026-03-10 12:29:05 +01:00
Michał Pierzchała
8b36c2a56c
feat: support remote runtime hints and artifact retrieval ( #199 )
...
* feat: add remote runtime hints and artifact retrieval
* fix: apply session runtime transport hints on open
* fix: secure and time out artifact downloads
2026-03-09 19:50:40 +01:00
Michał Pierzchała
780ecbc7a4
feat: support installing local artifacts over remote daemon transport ( #192 )
...
* feat: support installing local artifacts over remote daemon transport
When the CLI runs on a different machine than the daemon (via
AGENT_DEVICE_DAEMON_BASE_URL), install/reinstall commands now
transparently upload local app binaries (.apk/.ipa/.aab) and app
bundles (.app dirs) to the daemon before installing. No new flags
required — same CLI ergonomics.
- Add POST /upload endpoint to daemon HTTP server with auth and
streaming file/tar reception
- Add client-side upload helper with timeout and tar packing for
.app directories
- Intercept install/reinstall in sendToDaemon for remote daemons,
upload artifact, rewrite positional path
- Clean up uploaded temp files after install completes (or fails)
with 5-minute safety-net auto-cleanup for abandoned uploads
- Sanitize artifact filenames to prevent path traversal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: harden remote artifact upload flow
* refactor: split upload registry from receiver
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 16:10:31 +01:00
Michał Pierzchała
3bafc24f05
fix: support explicit remote daemon endpoints ( #189 )
...
* fix: support remote daemon base url
* fix: harden remote daemon endpoint handling
* docs: update remote daemon skill guidance
2026-03-06 15:40:06 +01:00
Michał Pierzchała
22deb54ddb
feat: add --shutdown option to close command for iOS simulator teardown ( #176 )
...
* feat: add --shutdown option to close command for iOS simulator teardown (#172 )
When --shutdown is passed, close ends the session then runs xcrun simctl
shutdown on the associated simulator. Shutdown result (success, exitCode,
stdout, stderr) is included in the JSON response data.
The option is silently ignored for non-simulator targets (physical iOS
devices, Android). A shutdownSimulator override is injected into
handleSessionCommands for testability.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* docs: document close --shutdown option for iOS simulator teardown
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* fix: keep close --shutdown successful when simulator shutdown fails
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-03 20:00:10 +01:00
Michał Pierzchała
bb06bafc65
feat: add ensure-simulator command for scoped iOS device sets ( #179 )
...
* feat: add ensure-simulator command for scoped iOS device sets (#169 )
Adds a new first-class `ensure-simulator` command that ensures an iOS
simulator exists (and optionally boots it) inside a scoped device set,
without requiring custom simctl scripting outside agent-device.
Usage:
agent-device ensure-simulator --device "iPhone 16" [--runtime <id>] [--boot] [--ios-simulator-device-set <path>]
JSON output includes udid, device, runtime, ios_simulator_device_set,
and whether the simulator was created vs reused.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* docs: document ensure-simulator in commands reference and skill
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-03 19:39:52 +01:00
Michał Pierzchała
427093d0b0
fix: return deterministic matched-target metadata for find click responses ( #178 )
...
* fix: return deterministic matched-target metadata for find click responses (#170 )
On success, build the response from the matched snapshot node rather than
passing through whatever the underlying click/press handler returns.
Response now includes: ref, locator, query, and x/y derived from the
matched element's rect — all stable across runs.
Also makes `dispatch` injectable in `handleFindCommands` (matching the
pattern in `handleInteractionCommands`) and adds tests that assert the
deterministic shape and verify that non-deterministic platform runner
data does not bleed into the response.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* docs: document find click response shape in selectors and skill references
Add response shape documentation for `find "<query>" click --json` to:
- website/docs/docs/selectors.md (new "Response shape (click)" section)
- skills/agent-device/SKILL.md (guardrail note)
- skills/agent-device/references/snapshot-refs.md (new "find click response" section)
Follows the fix in #178 that made the response deterministic.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-03 19:39:31 +01:00
Michał Pierzchała
9b0a3dee6e
feat: add install command with ipa/aab support ( #151 )
...
* feat: add install command for in-place app deployment
* chore: document install vs reinstall in quick start and skill
* docs: clarify install format support and limits
* feat: support ipa and aab app installation
* feat: improve install flexibility for ipa and aab
* fix: retry iOS simulator screenshot surface timeouts
* refactor: simplify install resolution and boot handling
2026-03-03 14:14:23 +01:00
Michał Pierzchała
14de55c9b7
fix: support configurable iOS runner bundle IDs ( #146 )
2026-02-26 16:40:24 +01:00
Michał Pierzchała
b3ad24f527
feat: add Android keyboard status and dismiss command ( #144 )
2026-02-26 11:47:46 +01:00
Michał Pierzchała
890ceefe90
feat: add trigger-app-event aliases and routing ( #134 )
...
* feat: add trigger app event aliases and routing
* chore: remove redundant trigger normalization in session handler
* chore: remove trigger command aliases
2026-02-26 10:44:46 +01:00
Michał Pierzchała
4a38bb0b74
feat: add simulator-set and Android allowlist isolation ( #143 )
...
* feat: add simulator-set and Android allowlist isolation
* chore: document isolation scopes in agent-device skills
2026-02-26 10:38:23 +01:00
Michał Pierzchała
74eee5a32e
Fix Android boot completion and emulator launch modes ( #138 )
...
* Fix Android boot completion and headless emulator launch
* Refactor Android boot fast lookup for testability
* Avoid extra target probes in Android boot fast lookup
* Simplify Android boot path in session handler
* fix: enforce boot target and headless validation
2026-02-26 10:20:51 +01:00
Michał Pierzchała
b685a0b259
Add remote HTTP daemon mode with lease admission controls ( #136 )
...
* fix: add daemon remote HTTP server mode with isolation controls
* feat: add tenant lease lifecycle and admission control
* refactor: simplify lease scope and rpc method routing
* fix: correct smoke expectations for close without session
2026-02-25 18:25:15 +01:00
Michał Pierzchała
803ba256d4
Add Touch ID and Android fingerprint simulation for settings ( #135 )
...
* fix: add touchid/fingerprint settings simulation and harden error handling
* chore: tighten agent docs and simplify iOS biometric settings flow
2026-02-25 17:38:43 +01:00
Michał Pierzchała
e8e92dc7b8
feat: port dogfood skill to agent-device ( #133 )
...
* feat: add agent-device dogfood skill package
* Apply suggestion from @thymikee
2026-02-25 16:27:25 +01:00
Michał Pierzchała
f512b7d69c
feat: add network dump command for session app traffic ( #120 )
...
* feat: add network dump command for session app traffic
* fix: restore cli branch block after rebase conflict
2026-02-25 16:17:08 +01:00
Michał Pierzchała
ef20dea6bc
feat: add AndroidTV and tvOS target support ( #125 )
...
* feat: add AndroidTV and tvOS target support
* feat: enable tvOS runner interactions
* refactor: unify apple target handling and tvOS capability gates
* refactor: remove hardcoded tvOS app-switcher sleep
* fix: align tvOS capabilities and docs for simulator-only helpers
* feat: improve AppleTV and AndroidTV physical device detection
* refactor: simplify tv target detection helpers
2026-02-25 14:55:54 +01:00
Michał Pierzchała
996d1fca2f
feat: add session perf metrics command ( #121 )
...
* feat: add session perf metrics command
* refactor: simplify open perf result shaping
* docs: improve perf guidance in docs and skill
* docs: split perf guidance into skill reference
2026-02-25 13:49:59 +01:00
Michał Pierzchała
ab338263ed
feat: add clipboard read and write commands ( #122 )
2026-02-25 13:01:33 +01:00
Michał Pierzchała
66b0bdba31
fix: expose push notification simulation ( #109 )
...
* fix: expose push notification simulation across iOS and Android
* refactor: share push JSON detection and clean extras validation
* fix: harden push payload path handling in session
* refactor: consolidate push payload source resolution
2026-02-24 17:34:28 +01:00
Nils Fischer
8660b0433f
feat: add settings appearance command ( #119 )
...
* feat: add settings appearance command
- add appearance light|dark|toggle support to settings command
- implement iOS simulator and Android night mode handlers
- cover parser/handler/platform behavior with unit tests
- update README, docs, and agent-device skill guidance
* test: align settings usage assertions
- expect split settings usage lines for wifi/location and appearance
* fix: harden settings appearance parsing and dedupe usage contract
---------
Co-authored-by: Michał Pierzchała <thymikee@gmail.com >
2026-02-24 17:25:56 +01:00
Michał Pierzchała
ddfeb65896
fix: harden android non-ascii text input and document IME workaround ( #118 )
2026-02-24 16:53:30 +01:00
Michał Pierzchała
67b6698f34
feat: expose app permission grant/deny/reset in settings ( #108 )
...
* feat: add app-scoped permission settings across ios and android
* refactor: centralize permission target parsing and options
* fix: include stderr excerpt in generic command failures
* refactor: gate stderr message override to process-exit errors
2026-02-23 18:34:27 +01:00