Skip to content

fix(bridge): unify active ensure and reconnect recovery (Layer 1b)#2032

Merged
jackwener merged 1 commit into
mainfrom
fix/bridge-readiness
Jun 27, 2026
Merged

fix(bridge): unify active ensure and reconnect recovery (Layer 1b)#2032
jackwener merged 1 commit into
mainfrom
fix/bridge-readiness

Conversation

@jackwener

@jackwener jackwener commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Summary

Layer 1b for Browser Bridge stability, stacked on #2031.

This rewrites the earlier readiness-only patch into a full active ensure path:

  • extracts low-level browser config (src/browser/config.ts) so runtime.ts and daemon-client.ts share timeout constants without a runtime/browser import cycle
  • moves daemon HTTP/status/shutdown transport into src/browser/daemon-transport.ts, preserving the fix(browser): enforce fixed daemon bridge port #2031 fixed-port + OPENCLI_DAEMON_PORT fatal guard
  • adds waitForBridgeReady + pre-dispatch error classification in src/browser/bridge-readiness.ts
  • moves BrowserBridge._ensureDaemon() logic into ensureBrowserBridgeReady() in daemon-lifecycle.ts
  • makes sendCommandRaw() use the full ensure path for pre-dispatch daemon errors and local TypeError before resending with a fresh transport id
  • keeps command_result_unknown and client-side AbortError non-retryable
  • rewrites extension reconnect to phased fast/slow retry without the old give-up cliff
  • uses production-safe Chrome alarm cadence (0.5 minutes) and reschedules pending slow timers to fast cadence after /ping succeeds
  • raises default OPENCLI_BROWSER_CONNECT_TIMEOUT from 30s to 45s so the CLI has margin over Chrome's 30s alarm wake floor

Verification

  • HOME=$(mktemp -d) npx vitest run --project unit src/browser/bridge-readiness.test.ts src/browser/daemon-client.test.ts src/browser.test.ts src/cli.test.ts
  • npx vitest run --project extension extension/src/background.test.ts
  • npx vitest run --project extension extension/src/
  • npm run typecheck
  • npm run build
  • cd extension && npm run build
  • HOME=$(mktemp -d) npm test -> 527 files / 5542 passed / 1 skipped
  • OPENCLI_DAEMON_PORT=19999 node dist/src/main.js daemon status -> clean actionable error, exit 78
  • OPENCLI_DAEMON_PORT=19999 node dist/src/daemon.js -> clean actionable error, exit 2

Note: cd extension && npm run typecheck currently fails in this checkout because the extension package does not have its own installed @types/chrome; root typecheck, extension build, and extension vitest pass.

@jackwener jackwener marked this pull request as draft June 27, 2026 09:56
@jackwener jackwener force-pushed the fix/bridge-readiness branch from ceb989e to 563402b Compare June 27, 2026 10:25
@jackwener jackwener changed the base branch from main to fix-daemon-port-contract June 27, 2026 10:25
@jackwener jackwener changed the title fix(bridge): unify readiness wait + phased extension reconnect (Layer 1b) fix(bridge): unify active ensure and reconnect recovery (Layer 1b) Jun 27, 2026
@jackwener jackwener marked this pull request as ready for review June 27, 2026 10:27
@jackwener jackwener changed the base branch from fix-daemon-port-contract to main June 27, 2026 13:52
@jackwener jackwener force-pushed the fix/bridge-readiness branch from 563402b to 879024c Compare June 27, 2026 13:52
@jackwener jackwener merged commit 70629fb into main Jun 27, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant