Releases: DeliciousBuding/codex-browser-bridge
Releases · DeliciousBuding/codex-browser-bridge
v1.5.0 — Codex 26.602+ Pipe Discovery Fix
What's Fixed
Codex Desktop 26.602+ changed Windows named pipe naming from codex-browser-use-<uuid> to codex-browser-use\<uuid>. The previous PowerShell Get-ChildItem discovery treated backslash as a directory separator and silently skipped these new-format pipes, causing all pipes failed or no pipes found errors.
Changes
- Pipe discovery: Switched from
Get-ChildItemto[System.IO.Directory]::GetFileSystemEntries+ manual substring extraction to discover both old (-) and new (`\ separators - Warning threshold: Raised from >1 to >2 pipes (old + new formats coexist normally during Codex upgrades)
Requirements
- Codex Desktop 26.519+ (tested with 26.602.3474.0)
- Windows 10/11
Installation
# npm
npm install -g @delicious233/codex-browser-bridge
# Or download the exe directly from assets belowv0.3.0
Fixed
Critical (5)
- MCP buffer limit:
bufio.Reader4KB default → 10MB to preventErrBufferFullcrash on real messages - MCP protocol:
notifications/initializedno longer produces error response (JSON-RPC 2.0 §4.1) - CLI whitespace-only input no longer panics (
args[0]index out of range) - CLI EOF no longer spins at 100% CPU
- Fill element-not-found now returns an explicit error instead of silently succeeding
High (7)
- All 19 MCP tool handlers now check
json.Unmarshalerrors (previously silently zeroed on type mismatch) - JS injection vector fixed: Go
%qreplaced withjson.Marshalfor JavaScript string literals in Click/Fill Response.IDchanged fromintto*intsoid:0is not misclassified as notificationjson.Marshalerrors inwriteResult/writeErrorand handlerMarshalIndentcalls now checkedNavigateBack/NavigateForwardnow validate both array bounds instead of one- PowerShell pipe discovery subprocess now has 15s timeout via
context.WithTimeout readLoopwas blocking send on duplicate responses; now uses non-blocking select
Medium (5)
CUATypenow dispatches keyDown+char+keyUp sequence per CDP spec; attaches debugger once- Health check during pipe auto-discovery uses 5s timeout (was 60s)
- CLI
trycommand JSON extraction usesargs[2:]instead of fragile byte offset DOMSnapshotfallback prepends marker to distinguish plain-text from AX treeDomCUAClickcheckslen(content) >= 5before box model coordinate access
Low (10)
newUUIDreturns error +fallbackUUIDviamath/randinstead ofpanicBRIDGE_DEBUG_LOGopen failure now logs warning to stderros.Exitmoved out ofrunMCP/runCLIintomain()so deferred cleanup runsextractUUIDuses conditional single-char strip instead of greedyTrimLefttime.Afterreplaced withtime.NewTimer+ deferredStop()to prevent leaksClaimUserTabauto-attach error now logged- Screenshots typo fixed (was already resolved)
SendNotificationtest coverage added (TestSendNotificationFrame)WaitForLoadTimeouttest:strings.HasPrefixreplaces fragile[:7]slice- E2E Screenshot test now validates non-empty base64 return value
v0.2.0
Added
codex_navigate_backandcodex_navigate_forwardMCP tools (history navigation was already in the client; now exposed)codex_wait_for_loadMCP tool — pollsdocument.readyStateuntilcompleteor timeoutcodex_screenshotnow returns MCPimagecontent so agents can view the screenshot directly (previously only base64 text)MCPServer.SetVersionso the build version flows into the MCPinitializehandshake (serverInfo.version)- Unit tests across
protocol,client,discovery, andmcppackages- In-memory
net.Pipefake server for end-to-end RPC tests without a real Codex pipe - Concurrent
SendRequeststress test under-race - Wire-format invariants for
executeCdp,claimUserTab, history navigation, JS escaping, CUA event sequencing, DOM box-model math - MCP handler integration tests that exercise the full client → MCP path
- In-memory
NewMCPServerWithIOconstructor for testable I/O injection- CI now runs
go test -race -cover
Fixed
discovery.extractUUIDno longer truncates UUIDs containing hyphens- Clearer error messages on pipe-not-found and dial failures
Makefile install-localnow copies the.exebinary on Windows- Duplicate option numbering in README install sections
Internal
client.NewFromConnfor wrapping an existingnet.Conn(used by tests)cover.outand*.coverprofileadded to.gitignore
v0.1.0
Added
- Named pipe discovery (codex-browser-use-* pipes)
- Pipe connection via go-winio
- Session management: createTab, getTabs, getUserTabs, claimUserTab, closeTab
- Navigation via CDP: Page.navigate, Page.reload, Page.getNavigationHistory
- Screenshot via CDP: Page.captureScreenshot (base64 PNG)
- DOM snapshot via CDP: Accessibility.getFullAXTree
- JavaScript evaluation via CDP: Runtime.evaluate
- Click/fill via CDP: Runtime.evaluate with querySelector
- CUA input via CDP: Input.dispatchMouseEvent, Input.dispatchKeyEvent
- MCP server (stdio JSON-RPC) with 20 tools
- CLI mode for interactive debugging
- Discover mode for listing active pipes
Key findings
- Wire protocol uses camelCase method names (getInfo, not get_info)
- �xecuteCdp requires {target: {tabId}} nested format
- Must call �ttach before any CDP command
- Each pipe connection creates a new browser session