adb-ready 0.3.4 → 0.3.5

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,26 @@ breaking changes.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.3.5] - 2026-09-12
13
+
14
+ ### Changed
15
+
16
+ - Enforce at least 95% coverage of measurable executable lines added or
17
+ replaced by a pull request, in addition to the existing repository-wide
18
+ line and function coverage floors.
19
+ - Keep external source maps available in local builds while excluding their
20
+ unreferenced payload from the published npm package.
21
+ - Make the read-only real-ADB check report logical targets and raw transports
22
+ separately and fail when ADB returns an unrecognized device state.
23
+
24
+ ### Fixed
25
+
26
+ - Preserve complete mDNS transport serials containing Bonjour collision
27
+ suffixes such as ` (2)`, preventing one physical device from appearing as a
28
+ second unknown target.
29
+ - Classify connected `_adb-tls-connect._tcp` service transports as TLS even
30
+ when their mDNS serial contains a Bonjour collision suffix.
31
+
12
32
  ## [0.3.4] - 2026-09-12
13
33
 
14
34
  ### Added
@@ -242,7 +262,8 @@ breaking changes.
242
262
  explainable configuration precedence.
243
263
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
244
264
 
245
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.4...HEAD
265
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.5...HEAD
266
+ [0.3.5]: https://github.com/Adam014/adb-ready/compare/v0.3.4...v0.3.5
246
267
  [0.3.4]: https://github.com/Adam014/adb-ready/compare/v0.3.3...v0.3.4
247
268
  [0.3.3]: https://github.com/Adam014/adb-ready/compare/v0.3.2...v0.3.3
248
269
  [0.3.2]: https://github.com/Adam014/adb-ready/compare/v0.3.1...v0.3.2
package/dist/cli.js CHANGED
@@ -355,7 +355,7 @@ import process13 from "node:process";
355
355
  // package.json
356
356
  var package_default = {
357
357
  name: "adb-ready",
358
- version: "0.3.4",
358
+ version: "0.3.5",
359
359
  description: "Agent-ready Android CLI for reliable ADB sessions, app automation, and verified evidence.",
360
360
  private: false,
361
361
  type: "module",
@@ -366,7 +366,7 @@ var package_default = {
366
366
  files: [
367
367
  "CHANGELOG.md",
368
368
  "COMPATIBILITY.md",
369
- "dist",
369
+ "dist/cli.js",
370
370
  "docs",
371
371
  "examples",
372
372
  "LICENSE",
@@ -389,6 +389,7 @@ var package_default = {
389
389
  "ui:check": "bun run scripts/ui-playground.ts --all --non-interactive",
390
390
  test: "bun test",
391
391
  "test:coverage": "bun test --coverage && bun run scripts/coverage-check.mjs",
392
+ "test:coverage:diff": "bun run scripts/coverage-diff-check.mjs",
392
393
  "test:commands": "bun run build && bun run scripts/command-matrix.mjs",
393
394
  "test:package-managers": "bun run build && bun run scripts/package-manager-smoke.mjs",
394
395
  "test:integration": "bun test tests/integration",
@@ -34740,6 +34741,26 @@ function normalizeState(tokens) {
34740
34741
  }
34741
34742
  return { state: "unknown", consumed: candidate === undefined ? 0 : 1 };
34742
34743
  }
34744
+ function splitDeviceLine(line) {
34745
+ const knownState = line.match(/^(.+?)\s+(no\s+permissions|bootloader|device|offline|recovery|sideload|unauthorized)(?:\s+(.*))?$/u);
34746
+ if (knownState !== null) {
34747
+ const serial2 = knownState[1]?.trim();
34748
+ const state = knownState[2];
34749
+ if (serial2 === undefined || serial2 === "" || state === undefined)
34750
+ return;
34751
+ const details = knownState[3]?.trim();
34752
+ return {
34753
+ serial: serial2,
34754
+ tokens: [
34755
+ ...state.split(/\s+/u),
34756
+ ...details === undefined || details === "" ? [] : details.split(/\s+/u)
34757
+ ]
34758
+ };
34759
+ }
34760
+ const tokens = line.split(/\s+/u);
34761
+ const serial = tokens.shift();
34762
+ return serial === undefined || serial === "" ? undefined : { serial, tokens };
34763
+ }
34743
34764
  function parseAdbDevices(output) {
34744
34765
  const devices = [];
34745
34766
  let sawHeader = false;
@@ -34758,11 +34779,10 @@ function parseAdbDevices(output) {
34758
34779
  if (!sawHeader || line.startsWith("* daemon") || line.startsWith("adb server")) {
34759
34780
  continue;
34760
34781
  }
34761
- const tokens = line.split(/\s+/u);
34762
- const serial = tokens.shift();
34763
- if (serial === undefined || serial === "") {
34782
+ const fields = splitDeviceLine(line);
34783
+ if (fields === undefined)
34764
34784
  continue;
34765
- }
34785
+ const { serial, tokens } = fields;
34766
34786
  const { state, consumed } = normalizeState(tokens);
34767
34787
  const details = tokens.slice(consumed);
34768
34788
  const properties = {};
@@ -37833,6 +37853,10 @@ function transportKind(device, services) {
37833
37853
  return services.some((service) => service.serviceType === "connect" && service.endpoint.serial === endpoint.serial) ? "tls" : "tcp";
37834
37854
  }
37835
37855
  if (isMdnsServiceSerial(device.serial)) {
37856
+ if (/\._adb-tls-connect\._tcp(?:\.|$)/iu.test(device.serial))
37857
+ return "tls";
37858
+ if (/\._adb\._tcp(?:\.|$)/iu.test(device.serial))
37859
+ return "tcp";
37836
37860
  return "unknown";
37837
37861
  }
37838
37862
  if (device.usb !== undefined || device.serial !== "") {
@@ -49048,4 +49072,4 @@ try {
49048
49072
  process14.removeListener("SIGTERM", abort);
49049
49073
  }
49050
49074
 
49051
- //# debugId=3B60240054A5D38E64756E2164756E21
49075
+ //# debugId=855CD3B5A014B04364756E2164756E21
package/docs/RELEASING.md CHANGED
@@ -24,7 +24,8 @@ The workflow does not use a long-lived npm write token.
24
24
  Release evidence has three tiers:
25
25
 
26
26
  - **Every release:** the complete fixture, unit, integration, runtime, package,
27
- documentation, privacy, and release-artifact verification gate must pass.
27
+ documentation, privacy, coverage, and release-artifact verification gate must
28
+ pass. Pull requests must also satisfy the 95% changed-line coverage gate.
28
29
  - **Device-behavior changes:** rerun every affected workflow on a real target
29
30
  and record the exact host, target, Android version, and transport. A
30
31
  documentation, metadata, or machine-output-only patch does not manufacture
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adb-ready",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
4
4
  "description": "Agent-ready Android CLI for reliable ADB sessions, app automation, and verified evidence.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -11,7 +11,7 @@
11
11
  "files": [
12
12
  "CHANGELOG.md",
13
13
  "COMPATIBILITY.md",
14
- "dist",
14
+ "dist/cli.js",
15
15
  "docs",
16
16
  "examples",
17
17
  "LICENSE",
@@ -34,6 +34,7 @@
34
34
  "ui:check": "bun run scripts/ui-playground.ts --all --non-interactive",
35
35
  "test": "bun test",
36
36
  "test:coverage": "bun test --coverage && bun run scripts/coverage-check.mjs",
37
+ "test:coverage:diff": "bun run scripts/coverage-diff-check.mjs",
37
38
  "test:commands": "bun run build && bun run scripts/command-matrix.mjs",
38
39
  "test:package-managers": "bun run build && bun run scripts/package-manager-smoke.mjs",
39
40
  "test:integration": "bun test tests/integration",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "ADB Ready agent tool contract",
3
3
  "schemaVersion": 1,
4
- "packageVersion": "0.3.4",
4
+ "packageVersion": "0.3.5",
5
5
  "protocolVersion": "2025-11-25",
6
6
  "transport": "stdio",
7
7
  "tools": [