Releases: sagarpalsapure/orca-playwright-bridge
Release list
v1.5.2 — /orca skill-reference fix
Fixed
/orcacommand pointed at a skill that no longer exists. The command template told the agent to lean on theorca-browserskill — renamed toorca-automationin v1.5.0. Both references incommands/orca.mdcorrected so the shipped command resolves to the right skill.
Docs-only patch; no code/API changes. Published as orca-playwright-bridge@1.5.2.
v1.5.1 — Orca 1.4.123 re-verify
Re-verified the bridge against Orca 1.4.123 (docs were stamped 1.4.120).
Two upstream limitations Orca fixed
page.pdf()/Page.printToPDF(#7032) now works. Addedorca.pdf(path?, opts?)to the raw-CDP driver (connectOrca()) + types + a capability test asserting real%PDF-bytes. Playwright'spage.pdf()tunnels through the bridge too.- Profile storage isolation (#6923) now works.
repro/profile-isolation.js(once a bug reproducer) now PASSES as a regression guard.
Still holds (re-probed on 1.4.123)
context.newCDPSession()blocked (#7033),page.fill()needs focus (#7035),page.reload()fixed (#7031).
New finding — window.open() popups are activation-gated on 1.4.123
The handler fires but no tab spawns without transient user activation / foreground focus (Orca-side behavior, not a bridge defect). waitForNewTab() now skips gracefully when Orca declines to open the popup; documented in multi-tab-and-popups.md.
Housekeeping
Re-stamped verified docs 1.4.120 → 1.4.123 (mobile/tracing/dialog docs left at 1.4.120 — not re-run this pass). Suite: 33 pass / 0 fail / 5 skip. Published as orca-playwright-bridge@1.5.1 on npm.
v1.2.3 — multi-session fix + attachOrcaTab()
Fixed
- Multi-session cross-driving — two independent drivers could end up driving each other's tab, because default discovery fell back to "the first/active endpoint" (which flips whenever any session opens or focuses a tab).
discoverCdpUrl()now throws with the full tab list when >1 tab is open and no tab was specified, instead of silently picking the active one.openOrcaTab()resolves its port by the createdbrowserPageIdrather than a racy port-set diff.
Added
attachOrcaTab(pageId)— re-attach Playwright to a tab you already own by itsbrowserPageId, regardless of which tab is focused. The multi-session-safe reconnect;close()leaves the tab open.findEndpointForPageId(pageId)— exported helper.
Tested against Orca 1.4.120 (regression test: attach lands on tab A even when tab B is active).
v1.2.2 — mockResponse()
Added
mockResponse(patterns, response)on the raw-CDP driver (connectOrca()) — fulfill matching real requests with a canned status/headers/body via CDPFetch.fulfillRequestwhile letting the rest pass through. The reliable alternative to Playwright'sroute.continue(), which hangs on real requests through the bridge. Returns{ counts: { mocked, passed }, stop() }.
Verified / not added
- Probed
Network.getResponseBodyfor HAR-with-bodies: unreliable through the proxy (No resource with given identifier found), so it's intentionally left out.
Tested 30/30 against Orca 1.4.120.
v1.2.1 — Orca 1.4.120 (page.reload fixed)
Verified against Orca v1.4.120.
Fixed upstream 🎉
page.reload()now works. Orca 1.4.120 fixed it — it previously closed the tab (stablyai/orca#7031). Verified: reload keeps the tab and re-executes the document. The connection'sreload()helper stays as a fallback for Orca < 1.4.120. README,orca-browserskill, and/orcacommand updated.
Re-verified (still open)
Against 1.4.120, these still hold: profile isolation (#6923), page.pdf (#7032), newCDPSession (#7033), page.fill-focus (#7035). No new browser verbs since 1.4.117.
Tests: 29/29.
v1.2.0 — Orca 1.4.117 verbs
Verified against Orca v1.4.117 · playwright-core ^1.61.1.
Added — new orcaTabs() verbs from Orca 1.4.117
- Dialog handling —
acceptDialog(text?)/dismissDialog()for JSalert/confirm/prompt(previously an unavoidable blocker;dismissno-ops safely when no dialog is open). - Web storage —
getStorage(key)/setStorage(key, value)/clearWebStorage()(native;{ session: true }for sessionStorage). highlight(selector)— outline an element (demos/debugging).download(selector, path)— download a file by selector.exec(command)— escape hatch to run any raw agent-browser command.- (Clipboard verbs exist in 1.4.117 but are permission-gated, so not wrapped.)
Verified
Re-ran every documented limitation against Orca 1.4.117 — none fixed: profile isolation (#6923), page.reload (#7031), page.pdf (#7032), newCDPSession (#7033), page.fill-focus (#7035) all still hold.
Tests: 29/29. Types type-checked under --strict.
v1.1.1 — blunt install messaging
Docs patch. The README now states plainly that npm i orca-playwright-bridge installs the library only — the full setup (the orca-cdp CLI + the /orca Claude Code command) is npx orca-playwright-bridge setup. Republished so the npm page renders the updated README. No code changes since v1.1.0.
v1.1.0 — one-command install
Verified against Orca v1.4.114 · playwright-core ^1.61.1.
One-command install (new)
npx orca-playwright-bridge setup
Installs the package (+deps) into ~/.orca-playwright-bridge, symlinks the orca-cdp CLI + libs into ~/.local, and installs the /orca Claude Code command — the whole thing, from npm, in one command. The npm-free equivalent still works too:
curl -fsSL https://raw.githubusercontent.com/sagarpalsapure/orca-playwright-bridge/main/get.sh | bash
Changed
- Commands simplified to a single
/orca— removed/orca-pwand/orca-test; the detailed playbook + traps live in theorca-browserskill and README.
Everything else (raw-CDP power tools, waitForNewTab, iframe reads, blockRequests, recordScreencast, tab-focus, the plugin/skill) carries forward from 1.0.x. Tests: 27/27.
v1.0.7 — Claude Code plugin + skill
Verified against Orca v1.4.114 · playwright-core ^1.61.1.
Claude Code plugin + skill (new)
This release makes the repo an installable Claude Code plugin:
orca-browserskill — auto-invoked when a task needs to drive a page in the Orca app. It carries the capability map and the verified traps (click-then-fill,page.reload()closes the tab, popups →waitForNewTab,page.route→blockRequests, iframes read-only, nopage.pdf, profile-isolation bug) so an agent uses the bridge correctly on the first try./orca-pwand/orca-testcommands, rewritten for the current API.- Install:
/plugin marketplace add sagarpalsapure/orca-playwright-bridge→/plugin install orca-playwright-bridge.
Added (rolled up since 1.0.6)
waitForNewTab(action)— capture a page-spawned popup /target=_blanktab (no CDP endpoint) and drive it via the nativeorcaTabs()driver.orcaTabs().byId(id).activate()— bring a tab to the foreground.connectOrca().blockRequests(patterns)— block/intercept real requests via CDPFetch(the working alternative to Playwrightroute.continue/abort, which hangs).connectOrca().recordScreencast(opts)— record the page as a frame stream;save(dir)→ numbered images.
Changed
openOrcaTab()now focuses the new tab by default (Orca opened it in the background). Opt out with{ focus: false }.
Fixed
fullPageScreenshot()no longer returns 0 bytes on pages taller than Chrome's 16384px limit.- Child
<iframe>s now surface to Playwright —swapFrameIdsnow rewritesparentId/parentFrameId, sopage.frames()includes iframes andframeLocator()reads work (incl. cross-origin). Interaction inside iframes still isn't supported (no child main-world context).
Tests: 27/27.
v1.0.6 — TypeScript types + raw-CDP power tools
Verified against Orca v1.4.114 · playwright-core ^1.61.1.
The release that carries everything built since 1.0.5 to npm.
Added
- TypeScript types —
index.d.ts(main /./bridge) +connect.d.ts(./connect). TS consumers get full types instead ofany; type-checked under--strictin CI. connectOrca()raw-CDP power tools — the proxy answers ~35 CDP domains on the page socket, so the raw driver now wraps:captureConsole(),recordNetwork()+.har()(HAR 1.2),throttle()/offline(),cookies()/setCookie()/clearCookies(),storage()/clearStorage(),emulate({ device, timezone, cpu, colorScheme })(instant, no reload),fullPageScreenshot(),captureMHTML(),axTree(),domCounters(),metrics().orcaTabs().evalAll(js)— evaluate in every open tab with genuine wall-clock concurrency.- Safe
reload()on the Playwright connection (re-navigates the current URL;page.reload()closes the tab through Orca's proxy). - CI — GitHub Actions (Node 20/22) + a
.d.tstype-check job. examples/— runnable multi-tab, login-form, device-screenshot scripts.
Changed
switchToOrcaTab()polls for the active tab instead of a fixed 700 ms sleep.- README no longer calls the synchronous
orcaTabs()driver "concurrent"; points toevalAll()/ per-tab bridges.
Notes
All documented limitations were re-verified against 1.4.114 (none fixed) and are tracked upstream: stablyai/orca #7031–#7035 and #6923.
Full test suite: 22/22.