codeam-cli 2.26.10 → 2.26.11

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.26.10] — 2026-06-03
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Cloudflared DNS probe is best-effort, no longer fails the preview (#243)
12
+
7
13
  ## [2.26.9] — 2026-06-03
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -472,7 +472,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
472
472
  // package.json
473
473
  var package_default = {
474
474
  name: "codeam-cli",
475
- version: "2.26.10",
475
+ version: "2.26.11",
476
476
  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.",
477
477
  type: "commonjs",
478
478
  main: "dist/index.js",
@@ -5829,7 +5829,7 @@ function readAnonId() {
5829
5829
  }
5830
5830
  function superProperties() {
5831
5831
  return {
5832
- cliVersion: true ? "2.26.10" : "0.0.0-dev",
5832
+ cliVersion: true ? "2.26.11" : "0.0.0-dev",
5833
5833
  nodeVersion: process.version,
5834
5834
  platform: process.platform,
5835
5835
  arch: process.arch,
@@ -16899,6 +16899,15 @@ var previewStartH = (ctx, _cmd, parsed) => {
16899
16899
  return;
16900
16900
  }
16901
16901
  const pluginAuthToken = ctx.pluginAuthToken;
16902
+ const emitProgress = (step, message) => {
16903
+ void postPreviewEvent({
16904
+ sessionId: ctx.sessionId,
16905
+ pluginId: ctx.pluginId,
16906
+ pluginAuthToken,
16907
+ type: "preview_progress",
16908
+ payload: { step, message, timestamp: Date.now() }
16909
+ });
16910
+ };
16902
16911
  void (async () => {
16903
16912
  void postPreviewEvent({
16904
16913
  sessionId: ctx.sessionId,
@@ -16907,7 +16916,9 @@ var previewStartH = (ctx, _cmd, parsed) => {
16907
16916
  type: "preview_starting",
16908
16917
  payload: { framework: detection.framework, port: detection.port }
16909
16918
  });
16919
+ emitProgress("ENV_DETECTED", `${detection.framework}`);
16910
16920
  for (const setup of detection.setup_commands ?? []) {
16921
+ emitProgress("SETUP_RUN", `${setup.cmd} ${setup.args.join(" ")}`);
16911
16922
  const exitCode = await runOnce(setup.cmd, setup.args, process.cwd(), detection.env);
16912
16923
  if (exitCode !== 0) {
16913
16924
  void postPreviewEvent({
@@ -16923,11 +16934,17 @@ var previewStartH = (ctx, _cmd, parsed) => {
16923
16934
  return;
16924
16935
  }
16925
16936
  }
16937
+ emitProgress(
16938
+ "BOOT_SEQUENCE",
16939
+ `${detection.command} ${detection.args.join(" ")}`
16940
+ );
16926
16941
  const devServer = (0, import_child_process15.spawn)(detection.command, detection.args, {
16927
16942
  cwd: process.cwd(),
16928
16943
  env: { ...process.env, ...detection.env ?? {} },
16929
16944
  stdio: ["ignore", "pipe", "pipe"]
16930
16945
  });
16946
+ emitProgress("BIND_PORT", String(detection.port));
16947
+ emitProgress("WAITING_FOR_READY", detection.ready_pattern);
16931
16948
  let readyMatched = false;
16932
16949
  let expoUrl = null;
16933
16950
  const readyRe = new RegExp(detection.ready_pattern);
@@ -16969,6 +16986,11 @@ var previewStartH = (ctx, _cmd, parsed) => {
16969
16986
  });
16970
16987
  return;
16971
16988
  }
16989
+ emitProgress("READY_DETECTED", `port ${detection.port}`);
16990
+ emitProgress(
16991
+ "TUNNEL_STARTING",
16992
+ detection.framework === "Expo" ? "Expo (self-tunnelled)" : isCodespaceSession() ? "GitHub Codespaces public port" : "cloudflared quick tunnel"
16993
+ );
16972
16994
  let tunnel = null;
16973
16995
  let url;
16974
16996
  if (detection.framework === "Expo") {
@@ -17083,6 +17105,7 @@ var previewStartH = (ctx, _cmd, parsed) => {
17083
17105
  void waitForCloudflaredReady(parsedUrl, 3e4).then(() => log.info("preview", `cloudflared probe: ${parsedUrl} reachable from CLI host`)).catch((e) => log.info("preview", `cloudflared probe: ${String(e.message)} (non-fatal)`));
17084
17106
  url = parsedUrl;
17085
17107
  }
17108
+ emitProgress("TUNNEL_READY", url);
17086
17109
  registerPreview(ctx.sessionId, {
17087
17110
  sessionId: ctx.sessionId,
17088
17111
  devServer,
@@ -20137,7 +20160,7 @@ function checkChokidar() {
20137
20160
  }
20138
20161
  async function doctor(args2 = []) {
20139
20162
  const json = args2.includes("--json");
20140
- const cliVersion = true ? "2.26.10" : "0.0.0-dev";
20163
+ const cliVersion = true ? "2.26.11" : "0.0.0-dev";
20141
20164
  const apiBase = resolveApiBaseUrl();
20142
20165
  const diagnosticId = (0, import_node_crypto6.randomUUID)();
20143
20166
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -20336,7 +20359,7 @@ async function completion(args2) {
20336
20359
  // src/commands/version.ts
20337
20360
  var import_picocolors13 = __toESM(require("picocolors"));
20338
20361
  function version2() {
20339
- const v = true ? "2.26.10" : "unknown";
20362
+ const v = true ? "2.26.11" : "unknown";
20340
20363
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
20341
20364
  }
20342
20365
 
@@ -20564,7 +20587,7 @@ function checkForUpdates() {
20564
20587
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
20565
20588
  if (process.env.CI) return;
20566
20589
  if (!process.stdout.isTTY) return;
20567
- const current = true ? "2.26.10" : null;
20590
+ const current = true ? "2.26.11" : null;
20568
20591
  if (!current) return;
20569
20592
  const cache = readCache();
20570
20593
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ // src/postinstall.ts
5
+ var c = {
6
+ reset: "\x1B[0m",
7
+ bold: "\x1B[1m",
8
+ dim: "\x1B[2m",
9
+ green: "\x1B[32m",
10
+ cyan: "\x1B[36m",
11
+ violet: "\x1B[35m",
12
+ white: "\x1B[97m"
13
+ };
14
+ var lines = [
15
+ "",
16
+ ` ${c.violet}${c.bold}codeam-cli${c.reset} ${c.dim}\u2014 Claude Code remote control${c.reset}`,
17
+ "",
18
+ ` ${c.dim}1.${c.reset} Pair your phone:`,
19
+ ` ${c.cyan}codeam pair${c.reset}`,
20
+ "",
21
+ ` ${c.dim}2.${c.reset} Launch Claude Code with mobile control:`,
22
+ ` ${c.cyan}codeam${c.reset}`,
23
+ "",
24
+ ` ${c.dim}Other commands:${c.reset}`,
25
+ ` ${c.white}codeam sessions${c.reset} ${c.dim}list paired devices${c.reset}`,
26
+ ` ${c.white}codeam status${c.reset} ${c.dim}show connection info${c.reset}`,
27
+ ` ${c.white}codeam logout${c.reset} ${c.dim}remove all sessions${c.reset}`,
28
+ "",
29
+ ` ${c.dim}Requires Claude Code:${c.reset} ${c.green}npm install -g @anthropic-ai/claude-code${c.reset}`,
30
+ ` ${c.dim}Mobile app:${c.reset} ${c.green}https://www.codeagent-mobile.com${c.reset}`,
31
+ ""
32
+ ];
33
+ process.stdout.write(lines.join("\n") + "\n");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.26.10",
3
+ "version": "2.26.11",
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",