adb-ready 0.3.3 → 0.3.4

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,12 +9,36 @@ breaking changes.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.3.4] - 2026-09-12
13
+
14
+ ### Added
15
+
16
+ - Publish the verified LCOV report to Codecov through short-lived GitHub OIDC
17
+ credentials and show the measured `main` coverage in a live README badge.
18
+
19
+ ### Changed
20
+
21
+ - Raise the authoritative LCOV line and function coverage floors from 90% to
22
+ 95% with additional lifecycle, recovery, agent, configuration, persistence,
23
+ platform, terminal, and protocol boundary tests.
24
+
25
+ ### Fixed
26
+
27
+ - Keep a development session running when optional local session history cannot
28
+ be initialized or finalized, while reporting the persistence gap as a warning.
29
+ - Return a structured target-lease availability error when its per-user state
30
+ directory cannot be created instead of leaking an internal filesystem error.
31
+
12
32
  ## [0.3.3] - 2026-09-11
13
33
 
14
34
  ### Changed
15
35
 
16
36
  - Fail closed before npm publishing unless the immutable release tag already
17
37
  has a matching draft GitHub release.
38
+ - Isolate the push-level permission needed to inspect that draft release in a
39
+ preflight job that never checks out or executes repository code.
40
+ - Allow the audited workflow on protected `main` to promote an exact immutable
41
+ release tag, so release-infrastructure fixes never require moving that tag.
18
42
  - Document Deno's 24-hour minimum dependency age and the explicit override
19
43
  reserved for immediate post-publish verification.
20
44
  - Enforce 90% LCOV line and function coverage floors in the authoritative
@@ -218,7 +242,8 @@ breaking changes.
218
242
  explainable configuration precedence.
219
243
  - Human, plain, JSON, and NDJSON output across Node, Bun, and Deno entrypoints.
220
244
 
221
- [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.3...HEAD
245
+ [Unreleased]: https://github.com/Adam014/adb-ready/compare/v0.3.4...HEAD
246
+ [0.3.4]: https://github.com/Adam014/adb-ready/compare/v0.3.3...v0.3.4
222
247
  [0.3.3]: https://github.com/Adam014/adb-ready/compare/v0.3.2...v0.3.3
223
248
  [0.3.2]: https://github.com/Adam014/adb-ready/compare/v0.3.1...v0.3.2
224
249
  [0.3.1]: https://github.com/Adam014/adb-ready/compare/v0.3.0...v0.3.1
package/README.md CHANGED
@@ -9,7 +9,7 @@ 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)
12
- [![Coverage](https://img.shields.io/badge/LCOV-%E2%89%A590%25-16a34a)](https://github.com/Adam014/adb-ready/actions/workflows/ci.yml)
12
+ [![Coverage](https://codecov.io/gh/Adam014/adb-ready/graph/badge.svg?branch=main)](https://app.codecov.io/gh/Adam014/adb-ready)
13
13
  [![npm](https://img.shields.io/npm/v/adb-ready?label=npm&color=1f9db5)](https://www.npmjs.com/package/adb-ready)
14
14
  [![Node.js](https://img.shields.io/badge/Node.js-%E2%89%A522-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/)
15
15
  [![Bun](https://img.shields.io/badge/Bun-tested-14151a?logo=bun&logoColor=white)](https://bun.sh/)
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.3",
358
+ version: "0.3.4",
359
359
  description: "Agent-ready Android CLI for reliable ADB sessions, app automation, and verified evidence.",
360
360
  private: false,
361
361
  type: "module",
@@ -39234,7 +39234,10 @@ async function runDev(options, config4 = {}, dependencies = {}, signal) {
39234
39234
  projectRoot: options.sessionStore.projectRoot ?? options.cwd
39235
39235
  });
39236
39236
  } catch {
39237
- problems.push(commandProblem(ProblemCode.SessionPersistenceFailed, "session.persistence", "Session history could not be started.", "The development session can continue, but this run will not be available afterward.", context.commandId));
39237
+ problems.push({
39238
+ ...commandProblem(ProblemCode.SessionPersistenceFailed, "session.persistence", "Session history could not be started.", "The development session can continue, but this run will not be available afterward.", context.commandId),
39239
+ severity: "warning"
39240
+ });
39238
39241
  }
39239
39242
  }
39240
39243
  const complete = async (data) => {
@@ -39266,7 +39269,10 @@ async function runDev(options, config4 = {}, dependencies = {}, signal) {
39266
39269
  ...data?.preset === undefined ? {} : { preset: data.preset }
39267
39270
  });
39268
39271
  if (!persisted.ok) {
39269
- execution2.result.problems.push(commandProblem(ProblemCode.SessionPersistenceFailed, "session.persistence", persisted.message, "The development session completed, but its local history is incomplete.", context.commandId));
39272
+ execution2.result.problems.push({
39273
+ ...commandProblem(ProblemCode.SessionPersistenceFailed, "session.persistence", persisted.message, "The development session completed, but its local history is incomplete.", context.commandId),
39274
+ severity: "warning"
39275
+ });
39270
39276
  }
39271
39277
  }
39272
39278
  return execution2;
@@ -43274,7 +43280,15 @@ async function acquireTargetLease(request, options = {}) {
43274
43280
  throw new RangeError("target lease heartbeatIntervalMs must be non-negative and less than ttlMs");
43275
43281
  }
43276
43282
  const root = leaseDirectory(options);
43277
- await mkdir4(root, { recursive: true, mode: 448 });
43283
+ try {
43284
+ await mkdir4(root, { recursive: true, mode: 448 });
43285
+ } catch {
43286
+ return {
43287
+ ok: false,
43288
+ code: "TARGET_LEASE_UNAVAILABLE",
43289
+ message: "ADB Ready could not create the target ownership lease."
43290
+ };
43291
+ }
43278
43292
  const canonicalRoot = await realpath4(path11.resolve(request.projectRoot)).catch(() => path11.resolve(request.projectRoot));
43279
43293
  const targetFingerprint = fingerprint3(request.targetIdentity);
43280
43294
  const projectFingerprint = fingerprint3(`root:${process11.platform === "win32" ? canonicalRoot.toLowerCase() : canonicalRoot}`);
@@ -49034,4 +49048,4 @@ try {
49034
49048
  process14.removeListener("SIGTERM", abort);
49035
49049
  }
49036
49050
 
49037
- //# debugId=EF4B0DF694B2B23564756E2164756E21
49051
+ //# debugId=3B60240054A5D38E64756E2164756E21