codex-control-chrome-mcp 1.4.0 → 1.4.1

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
@@ -6,6 +6,12 @@ This project follows semantic versioning.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.4.1] - 2026-07-04
10
+
11
+ ### Fixed
12
+
13
+ - The self-heal now recognizes every string the extension uses for a lost debugger attachment, not just Chrome's `Debugger is not attached`. A concurrency race soak (`scripts/concurrency-check.mjs --inject-detach`, which detaches a tab mid-command) surfaced two more that were slipping through unhealed: `Debugger unattached` (the extension's own `se`-map check) and `Detached while handling command.` (detached mid-command). `isNotAttachedError` now matches all three, so `withSession` recovers them too. Under the race soak this took unrecovered "not attached" failures from a handful to zero.
14
+
9
15
  ## [1.4.0] - 2026-07-04
10
16
 
11
17
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-control-chrome-mcp",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "MCP server and native host bridge for controlling Chrome through the Codex Chrome extension.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/mcp-server.js CHANGED
@@ -400,8 +400,13 @@ export async function withSession(runtime, tabId, run) {
400
400
  }
401
401
  }
402
402
 
403
+ // The extension surfaces a lost debugger attachment with several distinct
404
+ // strings, all of which are recoverable by a detach + re-attach:
405
+ // - "Debugger is not attached to the tab with id: N" (Chrome, via sendCommand)
406
+ // - "Debugger unattached" (extension's own se-check)
407
+ // - "Detached while handling command." (detached mid-command)
403
408
  export function isNotAttachedError(error) {
404
- return /not attached/i.test(error?.message ?? String(error ?? ""));
409
+ return /not attached|unattached|detached while/i.test(error?.message ?? String(error ?? ""));
405
410
  }
406
411
 
407
412
  async function executeCdp(runtime, { tabId, method, params = {}, timeoutMs }) {