This release upstreams reliability work from running Camofox in production at Jo, alongside community fixes.
What changed
Browser reliability
Substantial changes as a result of broad production-usage on residential proxies from askjo.ai
- Scope process cleanup to browsers owned by the current server.
- Prevent close/relaunch races and clean up orphaned browser processes.
- Improve idle-shutdown health checks and memory-pressure recovery.
- Harden popup, stale-tab, and concurrent tab lifecycle handling.
- Improve multi-instance tab routing, proxy rotation, and Google prewarming.
- Bound click fallback lookups and return an actionable 422 instead of a 30-second 500.
- Skip unstable captcha and bot-detection iframes during ref construction.
- Normalize browser failures into stable status codes and recovery hints.
Linux and Docker
- Await
VirtualDisplay.get()so launches no longer receiveDISPLAY=[object Promise]. - Remove the fixed context viewport that triggered
viewport.isMobileJuggler errors. - Default Xvfb to 1280×720×24.
- Pin
camoufox-jsto0.10.2for reproducible installs. - Improve Docker build and dependency installation.
Fixes #6807 and related reports #8043, #8042, #5916, #5812, #5643, #5408, and #5166.
Persistence and startup
- Await shutdown listeners before closing contexts so storage checkpoints complete. Fixes #7162.
- Add
CAMOFOX_DISABLE_DEFAULT_ADDONS=1to skip UBO when addon downloads or cache state are unreliable. Fixes #5067. - Restore the disabled reporter contract. Fixes #5434.
OpenClaw and dependencies
- Fix factory tool registration so newer OpenClaw versions expose all
camofox_*tools. Fixes #5437. - Restore the generated
plugin.jsruntime artifact. - Fix the E2E test command and test teardown.
- Update
qsto 6.15.2 andua-parser-jsto 2.0.10, including its Client Hints ReDoS fix.
Community PRs
Thank you!
- #7266 — Linux display and viewport compatibility — @mvanhorn
- #5078 — optional UBO exclusion — @mvanhorn
- #5960 — disabled reporter contract — @mrzlab630
- #7163 — shutdown persistence — @joyjit
- #7879 — process ownership cleanup — @leomercer-dev
- #5663 — bounded click fallback — @leoneparise
- #5591 — unstable iframe handling — @leoneparise
- #7534 — OpenClaw tool registration — @xenek
- #5909 — dependency security updates — @dependabot