Skip to content

v1.5.0 — Proxy Providers, Google Bot Detection, Tab Recycling

Choose a tag to compare

@skyfallsin skyfallsin released this 06 Apr 03:41

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.