Responsive Viewport Testing
POST /tabs/:tabId/viewport — set any viewport size on a live tab for responsive testing. Pass { width, height } and the page re-renders at that size. Useful for testing mobile breakpoints, tablet layouts, or unusual screen dimensions without creating a new session.
Tab Leak Fix
Two fixes for pages that survive normal cleanup:
safePageCloseforce-kill: Ifpage.close()hangs (e.g., stuck unload handler), the page is force-closed after timeout instead of leaked. Previously a single stuck page would starve Firefox of DOM threads.- Orphan page reaper: Background interval detects Playwright pages that escaped
tabGroupstracking and force-closes them.
Session Lifecycle Robustness
- Navigation timeout → session destroy: A poisoned proxy (Cloudflare holding a connection for 30s) used to kill all subsequent navigations in that context. Now click/navigate/open_url timeouts destroy the session so the next request gets a fresh proxy.
- Drain locks before close: Queued tab operations get clean
410 Tab destroyedinstead of cascading500 Target page closederrors. - Dead-context → 503: Cascade errors return
session_expiredwith retry semantics instead of generic 500. - Transparent proxy retry: Navigation failures from proxy blocks or timeouts automatically retry once with a fresh session.
- goBack timeout 10s → 20s: Back navigation uses browser cache; 10s was too short for complex SPA re-renders.
Install Hardening
- Ship compiled
plugin.jsso install works even when TypeScript compilation is skipped — by @Yeraze (#2140) - Cross-platform postinstall script with cache validation — by @gustavosmendes (#2149)
- Graceful handling of
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1(warns + skips warm-up instead of crash loop) — by @gustavosmendes (#2149)
Fixes & Improvements
- Native memory pressure: restart browser when idle if heap exceeds threshold
- Memory leak false-positive reduction (3 safeguards for watchdog stall detection)
- Crash reporter renamed to telemetry, credentials moved to Cloudflare Worker relay
- OpenClaw plugin metadata + ClawHub publish workflow
Thank You
- @cunninghambe — co-authored viewport endpoint and tab leak fix (#2470, #2471)
- @gustavosmendes — install hardening and
PLAYWRIGHT_SKIP_BROWSER_DOWNLOADsupport (#2149) - @Yeraze — compiled plugin.js fix (#2140)
- @Xy2002 — Railway deployment configuration (#651)