adb-ready 0.2.0 → 0.3.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,101 @@ breaking changes.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.3.0] - 2026-09-11
13
+
14
+ ### Added
15
+
16
+ - Scope saved sessions, latest-problem lookup, AI context, and MCP session
17
+ resources to the canonical current project by default, with an explicit
18
+ `--all-projects` escape hatch for cross-project audits.
19
+ - Add privacy-safe cross-process Android target leases with heartbeats, bounded
20
+ expiry, stale-owner recovery, and ownership-checked cleanup for app, UI,
21
+ port, recording, and development-session mutations.
22
+ - Let `dev --dry-run` resolve and validate the project, command, ports, and
23
+ lifecycle hooks without requiring ADB or allocating an Android target. An
24
+ explicit target selector still produces the target-resolved plan.
25
+ - Add composable readiness contracts for boot, unlock, process, foreground
26
+ activity, exact UI selectors, host ports, HTTP responses, and bounded log
27
+ presence or absence. Expo and React Native sessions now verify Android boot
28
+ and Metro reachability before reporting ready.
29
+ - Add `adb-ready run -- COMMAND` as a finite automation entrypoint: start the
30
+ configured development service, satisfy readiness, execute one timeout-bound
31
+ verification command, preserve its exit code, and clean owned resources.
32
+ - Produce an atomic, redacted evidence bundle for every executed `run` with a
33
+ versioned manifest, structured result, NDJSON timeline, problems, logcat,
34
+ bounded AI context, JUnit XML, and GitHub step-summary Markdown.
35
+ - Advertise and validate a versioned result-envelope output schema for every
36
+ MCP tool, return screenshot pixels as MCP image content, and issue stable
37
+ connection-scoped target handles that reject stale or cross-connection use.
38
+ - Let MCP `ensure_ready` reconnect an explicitly addressed endpoint or the only
39
+ unambiguous paired wireless service before binding it.
40
+ - Exercise the complete MCP contract on Node.js, Bun, and Deno across both the
41
+ legacy 2025-11-25 and modern 2026-07-28 protocol eras.
42
+ - Add semantic UI find, assert, digest comparison, and selector-driven tap or
43
+ long-press workflows. Structured selectors support exact, prefix, and
44
+ contains matching plus enabled/actionable qualifiers; ambiguous mutations
45
+ fail instead of guessing.
46
+ - Add project-scoped `start_dev_session`, `get_dev_session`, and
47
+ `stop_dev_session` MCP tools backed by opaque durable handles. Managed
48
+ sessions continue outside one tool call, survive client reconnects, report
49
+ heartbeats and terminal exit state, and stop only their verified owned
50
+ process group.
51
+ - Add status, recency, preset, and count filters to project-scoped session
52
+ history.
53
+ - Install a single APK or a complete split APK set through verified `install`
54
+ and `install-multiple` workflows in both CLI and MCP.
55
+ - Detect and run Flutter and Capacitor Android projects on the exact selected
56
+ target, with boot readiness and no invented default port mappings.
57
+ - Add intent-level UI read, field fill/clear, and container-scoped scroll
58
+ workflows for CLI and MCP. Field replacement is capability-gated before
59
+ mutation and verifies observable values instead of inferring success from
60
+ input exit codes.
61
+ - Add a project-scoped MCP session index with status, preset, recency, limit,
62
+ and stable cursor pagination so agents can locate relevant saved evidence
63
+ without scanning unrelated history.
64
+ - Add a bounded CLI/MCP screen audit that identifies enabled actionable nodes
65
+ without human-readable labels and controls without stable resource IDs,
66
+ returning concrete nodes instead of a subjective score.
67
+ - Bind finite verification commands to the leased target through
68
+ `ANDROID_SERIAL`, `ADB_READY_TARGET_SERIAL`, and an explicit
69
+ `{target.serial}` argument placeholder for tools such as Maestro that require
70
+ their own device flag.
71
+ - Report measured acquisition time alongside every before/after UI snapshot so
72
+ agents and CI can identify slow accessibility inspection without guessing.
73
+
74
+ ### Changed
75
+
76
+ - Compact repeated successful health checks in bounded AI context while
77
+ preserving the complete redacted NDJSON timeline as source evidence.
78
+ - Reorganize the interactive home around development, test automation, device,
79
+ debugging, and project tasks; preserve root presentation flags and use copy
80
+ that remains meaningful in narrow terminals.
81
+ - Add the screen agent-readiness audit to the task-oriented Debug & evidence
82
+ menu without expanding the root menu.
83
+ - Lead the public README with the agent outcome, immediate setup, and a concrete
84
+ first task before the implementation details.
85
+
86
+ ### Fixed
87
+
88
+ - Return a structured capability overview for bare machine-mode invocation and
89
+ suggest high-confidence corrections for mistyped commands or options.
90
+ - Apply retention limits per project before the global safety cap so one noisy
91
+ project cannot evict another project's recent diagnostic history.
92
+ - Keep packaged command-matrix development sessions inside an isolated
93
+ temporary state directory instead of polluting the user's session store.
94
+ - Correct the public installation guide so its compatibility note no longer
95
+ contradicts the documented split APK support.
96
+ - Give accessibility hierarchy acquisition its own 15-second default deadline
97
+ in inspect and UI workflows while preserving an explicit global timeout.
98
+ This prevents ordinary slower OEM UI Automator dumps from failing at the
99
+ generic five-second ADB boundary.
100
+ - Classify Android's successful-exit `could not get idle state` response as a
101
+ distinct `UI_NOT_IDLE` problem with a safe recovery instruction instead of
102
+ misreporting an inaccessible hierarchy.
103
+ - Finalize an explicitly stopped managed development task as interrupted even
104
+ when Windows terminates the owned child before its signal handler can write
105
+ the terminal record.
106
+
12
107
  ## [0.2.0] - 2026-09-10
13
108
 
14
109
  ### Added
@@ -81,7 +176,8 @@ breaking changes.
81
176
  explainable configuration precedence.
82
177
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
83
178
 
84
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.2.0...HEAD
179
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.0...HEAD
180
+ [0.3.0]: https://github.com/Adam014/adb-ready/compare/v0.2.0...v0.3.0
85
181
  [0.2.0]: https://github.com/Adam014/adb-ready/compare/v0.1.2...v0.2.0
86
182
  [0.1.2]: https://github.com/Adam014/adb-ready/compare/v0.1.1...v0.1.2
87
183
  [0.1.1]: https://github.com/Adam014/adb-ready/compare/v0.1.0...v0.1.1
package/README.md CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  # ADB Ready
4
4
 
5
- **Make Android development accessible to coding agents.**
5
+ **The local Android runtime for coding agents.**
6
6
 
7
- An MCP-native, local-first CLI that gives agents and developers safe, typed
8
- control of Android targets, apps, UI, logs, evidence, and development sessions.
7
+ Give any MCP-capable agent a safe way to start your Android project, operate a
8
+ real app, verify what happened, and bring back evidence—not guesses.
9
9
 
10
10
  [![MCP](https://img.shields.io/badge/MCP-native-7c3aed)](./docs/agent-integration.md)
11
11
  [![CI](https://github.com/Adam014/adb-ready/actions/workflows/ci.yml/badge.svg)](https://github.com/Adam014/adb-ready/actions/workflows/ci.yml)
@@ -13,14 +13,26 @@ control of Android targets, apps, UI, logs, evidence, and development sessions.
13
13
  [![Node.js](https://img.shields.io/badge/Node.js-%E2%89%A522-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/)
14
14
  [![Bun](https://img.shields.io/badge/Bun-tested-14151a?logo=bun&logoColor=white)](https://bun.sh/)
15
15
  [![Deno](https://img.shields.io/badge/Deno_2-tested-111827?logo=deno&logoColor=white)](https://deno.com/)
16
+ [![Flutter](https://img.shields.io/badge/Flutter-supported-02569B?logo=flutter&logoColor=white)](./docs/dev-sessions.md)
17
+ [![Capacitor](https://img.shields.io/badge/Capacitor-supported-119EFF?logo=capacitor&logoColor=white)](./docs/dev-sessions.md)
16
18
  [![Platforms](https://img.shields.io/badge/hosts-macOS_%C2%B7_Linux_%C2%B7_Windows-64748b)](./COMPATIBILITY.md)
17
19
 
18
- [Quick start](#quick-start) · [AI agents](#android-tools-built-for-ai-agents) · [Why ADB Ready](#why-adb-ready) ·
20
+ [Quick start](#quick-start) · [AI agents](#built-for-agentic-android-development) · [Why ADB Ready](#why-adb-ready) ·
19
21
  [Workflows](#find-your-workflow) · [Documentation](#documentation) ·
20
22
  [Compatibility](#compatibility)
21
23
 
22
24
  </div>
23
25
 
26
+ ```bash
27
+ npm install --save-dev adb-ready
28
+ npx adb-ready agent setup codex
29
+ ```
30
+
31
+ Then ask your agent:
32
+
33
+ > Start this Expo app on my Android phone, wait until the login screen is
34
+ > actually ready, verify the change I made, and keep the failure evidence.
35
+
24
36
  ```text
25
37
  $ adb-ready dev
26
38
 
@@ -30,37 +42,41 @@ $ adb-ready dev
30
42
  ● Session healthy watching target, ports, and logs
31
43
  ```
32
44
 
33
- Stop rebuilding your Android setup every time a cable moves, Wi-Fi reconnects,
34
- or ADB picks the wrong device. ADB Ready turns scattered ADB operations into
35
- one deterministic workflow that developers, scripts, and AI agents can share.
45
+ ADB Ready handles the state around ADB that agents cannot safely guess: which
46
+ device belongs to the run, whether the app is truly ready, which ports and
47
+ processes it owns, and what evidence survives after a failure. It works locally
48
+ with Codex, Claude Code, Cursor, VS Code/Copilot, and any MCP client—without an
49
+ ADB Ready account, hosted service, or model API key.
36
50
 
37
- ```bash
38
- npx adb-ready dev
39
- ```
51
+ | Prepare | Operate | Prove |
52
+ | --- | --- | --- |
53
+ | Select one target, connect it, start the project, and keep ports healthy. | Inspect semantic UI, launch apps, act on elements, and capture the screen. | Gate tests on real readiness and return structured logs, context, and artifacts. |
40
54
 
41
- ## Android tools built for AI agents
55
+ ## Built for agentic Android development
42
56
 
43
- ADB Ready turns coding agents from passive log readers into safe Android
44
- operators. Its local MCP server exposes **19 schema-validated tools** for target
45
- readiness, app lifecycle, UI inspection, evidence capture, and verified UI
46
- actions—without giving the model a generic shell or unrestricted ADB access.
57
+ Most coding agents can edit an Android project but cannot verify the running
58
+ app. ADB Ready closes that loop with a built-in local MCP server and typed tools
59
+ for target readiness, development sessions, app lifecycle, semantic UI, logs,
60
+ and visual evidence—without handing the model an unrestricted shell or raw ADB.
47
61
 
48
62
  ```bash
49
63
  # Connect the current project to your coding agent
50
64
  npx adb-ready agent setup codex
51
65
  ```
52
66
 
53
- Codex, Claude Code, Cursor, VS Code/Copilot, Windsurf, and other MCP clients can:
67
+ Your agent can:
54
68
 
55
69
  - find and bind one deterministic Android target;
70
+ - start, check, and stop a durable development session across agent reconnects;
56
71
  - resolve, install, launch, restart, and inspect the project app;
57
- - inspect current UI, tap, type, swipe, press keys, and wait for state changes;
72
+ - find or assert semantic UI, tap by intent, type, swipe, and compare state;
58
73
  - capture screenshots and read bounded, redacted session evidence; and
59
74
  - verify actions against fresh device state instead of assuming they worked.
60
75
 
61
- Everything stays local unless your chosen AI client sends tool results to its
62
- model provider. Stale UI references are rejected, destructive app removal is
63
- not exposed to agents, and every tool returns structured evidence.
76
+ Every action is bound to one verified target and checked against fresh device
77
+ state. Stale UI references are rejected, destructive app removal is not exposed
78
+ to agents, and every tool returns a schema-validated result. Everything stays
79
+ local unless your chosen AI client sends tool results to its model provider.
64
80
 
65
81
  [Connect an AI agent in minutes →](./docs/agent-integration.md)
66
82
 
@@ -91,7 +107,7 @@ use. It does not replace Android Studio or force your project onto Bun.
91
107
 
92
108
  | Projects | Package managers | CLI runtimes |
93
109
  | ------------------------------------- | ----------------------- | -------------------- |
94
- | Expo · React Native · Gradle · custom | npm · pnpm · Yarn · Bun | Node.js · Bun · Deno |
110
+ | Expo · React Native · Flutter · Capacitor · Gradle · custom | npm · pnpm · Yarn · Bun | Node.js · Bun · Deno |
95
111
 
96
112
  ## Quick start
97
113
 
@@ -126,20 +142,21 @@ Running `adb-ready` without a command opens the interactive workflow home.
126
142
 
127
143
  | I want to… | Start here |
128
144
  | ----------------------------------------------------------- | ----------------------------------------------------------------------------------- |
129
- | launch Expo, React Native, Gradle, or my own command | [`adb-ready dev`](./docs/dev-sessions.md) |
145
+ | launch Expo, React Native, Flutter, Capacitor, Gradle, or my own command | [`adb-ready dev`](./docs/dev-sessions.md) |
130
146
  | pair or reconnect an Android device over Wi-Fi | [Targets and Wireless debugging](./docs/targets-and-wireless.md) |
131
147
  | choose the right device when several are connected | [Deterministic target selection](./docs/targets-and-wireless.md#explicit-selection) |
132
148
  | expose Metro, a local API, or a debugger to Android | [Port workflows](./docs/dev-sessions.md#port-ownership) |
133
149
  | install, inspect, launch, restart, or deep-link my app | [App lifecycle](./docs/apps-and-evidence.md#app-lifecycle) |
134
150
  | save a verified screenshot or bounded screen recording | [Evidence capture](./docs/apps-and-evidence.md#evidence-capture) |
135
151
  | give a developer or agent one bounded app/UI snapshot | [Structured inspection](./docs/apps-and-evidence.md#structured-inspection) |
136
- | safely tap, type, swipe, press keys, or wait for Android UI | [Safe UI automation](./docs/ui-automation.md) |
152
+ | find, read, fill, scroll, and verify the Android UI | [Safe UI automation](./docs/ui-automation.md) |
137
153
  | see only the Android logs that matter | [Focused logcat](./docs/logs-and-context.md#focused-logcat) |
138
154
  | understand why the last session failed | [Session problems](./docs/logs-and-context.md#session-history) |
139
155
  | prepare safe evidence for an AI assistant | [Diagnostic context](./docs/logs-and-context.md#diagnostic-context) |
140
156
  | connect Codex, Claude Code, Cursor, Copilot, or Windsurf | [`adb-ready agent setup`](./docs/agent-integration.md#connect-an-agent) |
141
157
  | share project settings without a custom shell script | [Configuration](./docs/configuration.md) |
142
158
  | use ADB Ready from CI or another tool | [Automation contract](./docs/automation.md) |
159
+ | run one smoke test and keep its logs, result, and report | [`adb-ready run`](./docs/automation.md#run-one-bounded-verification) |
143
160
  | fix a known setup or target problem | [Troubleshooting](./docs/troubleshooting.md) |
144
161
 
145
162
  ## What happens in `adb-ready dev`?
@@ -179,6 +196,7 @@ separate deterministic contract:
179
196
  adb-ready devices --json --non-interactive
180
197
  adb-ready logs --package com.example.app --format ndjson
181
198
  adb-ready context --since 5m --only problems,recovery,logs
199
+ adb-ready sessions list --status failed --since 24h --limit 5
182
200
  ```
183
201
 
184
202
  - machine data on `stdout`, human diagnostics on `stderr`;
@@ -208,7 +226,7 @@ Ready itself. [Explore the agent contract →](./docs/agent-integration.md)
208
226
  | [Threat model](./docs/threat-model.md) | Which trust boundaries, controls, and residual risks apply? |
209
227
  | [Troubleshooting](./docs/troubleshooting.md) | What should I do for each common failure? |
210
228
  | [Compatibility](./COMPATIBILITY.md) | Which hosts, runtimes, and environments are covered? |
211
- | [Example configs](./examples/README.md) | What can I copy for Expo, React Native, Gradle, or custom projects? |
229
+ | [Example configs](./examples/README.md) | What can I copy for Expo, React Native, Flutter, Capacitor, Gradle, or custom projects? |
212
230
 
213
231
  Run `adb-ready --help` for the full command list or
214
232
  `adb-ready help COMMAND` for focused options.