github remorses/playwriter playwriter@0.6.0

3 hours ago
  1. Remote control — share one tab of your browser with a remote agent or person, no local install needed. Click the light-blue Remote control cloud button in the toolbar and confirm the disclosure. The extension opens a secret tunnel (128-bit random id) and copies a ready-to-paste agent prompt to your clipboard. A remote agent connects from any machine with just the share id:

    playwriter session new --remote abc123
    playwriter -s 1 -e "console.log(await page.title())"

    The same share is also a live view: open https://playwriter.dev/remote-control#<id> in any browser to watch the tab streamed frame by frame, with a URL bar and a Take control button for clicking, scrolling, and typing. Neither side needs an install. Every host lives under playwriter.dev, shares run on Playwriter's own Durable Objects, context.newPage() is rejected, whole-profile cookie APIs and destructive clears are blocked, frames are relayed in memory only, and only a real click (from Chrome's isolated world) can start a share.

  2. Per-session tab groups — tabs created by a session join a Chrome tab group named after --tab-group (default playwriter), so multiple agents sharing one browser keep their tabs separate:

    playwriter session new --tab-group docs --tab-group-color blue
    playwriter session update 1 --tab-group research

    Colors: grey, blue, red, yellow, green, pink, purple, cyan, orange. session list shows a new GROUP column. Popups and child tabs inherit the opener's group. Old extensions safely ignore the group name.

  3. cloud helper in CLI execution sessions — list active cloud browsers and send the current page's cookies into one without printing or saving values:

    const browsers = await cloud.browsers.list()
    await cloud.sendCookies({ from: state.page, to: browsers[0] })
  4. Toolbar moved into Chrome's isolated extension world — websites can no longer trigger Record Skill or Remote control via forged window.postMessage. Privileged buttons require a real user gesture from the top frame, clipboard writes go through an offscreen document, and the host refuses clicks when a page hides, covers, or moves it. The toolbar looks exactly the same.

  5. Relay metadata and MCP logs now require the configured relay token — profile details, tab titles, and tab URLs are no longer returned without the token.

  6. Secrets redacted from action recordings — URL credentials, credential-like query parameters, structured network fields, and all form fill values are redacted; unsafe-bounds response bodies are omitted instead of loaded into memory.

  7. Screen recordings stream to disk — chunks are written to a temporary file instead of retained in memory, partial output is cleaned up on failure, and capture cancels if the send buffer grows too large.

  8. Record Skill toolbar button reliability — shows Starting… while attaching, keeps a stable width, stays clickable during start (a click then stops), shows an error toast on failure, and no longer starts extra recordings on repeated clicks. New lock-on start sound.

  9. Quieter, faster CDP handling on chatty sites — the extension no longer sends a debug log for every Network and page-lifecycle CDP event. On Vite HMR pages those flooded the relay and caused page.screenshot() / context.newPage() timeouts and CPU spikes. Related to #96.

  10. session new no longer kills a busy but healthy relay — the /version probe now waits up to 10 seconds, so a relay busy attaching many tabs is no longer mistaken for dead and killed.

  11. Reconnect no longer wipes attached tabs — handshake failures close with browser-safe codes 4005/4006 instead of 1011, and a stale ungroup event after reconnect no longer detaches tabs already back in the group.

  12. Snapshot correctness — references and diff baselines are invalidated after main-frame navigation, and role locators resolve accessible names changed by CSS text transforms.

  13. Fail closed on stale CDP routing — a client requesting a stale target or session gets an error instead of an unrelated tab.

  14. Serialized session operations — commands from one session run in order; reset/deletion wait for active work.

  15. Stable error codes when no extension is connected. Closes #121.

  16. listScripts() waits for parsed scripts — no longer returns an empty list on an already-loaded page.

  17. Ghost Browser support — the Playwriter extension installed by Ghost Browser can connect to the local relay.

  18. Better CLI hints — unknown commands print Run "playwriter --help" on stderr, and session new reminds you to run playwriter skill.

  19. Toolbar polish — toasts match the dark toolbar surface and appear where you look, the drop shadow is no longer clipped, trailing spacing is fixed, and controls sit at a balanced size.

  20. Updated vulnerable dependencies — runtime dependencies moved to patched releases; vulnerable HTML formatting dependencies removed while preserving readable clean-HTML output.

Closes #121

Don't miss a new playwriter release

NewReleases is sending notifications on new releases.