Skip to content

Releases

v0.2.1

Choose a tag to compare

@Dream-Pixels-Forge Dream-Pixels-Forge released this 22 Oct 19:04
docs: cinematic orange landing — full-viewport hero, ember palette, s…

browsy-bot 0.2.0

Choose a tag to compare

@Dream-Pixels-Forge Dream-Pixels-Forge released this 07 Oct 11:54

What's new

Tier 1 features on top of the multi-tool CDP core (v0.1.0). Same zero-middleware architecture — direct Chrome DevTools Protocol, no Puppeteer/Playwright/ChromeDriver.

browsy doctor

Read-only diagnostics that tell you why nothing works. Probes CDP endpoint reachability, target/page count, browser-binary discovery, and memorius availability, then returns an actionable DoctorReport with next-step suggestions.

browsy doctor --json
# not ready: CDP endpoint ws://localhost:9222 is unreachable: ECONNREFUSED.
# Launch Chrome with: <chrome> --remote-debugging-port=9222 --headless --no-sandbox,
# or run "browsy ensure-browser" to start one for you.

browsy extract <selector> [field...]

First-class structured data extraction — no more bespoke Runtime.evaluate boilerplate. One in-page script pulls typed records from every matching element, capped by --limit.

browsy extract "article.card" text "attr:src" value
# -> [ { "text": "...", "src": "...", "value": null }, ... ]

Field specs: text, html, textContent, value, or attr:<name>.

browsy ensure-browser / browsy stop-browser

Self-service browser lifecycle. ensure-browser probes the endpoint; if it's down it spawns Chrome/Chromium on a dedicated user-data-dir under the browsy state dir ($BROWSY_STATE_DIR or ~/.browsy) — never your logged-in profile — writes a pidfile, and polls /json/version until the CDP endpoint answers. stop-browser SIGTERMs the recorded pid and clears the pidfile.

browsy ensure-browser --port 9222 --no-headless
browsy stop-browser

Trusted input (--trusted)

click and fill gain an opt-in --trusted flag that dispatches renderer-trusted CDP input events (Input.dispatchMouseEvent / Input.insertText) instead of JS-dispatched el.click() / el.value =. The page's event listeners see a user-originated input event. Default JS-dispatch path is unchanged for backward compatibility.

browsy click ".save" --trusted
browsy fill "#email" "a@b.c" --trusted

API additions (library)

  • extract(session, selector, fields, { limit }) → Record<string, unknown>[]
  • doctor(browserUrl, options?) → DoctorReport; probes probeVersion, findBrowserBinary, checkMemorius are exported too
  • ensureBrowser / launchBrowser / stopBrowser / buildBrowserArgs / resolveBrowserBinary / waitForReady
  • click / fill now accept { trusted?: boolean }

Notes

  • 78/78 tests (up from 49 in v0.1.0) — new suites for diagnostics, extraction, and browser lifecycle; trusted-input cases in the actions suite.
  • Security: the CDP endpoint is still full browser control. ensure-browser is profile-scoped to keep the blast radius small; the --trusted path carries a TOCTOU caveat (see the Security section of the README).
  • CLI exit codes unchanged: 0 success, 1 runtime/CDP failure, 2 usage error, 3 CDP connection failure.

browsy-bot 0.1.0

Choose a tag to compare

@Dream-Pixels-Forge Dream-Pixels-Forge released this 07 Oct 05:02

Tool-agnostic CDP core + MCP server + hardened CLI. Zero-middleware CDP browser automation: one core, three adapters (OpenCode plugin, universal MCP server, CLI with --json). Memorius learning, portable skill. The tag-triggered release workflow is in place; npm publish needs a valid NPM_TOKEN in repo secrets.