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 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.3.4...HEAD
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, 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)