Michał Pierzchała
fa1b0b7c8a
docs: configure agent skill conventions ( #871 )
2026-06-25 11:02:37 +02:00
Michał Pierzchała
4142daa0c3
docs: update internal agent guidance ( #789 )
2026-06-12 14:58:18 +02:00
Michał Pierzchała
c3d50f7a84
docs: add agent PR readiness checklist ( #769 )
2026-06-11 13:29:19 +02:00
Michał Pierzchała
5462d516d9
chore(daemon): takeover notice, dev state-dir pruning, session state-dir command surface ( #754 )
...
* chore(daemon): takeover notice, dev state-dir pruning, session state-dir command surface
Implements the three follow-ups from #737 :
1. Print a one-line stderr notice when the client replaces a running
daemon, stating identity and reason (version mismatch, code-signature
mismatch, or unreachable). Best effort; never fails the command.
2. Add 'pnpm clean:daemon --prune-dev' to remove worktree-scoped state
dirs under ~/.agent-device/dev/ that no live daemon owns (same
pid/start-time liveness check as server-lifecycle) and that have been
idle for 14+ days. Scoped dirs only; one line printed per removal.
3. Fold 'session state-dir' into the regular command surface: the
session contract resolves it locally via the new
client.sessions.stateDir(), the cli.ts pre-dispatch special case is
removed, and the MCP session tool now exposes the state-dir action.
Closes #737
https://claude.ai/code/session_013WBrUjQ4WRxRkfVruALKX3
* docs: surface clean:daemon --prune-dev in AGENTS.md
Local agents discover daemon state-dir hygiene through AGENTS.md, not
the website docs, so document the prune flag next to the existing
worktree-scoped state-dir guidance.
https://claude.ai/code/session_013WBrUjQ4WRxRkfVruALKX3
---------
Co-authored-by: Claude <noreply@anthropic.com >
2026-06-11 07:41:34 +02:00
Michał Pierzchała
582710e01a
docs: add agent tightening pass guidance ( #746 )
2026-06-10 13:38:19 +02:00
Michał Pierzchała
a0522c7bcc
docs: document issue label workflow ( #742 )
2026-06-10 13:00:34 +02:00
Michał Pierzchała
0f7187f543
fix: scope source daemon state by worktree ( #719 )
...
* fix: scope source daemon state by worktree
* docs: clarify worktree daemon state tradeoffs
* ci: harden Apple runner cache
* chore: keep daemon state helper internal
* ci: validate Apple runner cache restores
* ci: simplify Apple runner cache setup
2026-06-10 10:32:58 +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
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
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
f2424f9d3a
refactor: centralize daemon command registry ( #693 )
2026-06-05 18:34:01 +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
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
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
b0e19c9d1e
perf: improve recording and interaction flows ( #563 )
...
* perf: improve recording and interaction flows
* feat: add React Native overlay dismiss command
* test: cover RedBox overlay dismissal
* fix: simplify React Native overlay snapshot hint
* fix: address daemon and scroll review feedback
* fix: unblock ci after recording polish
* chore: refresh fallow health baseline
* test: stabilize android provider suites
* test: cover rn overlay provider command
2026-05-20 20:32:08 +02:00
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
5c6c89e765
docs: update PR guidance ( #550 )
2026-05-15 19:01:32 +02:00
Michał Pierzchała
c1550721ce
fix: collapse Android snapshot row noise ( #545 )
...
* fix: collapse Android snapshot row noise
* docs: clarify agent-facing snapshot text
* fix: preserve semantics when collapsing Android snapshots
* fix: trim redundant Android collapse hints
* fix: collapse passive Android duplicate children
* refactor: drop unused Android snapshot hint code
* docs: clarify Android Metro verification guidance
* test: cover Android Metro reverse planning
* test: fix codex skillgym runner
* fix: satisfy fallow snapshot checks
* docs: clarify PR validation guidance
2026-05-15 18:52:11 +02:00
Michał Pierzchała
fceaab9525
refactor: clarify command architecture ( #512 )
2026-05-13 19:53:36 +02:00
Michał Pierzchała
274eeb5de8
refactor: route process spawning through exec helpers ( #504 )
2026-05-13 13:05:25 +02:00
Michał Pierzchała
8a1e195599
docs: trim stale internal docs ( #498 )
2026-05-12 10:31:27 +02:00
Michał Pierzchała
25d72895c5
feat: add MCP discovery router ( #494 )
2026-05-11 17:28:04 +02:00
Michał Pierzchała
f7c8f451ed
build: upgrade skillgym to 0.6.0 ( #473 )
...
* build: upgrade skillgym to 0.6.0
* test: raise skillgym parallel cap
* test: use skillgym command assertions
* test: use structured skillgym command matchers
* test: rely on skillgym default parallel cap
* test: accept bare planned commands
* test: run skillgym cases in parallel
2026-04-29 14:38:01 -04:00
Michał Pierzchała
bbb1d363c2
fix: handle iOS keyboard Done dismiss controls ( #469 )
2026-04-28 21:20:09 -04:00
Michał Pierzchała
6c368bf792
docs: update agent-device guidance ( #467 )
2026-04-28 17:07:33 -04:00
Michał Pierzchała
ffd472a5bf
feat: expose typed client command methods ( #380 )
2026-04-11 16:24:16 +02:00
Michał Pierzchała
98dc1c7def
refactor: extract shared test utilities and remove redundant assertions ( #382 )
...
* Remove test assertions redundant with TypeScript static analysis
Drop assertions that merely verify unset optional properties are
undefined (a JavaScript language guarantee) and a second test block
whose only runtime value was re-checking literals just assigned to
typed variables. TypeScript's compiler already validates that these
object literals conform to the declared union types.
* fix: remove unused descriptor variable to fix noUnusedLocals
* refactor: extract shared test utilities from duplicated patterns
Introduce src/__tests__/test-utils/ with reusable device fixtures,
session factories, store factory, snapshot builders, and mocked
binary helpers. Migrate 27 test files to use these shared utilities,
eliminating duplicated DeviceInfo constants, makeSession/makeStore
helpers, snapshot node builders, and withMockedAdb/withMockedXcrun
across core, daemon, and handler tests.
Add AGENTS.md guidance to check test-utils before writing new tests.
* fix: restore public Metro type contract coverage with satisfies fixtures
2026-04-11 14:21:15 +02:00
Michał Pierzchała
a48eb96336
docs: clarify agent runtime and preflight guidance ( #381 )
2026-04-11 13:02:55 +02:00
Michał Pierzchała
cf34583f47
fix: make Android snapshot freshness recovery internal ( #335 )
...
* feat: add --wait-stable for Android AX tree and --first/--last for find
Address the #1 token efficiency issue on Android: stale accessibility
trees after navigation. `snapshot --wait-stable <ms>` polls until two
consecutive uiautomator dumps match (tree stabilized) or the timeout
expires, eliminating retry loops caused by AX lag after screen transitions.
Also adds `find --first` / `find --last` flags to disambiguate when
multiple elements match, avoiding the fallback to raw snapshot +
coordinate taps that burned 4-6 extra tool calls.
https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC
* cleanup: simplify find disambiguation and tighten flag descriptions
- Use consistent array reassignment for --first/--last instead of
.length mutation
- Inline FIND_DISAMBIGUATE_FLAGS (only 2 entries, no reuse)
- Shorten --wait-stable usage description
https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC
* docs: add flag plumbing checklist and --wait-stable/--first/--last guidance
Add a 7-step checklist to AGENTS.md for adding new CLI flags — this was
the main non-obvious cost in the implementation (7 files for one flag).
Update exploration skill to recommend --wait-stable for Android AX
staleness recovery and --first/--last for ambiguous find matches.
https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC
* docs: improve skill clarity for weaker models
- Split "Most common mistake" into three labeled subsections (stale
refs, Android AX lag, React Native overlays) so each is scannable
independently
- Convert Android AX recovery from prose into a numbered list
- Add --wait-stable to debugging.md for consistency with exploration.md
- Replace vague "meaningful UI changes" with concrete triggers
- Tighten QA recovery sentence that was getting unwieldy
https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC
* fix: make Android snapshot freshness recovery internal
* fix: tighten Android freshness baselines
* docs: clarify Android freshness tradeoffs
* docs: clarify empty interactive freshness warning
---------
Co-authored-by: Claude <noreply@anthropic.com >
2026-04-01 14:22:39 +02:00
Michał Pierzchała
7a5e1dca75
refactor: P3 polish — Interactor type safety, error response builder, OXC ( #316 )
...
* refactor: polish improvements from codebase review (P3)
- Export Interactor type and add `satisfies Interactor` to both return
objects in getInteractor() for compile-time completeness checking
- Create errorResponse/successResponse builder in handlers/response.ts
and adopt it in 5 representative handler files (find, record-trace,
interaction-press, session-deploy, snapshot-wait)
- Add ESLint with typescript-eslint, fix unused imports and trivial
lint issues, configure rules to warn for stylistic patterns
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
* refactor: complete P3 items — consolidate runner files, document macOS exports, standardize dispatch
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
* fix: address P3 review feedback — remove invalid ESLint rules, dead code, unused export
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
* chore: replace eslint and prettier with oxc
* chore: tighten oxc config and upgrade typescript
* refactor: extract ios runner contract helpers
* docs: tighten agent guidance and add check scripts
* fix: resolve post-rebase validation issues
* fix: remove shell interpolation from metro launcher
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-29 20:43:24 +02:00
Michał Pierzchała
86674d2109
docs: clarify commit and PR title prefixes for agents ( #309 )
...
* docs: clarify commit and PR title prefixes for agents
* docs: default agents to ready-for-review PRs
2026-03-27 18:05:12 +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
bb8d9ddeb8
docs: restructure agent-device skill docs ( #260 )
...
* docs: restructure agent-device skill docs
* docs: keep agent-device references grouped
* docs: clarify batch use in verification
* docs: restore skill operational detail
* docs: add qa loop for acceptance criteria
* docs: clarify qa modes in skill router
* docs: improve skill mental model wording
* docs: simplify skill router labels
* docs: add accessibility audit guidance
* docs: update iOS simulator example device
* docs: clarify follow-up routing after session open
* docs: tighten session follow-up rule
2026-03-25 16:01:03 +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
2be4de0a75
chore: prettier
2026-03-17 18:18:53 +01:00
Michał Pierzchała
b6b7c6228a
refactor: split session replay helpers into focused modules ( #153 )
2026-03-03 14:41:35 +01:00
Michał Pierzchała
1854271086
chore: streamline AGENTS onboarding and testing matrix ( #107 )
2026-02-22 10:45:44 +01:00
Michał Pierzchała
e638e0ac60
feat: add full session log coverage and diagnostics workflows ( #106 )
...
* feat: add full session log coverage with doctor and marker tooling
* chore: split logs skill guidance into reference doc
2026-02-22 10:35:41 +01:00
Michał Pierzchała
44c966b4b4
feat: switch CLI long-press command to longpress ( #80 )
...
* fix: use longpress as sole CLI command and sync docs
* fix: keep long-press as hidden longpress alias
2026-02-20 12:51:01 +01:00
Michał Pierzchała
feeee5e414
feat: add unified node diagnostics and error normalization ( #73 )
...
* feat: add unified node diagnostics and error normalization
* chore: clarify diagnostics session scope and retry logging docs
* chore: simplify and de-stale AGENTS guidance
* chore: add diagnostics context for settings actions
2026-02-18 19:40:45 +01:00
Michał Pierzchała
2f64e845b0
feat: iOS device deep link support and web links ( #66 )
...
* feat: add iOS device URL session fallback behavior
* chore: trim PR branch naming note
* docs: remove simulator/device support phrasing
* feat: unify iOS deep link behavior across simulator and device
* feat: support iOS open <app> <url> flow
* fix: validate iOS open app+url argument shape
* docs: remove redundant iOS deep-link note
2026-02-16 20:35:00 +01:00
Michał Pierzchała
bb23711d10
docs: simplify and reconcile AGENTS guide ( #35 )
2026-02-09 21:20:59 +01:00
Michał Pierzchała
1ecbec9012
feat: replay --save-script for self-updating e2e tests; add it assertions; add DSL with selectors ( #24 )
...
* feat: for self-healing e2e tests; assertions
* rework ad scripts
2026-02-09 11:01:19 +01:00
Michał Pierzchała
9a3570fa1c
feat: Daemon modularization + capability-gated command routing + CI/test pipeline ( #20 )
...
* feat: Daemon modularization + capability-gated command routing + CI/test pipeline updates
* update android test
* fix arch
* no serial
* fixup tests locally; update runner on CI
* increase timeout
* drop unnecessary node build
2026-02-08 15:20:59 +01:00
Michał Pierzchała
d8440a6645
fix: make fill clear input and progressively fill the input ( #17 )
...
* fix: make fill clear input and progressively fill the input
* fixup ios
* improve text fill reliability
2026-02-06 12:16:20 +01:00
Michał Pierzchała
460886f714
document missing device iOS support; fix missing swift
2026-02-03 20:03:15 +01:00
Michał Pierzchała
2b8b936186
feat: appstate and apps --metadata
2026-02-03 16:10:21 +01:00
Michał Pierzchała
ca88d60bbf
feat: add hybrid backend for speed and correctness
2026-02-03 08:55:37 +01:00
Michał Pierzchała
0f90c61e7c
remove rect; adjust error messages
2026-02-02 14:06:11 +01:00