adb-ready 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,72 @@ breaking changes.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.5.0] - 2026-09-21
13
+
14
+ ### Fixed
15
+
16
+ - Adapt the interactive home to terminal height with full, compact, and minimal
17
+ layouts so every action remains visible in short panes.
18
+ - Derive interactive-home numeric shortcut hints from the visible choices so
19
+ every numbered action is accurately discoverable.
20
+ - Honor plain, JSON, and NDJSON output for both the `version` command and
21
+ `--version` shortcut while preserving conventional bare human output.
22
+ - Compile every `dev` and `run` dry run offline, including explicit device,
23
+ transport, remembered-target, interactive-selection, artifact, and AVD
24
+ inputs, so planning cannot inspect or mutate an Android target.
25
+ - Show autonomous target inspection, artifact selection, and verified app
26
+ deployment as live run steps, then preserve their compact result in human and
27
+ plain summaries without exposing local artifact paths.
28
+ - Restrict stable-identity probes to an explicitly selected serial, alias, or
29
+ transport ID so target-aware commands do not query unrelated visible Android
30
+ devices before operating on the requested target.
31
+ - Label port mappings by explicit host and device roles and show their actual
32
+ direction, including listener-specific removal plans, instead of presenting
33
+ distinct endpoints as an ambiguous bidirectional pair.
34
+ - Reconcile running session summaries from their complete persisted events so
35
+ session lists, details, and AI context show current counts, timestamps, and
36
+ the resolved preset before finalization without per-log manifest rewrites.
37
+ - Scope development-session crash diagnostics to a verified Android package
38
+ UID or PID, retarget Expo logs after its resolved launch, and keep unrelated
39
+ target-process crashes out of application problems and below attributed
40
+ evidence in prioritized AI context.
41
+ - Serialize Android UI hierarchy capture per target across CLI and MCP
42
+ processes, preventing concurrent read-only automation from racing the
43
+ platform's single active UI Automation service, without taking a mutation
44
+ lease for read-only UI queries.
45
+ - Replace non-functional framework shortcut claims with ADB Ready-owned Expo
46
+ reload and developer-menu controls over a verified local Expo channel, and
47
+ advertise them only after the interactive control input is active.
48
+ - Verify Expo's canonical project identity before attaching to an existing
49
+ Metro server, preventing a development session from silently reusing another
50
+ project's server on the same port.
51
+ - Support Expo and other localhost services that listen only on IPv6 by
52
+ creating a session-owned IPv4 loopback bridge for `adb reverse`, then close
53
+ that bridge during ownership-safe cleanup.
54
+
55
+ ### Added
56
+
57
+ - Model optional Android tooling as typed `supported`, `unavailable`,
58
+ `incompatible`, or `unverified` capabilities and build deterministic,
59
+ non-mutating plans for autonomous target, deployment, verifier, evidence,
60
+ and owned-resource cleanup workflows.
61
+ - Reuse or start one exact existing Android virtual device, prove ADB, boot,
62
+ package-manager, and unlock readiness, and stop only emulator processes that
63
+ the active workflow owns.
64
+ - Resolve explicit or framework build artifacts from bounded Android output
65
+ metadata, keep ABI variants separate, select only proven target-compatible
66
+ APKs, and reject stale, ambiguous, incomplete, or unsafe candidates.
67
+ - Deploy APK and split APK artifacts through one target-scoped ADB transport,
68
+ build and install AAB or APK Set inputs with explicit bundletool, verify the
69
+ installed package, version, and launch activity, and clean only owned
70
+ temporary output.
71
+ - Compose existing-AVD startup, deterministic artifact deployment, project
72
+ readiness, one bounded external verifier, normalized evidence, and
73
+ ownership-safe cleanup in the existing `run` command with a mutation-free
74
+ dry-run plan.
75
+ - Preserve bounded, redacted native verifier stdout and stderr in every run
76
+ evidence bundle, including structured preparation failures after cleanup.
77
+
12
78
  ## [0.4.1] - 2026-09-16
13
79
 
14
80
  ### Fixed
@@ -340,7 +406,9 @@ breaking changes.
340
406
  explainable configuration precedence.
341
407
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
342
408
 
343
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.4.0...HEAD
409
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.5.0...HEAD
410
+ [0.5.0]: https://github.com/Adam014/adb-ready/compare/v0.4.1...v0.5.0
411
+ [0.4.1]: https://github.com/Adam014/adb-ready/compare/v0.4.0...v0.4.1
344
412
  [0.4.0]: https://github.com/Adam014/adb-ready/compare/v0.3.5...v0.4.0
345
413
  [0.3.5]: https://github.com/Adam014/adb-ready/compare/v0.3.4...v0.3.5
346
414
  [0.3.4]: https://github.com/Adam014/adb-ready/compare/v0.3.3...v0.3.4
package/README.md CHANGED
@@ -71,8 +71,9 @@ them or require an ADB Ready account, hosted service, or model API key.
71
71
 
72
72
  Running `adb-ready` without a command opens the interactive workflow home.
73
73
  `adbr` is the shorter alias for the same CLI.
74
- The home and its focused menus adapt to the detected terminal width, including
75
- narrow split panes, without relying on horizontal scrolling.
74
+ The home and its focused menus adapt to the detected terminal width and height,
75
+ including narrow split panes and short terminals, without relying on scrolling
76
+ to reveal an action.
76
77
 
77
78
  ## What ADB Ready does
78
79
 
@@ -145,16 +146,20 @@ variables are discovered with Expo's own development environment resolution.
145
146
  ADB Ready safely adds their ports to the selected target and verifies the host
146
147
  services before calling the session ready. Explicit port configuration always
147
148
  wins, and `--no-auto-reverse-localhost` disables discovery when required.
149
+ IPv4 and IPv6 loopback listeners are supported; when ADB cannot reach an
150
+ IPv6-only service directly, ADB Ready creates and cleans a local session bridge.
148
151
 
149
- In an interactive Expo or Flutter session, ADB Ready shows the framework's
150
- active reload, developer-menu, debugger, and help shortcuts as soon as the
151
- session is ready. Input continues directly to the framework; automation and
152
- redirected output stay prompt-free.
152
+ In an interactive Expo session that ADB Ready owns, the ready state activates
153
+ verified `r` reload, `m` developer-menu, `?` help, and `Ctrl+C` cleanup controls.
154
+ ADB Ready advertises only actions it can execute; attached Metro servers keep
155
+ their controls in the original terminal, while automation and redirected output
156
+ stay prompt-free. [See live-session behavior →](./docs/dev-sessions.md#live-terminal-controls)
153
157
 
154
158
  If Expo or React Native Metro is already running, ADB Ready verifies its
155
- standard status endpoint and attaches the Android session without restarting or
156
- owning that server. An unrelated process on the same port is reported as a
157
- clear conflict instead of being mistaken for Metro.
159
+ standard status endpoint and project identity before attaching the Android
160
+ session without restarting or owning that server. A Metro server from another
161
+ project—or an unrelated process on the same port—is reported as a clear
162
+ conflict instead of being reused.
158
163
 
159
164
  [Reach your first ready session →](./docs/getting-started.md)
160
165
 
@@ -167,9 +172,18 @@ its exit code, and clean only resources created by the run:
167
172
  npx adb-ready run -- npm run test:e2e
168
173
  ```
169
174
 
175
+ Or make the target and deployment part of the same bounded job:
176
+
177
+ ```bash
178
+ npx adb-ready run --avd Pixel_9_API_36 --deploy --variant debug -- \
179
+ maestro '--device={target.serial}' test .maestro/smoke.yaml
180
+ ```
181
+
170
182
  Each executed run retains a redacted evidence bundle with its result,
171
- timeline, problems, focused logcat, AI context, JUnit XML, and GitHub step
172
- summary. Scripts also get deterministic JSON and NDJSON contracts:
183
+ timeline, problems, focused logcat, native verifier output, AI context, JUnit
184
+ XML, and GitHub step summary. Existing matching emulators are reused; only an
185
+ emulator started by that run is stopped. Scripts also get deterministic JSON
186
+ and NDJSON contracts:
173
187
 
174
188
  ```bash
175
189
  adb-ready devices --json --non-interactive
@@ -230,7 +244,12 @@ Android transport backend.
230
244
  - Pairing codes never enter command-line arguments.
231
245
  - Session data is bounded, redacted, private to the local user, and never
232
246
  uploaded by ADB Ready.
247
+ - Crash diagnostics are promoted only after ADB Ready verifies the application
248
+ package on the selected target; unrelated device-process failures remain
249
+ explicitly unattributed evidence.
233
250
  - Stale UI references are rejected before input is sent.
251
+ - UI hierarchy capture is serialized per target across CLI and MCP processes,
252
+ while independent targets remain parallel.
234
253
  - Field replacement verifies values without confusing a declared Android hint
235
254
  for user-entered text.
236
255
  - Screen recordings require a readable MP4 and a real multi-frame timeline;