104 Commits

Author SHA1 Message Date
Michał Pierzchała ce378593ac 0.11.2 2026-03-30 12:38:26 +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 153ac82c78 0.11.1 2026-03-27 19:39:00 +01:00
Michał Pierzchała d5cbec08fc [codex] Speed up Apple CI jobs (#305)
* perf: speed up apple ci jobs

* chore: address ci review feedback

* chore: unify apple runner build scripts
2026-03-27 17:51:13 +01:00
Michał Pierzchała 7c36b0f821 0.11.0 2026-03-27 16:50:53 +01:00
Michał Pierzchała 9eb0604065 refactor: migrate session.ts orchestrator to vitest + drop node:test (#284) (#302)
Remove all test-only DI parameters from handleSessionCommands (signature
drops from ~30 params to 5: req, sessionName, logPath, sessionStore,
invoke) and from the remaining sub-handlers (session-inventory,
session-observability, session-replay, session-close, session-state).

Migrate all 89 remaining node:test unit test files to vitest. Tests that
passed DI overrides now use vi.mock instead. Update vitest.config.ts to
include *.test.ts alongside *.vitest.ts, and remove the dual-runner
node --test from package.json scripts.

Add a permanent CI lint guard that fails if optional typeof DI seams
reappear in production code.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:39:59 +01:00
Michał Pierzchała fa212489d4 chore: remove duplicate publish build hook (#301) 2026-03-27 15:28:20 +01:00
Michał Pierzchała aae1771c54 refactor: remove JS test wrappers, run .ad replays directly on CI (#299)
* refactor: remove JS test wrappers, run .ad replay suites directly on CI

The platform JS test files (ios.test.ts, android.test.ts, macos.test.ts)
were thin wrappers that shelled out to `agent-device test` and asserted
on JSON counts. Since the CLI already exits non-zero on failure, the
wrappers added no value. CI now invokes the replay suites directly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add local replay entrypoints and restore physical device test

- Add pnpm scripts for each replay suite (test:replay:ios,
  test:replay:ios-device, test:replay:android, test:replay:macos)
  so local runs still exercise platform replays
- Restore physical-device iOS replay step in CI workflow
  (conditional on IOS_UDID variable)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 15:24:07 +01:00
Michał Pierzchała d1d2f3852a refactor: migrate leaf modules from test-only DI to vitest mocking (#289)
* refactor: migrate leaf modules from test-only DI to vitest mocking

Drop optional DI parameters from 6 production modules that existed
solely as test seams. Replace with vi.mock() in new vitest test files.

Production files simplified:
- recording-telemetry.ts: remove writeTelemetry?
- find.ts: remove dispatch?, use dispatchCommand directly
- install-source.ts: remove entire deps? object (7 params)
- session-runtime-command.ts: remove clearRuntimeHints?
- android-system-dialog.ts: remove 4 DI params, simplify internals
- record-trace-recording.ts: remove writeRecordingTelemetry from deps

Closes #281

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: restore DI seams broken by premature removal, fix test script

- request-router.ts: remove 4 dead DI params (snapshotAndroidUi,
  reopenAndroidApp, readAndroidAppState, execCommand) from
  RequestRouterDeps since recoverAndroidBlockingSystemDialog no
  longer accepts them
- session-runtime-command.ts: restore clearRuntimeHints? param that
  handleSessionCommands threads through — removing it broke callers
  that override the seam
- session.ts: restore clearRuntimeHints pass-through to runtime branch
- session.test.ts: restore the end-to-end runtime clear DI test
- package.json: include vitest in the default `test` script

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: rename *.vitest.test.ts → *.vitest.ts to avoid node:test collision

Node's default test discovery matches *.test.ts, which picked up vitest
files and crashed. Rename to *.vitest.ts so the two runners have disjoint
file sets without needing find-based exclusions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use vi.mocked().mock.calls instead of module-level mutable state

Replace manual clearCalls array with direct assertion on the mock,
consistent with the pattern used in request-router-android-modal.vitest.ts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 10:01:46 +01:00
Michał Pierzchała 5c30372c24 0.10.3 2026-03-25 19:55:16 +01:00
Michał Pierzchała 05a822455c chore: publish bundled public type declarations (#262)
* chore: publish bundled public type declarations

* chore: keep package root exports value-only
2026-03-25 18:40:36 +01:00
Michał Pierzchała ba5e951e1b 0.10.2 2026-03-25 17:15:44 +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 eb9573923a 0.10.1 2026-03-24 13:39:02 +01:00
Michał Pierzchała 92f4dfe731 0.10.0 2026-03-23 18:57:22 +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 9def661262 0.9.0 2026-03-20 14:59:16 +01:00
Michał Pierzchała 5c1601c7d8 0.8.6 2026-03-18 16:29:43 +01:00
Michał Pierzchała be734d1d5f 0.8.5 2026-03-18 12:47:55 +01:00
Michał Pierzchała 905f8ea936 0.8.4 2026-03-17 19:18:37 +01:00
Daniel Williams 3f9eee0704 feat: add diff screenshot command for pixel-level image comparison (#214)
* fix: rebase PR 214 onto main

* fix: clean up screenshot diff output handling

* refactor: split android screenshot module

* chore: remove clack prompts dependency

* chore: format command schema

* refactor: unify user path resolution

* fix: let android screenshot ui settle

---------

Co-authored-by: Michał Pierzchała <thymikee@gmail.com>
2026-03-17 19:14:45 +01:00
Michał Pierzchała 2be4de0a75 chore: prettier 2026-03-17 18:18:53 +01:00
Michał Pierzchała e5637bfab2 fix: remove interactive device prompt dependency (#232) 2026-03-17 15:53:29 +01:00
Michał Pierzchała ee83df80db chore: prune redundant tests (#229)
* chore: prune redundant tests

* chore: address test review feedback
2026-03-17 15:42:21 +01:00
Michał Pierzchała ecf1378a7e 0.8.3 2026-03-16 14:10:46 +01:00
Michał Pierzchała 056b314774 0.8.2 2026-03-16 14:10:39 +01:00
Michał Pierzchała 6644763cde fix: derive Android launch target for installFromSource (#225)
* 0.8.1

* fix: derive android launch target for installFromSource
2026-03-16 13:04:47 +01:00
Michał Pierzchała 1af4832937 0.8.0 2026-03-14 20:58:23 +01:00
Michał Pierzchała b5b78e379e 0.7.22 2026-03-14 20:56:18 +01:00
Michał Pierzchała 34b9579b51 Add typed TypeScript daemon client (#218)
* feat: add typed daemon client

* chore: tighten client package exports

* fix: preserve open and screenshot cli flags

* feat: expose runtime open and install-source client flows

* feat: expose retained materialization paths in client

* feat: complete typed client cleanup

* fix: fall back to XML plist parsing
2026-03-14 14:19:16 +01:00
Michał Pierzchała 45cc50362b 0.7.21 2026-03-12 18:41:00 +01:00
Michał Pierzchała 479537f36f 0.7.20 2026-03-12 17:29:55 +01:00
Michał Pierzchała b8cad6b226 0.7.19 2026-03-12 15:45:14 +01:00
Michał Pierzchała 76cf675d1e 0.7.18 2026-03-12 14:31:23 +01:00
Michał Pierzchała 51667d5b96 0.7.17 2026-03-12 13:39:29 +01:00
Michał Pierzchała 0f18a0ffa2 0.7.16 2026-03-12 13:05:49 +01:00
Michał Pierzchała c3fb690acb 0.7.15 2026-03-12 12:29:10 +01:00
Michał Pierzchała 2522984aa9 0.7.14 2026-03-11 16:11:08 +01:00
Michał Pierzchała 55d69f7729 0.7.13 2026-03-11 14:56:43 +01:00
Michał Pierzchała 12d54989b3 0.7.12 2026-03-09 19:50:59 +01:00
Michał Pierzchała 150399ec0c 0.7.11 2026-03-09 17:35:07 +01:00
Michał Pierzchała 51158c56ce 0.7.10 2026-03-09 16:37:53 +01:00
Michał Pierzchała 151f36bf34 0.7.9 2026-03-06 15:40:43 +01:00
Michał Pierzchała 674a221865 0.7.6 2026-03-03 14:14:47 +01:00
Michał Pierzchała e44eeab976 0.7.5 2026-02-28 14:15:07 +01:00
Michał Pierzchała e248bf38c0 0.7.4 2026-02-26 16:40:51 +01:00
Michał Pierzchała ed5dd7bc28 0.7.3 2026-02-26 11:48:55 +01:00
Michał Pierzchała 3c6be3c715 0.7.2 2026-02-26 10:44:55 +01:00
Michał Pierzchała 2e0f5da4b9 0.7.1 2026-02-25 18:25:35 +01:00