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.