v1.5.0
jo-inc/camofox-browserv1.5.0Apr 6, 2026by skyfallsin
AI Summary
Adds proxy provider abstraction, Google bot detection fixes, tab recycling, and Fly.io horizontal scaling support.
Key Highlights
- Proxy Provider Abstraction supports backconnect and simple strategies via environment variables.
- Google Bot Detection fixes include WebGL support and self-healing retry mechanisms.
- Tab Recycling closes the oldest idle tab when per-session limits are reached.
- Fly.io Horizontal Scaling support with sticky session headers and concurrency-based autoscaling.
New Features
- Proxy provider abstraction
- Google bot detection fixes
- Tab recycling
- Fly.io scaling
Full Release Notes
# Camofox Browser v1.5.0 ## What's New ### 🔌 Proxy Provider Abstraction - Proxy configuration is now provider-agnostic. Supports **backconnect** (sticky session rotation) and **simple** (single endpoint) strategies via environment variables — no more hardcoded provider assumptions. - Per-context proxy rotation: new browser contexts get fresh proxy sessions without restarting the entire browser. - New env vars: `PROXY_STRATEGY`, `PROXY_PROVIDER`, `PROXY_BACKCONNECT_HOST`, `PROXY_BACKCONNECT_PORT`, `PROXY_COUNTRY`, `PROXY_STATE`. ### 🛡️ Google Bot Detection Fixes - **WebGL support**: Added Mesa OpenGL/EGL libraries + Xvfb virtual display to Docker image. Firefox can now create WebGL contexts — a major bot detection signal that was previously missing. - Self-healing Google search: blocked tabs are automatically retried with fresh proxy sessions instead of returning errors. - Degraded mode: browser stays available for non-Google tasks even when all proxy sessions are Google-blocked. ### ♻️ Tab Recycling - When the per-session tab limit is reached, the oldest/least-used tab is recycled instead of returning a hard 429 error. Long-running agent sessions no longer hit dead ends. ### 🚀 Fly.io Horizontal Scaling - New `lib/fly.js` helpers: `fly-replay` header routing for sticky tab sessions across multiple machines, concurrency-based autoscaling support. ### 🐳 Makefile for Local Builds *(Thanks @mihado! #43)* - `make up` auto-detects CPU architecture (x86_64/aarch64), pre-downloads Camoufox + yt-dlp outside the Docker build for faster rebuilds (~30s vs ~3min), and starts the container. - `make build`, `make down`, `make reset`, `make clean` — full lifecycle management. ### 🐛 Bug Fixes - **YouTube transcript proxy**: yt-dlp routed through residential proxy with lazy retry on startup failure. - **YouTube transcript session leak**: phantom `__yt_transcript__` session cleaned up after use. *(Thanks @imtylervo! #39)* - **Slow page refs**: Element references no longer go stale on pages that take a long time to settle. *(#36)* - **DELETE userId**: `/tabs/:id` DELETE endpoints now accept `userId` from query string — no longer silently fails when HTTP clients strip request bodies. *(Thanks @imtylervo! #39)* - **Scroll left/right**: Horizontal scroll now works correctly instead of silently scrolling vertically. *(Thanks @imtylervo! #39)* - **Plugin orphan process**: Server process is now killed on health check failure during startup instead of leaking. *(Thanks @imtylervo! #39)* - **Timer leak**: `buildRefs` interval is cleared on tab close. *(Thanks @imtylervo! #39)* - **Plugin stringify**: Tool parameters are properly JSON-serialized. *(#35)* ### 📦 Dependency Bumps - brace-expansion 1.1.13, qs 6.14.2, picomatch 2.3.2, path-to-regexp 0.1.13 ## Upgrading Update your plugin to v1.5.0. If you use a proxy, the old `PROXY_HOST`/`PROXY_PORT` env vars still work for simple single-endpoint proxies. For rotating sticky sessions, set `PROXY_STRATEGY=backconnect` — see README for details.