User outcome
Part of bigduu/Zenith#185. The user wants Chromium-based applications to participate in Nova interaction UX, including discovery when debugging has not been opened. This issue delivers the bounded connection half; independent application discovery and supported enablement remain separately reviewable slices.
Connect Nova's existing DevTools MCP integration to an explicitly selected, already-running local Chromium application endpoint. Preserve the application and Bodhi windows when Nova connects, disconnects, or fails.
Verified current behavior
At Nova master 8f029d22dbc9ab317a68560788d1e6360b71120e, src/chrome_devtools.rs only exposes isolated Chrome and existing stable Chrome auto-connect. The pinned chrome-devtools-mcp@1.8.0 already supports explicit browser HTTP and browser WebSocket endpoints, pageId targeting, and disconnecting without closing a caller-owned browser.
Acceptance slice (4–6 hours, Nova only)
- Add explicit endpoint attachment to the existing launcher; preserve isolated mode as the default. HTTP browser URL and browser WebSocket URL inputs are mutually exclusive with each other and with launch/auto-connect options.
- Validate endpoint syntax before spawning the sidecar: explicit loopback IP literal and port, appropriate HTTP/WS schemes, no userinfo or fragment, and a documented browser-level path contract. Do not echo rejected credentials in errors. Preserve the fixed upstream version and current telemetry/network-header privacy defaults.
- Clearly state the actual boundary: these are trusted local endpoint inputs, not network confinement. Pinned Puppeteer follows HTTP discovery results and WebSocket redirects. Do not claim input validation prevents all remote traffic; a hardened transport is a separate acceptance slice.
- Attachment failure must not launch another browser. Detaching or replacing this MCP runtime must leave the target app and Bodhi running. No headless or application launch flags in endpoint mode.
- Document list_pages followed by explicit pageId targeting for reads/actions, including two-window examples. Selecting an application for discovery does not itself grant full CDP control.
- Explain browser-level CDP versus renderer-only sockets and Node main-process inspector endpoints. Electron/CEF compatibility must be stated per tested runtime; upstream officially supports Chrome/Chrome for Testing, so successful tools/list alone is not an Electron compatibility claim.
- Connection/setup errors give actionable instructions without requiring Bodhi to quit. Existing native AX and extension capabilities remain independently available.
In-scope files/systems
src/chrome_devtools.rs, launcher CLI/e2e tests, README and plugin documentation; a URL parser dependency only if needed. No new CDP engine, proxy, daemon, or provider router.
Test plan
- Fake-npx real-process tests for literal IPv4/IPv6 arguments, mutual exclusions, rejection before spawn, private defaults, and stdio transparency.
- A test-owned local Chromium fixture and pinned upstream handshake/list_pages; disconnect/SIGTERM preserves the fixture process, failed connection does not launch Chrome, and no Browser.close is sent to an attached browser.
- Any advertised Electron version requires its own test-owned two-window fixture with exact pageId snapshot/fill/click and observed UI effect. Otherwise label Electron support experimental/unverified.
- Do not use the user's daily browser, profiles, or installed apps as automated fixtures.
Non-goals
Automatic app discovery, enabling disabled debugging, restarting or altering installed apps, consent persistence, a menu-bar picker, Chrome extension provider unification, arbitrary raw CDP commands, and remote endpoint support.
Evidence
Coordination
Unclaimed proposal. GitHub Projects GraphQL is rate-limited on 2026-09-05; Ready/capacity and board placement are unverified. Check those before implementation rather than treating this issue as claimed.
Public API clarification (2026-09-05)
The user requires these mechanisms to remain internal, with simple application-level public methods. Treat endpoint flags in this slice as internal/advanced transport plumbing, not the normal user workflow. Do not add a separate public vocabulary of scan-port/select-protocol/connect-CDP steps that the caller must learn. The application-level consumer should use #42 discovery internally and accept an app selector; normal callers should not copy a discovered endpoint or configure a second MCP server manually. Preserve existing advanced launcher compatibility. Full internal attachment/provider routing still needs its own bounded acceptance slice before claiming the finished app UX.
Current execution is on #42 only. This issue remains unclaimed; do not infer implementation from the tracker update.
User outcome
Part of bigduu/Zenith#185. The user wants Chromium-based applications to participate in Nova interaction UX, including discovery when debugging has not been opened. This issue delivers the bounded connection half; independent application discovery and supported enablement remain separately reviewable slices.
Connect Nova's existing DevTools MCP integration to an explicitly selected, already-running local Chromium application endpoint. Preserve the application and Bodhi windows when Nova connects, disconnects, or fails.
Verified current behavior
At Nova master
8f029d22dbc9ab317a68560788d1e6360b71120e,src/chrome_devtools.rsonly exposes isolated Chrome and existing stable Chrome auto-connect. The pinnedchrome-devtools-mcp@1.8.0already supports explicit browser HTTP and browser WebSocket endpoints, pageId targeting, and disconnecting without closing a caller-owned browser.Acceptance slice (4–6 hours, Nova only)
In-scope files/systems
src/chrome_devtools.rs, launcher CLI/e2e tests, README and plugin documentation; a URL parser dependency only if needed. No new CDP engine, proxy, daemon, or provider router.Test plan
Non-goals
Automatic app discovery, enabling disabled debugging, restarting or altering installed apps, consent persistence, a menu-bar picker, Chrome extension provider unification, arbitrary raw CDP commands, and remote endpoint support.
Evidence
Coordination
Unclaimed proposal. GitHub Projects GraphQL is rate-limited on 2026-09-05; Ready/capacity and board placement are unverified. Check those before implementation rather than treating this issue as claimed.
Public API clarification (2026-09-05)
The user requires these mechanisms to remain internal, with simple application-level public methods. Treat endpoint flags in this slice as internal/advanced transport plumbing, not the normal user workflow. Do not add a separate public vocabulary of scan-port/select-protocol/connect-CDP steps that the caller must learn. The application-level consumer should use #42 discovery internally and accept an app selector; normal callers should not copy a discovered endpoint or configure a second MCP server manually. Preserve existing advanced launcher compatibility. Full internal attachment/provider routing still needs its own bounded acceptance slice before claiming the finished app UX.
Current execution is on #42 only. This issue remains unclaimed; do not infer implementation from the tracker update.