codeam-cli 2.39.50 → 2.39.51

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
@@ -4,6 +4,12 @@ All notable changes to `codeam-cli` are documented here.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.39.50] — 2026-06-19
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Parse real headroom /stats shape so savings reach the dashboard
12
+
7
13
  ## [2.39.49] — 2026-06-19
8
14
 
9
15
  ### Fixed
package/dist/index.js CHANGED
@@ -5388,7 +5388,7 @@ function readAnonId() {
5388
5388
  }
5389
5389
  function superProperties() {
5390
5390
  return {
5391
- cliVersion: true ? "2.39.50" : "0.0.0-dev",
5391
+ cliVersion: true ? "2.39.51" : "0.0.0-dev",
5392
5392
  nodeVersion: process.version,
5393
5393
  platform: process.platform,
5394
5394
  arch: process.arch,
@@ -5547,7 +5547,7 @@ var os4 = __toESM(require("os"));
5547
5547
  // package.json
5548
5548
  var package_default = {
5549
5549
  name: "codeam-cli",
5550
- version: "2.39.50",
5550
+ version: "2.39.51",
5551
5551
  description: "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device \u2014 async. The terminal companion for CodeAgent Mobile.",
5552
5552
  type: "commonjs",
5553
5553
  main: "dist/index.js",
@@ -16073,6 +16073,22 @@ var previewStartH = (ctx, _cmd, parsed) => {
16073
16073
  });
16074
16074
  };
16075
16075
  void (async () => {
16076
+ const existing = activePreviews.get(ctx.sessionId);
16077
+ if (existing && existing.devServer.exitCode === null) {
16078
+ log.info(
16079
+ "preview",
16080
+ `reusing running preview for session=${ctx.sessionId} url=${existing.url}`
16081
+ );
16082
+ emitProgress("READY_DETECTED", "reusing running preview");
16083
+ void postPreviewEvent({
16084
+ sessionId: ctx.sessionId,
16085
+ pluginId: ctx.pluginId,
16086
+ pluginAuthToken,
16087
+ type: "preview_ready",
16088
+ payload: { url: existing.url, framework: existing.framework, port: detection.port }
16089
+ });
16090
+ return;
16091
+ }
16076
16092
  void postPreviewEvent({
16077
16093
  sessionId: ctx.sessionId,
16078
16094
  pluginId: ctx.pluginId,
@@ -16193,6 +16209,22 @@ var previewStartH = (ctx, _cmd, parsed) => {
16193
16209
  }
16194
16210
  }
16195
16211
  if (await isPortListening(detection.port)) {
16212
+ const raceExisting = activePreviews.get(ctx.sessionId);
16213
+ if (raceExisting && raceExisting.devServer.exitCode === null) {
16214
+ log.info(
16215
+ "preview",
16216
+ `port race: reusing running preview for session=${ctx.sessionId} url=${raceExisting.url}`
16217
+ );
16218
+ emitProgress("READY_DETECTED", "reusing running preview");
16219
+ void postPreviewEvent({
16220
+ sessionId: ctx.sessionId,
16221
+ pluginId: ctx.pluginId,
16222
+ pluginAuthToken,
16223
+ type: "preview_ready",
16224
+ payload: { url: raceExisting.url, framework: raceExisting.framework, port: detection.port }
16225
+ });
16226
+ return;
16227
+ }
16196
16228
  void postPreviewEvent({
16197
16229
  sessionId: ctx.sessionId,
16198
16230
  pluginId: ctx.pluginId,
@@ -27567,7 +27599,7 @@ function checkChokidar() {
27567
27599
  }
27568
27600
  async function doctor(args2 = []) {
27569
27601
  const json = args2.includes("--json");
27570
- const cliVersion = true ? "2.39.50" : "0.0.0-dev";
27602
+ const cliVersion = true ? "2.39.51" : "0.0.0-dev";
27571
27603
  const apiBase2 = resolveApiBaseUrl();
27572
27604
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
27573
27605
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -27766,7 +27798,7 @@ async function completion(args2) {
27766
27798
  // src/commands/version.ts
27767
27799
  var import_picocolors13 = __toESM(require("picocolors"));
27768
27800
  function version2() {
27769
- const v = true ? "2.39.50" : "unknown";
27801
+ const v = true ? "2.39.51" : "unknown";
27770
27802
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
27771
27803
  }
27772
27804
 
@@ -28052,7 +28084,7 @@ function checkForUpdates() {
28052
28084
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
28053
28085
  if (process.env.CI) return;
28054
28086
  if (!process.stdout.isTTY) return;
28055
- const current = true ? "2.39.50" : null;
28087
+ const current = true ? "2.39.51" : null;
28056
28088
  if (!current) return;
28057
28089
  const cache = readCache();
28058
28090
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.39.50",
3
+ "version": "2.39.51",
4
4
  "description": "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device — async. The terminal companion for CodeAgent Mobile.",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",