adb-ready 0.3.4 → 0.4.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 +92 -1
- package/README.md +37 -4
- package/dist/cli.js +4727 -406
- package/docs/RELEASING.md +2 -1
- package/docs/apps-and-evidence.md +11 -0
- package/docs/configuration.md +8 -0
- package/docs/dev-sessions.md +124 -3
- package/docs/getting-started.md +3 -0
- package/docs/logs-and-context.md +12 -1
- package/docs/troubleshooting.md +25 -0
- package/docs/ui-automation.md +31 -17
- package/package.json +4 -2
- package/schema/agent-tools-v1.json +4 -4
- package/schema/config-v1.schema.json +1 -0
- package/dist/cli.js.map +0 -132
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,95 @@ breaking changes.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.4.0] - 2026-09-15
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Detect explicit localhost ports in Expo `EXPO_PUBLIC_*` environment URLs,
|
|
17
|
+
include them in development-session reverse mappings and readiness checks,
|
|
18
|
+
and surface only their variable names, ports, and loaded environment-file
|
|
19
|
+
names.
|
|
20
|
+
- Show a compact, preset-aware live control bar in interactive `dev` sessions
|
|
21
|
+
while preserving the framework's native stdin and keeping automation silent.
|
|
22
|
+
- Attach Expo and React Native sessions to a positively identified Metro server
|
|
23
|
+
that is already running, without starting, controlling, or stopping it.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Stop and await development-session health monitoring before intentional
|
|
28
|
+
teardown, preventing cancelled probes from creating false recovery evidence.
|
|
29
|
+
- Omit a missing Android package `versionName` from structured app information
|
|
30
|
+
instead of serializing Android's `null` sentinel as a real version string.
|
|
31
|
+
- Stop reporting an available host package manager as detected project
|
|
32
|
+
metadata in Flutter, Gradle, and other non-JavaScript projects, and omit the
|
|
33
|
+
irrelevant setting from generated native-project configuration.
|
|
34
|
+
- Report missing Flutter and Gradle launchers as framework prerequisites with
|
|
35
|
+
the attempted launcher and actionable setup guidance instead of an
|
|
36
|
+
unspecified development-command error.
|
|
37
|
+
- Preserve unrelated diagnostic text when a short numeric ADB transport ID is
|
|
38
|
+
observed; transport IDs remain operational evidence and short private
|
|
39
|
+
literals match only complete identifier tokens.
|
|
40
|
+
- Parse complete Android 16 lock-screen and foreground-activity state during
|
|
41
|
+
strict readiness checks, and show actionable per-assertion failure details in
|
|
42
|
+
human session output.
|
|
43
|
+
- Apply `logs --tail` after logcat filtering, and overlap snapshot-to-follow
|
|
44
|
+
handoff so a live filtered tail neither loses nor repeats setup-time records.
|
|
45
|
+
- Reject contradictory log-tag include and exclude filters before accessing
|
|
46
|
+
ADB instead of allowing logcat argument order to silently override exclusion.
|
|
47
|
+
- Document every supported app-install and package-list action option in the
|
|
48
|
+
focused command help, including filtering and install verification flags.
|
|
49
|
+
- Make UI audits follow Android hierarchy semantics: inherit effective labels
|
|
50
|
+
through control descendants and actionable ancestors, exclude structural
|
|
51
|
+
focus and scrolling containers, and explain every finding with confidence
|
|
52
|
+
and rule rationale.
|
|
53
|
+
- Make `ui scroll` directions describe content navigation—such as `down`
|
|
54
|
+
revealing content below—while keeping `ui swipe` directions as physical
|
|
55
|
+
finger gestures.
|
|
56
|
+
- Reject unreadable or one-frame, zero-duration Android screen recordings
|
|
57
|
+
instead of publishing them as verified evidence, and report the measured
|
|
58
|
+
duration and frame count for valid recordings.
|
|
59
|
+
- Recognize Android's separate accessibility hint when verifying `ui clear`,
|
|
60
|
+
so an empty field displaying its placeholder is not reported as a failure.
|
|
61
|
+
- Let unique text and description selectors target their nearest enabled
|
|
62
|
+
actionable ancestor while reporting both the matched label and action node.
|
|
63
|
+
- Keep the interactive home and focused menus inside the detected terminal
|
|
64
|
+
width, including real narrow PTYs, without implicit last-column wrapping.
|
|
65
|
+
- Prevent a development session from reporting ready after its owned command
|
|
66
|
+
has already exited; distinguish passed readiness checks from the complete
|
|
67
|
+
session-ready gate and promote the first actionable child error.
|
|
68
|
+
- Keep successful readiness and health polling silent in human output and out
|
|
69
|
+
of the durable session journal while retaining failures and state changes.
|
|
70
|
+
- Keep Expo's automatic Android launch on the one selected ADB transport: start
|
|
71
|
+
Metro without Expo's all-device `--android` path, resolve the official launch
|
|
72
|
+
URL with an Expo 55-compatible fallback, and open it through target-scoped
|
|
73
|
+
ADB before reporting the session ready.
|
|
74
|
+
- Prevent an Expo development session from reporting ready while a detected
|
|
75
|
+
localhost API is unreachable from the selected Android target.
|
|
76
|
+
- Make `adb-ready help version` follow the same focused-help contract as every
|
|
77
|
+
other visible top-level command without loading project configuration or ADB.
|
|
78
|
+
- Fail with a specific service conflict when Metro's configured host port is
|
|
79
|
+
occupied by another service instead of launching into an ambiguous port error.
|
|
80
|
+
|
|
81
|
+
## [0.3.5] - 2026-09-12
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
|
|
85
|
+
- Enforce at least 95% coverage of measurable executable lines added or
|
|
86
|
+
replaced by a pull request, in addition to the existing repository-wide
|
|
87
|
+
line and function coverage floors.
|
|
88
|
+
- Keep external source maps available in local builds while excluding their
|
|
89
|
+
unreferenced payload from the published npm package.
|
|
90
|
+
- Make the read-only real-ADB check report logical targets and raw transports
|
|
91
|
+
separately and fail when ADB returns an unrecognized device state.
|
|
92
|
+
|
|
93
|
+
### Fixed
|
|
94
|
+
|
|
95
|
+
- Preserve complete mDNS transport serials containing Bonjour collision
|
|
96
|
+
suffixes such as ` (2)`, preventing one physical device from appearing as a
|
|
97
|
+
second unknown target.
|
|
98
|
+
- Classify connected `_adb-tls-connect._tcp` service transports as TLS even
|
|
99
|
+
when their mDNS serial contains a Bonjour collision suffix.
|
|
100
|
+
|
|
12
101
|
## [0.3.4] - 2026-09-12
|
|
13
102
|
|
|
14
103
|
### Added
|
|
@@ -242,7 +331,9 @@ breaking changes.
|
|
|
242
331
|
explainable configuration precedence.
|
|
243
332
|
- Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
|
|
244
333
|
|
|
245
|
-
[Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.
|
|
334
|
+
[Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.4.0...HEAD
|
|
335
|
+
[0.4.0]: https://github.com/Adam014/adb-ready/compare/v0.3.5...v0.4.0
|
|
336
|
+
[0.3.5]: https://github.com/Adam014/adb-ready/compare/v0.3.4...v0.3.5
|
|
246
337
|
[0.3.4]: https://github.com/Adam014/adb-ready/compare/v0.3.3...v0.3.4
|
|
247
338
|
[0.3.3]: https://github.com/Adam014/adb-ready/compare/v0.3.2...v0.3.3
|
|
248
339
|
[0.3.2]: https://github.com/Adam014/adb-ready/compare/v0.3.1...v0.3.2
|
package/README.md
CHANGED
|
@@ -71,6 +71,8 @@ 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
76
|
|
|
75
77
|
## What ADB Ready does
|
|
76
78
|
|
|
@@ -81,7 +83,9 @@ Running `adb-ready` without a command opens the interactive workflow home.
|
|
|
81
83
|
- [**Operate the app**](./docs/apps-and-evidence.md#app-lifecycle) — resolve,
|
|
82
84
|
install, launch, restart, deep-link, and inspect the project app.
|
|
83
85
|
- [**Verify the UI**](./docs/ui-automation.md) — find semantic elements, act
|
|
84
|
-
by intent
|
|
86
|
+
by intent—including labels inside clickable containers and content-directed
|
|
87
|
+
scrolling—assert state, audit effective accessibility labels, and capture the
|
|
88
|
+
screen.
|
|
85
89
|
- [**Debug with evidence**](./docs/logs-and-context.md) — keep focused logs,
|
|
86
90
|
session history, screenshots, recordings, and redacted context together.
|
|
87
91
|
- [**Automate a real device**](./docs/automation.md#run-one-bounded-verification)
|
|
@@ -123,9 +127,12 @@ npx adb-ready devices
|
|
|
123
127
|
npx adb-ready dev
|
|
124
128
|
```
|
|
125
129
|
|
|
126
|
-
Expo, React Native, Flutter, Capacitor, Gradle, and custom commands all
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
Expo, React Native, Flutter, Capacitor, Gradle, and custom commands all receive
|
|
131
|
+
the same selected target through `ANDROID_SERIAL`. Expo sessions go further:
|
|
132
|
+
ADB Ready starts Metro without Expo's all-device auto-open path, resolves the
|
|
133
|
+
project deep link from the verified server, and opens it only on the selected
|
|
134
|
+
ADB transport. Add local services with repeated `--port` flags or replace the
|
|
135
|
+
detected command after `--`:
|
|
129
136
|
|
|
130
137
|
```bash
|
|
131
138
|
adb-ready dev --port 8081 --port 8000
|
|
@@ -133,6 +140,22 @@ adb-ready dev -- pnpm run android:local
|
|
|
133
140
|
adb-ready dev --dry-run --json
|
|
134
141
|
```
|
|
135
142
|
|
|
143
|
+
For Expo projects, explicit localhost URLs in `EXPO_PUBLIC_*` environment
|
|
144
|
+
variables are discovered with Expo's own development environment resolution.
|
|
145
|
+
ADB Ready safely adds their ports to the selected target and verifies the host
|
|
146
|
+
services before calling the session ready. Explicit port configuration always
|
|
147
|
+
wins, and `--no-auto-reverse-localhost` disables discovery when required.
|
|
148
|
+
|
|
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.
|
|
153
|
+
|
|
154
|
+
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.
|
|
158
|
+
|
|
136
159
|
[Reach your first ready session →](./docs/getting-started.md)
|
|
137
160
|
|
|
138
161
|
### In CI and automation
|
|
@@ -173,6 +196,12 @@ recover safely or return bounded failure evidence
|
|
|
173
196
|
```
|
|
174
197
|
|
|
175
198
|
- Existing matching port mappings are reused; conflicts are not overwritten.
|
|
199
|
+
- Routine successful health polls stay silent; only failures, recovery actions,
|
|
200
|
+
and meaningful session state changes become durable output.
|
|
201
|
+
- `ready` means the selected target, required services, configured checks, and
|
|
202
|
+
framework launch have all succeeded while the owned development process is
|
|
203
|
+
not already failing; a passed port check alone never produces a ready
|
|
204
|
+
session.
|
|
176
205
|
- Wireless and port recovery is bounded and independently verified.
|
|
177
206
|
- An ADB server restart is never hidden inside recovery.
|
|
178
207
|
- On exit, ADB Ready cleans only resources owned by that session.
|
|
@@ -202,6 +231,10 @@ Android transport backend.
|
|
|
202
231
|
- Session data is bounded, redacted, private to the local user, and never
|
|
203
232
|
uploaded by ADB Ready.
|
|
204
233
|
- Stale UI references are rejected before input is sent.
|
|
234
|
+
- Field replacement verifies values without confusing a declared Android hint
|
|
235
|
+
for user-entered text.
|
|
236
|
+
- Screen recordings require a readable MP4 and a real multi-frame timeline;
|
|
237
|
+
a filename and hash alone never count as verified video evidence.
|
|
205
238
|
- Machine data stays on `stdout`; human diagnostics stay on `stderr`.
|
|
206
239
|
|
|
207
240
|
[Review the complete threat model →](./docs/threat-model.md)
|