v1.12.0

rustfs/rustfsv1.12.0Jul 19, 2026by skyfallsin

AI Summary

This release upstreams significant reliability improvements from production use at askjo.ai, focusing on browser lifecycle management, process cleanup, and stability fixes for Linux and Docker environments.

Key Highlights

  • Scope process cleanup to browsers owned by the current server and prevent orphaned processes.
  • Improve idle-shutdown health checks and memory-pressure recovery.
  • Await `VirtualDisplay.get()` to fix DISPLAY issues and remove fixed context viewport errors.
  • Add `CAMOFOX_DISABLE_DEFAULT_ADDONS` to skip UBO when cache state is unreliable.

New Features

  • Scoped process cleanup and orphaned process prevention.
  • Improved idle-shutdown health checks.
  • Await VirtualDisplay.get() to fix DISPLAY string issues.
  • CAMOFOX_DISABLE_DEFAULT_ADDONS environment variable.
  • OpenClaw tool registration fixes.

Full Release Notes

This release upstreams reliability work from running Camofox in production at [Jo](https://askjo.ai), 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 receive `DISPLAY=[object Promise]`.
- Remove the fixed context viewport that triggered `viewport.isMobile` Juggler errors.
- Default Xvfb to 1280×720×24.
- Pin `camoufox-js` to `0.10.2` for 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=1` to 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.js` runtime artifact.
- Fix the E2E test command and test teardown.
- Update `qs` to 6.15.2 and `ua-parser-js` to 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