Skip to content

v2.0.8

Latest

Choose a tag to compare

@alcounit alcounit released this 09 Jun 21:25
a4dbcc1

Release notes

  • MCP (Model Context Protocol) support — stateless Streamable HTTP endpoint with on-demand browser provisioning

    • Structured error responses: JSON-RPC 2.0 for MCP, W3C for WebDriver, with pod-unreachable vs. internal-error classification
    • Modernized reverse proxy (Rewrite API) and a WebSocket upstream connection-leak fix
    • Updated browser-controller (v0.0.8) and browser-service (v0.0.7) clients

    MCP support

    • New /mcp endpoint (POST/GET/DELETE) routed to McpHandler.
    • initialize (header-less POST) creates a Browser CR and proxies to the per-pod sidecar; subsequent requests resolve the target pod from the Mcp-Session-Id header — same stateless
      pod-routing model as the existing WebDriver/Playwright flows.
    • Unknown or expired MCP sessions return 404, signaling clients to re-initialize.

    Error handling

    • New error-classification layer: upstream dial failures are reported as 404 (pod unreachable / session expired); all other failures return 500.
    • MCP errors are emitted as JSON-RPC 2.0 objects via the new pkg/jsonrpc package, with centralized codes (InvalidParams, InvalidRequest, InternalError, SessionNotFound).
    • WebDriver errors are emitted in the W3C shape via selenium.WriteError.

    Proxy

    • HTTPReverseProxy migrated from the deprecated Director to the Rewrite API (SetXForwarded, ProxyRequest In/Out), with a typed ResponseModifier.
    • WSProxy now closes the upstream connection when a client WebSocket upgrade fails — fixes a connection leak.

    Dependencies

    • browser-controller v0.0.6 → v0.0.8
    • browser-service v0.0.6 → v0.0.7

    Misc

    • auth.Watch is now guarded behind a non-nil auth store.
    • README: MCP usage, error-response reference, and synced build variables.