adb-ready 0.3.5 → 0.4.1

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,84 @@ breaking changes.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.4.1] - 2026-09-16
13
+
14
+ ### Fixed
15
+
16
+ - Resolve Expo Go and development-client launch URLs through Expo's supported
17
+ `/_expo/link` redirect without probing an unhandled route that could consume
18
+ the request timeout, and report distinct timeout, connection, response, and
19
+ unsafe-redirect failures.
20
+
21
+ ## [0.4.0] - 2026-09-15
22
+
23
+ ### Added
24
+
25
+ - Detect explicit localhost ports in Expo `EXPO_PUBLIC_*` environment URLs,
26
+ include them in development-session reverse mappings and readiness checks,
27
+ and surface only their variable names, ports, and loaded environment-file
28
+ names.
29
+ - Show a compact, preset-aware live control bar in interactive `dev` sessions
30
+ while preserving the framework's native stdin and keeping automation silent.
31
+ - Attach Expo and React Native sessions to a positively identified Metro server
32
+ that is already running, without starting, controlling, or stopping it.
33
+
34
+ ### Fixed
35
+
36
+ - Stop and await development-session health monitoring before intentional
37
+ teardown, preventing cancelled probes from creating false recovery evidence.
38
+ - Omit a missing Android package `versionName` from structured app information
39
+ instead of serializing Android's `null` sentinel as a real version string.
40
+ - Stop reporting an available host package manager as detected project
41
+ metadata in Flutter, Gradle, and other non-JavaScript projects, and omit the
42
+ irrelevant setting from generated native-project configuration.
43
+ - Report missing Flutter and Gradle launchers as framework prerequisites with
44
+ the attempted launcher and actionable setup guidance instead of an
45
+ unspecified development-command error.
46
+ - Preserve unrelated diagnostic text when a short numeric ADB transport ID is
47
+ observed; transport IDs remain operational evidence and short private
48
+ literals match only complete identifier tokens.
49
+ - Parse complete Android 16 lock-screen and foreground-activity state during
50
+ strict readiness checks, and show actionable per-assertion failure details in
51
+ human session output.
52
+ - Apply `logs --tail` after logcat filtering, and overlap snapshot-to-follow
53
+ handoff so a live filtered tail neither loses nor repeats setup-time records.
54
+ - Reject contradictory log-tag include and exclude filters before accessing
55
+ ADB instead of allowing logcat argument order to silently override exclusion.
56
+ - Document every supported app-install and package-list action option in the
57
+ focused command help, including filtering and install verification flags.
58
+ - Make UI audits follow Android hierarchy semantics: inherit effective labels
59
+ through control descendants and actionable ancestors, exclude structural
60
+ focus and scrolling containers, and explain every finding with confidence
61
+ and rule rationale.
62
+ - Make `ui scroll` directions describe content navigation—such as `down`
63
+ revealing content below—while keeping `ui swipe` directions as physical
64
+ finger gestures.
65
+ - Reject unreadable or one-frame, zero-duration Android screen recordings
66
+ instead of publishing them as verified evidence, and report the measured
67
+ duration and frame count for valid recordings.
68
+ - Recognize Android's separate accessibility hint when verifying `ui clear`,
69
+ so an empty field displaying its placeholder is not reported as a failure.
70
+ - Let unique text and description selectors target their nearest enabled
71
+ actionable ancestor while reporting both the matched label and action node.
72
+ - Keep the interactive home and focused menus inside the detected terminal
73
+ width, including real narrow PTYs, without implicit last-column wrapping.
74
+ - Prevent a development session from reporting ready after its owned command
75
+ has already exited; distinguish passed readiness checks from the complete
76
+ session-ready gate and promote the first actionable child error.
77
+ - Keep successful readiness and health polling silent in human output and out
78
+ of the durable session journal while retaining failures and state changes.
79
+ - Keep Expo's automatic Android launch on the one selected ADB transport: start
80
+ Metro without Expo's all-device `--android` path, resolve the official launch
81
+ URL with an Expo 55-compatible fallback, and open it through target-scoped
82
+ ADB before reporting the session ready.
83
+ - Prevent an Expo development session from reporting ready while a detected
84
+ localhost API is unreachable from the selected Android target.
85
+ - Make `adb-ready help version` follow the same focused-help contract as every
86
+ other visible top-level command without loading project configuration or ADB.
87
+ - Fail with a specific service conflict when Metro's configured host port is
88
+ occupied by another service instead of launching into an ambiguous port error.
89
+
12
90
  ## [0.3.5] - 2026-09-12
13
91
 
14
92
  ### Changed
@@ -262,7 +340,8 @@ breaking changes.
262
340
  explainable configuration precedence.
263
341
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
264
342
 
265
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.5...HEAD
343
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.4.0...HEAD
344
+ [0.4.0]: https://github.com/Adam014/adb-ready/compare/v0.3.5...v0.4.0
266
345
  [0.3.5]: https://github.com/Adam014/adb-ready/compare/v0.3.4...v0.3.5
267
346
  [0.3.4]: https://github.com/Adam014/adb-ready/compare/v0.3.3...v0.3.4
268
347
  [0.3.3]: https://github.com/Adam014/adb-ready/compare/v0.3.2...v0.3.3
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, assert state, and capture the screen.
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 run
127
- against the same selected target through `ANDROID_SERIAL`. Add local services
128
- with repeated `--port` flags or replace the detected command after `--`:
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)