adb-ready 0.2.0 → 0.3.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,116 @@ breaking changes.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.3.1] - 2026-09-11
13
+
14
+ ### Changed
15
+
16
+ - Clarify package ownership and normalize the maintainer identity used by
17
+ repository history and published package metadata.
18
+ - Reorganize the public README around six user outcomes and explicit entry
19
+ paths for coding agents, terminal users, and CI automation.
20
+ - Add copy-and-paste installation paths for npm, pnpm, Yarn, and Bun.
21
+ - Replace the simulated terminal snippet with an optimized product walkthrough
22
+ showing development startup, UI verification, and agent-driven recovery,
23
+ while keeping the marketing asset out of the installed npm package.
24
+ - Require an explicit release tag when manually dispatching the release
25
+ workflow instead of retaining a stale version default.
26
+
27
+ ## [0.3.0] - 2026-09-11
28
+
29
+ ### Added
30
+
31
+ - Scope saved sessions, latest-problem lookup, AI context, and MCP session
32
+ resources to the canonical current project by default, with an explicit
33
+ `--all-projects` escape hatch for cross-project audits.
34
+ - Add privacy-safe cross-process Android target leases with heartbeats, bounded
35
+ expiry, stale-owner recovery, and ownership-checked cleanup for app, UI,
36
+ port, recording, and development-session mutations.
37
+ - Let `dev --dry-run` resolve and validate the project, command, ports, and
38
+ lifecycle hooks without requiring ADB or allocating an Android target. An
39
+ explicit target selector still produces the target-resolved plan.
40
+ - Add composable readiness contracts for boot, unlock, process, foreground
41
+ activity, exact UI selectors, host ports, HTTP responses, and bounded log
42
+ presence or absence. Expo and React Native sessions now verify Android boot
43
+ and Metro reachability before reporting ready.
44
+ - Add `adb-ready run -- COMMAND` as a finite automation entrypoint: start the
45
+ configured development service, satisfy readiness, execute one timeout-bound
46
+ verification command, preserve its exit code, and clean owned resources.
47
+ - Produce an atomic, redacted evidence bundle for every executed `run` with a
48
+ versioned manifest, structured result, NDJSON timeline, problems, logcat,
49
+ bounded AI context, JUnit XML, and GitHub step-summary Markdown.
50
+ - Advertise and validate a versioned result-envelope output schema for every
51
+ MCP tool, return screenshot pixels as MCP image content, and issue stable
52
+ connection-scoped target handles that reject stale or cross-connection use.
53
+ - Let MCP `ensure_ready` reconnect an explicitly addressed endpoint or the only
54
+ unambiguous paired wireless service before binding it.
55
+ - Exercise the complete MCP contract on Node.js, Bun, and Deno across both the
56
+ legacy 2025-11-25 and modern 2026-07-28 protocol eras.
57
+ - Add semantic UI find, assert, digest comparison, and selector-driven tap or
58
+ long-press workflows. Structured selectors support exact, prefix, and
59
+ contains matching plus enabled/actionable qualifiers; ambiguous mutations
60
+ fail instead of guessing.
61
+ - Add project-scoped `start_dev_session`, `get_dev_session`, and
62
+ `stop_dev_session` MCP tools backed by opaque durable handles. Managed
63
+ sessions continue outside one tool call, survive client reconnects, report
64
+ heartbeats and terminal exit state, and stop only their verified owned
65
+ process group.
66
+ - Add status, recency, preset, and count filters to project-scoped session
67
+ history.
68
+ - Install a single APK or a complete split APK set through verified `install`
69
+ and `install-multiple` workflows in both CLI and MCP.
70
+ - Detect and run Flutter and Capacitor Android projects on the exact selected
71
+ target, with boot readiness and no invented default port mappings.
72
+ - Add intent-level UI read, field fill/clear, and container-scoped scroll
73
+ workflows for CLI and MCP. Field replacement is capability-gated before
74
+ mutation and verifies observable values instead of inferring success from
75
+ input exit codes.
76
+ - Add a project-scoped MCP session index with status, preset, recency, limit,
77
+ and stable cursor pagination so agents can locate relevant saved evidence
78
+ without scanning unrelated history.
79
+ - Add a bounded CLI/MCP screen audit that identifies enabled actionable nodes
80
+ without human-readable labels and controls without stable resource IDs,
81
+ returning concrete nodes instead of a subjective score.
82
+ - Bind finite verification commands to the leased target through
83
+ `ANDROID_SERIAL`, `ADB_READY_TARGET_SERIAL`, and an explicit
84
+ `{target.serial}` argument placeholder for tools such as Maestro that require
85
+ their own device flag.
86
+ - Report measured acquisition time alongside every before/after UI snapshot so
87
+ agents and CI can identify slow accessibility inspection without guessing.
88
+
89
+ ### Changed
90
+
91
+ - Compact repeated successful health checks in bounded AI context while
92
+ preserving the complete redacted NDJSON timeline as source evidence.
93
+ - Reorganize the interactive home around development, test automation, device,
94
+ debugging, and project tasks; preserve root presentation flags and use copy
95
+ that remains meaningful in narrow terminals.
96
+ - Add the screen agent-readiness audit to the task-oriented Debug & evidence
97
+ menu without expanding the root menu.
98
+ - Lead the public README with the agent outcome, immediate setup, and a concrete
99
+ first task before the implementation details.
100
+
101
+ ### Fixed
102
+
103
+ - Return a structured capability overview for bare machine-mode invocation and
104
+ suggest high-confidence corrections for mistyped commands or options.
105
+ - Apply retention limits per project before the global safety cap so one noisy
106
+ project cannot evict another project's recent diagnostic history.
107
+ - Keep packaged command-matrix development sessions inside an isolated
108
+ temporary state directory instead of polluting the user's session store.
109
+ - Correct the public installation guide so its compatibility note no longer
110
+ contradicts the documented split APK support.
111
+ - Give accessibility hierarchy acquisition its own 15-second default deadline
112
+ in inspect and UI workflows while preserving an explicit global timeout.
113
+ This prevents ordinary slower OEM UI Automator dumps from failing at the
114
+ generic five-second ADB boundary.
115
+ - Classify Android's successful-exit `could not get idle state` response as a
116
+ distinct `UI_NOT_IDLE` problem with a safe recovery instruction instead of
117
+ misreporting an inaccessible hierarchy.
118
+ - Finalize an explicitly stopped managed development task as interrupted even
119
+ when Windows terminates the owned child before its signal handler can write
120
+ the terminal record.
121
+
12
122
  ## [0.2.0] - 2026-09-10
13
123
 
14
124
  ### Added
@@ -81,7 +191,9 @@ breaking changes.
81
191
  explainable configuration precedence.
82
192
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
83
193
 
84
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.2.0...HEAD
194
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.1...HEAD
195
+ [0.3.1]: https://github.com/Adam014/adb-ready/compare/v0.3.0...v0.3.1
196
+ [0.3.0]: https://github.com/Adam014/adb-ready/compare/v0.2.0...v0.3.0
85
197
  [0.2.0]: https://github.com/Adam014/adb-ready/compare/v0.1.2...v0.2.0
86
198
  [0.1.2]: https://github.com/Adam014/adb-ready/compare/v0.1.1...v0.1.2
87
199
  [0.1.1]: https://github.com/Adam014/adb-ready/compare/v0.1.0...v0.1.1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 ADB Ready contributors
3
+ Copyright (c) 2026 Adam Stádník
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
+ Prepare one Android target, run your project, operate the app, and return
8
+ verified evidence—for developers, agents, and CI.
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,234 +13,222 @@ 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) ·
19
- [Workflows](#find-your-workflow) · [Documentation](#documentation) ·
20
- [Compatibility](#compatibility)
20
+ [Quick start](#quick-start) · [What it does](#what-adb-ready-does) ·
21
+ [AI agents](#with-a-coding-agent) · [CI](#in-ci-and-automation) ·
22
+ [Documentation](#documentation)
23
+
24
+ <img src="https://raw.githubusercontent.com/Adam014/adb-ready/main/docs/assets/adb-ready-demo.gif" alt="ADB Ready prepares an Android development session, verifies the app UI, and lets a coding agent recover lost localhost access." width="1120" />
21
25
 
22
26
  </div>
23
27
 
24
- ```text
25
- $ adb-ready dev
28
+ ## Quick start
26
29
 
27
- Android target selected Pixel 9 · wireless
28
- ✓ Localhost ports ready 8081 → 8081
29
- ✓ Development command started pnpm run start --android
30
- ● Session healthy watching target, ports, and logs
31
- ```
30
+ Install ADB Ready in the Android project your team wants to run:
32
31
 
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.
32
+ **npm** · default
36
33
 
37
34
  ```bash
35
+ npm install --save-dev adb-ready
38
36
  npx adb-ready dev
39
37
  ```
40
38
 
41
- ## Android tools built for AI agents
39
+ <details>
40
+ <summary><strong>Use pnpm, Yarn, or Bun</strong></summary>
42
41
 
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.
42
+ #### pnpm
47
43
 
48
44
  ```bash
49
- # Connect the current project to your coding agent
50
- npx adb-ready agent setup codex
45
+ pnpm add --save-dev adb-ready
46
+ pnpm exec adb-ready dev
51
47
  ```
52
48
 
53
- Codex, Claude Code, Cursor, VS Code/Copilot, Windsurf, and other MCP clients can:
49
+ #### Yarn
54
50
 
55
- - find and bind one deterministic Android target;
56
- - resolve, install, launch, restart, and inspect the project app;
57
- - inspect current UI, tap, type, swipe, press keys, and wait for state changes;
58
- - capture screenshots and read bounded, redacted session evidence; and
59
- - verify actions against fresh device state instead of assuming they worked.
51
+ ```bash
52
+ yarn add --dev adb-ready
53
+ yarn adb-ready dev
54
+ ```
60
55
 
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.
56
+ #### Bun
64
57
 
65
- [Connect an AI agent in minutes →](./docs/agent-integration.md)
58
+ ```bash
59
+ bun add --dev adb-ready
60
+ bunx adb-ready dev
61
+ ```
66
62
 
67
- ## Why ADB Ready?
63
+ </details>
68
64
 
69
- ### Start once. Stay ready.
65
+ ADB Ready handles the state around ADB that a person, script, or coding agent
66
+ should not guess: which device belongs to the run, whether the app is ready,
67
+ which ports and processes the session owns, and what evidence survives a
68
+ failure. It orchestrates your real ADB and framework tools; it does not replace
69
+ them or require an ADB Ready account, hosted service, or model API key.
70
70
 
71
- ADB Ready finds one usable Android target, prepares its ports, launches your
72
- project with the correct `ANDROID_SERIAL`, and watches the session while you
73
- work.
71
+ Running `adb-ready` without a command opens the interactive workflow home.
72
+ `adbr` is the shorter alias for the same CLI.
74
73
 
75
- ### Recover without the ritual.
74
+ ## What ADB Ready does
76
75
 
77
- When a wireless target or reverse mapping disappears, recovery is bounded,
78
- target-safe, and independently verified. It never silently restarts the shared
79
- ADB server or rewrites another tool's mapping.
76
+ - [**Run the project**](./docs/dev-sessions.md) select one target, prepare
77
+ ports, launch the framework, and keep the session healthy.
78
+ - [**Connect the device**](./docs/targets-and-wireless.md) discover, pair,
79
+ reconnect, and deterministically bind a physical device or emulator.
80
+ - [**Operate the app**](./docs/apps-and-evidence.md#app-lifecycle) — resolve,
81
+ install, launch, restart, deep-link, and inspect the project app.
82
+ - [**Verify the UI**](./docs/ui-automation.md) — find semantic elements, act
83
+ by intent, assert state, and capture the screen.
84
+ - [**Debug with evidence**](./docs/logs-and-context.md) — keep focused logs,
85
+ session history, screenshots, recordings, and redacted context together.
86
+ - [**Automate a real device**](./docs/automation.md#run-one-bounded-verification)
87
+ — gate a finite command on readiness and return stable results, reports, and
88
+ artifacts.
80
89
 
81
- ### Give agents evidence, not terminal noise.
90
+ ## Choose how you work
82
91
 
83
- Focused logcat, structured problems, and a saved redacted timeline keep the
84
- important failure evidence together. Agents receive bounded, machine-readable
85
- context and typed actions instead of guessing from an unstructured terminal.
92
+ ### With a coding agent
86
93
 
87
- ### Keep your existing stack.
94
+ Connect the current project to Codex, Claude Code, Cursor, VS Code/Copilot,
95
+ Windsurf, or another MCP client:
88
96
 
89
- ADB Ready orchestrates the real ADB, framework, and package manager you already
90
- use. It does not replace Android Studio or force your project onto Bun.
97
+ ```bash
98
+ npx adb-ready agent setup codex
99
+ ```
91
100
 
92
- | Projects | Package managers | CLI runtimes |
93
- | ------------------------------------- | ----------------------- | -------------------- |
94
- | Expo · React Native · Gradle · custom | npm · pnpm · Yarn · Bun | Node.js · Bun · Deno |
101
+ Then ask for the outcome you want:
95
102
 
96
- ## Quick start
103
+ > Start this Expo app on my Android phone, wait until the login screen is
104
+ > actually ready, verify my change, and keep the failure evidence.
97
105
 
98
- You need Android SDK Platform-Tools and Node.js 22 or newer for the standard npm
99
- entrypoint.
106
+ The local MCP server gives agents typed tools for target readiness, durable
107
+ development sessions, app lifecycle, semantic UI, logs, screenshots, and saved
108
+ evidence. Every result is schema-validated and checked against fresh device
109
+ state. Agents do not receive a generic shell, unrestricted raw ADB, or app
110
+ removal.
111
+
112
+ [Connect an AI agent in minutes →](./docs/agent-integration.md)
113
+
114
+ ### From your terminal
115
+
116
+ Check the host, inspect visible targets, and start the complete development
117
+ loop:
100
118
 
101
119
  ```bash
102
- # Check ADB and the host
103
120
  npx adb-ready doctor
104
-
105
- # See connected and wireless targets
106
121
  npx adb-ready devices
107
-
108
- # Start the complete development session
109
122
  npx adb-ready dev
110
123
  ```
111
124
 
112
- Add it to a project when the team should share one version:
125
+ Expo, React Native, Flutter, Capacitor, Gradle, and custom commands all run
126
+ against the same selected target through `ANDROID_SERIAL`. Add local services
127
+ with repeated `--port` flags or replace the detected command after `--`:
113
128
 
114
129
  ```bash
115
- npm install --save-dev adb-ready
116
- npx adb-ready init
117
- npx adb-ready dev
130
+ adb-ready dev --port 8081 --port 8000
131
+ adb-ready dev -- pnpm run android:local
132
+ adb-ready dev --dry-run --json
118
133
  ```
119
134
 
120
- Running `adb-ready` without a command opens the interactive workflow home.
121
- `adbr` is the shorter alias for the same CLI.
122
-
123
- [Read the five-minute setup →](./docs/getting-started.md)
124
-
125
- ## Find your workflow
126
-
127
- | I want to… | Start here |
128
- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------- |
129
- | launch Expo, React Native, Gradle, or my own command | [`adb-ready dev`](./docs/dev-sessions.md) |
130
- | pair or reconnect an Android device over Wi-Fi | [Targets and Wireless debugging](./docs/targets-and-wireless.md) |
131
- | choose the right device when several are connected | [Deterministic target selection](./docs/targets-and-wireless.md#explicit-selection) |
132
- | expose Metro, a local API, or a debugger to Android | [Port workflows](./docs/dev-sessions.md#port-ownership) |
133
- | install, inspect, launch, restart, or deep-link my app | [App lifecycle](./docs/apps-and-evidence.md#app-lifecycle) |
134
- | save a verified screenshot or bounded screen recording | [Evidence capture](./docs/apps-and-evidence.md#evidence-capture) |
135
- | 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) |
137
- | see only the Android logs that matter | [Focused logcat](./docs/logs-and-context.md#focused-logcat) |
138
- | understand why the last session failed | [Session problems](./docs/logs-and-context.md#session-history) |
139
- | prepare safe evidence for an AI assistant | [Diagnostic context](./docs/logs-and-context.md#diagnostic-context) |
140
- | connect Codex, Claude Code, Cursor, Copilot, or Windsurf | [`adb-ready agent setup`](./docs/agent-integration.md#connect-an-agent) |
141
- | share project settings without a custom shell script | [Configuration](./docs/configuration.md) |
142
- | use ADB Ready from CI or another tool | [Automation contract](./docs/automation.md) |
143
- | fix a known setup or target problem | [Troubleshooting](./docs/troubleshooting.md) |
144
-
145
- ## What happens in `adb-ready dev`?
135
+ [Reach your first ready session →](./docs/getting-started.md)
146
136
 
147
- ```text
148
- find or recover one target
149
-
150
- verify only the ports your project needs
151
-
152
- start the project on that same target
153
-
154
- watch target · ports · logs · child process
155
-
156
- recover safely or explain exactly what needs you
157
- ```
137
+ ### In CI and automation
158
138
 
159
- - Expo and React Native receive reverse port `8081` by default.
160
- - Add any local service with repeated `--port` flags.
161
- - Pass any command after `--`; it runs directly without an implicit shell.
162
- - Existing matching mappings are reused. Conflicts are never overwritten.
163
- - On exit, only resources created by that session are cleaned up.
164
- - The final exit code and a bounded, redacted session record are preserved.
139
+ Wait for declared readiness, execute one bounded verification command, preserve
140
+ its exit code, and clean only resources created by the run:
165
141
 
166
142
  ```bash
167
- adb-ready dev --port 8081 --port 8000
168
- adb-ready dev -- pnpm run android:local
169
- adb-ready dev --dry-run --json
143
+ npx adb-ready run -- npm run test:e2e
170
144
  ```
171
145
 
172
- ## Built for humans, agents, and automation
173
-
174
- The interactive CLI provides keyboard navigation, live state, reduced-motion
175
- support, narrow-terminal fallbacks, and clear recovery feedback. Scripts get a
176
- separate deterministic contract:
146
+ Each executed run retains a redacted evidence bundle with its result,
147
+ timeline, problems, focused logcat, AI context, JUnit XML, and GitHub step
148
+ summary. Scripts also get deterministic JSON and NDJSON contracts:
177
149
 
178
150
  ```bash
179
151
  adb-ready devices --json --non-interactive
180
152
  adb-ready logs --package com.example.app --format ndjson
181
- adb-ready context --since 5m --only problems,recovery,logs
153
+ adb-ready sessions list --status failed --since 24h --limit 5
182
154
  ```
183
155
 
184
- - machine data on `stdout`, human diagnostics on `stderr`;
185
- - versioned JSON results and NDJSON events;
186
- - no prompt, animation, or terminal takeover in redirected/CI execution;
187
- - stable problem categories, meaningful exit codes, timeouts, and dry runs; and
188
- - explicit target, ADB path, and remote ADB server overrides.
156
+ [Build a readiness-gated device job →](./docs/automation.md)
189
157
 
190
- Local AI agents use the same contracts through a schema-validated MCP stdio
191
- server. The package includes a version-matched public tool schema, while target
192
- binding, fresh-state checks, redaction, and verification remain enforced by ADB
193
- Ready itself. [Explore the agent contract →](./docs/agent-integration.md)
158
+ ## One target. One verified loop.
194
159
 
195
- ## Documentation
160
+ ```text
161
+ find or recover one Android target
162
+
163
+ bind the complete run to that target
164
+
165
+ prepare only the ports the project needs
166
+
167
+ start the framework and wait for declared readiness
168
+
169
+ watch target · ports · logs · child process
170
+
171
+ recover safely or return bounded failure evidence
172
+ ```
196
173
 
197
- | Guide | What it answers |
198
- | ---------------------------------------------------------------- | --------------------------------------------------------------------- |
199
- | [Getting started](./docs/getting-started.md) | How do I reach my first ready session? |
200
- | [Development sessions](./docs/dev-sessions.md) | What does ADB Ready own, watch, recover, and clean up? |
201
- | [Targets and Wireless debugging](./docs/targets-and-wireless.md) | How are devices paired, connected, and selected safely? |
202
- | [Apps and evidence](./docs/apps-and-evidence.md) | How do I control one app and capture verified device evidence? |
203
- | [AI agent integration](./docs/agent-integration.md) | How do Codex, Claude Code, Cursor, or Copilot use safe Android tools? |
204
- | [Safe UI automation](./docs/ui-automation.md) | How do humans and agents act on current UI with verifiable evidence? |
205
- | [Logs and AI context](./docs/logs-and-context.md) | What is captured, redacted, saved, and exported? |
206
- | [Configuration](./docs/configuration.md) | How do projects, profiles, hooks, and precedence work? |
207
- | [Automation](./docs/automation.md) | What are the JSON, NDJSON, stdout, and exit-code contracts? |
208
- | [Threat model](./docs/threat-model.md) | Which trust boundaries, controls, and residual risks apply? |
209
- | [Troubleshooting](./docs/troubleshooting.md) | What should I do for each common failure? |
210
- | [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? |
212
-
213
- Run `adb-ready --help` for the full command list or
214
- `adb-ready help COMMAND` for focused options.
174
+ - Existing matching port mappings are reused; conflicts are not overwritten.
175
+ - Wireless and port recovery is bounded and independently verified.
176
+ - An ADB server restart is never hidden inside recovery.
177
+ - On exit, ADB Ready cleans only resources owned by that session.
178
+ - The final exit code and a project-scoped session record are preserved.
179
+
180
+ ## Keep your existing stack
215
181
 
216
- ## Compatibility
182
+ | Projects | Package managers | CLI runtimes | Hosts |
183
+ | --- | --- | --- | --- |
184
+ | Expo · React Native · Flutter · Capacitor · Gradle · custom | npm · pnpm · Yarn · Bun | Node.js · Bun · Deno | macOS · Linux · Windows |
217
185
 
218
- ADB Ready targets macOS, Linux, and Windows, with Node.js, Bun, and Deno runtime
219
- smoke coverage. The package is architecture-neutral JavaScript with no native
220
- addon or artificial OS/CPU block. A working ADB executable remains the only
186
+ The standard npm entrypoint requires Android SDK Platform-Tools and Node.js 22
187
+ or newer. The published package is architecture-neutral JavaScript with no
188
+ native addon or artificial OS/CPU block. A working ADB executable remains the
221
189
  Android transport backend.
222
190
 
223
191
  [See tested and upstream-capable support tiers →](./COMPATIBILITY.md)
224
192
 
225
193
  ## Trust by default
226
194
 
227
- - The shared ADB server is never restarted implicitly.
228
- - Destructive or global actions are never hidden inside recovery.
195
+ - One selected target is used consistently for every operation in a session.
196
+ - Target leases prevent concurrent ADB Ready processes from mutating the same
197
+ target without an explicit takeover.
198
+ - Destructive or device-wide actions require an explicit command or
199
+ confirmation.
229
200
  - Pairing codes never enter command-line arguments.
230
- - Session data is bounded, redacted, private to the user, and never uploaded.
231
- - Package contents are allowlisted and checked before release.
232
- - npm publication is prepared for short-lived OIDC credentials and provenance.
233
- - AI clients receive typed bounded tools; raw shell/ADB and destructive app
234
- removal are not exposed through MCP.
235
- - UI references are bound to the current hierarchy digest, so stale targets are
236
- rejected before input is sent.
201
+ - Session data is bounded, redacted, private to the local user, and never
202
+ uploaded by ADB Ready.
203
+ - Stale UI references are rejected before input is sent.
204
+ - Machine data stays on `stdout`; human diagnostics stay on `stderr`.
205
+
206
+ [Review the complete threat model →](./docs/threat-model.md)
207
+
208
+ ## Documentation
209
+
210
+ | Guide | Start here when you want to… |
211
+ | --- | --- |
212
+ | [Getting started](./docs/getting-started.md) | Reach the first ready development session. |
213
+ | [Development sessions](./docs/dev-sessions.md) | Configure frameworks, commands, ports, readiness, and cleanup. |
214
+ | [Targets and Wireless debugging](./docs/targets-and-wireless.md) | Pair, connect, recover, or explicitly select a target. |
215
+ | [Apps and evidence](./docs/apps-and-evidence.md) | Control the app and capture screenshots or recordings. |
216
+ | [Safe UI automation](./docs/ui-automation.md) | Find, act on, and verify the current Android UI. |
217
+ | [Logs and AI context](./docs/logs-and-context.md) | Diagnose a failure with bounded, redacted evidence. |
218
+ | [AI agent integration](./docs/agent-integration.md) | Connect an MCP-capable coding agent. |
219
+ | [Automation](./docs/automation.md) | Use readiness, exit codes, JSON, NDJSON, JUnit, and CI artifacts. |
220
+ | [Configuration](./docs/configuration.md) | Share project presets, hooks, aliases, and policies. |
221
+ | [Troubleshooting](./docs/troubleshooting.md) | Resolve a known setup, target, UI, or session problem. |
222
+ | [Compatibility](./COMPATIBILITY.md) | Check hosts, runtimes, package managers, and support tiers. |
223
+ | [Example configs](./examples/README.md) | Copy a framework or custom-project configuration. |
224
+
225
+ Run `adb-ready --help` for the complete command list or
226
+ `adb-ready help COMMAND` for focused options.
237
227
 
238
228
  ## Project
239
229
 
240
230
  [Changelog](./CHANGELOG.md) · [Contributing](./CONTRIBUTING.md) ·
241
231
  [Security](./SECURITY.md) · [MIT License](./LICENSE)
242
232
 
243
- ADB Ready is Android-only. The current development line combines target
244
- readiness, ports, session recovery, logs, verified app lifecycle, and local
245
- evidence capture. It intentionally exposes typed workflows instead of a generic
246
- remote shell.
233
+ ADB Ready is Android-only. It exposes target-bound workflows rather than a
234
+ generic remote shell.