414 Commits

Author SHA1 Message Date
Michał Pierzchała f3a9632491 0.12.4 v0.12.4 2026-04-13 17:32:36 +02:00
Michał Pierzchała e99bbb526e fix: include lease scope in Metro bridge calls (#408) 2026-04-13 17:32:23 +02:00
Michał Pierzchała ac01393a9e 0.12.3 v0.12.3 2026-04-13 14:12:21 +02:00
Michał Pierzchała 39a09f95c4 feat: export Android app parsers (#406) 2026-04-13 14:11:53 +02:00
Michał Pierzchała 47a1529e98 feat: add remote connect lifecycle (#407) 2026-04-13 14:11:40 +02:00
Michał Pierzchała 17317d01ac fix: support saved screenshot diffs (#404) 2026-04-12 14:09:55 +02:00
Michał Pierzchała 657945d241 0.12.2 v0.12.2 2026-04-12 12:45:32 +02:00
Michał Pierzchała 3e0a7b56bb feat: enrich screenshot diff guidance (#403)
* feat: enrich screenshot diff guidance

* fix: address screenshot diff review feedback

* docs: organize screenshot diff skill guidance

* refactor: prune screenshot diff result metadata

* refactor: tighten screenshot diff readout

* refactor: generalize screenshot diff heuristics

* feat: add compact screenshot diff hints

* refactor: prune screenshot diff guidance output
2026-04-12 12:45:15 +02:00
Michał Pierzchała e31ff32b54 0.12.1 v0.12.1 2026-04-11 22:17:09 +02:00
Michał Pierzchała f4f143ced7 fix: restore helper subpath exports (#402)
* fix: restore helper subpath exports

* fix: polish helper subpath typings
2026-04-11 22:16:32 +02:00
Michał Pierzchała b0f52a9905 0.12.0 v0.12.0 2026-04-11 21:37:29 +02:00
Michał Pierzchała d63cfcd956 fix: harden executable override policy (#398) 2026-04-11 21:36:54 +02:00
Michał Pierzchała 43110aa7d3 fix: support portable zip install-source extraction (#401) 2026-04-11 21:08:09 +02:00
Michał Pierzchała 24f398c9a9 refactor: remove scrollintoview command (#400) 2026-04-11 21:07:54 +02:00
Michał Pierzchała 8e42f2e654 fix: harden public API boundaries (#399) 2026-04-11 21:01:09 +02:00
Michał Pierzchała 406b3ed00d 0.11.16 v0.11.16 2026-04-11 20:20:04 +02:00
Michał Pierzchała 0fe724f252 feat: export error contract helpers (#396) 2026-04-11 20:14:46 +02:00
Michał Pierzchała 037caf749f feat: export artifact package resolver (#392) 2026-04-11 20:02:14 +02:00
Michał Pierzchała 0b76783360 feat: export install-source helpers (#393)
* feat: export install-source helpers

* fix: freeze exported archive extensions
2026-04-11 20:00:38 +02:00
Michał Pierzchała d2b02f1b93 feat: export snapshot contracts (#394) 2026-04-11 19:54:34 +02:00
Michał Pierzchała 6f13f60659 feat: export runtime transport helper (#395) 2026-04-11 19:53:24 +02:00
Michał Pierzchała 966fcb2547 feat: export finder helpers (#391) 2026-04-11 19:51:30 +02:00
Michał Pierzchała 84098be37a fix: preserve script argument whitespace (#397) 2026-04-11 19:49:54 +02:00
Michał Pierzchała 6cf63c262c feat: expose selector helper subpath (#384) 2026-04-11 19:07:42 +02:00
Michał Pierzchała e9c473034b 0.11.15 v0.11.15 2026-04-11 16:24:31 +02:00
Michał Pierzchała ffd472a5bf feat: expose typed client command methods (#380) 2026-04-11 16:24:16 +02:00
Michał Pierzchała 60bed774c6 chore: clean up unused exports (#383) 2026-04-11 15:43:39 +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 c91d547fb1 0.11.14 v0.11.14 2026-04-11 13:46:46 +02:00
Michał Pierzchała 4a1104e1f7 0.11.13 2026-04-11 13:42:48 +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 20021c3d1c refactor: reduce duplication and simplify codebase (#374)
* refactor: reduce duplication and simplify codebase

Eliminate copy-pasted functions, inline error boilerplate, and repeated
patterns across daemon handlers and platform modules.

Key changes:
- Deduplicate isEnvTruthy, displayNodeLabel, roundPercent into single sources
- Extract throwDaemonError helper for client/CLI daemon response errors
- Add sessionNotFoundResponse/unsupportedOperationResponse helpers and
  adopt errorResponse() across ~30 handler files (-565 lines)
- Unify BATCH_PARENT_FLAG_KEYS/REPLAY_PARENT_FLAG_KEYS into shared
  mergeParentFlags helper in handler-utils
- Extract createLinuxToolResolver for screenshot/clipboard tool detection
- Remove stale type-sync comments from contracts.ts and metro.ts

* refactor: deeper structural simplification pass

Bigger wins from restructuring, not just mechanical dedup:

- cli.ts: move logTailStopper to try/finally (eliminates 28 duplicate
  calls), extract writeCommandCliOutput/writeLogsCliOutput/writeNetworkCliOutput
  from 350-line if/else chain, fix remaining throwDaemonError site
- session-store.ts: replace 67-line sanitizeFlags destructure/reconstruct
  with 10-line pick-from-array loop
- record-trace: extract finalizeRecordingOverlay helper, replacing 4
  copies of the telemetry+overlay block across ios/android/recording files
- Deduplicate normalizeText (finders.ts + selectors-match.ts)
- Fix isEnvTruthy to preserve whitespace-tolerant parsing (.trim())

* fix: ensure logTailStopper runs before process.exit

process.exit() does not unwind the stack, so finally blocks are
skipped. Restore explicit logTailStopper() calls before each
process.exit() to prevent leaking the background daemon log tail
process. The finally block remains as a safety net for normal
return paths.

Also refactor writeCommandCliOutput to return an exit code instead
of calling process.exit() directly, keeping the exit decision in
the caller where cleanup is visible.

* refactor: simplify daemon failure responses

* refactor: remove redundant daemon response cast
2026-04-11 12:53:53 +02:00
Michał Pierzchała be001e1906 feat: add upload cache preflight (#379) 2026-04-11 12:53:30 +02:00
Michał Pierzchała 52d9707647 feat: expose apps list in node client (#378) 2026-04-11 12:33:58 +02:00
Michał Pierzchała 937ce8f6b2 test: stabilize android emulator boot tests (#377) 2026-04-11 10:36:38 +02:00
Michał Pierzchała 897c25def8 fix: clean up metro companion workers (#376)
* fix: clean up metro companion workers

* fix: clarify metro companion lease shutdown

* test: fix installed-package metro typecheck
2026-04-11 09:38:03 +02:00
Michał Pierzchała 3c62a2b839 fix: carry remote-config run id for install-from-source (#375)
* fix: carry remote-config run id for install-from-source

* test: reuse CLI capture helper in remote-config regression
2026-04-10 20:27:34 +02:00
Michał Pierzchała d4ee32f998 0.11.12 v0.11.12 2026-04-10 14:06:39 +02:00
Michał Pierzchała be09c1d58a feat: expose bridge-facing contract and metro APIs (#373)
* feat: expose bridge-facing contract and metro APIs

* chore: address review feedback on public contract exports

* refactor: reuse public daemon contracts internally

* refactor: reuse public metro types internally

* fix: widen bridge-facing public contracts
2026-04-10 14:06:27 +02:00
Michał Pierzchała c02cbd015f 0.11.11 v0.11.11 2026-04-10 13:03:33 +02:00
Michał Pierzchała 66d65c887c refactor: expose metro and remote config node apis (#372)
* refactor: expose metro and remote config node apis

* refactor: tighten public node api surface

* refactor: tighten metro public type boundaries

* refactor: normalize remote config public profile

* refactor: make remote config parser library-owned

* refactor: share remote config parsing primitives

* refactor: avoid regex in base url normalization
2026-04-10 13:03:13 +02:00
Michał Pierzchała a4d686e686 fix: package detached worker entrypoints (#371)
* fix: package detached worker entrypoints

* refactor: rename metro companion worker entry

* chore: trim packaged smoke logging
2026-04-10 11:45:20 +02:00
Michał Pierzchała defbe44852 0.11.10 v0.11.10 2026-04-10 09:45:04 +02:00
Michał Pierzchała f3181a51b6 fix: auto-manage metro companion for remote runs (#370)
* fix: auto-manage metro companion for remote runs

* fix: fail fast on non-retryable metro bridge errors

* fix: scope metro companion ownership by profile

* fix: align remote close metro companion cleanup

* fix: guard metro companion shutdown reconnect

* test: ignore expected bridge reset in metro reconnect test

* chore: format, cleanup
2026-04-10 09:42:38 +02:00
Michał Pierzchała 9cbba956b0 fix: require auth for non-loopback remote daemons (#369)
* fix: require auth for non-loopback remote daemons

* fix: allow mapped loopback remote daemons

* refactor: use net blocklist for loopback checks
2026-04-08 13:45:52 +02:00
Michał Pierzchała 877aaef920 0.11.9 v0.11.9 2026-04-08 11:00:58 +02:00
Michał Pierzchała c6666803c1 fix: address vite and lodash dependabot alerts (#368)
* fix: address vite and lodash dependabot alerts

* fix: update rspress theme dependencies
2026-04-08 09:09:38 +02:00
Michał Pierzchała 60e23b0b32 ci: reduce e2e retries in workflows (#367) 2026-04-07 20:50:18 +02:00
Michał Pierzchała 98069db6d5 fix: harden command execution and replay script escaping (#364)
* fix: harden command execution and replay script escaping

* fix: tighten whichCmd executable checks

* fix: allow explicit relative executables
2026-04-07 20:19:26 +02:00
Michał Pierzchała 3eccb5b5c4 fix: recover android network dump after stale logcat pid (#363) 2026-04-07 18:48:07 +02:00