Michał Pierzchała
59d28e8446
refactor: add provider-first device lab tests ( #542 )
...
* refactor: add provider-first device lab tests
* refactor: tighten device lab provider seams
* test: cover provider lab contracts
* docs: record device lab harness direction
* ci: run device lab integration tests
* test: move device lab under integration
* test: extract device lab helpers
* refactor: centralize apps filter defaults
* test: drop lab-covered unit tests
* test: fold platform happy paths into device lab
* test: reuse device lab helpers
* test: move device lab to in-process harness
* test: replace session handler cases with device lab
* test: harden device lab scenario contracts
* docs: define unit test retention policy
* test: expand provider device lab coverage
* test: harden provider device lab coverage
* test: cover manifest install and runner session contracts
* chore: remove unused provider cleanup code
* test: split android find device lab scenario
* test: track provider lab architecture progress
* test: clarify provider lab roadmap progress
* test: advance provider lab session coverage
* test: move menubar click routing to device lab
* test: move menubar snapshots to device lab
* refactor: centralize screenshot flag plumbing
* refactor: colocate screenshot flag metadata
* test: cover all public commands in device lab
* test: move macos wait success to device lab
* test: drop redundant perf and diff units
* test: move push payload paths to device lab
* test: move network parsing to device lab
* test: move log cleanup to device lab
* test: move log restart and boot to device lab
* test: move ios physical boot to device lab
* test: cover perf startup in device lab
* test: extract android and ios device lab worlds
* test: trim device lab world surface
* test: split snapshot capture unit coverage
* test: deepen device lab coverage and trim handler units
* test: clean up device lab migration scaffolding
* test: report device lab public command coverage
* refactor: make Apple provider seams semantic
* refactor: tighten device inventory and Linux provider seams
* refactor: tighten request provider scoping
* refactor: add semantic macos host provider
* test: broaden device lab find coverage
* test: cover workflow flags in device lab
* refactor: promote linux input provider seam
* test: clarify device lab flag coverage
* test: classify snapshot force-full progress
* test: enforce device lab progress in ci
* test: stabilize device lab ci
* test: move packaged metro smoke to integration
* test: drop stale provider seam coverage
* test: harden provider scope regression coverage
* refactor: remove stale platform barrels
* refactor: keep linux clipboard and screenshots semantic
* refactor: move macos host tools behind provider
* fix: honor remote artifact output paths
* test: deepen runtime coverage for daemon and runner paths
* test: share loopback test helpers
* refactor: make daemon runtime importable
* fix: honor replay target metadata
* chore: tighten final device lab quality gates
* test: share device lab setup helpers
* test: remove generic apple lab fallback
* test: deduplicate device lab helpers
* chore: tighten fallow duplication signal
* refactor: share apple diagnostic helpers
* fix: detect active android ime during fill verification
* test: consolidate provider-backed integration suite
* ci: fix fallow and iOS smoke setup
* chore: consolidate cleanup after ci fixes
* test: split vitest unit and integration projects
* docs: mention MCP discovery metadata
* docs: add agent skills context pointers
* fix: close provider recording coverage gaps
* fix: restore mcp compatibility smoke
* test: cover provider edge regressions
* test: consolidate loopback helpers
* docs: remove stale provider routing reference
* fix: harden final provider review issues
* chore: defer mcp cleanup from provider refactor
2026-05-18 14:50:52 +02:00
Michał Pierzchała
b5cd1c49fe
fix: handle busy Android RN snapshots ( #554 )
2026-05-16 16:55:18 +02:00
Michał Pierzchała
dea6c3b1b2
fix: compact unchanged snapshot output ( #547 )
2026-05-15 19:37:27 +02:00
Michał Pierzchała
068d4c5d0a
chore: remove ensure-simulator lifecycle command ( #552 )
2026-05-15 19:23:45 +02:00
Michał Pierzchała
60f36eff66
feat: add screenshot no-stabilize flag ( #553 )
2026-05-15 19:21:06 +02:00
Michał Pierzchała
7e14decce3
fix: improve Android text entry stability ( #540 )
...
* fix: improve android text entry stability
* fix: stabilize android daemon diagnostics
* chore: refresh fallow baselines
* refactor: tighten android text fallback
* fix: tighten android input ownership diagnostics
* fix: require settled android fill verification
* test: cover android fill prefix verification
2026-05-15 12:16:06 +02:00
Michał Pierzchała
83efe54407
fix: default apps listing to user-installed ( #541 )
2026-05-15 11:06:27 +02:00
Michał Pierzchała
03207d9d4d
fix: improve Android helper snapshot stability ( #529 )
2026-05-14 17:54:24 +02:00
Michał Pierzchała
801c2ae0b3
fix: improve rn agent-device stability guidance ( #519 )
2026-05-14 17:30:45 +02:00
Michał Pierzchała
fceaab9525
refactor: clarify command architecture ( #512 )
2026-05-13 19:53:36 +02:00
Michał Pierzchała
0117ededa5
refactor: make touch target resolution policy explicit ( #510 )
2026-05-13 15:24:14 +02:00
Michał Pierzchała
9b55929962
fix: preserve iOS tab button tap centers ( #508 )
2026-05-13 13:14:57 +02:00
Anupam Chugh
a90642544d
feat: support precise location settings ( #491 )
...
* feat: support precise location settings
* fix: address location settings review
* chore: refresh fallow baselines for location settings
* fix: clean up location settings dispatch
---------
Co-authored-by: anupamchugh <anupamchugh@gmail.com >
Co-authored-by: Michał Pierzchała <thymikee@gmail.com >
2026-05-12 12:07:59 +02:00
Michał Pierzchała
8a1e195599
docs: trim stale internal docs ( #498 )
2026-05-12 10:31:27 +02:00
Michał Pierzchała
10fd292569
fix: stabilize remote DevTools and install workflow ( #490 )
...
* 0.14.6
* fix: harden remote install workflow
* fix: prevent companion startup state race
* fix: guide remote ios devtools reconnects
2026-05-01 07:27:36 -04:00
Michał Pierzchała
7d47c6796a
fix: persist remote react devtools companion ( #489 )
2026-04-30 16:18:54 -04:00
Michał Pierzchała
7ea8d9eea3
feat: discover cloud config during connect ( #488 )
...
* feat: discover cloud config during connect
* test: isolate cloud connect profile coverage
* docs: document cloud connect discovery
* fix: honor no-login after cloud auth reuse
* fix: validate cloud connection profiles
* refactor: require object cloud profiles
* refactor: trim cloud connect compatibility code
2026-04-30 16:16:56 -04:00
Michał Pierzchała
dc4a162504
fix: require explicit bridge lease for devtools tunnel ( #487 )
2026-04-30 14:42:01 -04:00
Michał Pierzchała
6a55d48938
fix: tunnel remote ios react devtools ( #486 )
2026-04-30 12:36:02 -04:00
Michał Pierzchała
d2b3d3fcb7
fix: stop companion retrying invalid registrations ( #484 )
...
* fix: stop companion retrying invalid registrations
* test: reduce companion worker duplication
* test: cover companion retry-after registration
2026-04-30 11:47:18 -04:00
Michał Pierzchała
78aab2a3c2
feat: add android adb transfer provider APIs ( #483 )
2026-04-30 10:36:55 -04:00
Michał Pierzchała
8aa4abe465
feat: expand android adb provider boundary ( #481 )
2026-04-29 21:45:42 -04:00
Michał Pierzchała
0c7e48d7d5
feat: add Android frame health perf metrics ( #474 )
2026-04-29 16:56:37 -04:00
Michał Pierzchała
6a2bf9f626
feat: export batch orchestration helpers ( #472 )
2026-04-29 10:48:17 -04:00
Michał Pierzchała
140fe338c2
docs: replace bulky skills with versioned CLI help ( #352 )
...
* docs: move agent guidance into help workflows
* test: address skill help review feedback
* docs: surface agent workflow in top-level help
* docs: strengthen dogfood help workflow
* docs: improve react devtools performance routing
* test: thin skillgym prompt
* docs: gate skills on help topic version
* test: stabilize thin help skillgym
* docs: restore dogfood QA guidance
* test: cover truncated text scoped snapshots
* docs: clarify remote help wording
* test: cover rn overlays and expo launch guidance
* test: cover expo launch after app lookup miss
* test: refine rn warning overlay workflow
* docs: restore react devtools advanced guidance
* test: cover restored agent guidance gaps
* test: cover device workflow edge cases
* docs: clarify agent-device install guidance
* docs: route known limitations through help
* docs: clarify bootstrap help for small models
* docs: tighten debug workflow guidance
* docs: remove local test note from workflow help
2026-04-28 14:14:55 -04:00
Michał Pierzchała
2b23d69a70
docs: refresh README positioning ( #458 )
...
* docs: refresh README positioning
* docs: simplify README scan path
* docs: restore react devtools version marker
* docs: link EAS workflow template
* docs: add practical README quickstart
* test: decouple README from react devtools pin
* docs: show screenshot evidence in README flows
* docs: clarify agent-first README value
* docs: refocus README top section
* docs: clarify agentic workflows wording
* docs: refine snapshot action wording
* docs: sharpen README workflow examples
* docs: remove workflow recipes from README
* docs: clarify README run locations
* docs: polish README review feedback
* docs: move capabilities before internals
* docs: tighten final README copy
2026-04-27 21:18:24 -04:00
Michał Pierzchała
5260ac8edd
fix: harden Node runtime cleanup ( #457 )
...
* fix: harden node runtime cleanup
* fix: propagate command cancellation
* fix: address runtime cleanup review
* fix: close partial artifact writes before cleanup
2026-04-27 17:19:08 -04:00
Michał Pierzchała
d77a9211ab
feat: add Android snapshot helper ( #454 )
...
* feat: add android snapshot helper
* fix: harden android snapshot helper packaging
* fix: harden android xml attribute parsing
* fix: capture android helper window roots
* fix: validate android helper install args
* fix: harden android helper manifest and traversal
* refactor: drop unused helper timeout parameter
* feat: bundle android snapshot helper in npm package
* feat: enable bundled android snapshot helper by default
* refactor: simplify android snapshot helper resolution
* fix: harden android snapshot helper artifacts
* refactor: split android snapshot helper modules
* fix: use type-only snapshot helper imports
2026-04-27 16:01:37 -04:00
Michał Pierzchała
40fe5e23cc
fix: improve cloud remote auth UX ( #452 )
2026-04-26 18:42:45 -04:00
Michał Pierzchała
5a3cf94343
refactor: reduce fallow baseline noise ( #451 )
...
* refactor: reduce fallow baseline noise
* fix: guard snapshot role lookup
2026-04-26 16:48:51 -04:00
Michał Pierzchała
8be5fa21a2
test: deduplicate CLI capture helpers ( #450 )
2026-04-26 15:13:20 -04:00
Michał Pierzchała
f07e82e308
chore: add fallow quality gate ( #449 )
...
* chore: add fallow quality gate
* fix: refresh pnpm lockfile
2026-04-26 13:53:35 -04:00
Michał Pierzchała
2e2b9af8c3
chore: drop hosted runtime entrypoints ( #448 )
2026-04-26 12:02:13 -04:00
Michał Pierzchała
53750084a7
refactor: finish companion tunnel naming ( #446 )
2026-04-26 11:42:30 -04:00
Michał Pierzchała
48264caafa
refactor: extract companion tunnel core ( #442 )
2026-04-25 20:31:21 -04:00
Michał Pierzchała
adf1d06afc
refactor: avoid duplicate packet metadata ( #445 )
2026-04-25 20:31:12 -04:00
Michał Pierzchała
f926d2c9e1
feat: add cloud remote auth flow ( #443 )
2026-04-25 20:25:55 -04:00
Michał Pierzchała
3645479454
feat: export observability helpers ( #444 )
2026-04-25 20:24:01 -04:00
Michał Pierzchała
5cea4dd0b1
feat: pass through GitHub Actions artifact install sources ( #437 )
2026-04-25 19:30:51 -04:00
Michał Pierzchała
4ddd29cb5c
feat: add Metro reload command ( #440 )
2026-04-25 19:30:24 -04:00
Michał Pierzchała
6c7e8323e1
fix: support remote Android React DevTools tunnel ( #438 )
...
* 0.13.0
* fix: support remote android react devtools tunnel
2026-04-25 19:30:12 -04:00
Michał Pierzchała
b0813cad84
feat: add react devtools passthrough ( #435 )
...
* feat: add react devtools passthrough
* docs: clarify react devtools passthrough
* fix: preserve react devtools global flags
* docs: add react devtools validation guidance
* docs: simplify react devtools validation notes
2026-04-24 18:54:14 -04:00
Kacper Mikołajczak
2062bffc64
feat: parametrise .ad replay scripts ( #433 )
...
* feat: parametrise .ad replay scripts
Support ${VAR} substitution with env header directives and CLI -e
overrides so flows can be reused across app variants, environments,
and devices without duplicating the script.
Precedence (high->low): CLI -e > AD_* shell env > file-local env >
built-ins (AD_PLATFORM, AD_SESSION, AD_FILENAME, AD_DEVICE,
AD_ARTIFACTS). Supports ${VAR:-default} fallback, \${ escape, and
fails with file:line on unresolved vars.
* refactor: harden .ad replay parametrisation
Tighten the parametrisation surface introduced in the feat commit after
an internal review pass:
- Reserve the AD_* namespace for built-ins. User env (file env, CLI -e,
shell AD_VAR_*) can no longer define AD_* keys, which closes a built-in
shadowing vector (e.g. AD_VAR_AD_SESSION).
- Change the shell-env prefix from AD_* to AD_VAR_* so unrelated CI
secrets that happen to start with AD_ (AD_TOKEN, AD_SECRET_KEY) are
not auto-imported into replay scripts.
- Extend the replay -u guard to also reject scripts with \${VAR}
substitutions in any action, not just those with env directives, so
the writer never silently drops substitutions on heal-rewrite.
- Reword DX-unfriendly regex errors ("must match /^[A-Z_]...$/" ->
"must be uppercase letters, digits, and underscores, e.g. APP_ID").
- Docs rewrite with precedence table, three recipes, fallback/escape
examples, and a Notes block covering replay -u limitation, remote
daemon caveat, no nested fallback, and loud typo behaviour.
- Additional unit tests: namespace reservation on every path, shell
prefix migration, \${VAR} round-trip preservation through
writeReplayScript, green-path integration test with a fake invoke.
* fix: collect .ad replay shell env on the CLI, not the daemon
Review feedback (https://github.com/callstackincubator/agent-device/pull/433#discussion_r3130695225 ):
the daemon was reading AD_VAR_* from its own process.env, which meant
"AD_VAR_K=V agent-device replay" only worked if V was set when the
daemon started, and never worked for remote daemons.
The client now filters process.env for AD_VAR_* at request time and
ships the result as replayShellEnv on the DaemonRequest flags. The
daemon prefers the request value when present and falls back to its
own process.env for direct-daemon callers (internal tests).
Adds two integration tests pinning both paths and updates the docs
Notes block to reflect the new behaviour.
* fix: thread per-attempt artifacts dir into AD_ARTIFACTS under test
Review feedback (https://github.com/callstackincubator/agent-device/pull/433#discussion_r3130695235 ):
AD_ARTIFACTS is documented as available under "agent-device test", but
buildReplayBuiltinVars was only reading the raw flags.artifactsDir.
Under the default artifacts layout the flag is unset and \${AD_ARTIFACTS}
failed; when set with --artifacts-dir it pointed at the suite root, not
the resolved per-attempt directory the test runner actually writes to.
Plumb the attempt-level artifacts dir from session-test.ts through the
runReplay callback (via runReplayTestAttempt) down into the nested
replay request's flags.artifactsDir. The daemon side is unchanged -
buildReplayBuiltinVars just now sees the right value.
Extracts the nested-request flag merge into a testable helper
(buildNestedReplayFlags) to close the coverage gap between the test
harness and the replay runtime.
* refactor: DRY .ad replay parametrisation internals
- Share VAR_KEY_RE between session-replay-vars and session-replay-script
instead of re-declaring the same /^[A-Z_][A-Z0-9_]*$/ in each.
- Fold resolveReplayFlags + resolveReplayRuntime into a single generic
resolveStringProps<T>; the two were near-identical object-walkers.
- Un-export parseReplayEnvLine (was only used inside its own module).
- Table-drive the four "reject AD_* namespace" tests with test.each
instead of four near-duplicate test blocks.
- Extract runReplayFixture helper for runReplayScriptFile integration
tests; each test is now ~10 lines instead of ~30.
No behaviour change. 812 tests still green.
* docs: clarify replay built-in variables
* test: cover replay env serialization
---------
Co-authored-by: Michał Pierzchała <thymikee@gmail.com >
2026-04-24 18:54:03 -04:00
Michał Pierzchała
57ba479e51
fix: add screenshot max-size flag ( #428 )
2026-04-18 19:30:39 +02:00
Michał Pierzchała
ee6cc7cc5b
fix: use bridge metro runtime descriptors ( #425 )
2026-04-17 20:01:20 +02:00
Michał Pierzchała
63ab9d625c
fix: propagate remote config through remote flows ( #422 )
...
* fix: propagate remote config through commands
* fix: complete remote React Native flow
* test: cover remote install source lease reuse
* fix: honor remote config session scope
* refactor: drop remote react native shortcut
* docs: simplify remote tenancy skill flow
* docs: use trusted artifact placeholders
* docs: prune remote tenancy prompt note
2026-04-17 12:26:42 +02:00
Michał Pierzchała
1b71dfee4c
fix: defer remote connect lease and metro setup ( #417 )
2026-04-16 17:53:04 +02:00
Michał Pierzchała
f0eb8c6d4f
feat: add runtime admin, batch, diagnostics, and recording commands ( #416 )
...
* feat: add runtime admin and orchestration commands
* feat: add runtime diagnostics commands
* refactor: clean up runtime router surface
* refactor: remove runtime cleanup dead weight
* fix: clean up admin install temp inputs on resolve failure
2026-04-16 17:41:16 +02:00
Michał Pierzchała
afcd375323
feat: add runtime system and gesture commands ( #415 )
2026-04-16 15:32:17 +02:00
Michał Pierzchała
2c41225b7b
feat: add runtime app commands ( #414 )
2026-04-16 14:41:10 +02:00