Skip to content

feat(browser): native Go browser facade with HTTP-direct driver (#382) - #400

Merged
Delqhi merged 1 commit into
mainfrom
feat/native-browser
Jun 18, 2026
Merged

feat(browser): native Go browser facade with HTTP-direct driver (#382)#400
Delqhi merged 1 commit into
mainfrom
feat/native-browser

Conversation

@Delqhi

@Delqhi Delqhi commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Browser facade with HTTP-direct driver (no CGO). Policy split M4: read-only allow, mutating ask. 17 tests race-clean.

Pure-Go, no-CGO, no-Chromium headless browser for static / server-rendered
HTML pages. Lives at cmd/sin-code/internal/native_browser behind a
Driver interface so future Playwright/Chromium drivers plug in without
caller changes.

Files:
  internal/native_browser/browser.go     — Browser + BrowserSession
                                            (Navigate / Snapshot / Click /
                                             Fill / Submit / Screenshot /
                                             WaitFor)
  internal/native_browser/driver.go      — Driver interface + 3 impls:
                                             HTTPDirectDriver (net/http +
                                             golang.org/x/net/html),
                                             HTTPOnlyDriver (MCP-delegate
                                             stub = ErrNotImplemented),
                                             StubDriver (deterministic
                                             test driver)
  internal/native_browser/browser_test.go — races-clean suite, 13 cases,
                                             httptest-backed

Hook-ups:
  internal/mcpclient/registry.go          — namespace native_browser__*
  internal/catalog/source_external.go     — catalog entry
  internal/permission_defaults.go         — split policy (issue #382):
                                             read-only verbs = allow,
                                             click/fill/submit = ask (M4)
  internal/permission_defaults_test.go    — TestBrowserPolicySplit asserts

Real Playwright / Chromium layering lands in a follow-up release behind
the same Driver interface — no caller changes required.

M2 honored: net/http + x/net/html only, no CGO. M4 honored: mutating
verbs stay at "ask" until the user explicitly approves.
@Delqhi Delqhi added the enhancement New feature or request label Jun 18, 2026
@vercel

vercel Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sin-code Ready Ready Preview, Comment, Open in v0 Jun 18, 2026 6:13pm

@github-actions

Copy link
Copy Markdown

🏆 CEO Audit — A+ (100.0/100)

Metric Value
Grade A+
Score 100.0/100
Critical findings 0
High findings 0
Profile QUICK
Min grade gate B

📥 Download full report (Markdown)
📊 Download SARIF (for Code Scanning)

Run ~/.config/opencode/skills/ceo-audit/scripts/audit.sh . --profile=QUICK locally to reproduce.

@github-actions

Copy link
Copy Markdown

🏆 CEO Audit — A+ (100.0/100)

Metric Value
Grade A+
Score 100.0/100
Critical findings 0
High findings 0
Medium findings 0
Profile QUICK
Min grade gate B

📥 Download full report (Markdown)

Run ID: 27779950385 · Commit: ${github.sha}

Run ~/.config/opencode/skills/ceo-audit/scripts/audit.sh . --profile=QUICK locally to reproduce.

@Delqhi
Delqhi merged commit 356a66a into main Jun 18, 2026
11 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant