codeam-cli 2.12.5 → 2.12.6
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 +6 -0
- package/dist/index.js +15 -11
- package/package.json +1 -1
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.12.5] — 2026-05-14
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Rewrite filterCodexChrome — drop the brittle skipEchoContinuation state machine
|
|
12
|
+
|
|
7
13
|
## [2.12.4] — 2026-05-14
|
|
8
14
|
|
|
9
15
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -1682,7 +1682,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
1682
1682
|
// package.json
|
|
1683
1683
|
var package_default = {
|
|
1684
1684
|
name: "codeam-cli",
|
|
1685
|
-
version: "2.12.
|
|
1685
|
+
version: "2.12.6",
|
|
1686
1686
|
description: "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands \u2014 from anywhere.",
|
|
1687
1687
|
type: "commonjs",
|
|
1688
1688
|
main: "dist/index.js",
|
|
@@ -1990,11 +1990,10 @@ function currentLevel() {
|
|
|
1990
1990
|
const raw = (process.env.CODEAM_LOG ?? "error").toLowerCase();
|
|
1991
1991
|
return LEVELS[raw] ?? LEVELS.error;
|
|
1992
1992
|
}
|
|
1993
|
-
var
|
|
1993
|
+
var verboseFileEnabled = process.env.CODEAM_DEBUG === "1" || process.env.CODEAM_LOG === "debug" || process.env.CODEAM_LOG === "trace";
|
|
1994
1994
|
var debugFilePath = path2.join(os3.homedir(), ".codeam", "debug.log");
|
|
1995
1995
|
var fileInitialized = false;
|
|
1996
1996
|
function appendToFile(line) {
|
|
1997
|
-
if (!fileEnabled) return;
|
|
1998
1997
|
try {
|
|
1999
1998
|
if (!fileInitialized) {
|
|
2000
1999
|
fs2.mkdirSync(path2.dirname(debugFilePath), { recursive: true });
|
|
@@ -2017,7 +2016,7 @@ function emit(level, tag, msg, err) {
|
|
|
2017
2016
|
const line = `[codeam:${level}] ${tag} \u2014 ${msg}${detail}
|
|
2018
2017
|
`;
|
|
2019
2018
|
process.stderr.write(line);
|
|
2020
|
-
if (LEVELS[level]
|
|
2019
|
+
if (LEVELS[level] <= LEVELS.info || verboseFileEnabled) {
|
|
2021
2020
|
appendToFile(`${(/* @__PURE__ */ new Date()).toISOString()} ${line}`);
|
|
2022
2021
|
}
|
|
2023
2022
|
}
|
|
@@ -6125,28 +6124,33 @@ var ChunkEmitter = class {
|
|
|
6125
6124
|
...body
|
|
6126
6125
|
});
|
|
6127
6126
|
const maxRetries = opts.critical ? 3 : 0;
|
|
6128
|
-
|
|
6127
|
+
const t0 = Date.now();
|
|
6128
|
+
log.info(
|
|
6129
6129
|
"chunkEmitter",
|
|
6130
|
-
`send type=${body.type ?? "(clear)"} bytes=${payload.length}`
|
|
6130
|
+
`send type=${body.type ?? "(clear)"} bytes=${payload.length} done=${body.done === true}`
|
|
6131
6131
|
);
|
|
6132
6132
|
return new Promise((resolve2) => {
|
|
6133
6133
|
const attempt = (attemptsLeft) => {
|
|
6134
6134
|
_transport2.post(this.url, this.headers, payload).then(({ statusCode, body: resBody }) => {
|
|
6135
|
+
const tookMs = Date.now() - t0;
|
|
6135
6136
|
if (statusCode === 410 || statusCode === 404 && /SESSION_NOT_FOUND|SESSION_GONE/.test(resBody)) {
|
|
6136
6137
|
process.stderr.write("[codeam] session was deleted/disconnected \u2014 stopping output stream.\n");
|
|
6138
|
+
log.info("chunkEmitter", `dead status=${statusCode} took=${tookMs}ms`);
|
|
6137
6139
|
resolve2({ dead: true });
|
|
6138
6140
|
return;
|
|
6139
6141
|
}
|
|
6140
6142
|
if (statusCode >= 400) {
|
|
6143
|
+
log.warn("chunkEmitter", `api-error status=${statusCode} took=${tookMs}ms body=${resBody.slice(0, 200)}`);
|
|
6141
6144
|
process.stderr.write(`[codeam] output API error ${statusCode}: ${resBody}
|
|
6142
6145
|
`);
|
|
6146
|
+
} else {
|
|
6147
|
+
log.info("chunkEmitter", `ok status=${statusCode} took=${tookMs}ms`);
|
|
6143
6148
|
}
|
|
6144
|
-
log.trace("chunkEmitter", `status=${statusCode}`);
|
|
6145
6149
|
resolve2({ dead: false });
|
|
6146
6150
|
}).catch((err) => {
|
|
6147
|
-
log.
|
|
6151
|
+
log.warn(
|
|
6148
6152
|
"chunkEmitter",
|
|
6149
|
-
`error retries-left=${attemptsLeft}`,
|
|
6153
|
+
`error retries-left=${attemptsLeft} took=${Date.now() - t0}ms`,
|
|
6150
6154
|
err
|
|
6151
6155
|
);
|
|
6152
6156
|
if (attemptsLeft > 0) {
|
|
@@ -10135,7 +10139,7 @@ async function stopWorkspaceFromLocal(target) {
|
|
|
10135
10139
|
// src/commands/version.ts
|
|
10136
10140
|
var import_picocolors11 = __toESM(require("picocolors"));
|
|
10137
10141
|
function version() {
|
|
10138
|
-
const v = true ? "2.12.
|
|
10142
|
+
const v = true ? "2.12.6" : "unknown";
|
|
10139
10143
|
console.log(`${import_picocolors11.default.bold("codeam-cli")} ${import_picocolors11.default.cyan(v)}`);
|
|
10140
10144
|
}
|
|
10141
10145
|
|
|
@@ -10270,7 +10274,7 @@ function checkForUpdates() {
|
|
|
10270
10274
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
10271
10275
|
if (process.env.CI) return;
|
|
10272
10276
|
if (!process.stdout.isTTY) return;
|
|
10273
|
-
const current = true ? "2.12.
|
|
10277
|
+
const current = true ? "2.12.6" : null;
|
|
10274
10278
|
if (!current) return;
|
|
10275
10279
|
const cache = readCache();
|
|
10276
10280
|
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.12.
|
|
3
|
+
"version": "2.12.6",
|
|
4
4
|
"description": "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands — from anywhere.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|