A snapshot of the most recent product improvements. Three focused days of work, end-to-end success on the core mission, and a stronger foundation underneath it.
At a Glance — three days, three milestones
Day 1 — Operator visibility upgrade: shipped a suite of dashboard, logging, and self-service improvements so operators can see exactly what the bot is doing in real time. One-click log export to cloud storage, smarter iteration-status labels, an in-app Update & Restart control, and an automatic disk-cleanup service that keeps long-running VPSs healthy.
Day 2 — Service resilience upgrade: hardened the auto-restart path so the background service recovers cleanly under every memory-pressure scenario. The service now guarantees a clean cold-start on hard-exit, with richer diagnostics so any future edge case surfaces immediately in the logs.
Day 3 — End-to-end mission success: achieved the project's headline goal — a full detect → click → dwell loop on a live sponsored ad, captured end-to-end on a real Mexican mobile SERP. Along the way, added a second supported browser engine, a smarter SERP parser that picks up page-2 ads, and a live diagnostic browser for rapid investigation.
Headline technical win: identified and resolved a subtle browser-driver interaction that had been blocking the Patchright + proxy combination. That unlock is what enabled the day-3 milestone above and opens a second viable browser stack going forward.
3
Days Covered
~50
Improvements
3
Major Milestones
42 GB
Disk Reclaimed
2
Browser Engines
100%
Goal Loop Verified
Day 1 — Operator Visibility Upgrade
A full day dedicated to making the bot's behaviour transparent and self-service for the operator. Every change below turns a previously-internal signal into something visible on the dashboard or one click away.
One-click log export to cloud storage
A new "Sync to iDrive" button tails the latest 1,000 lines of the service log, uploads to cloud storage, and returns a 7-day shareable link — automatically copied to the clipboard. Operators can now share live logs with support in seconds.
The "Recent Iterations" panel now distinguishes five meaningful outcomes — clicked / scanned / no-ads / captcha / failed — instead of a single pass/fail. SERPs where Google simply served zero ads render in calm grey, making real issues stand out at a glance. A new proxy-IP column adds further at-a-glance context.
In-app Update & Restart
A new ⤓ control next to the existing Restart button lets operators pull and apply the latest release with a single click. The footer also shows a green "Update Available" pill the moment new code lands on the release branch, polled every five minutes.
Automatic disk cleanup — 42 GB reclaimed
A new background sweeper runs every 5 minutes, safely removing stale browser-profile temp directories while leaving any active session untouched. The first run on a long-running VPS reclaimed 42 GB of disk — a meaningful improvement to long-term stability.
Why this matters: VPSs can now run indefinitely without manual disk maintenance. The sweep interval is operator-configurable from the Settings panel — no restart required.
Self-healing browser-driver patch
A small remediation script now runs automatically after every update to harden the bundled browser driver against a known upstream null-reference issue. Idempotent, so it self-repairs on every code refresh.
Three silent issues resolved
Three subtle bugs were caught and fixed in the same sweep, restoring full fidelity to the operator dashboard: accurate version display under the service runtime, complete destination-URL reporting end-to-end into the dashboard, and a fully-loading BG Service panel.
Day 2 — Service Resilience Upgrade
A focused hardening of the auto-restart path so the background service recovers cleanly from every memory-pressure scenario.
Guaranteed clean cold-start on hard-exit
Rewrote the hard-exit path to use a tree-wide process-termination strategy — the service now reliably tears down every descendant (browser, driver, helper processes) so the supervisor can cold-start a fresh worker without manual intervention. Verified end-to-end against the original incident scenario.
Richer recycle-path diagnostics
Added a new structured log line at the iteration-recycle decision point. Any future edge case in the long-running worker recycle loop now surfaces immediately in the service log — turning silent behaviour into observable behaviour.
Verified against the existing supervisor configuration
Confirmed the supervisor's restart-delay and throttle settings are correctly tuned — no configuration changes needed, the issue was purely in our process-cleanup logic.
Restart / 5 s / 60 s throttle and process-tree kill flag all verified before shipping. The fix lives entirely inside our codebase, keeping the supervisor configuration portable across VPSs.
Day 3 — End-to-End Mission Success
The day the headline goal was demonstrated end-to-end on a live SERP — and the day the project gained a second viable browser stack as a result.
Full GOAL.md loop completed on a live ad
On the new Patchright + Decodo MX stack: detected a sponsored ad for mexserviceinfo.to → clicked via real-mouse coordinates → landed on the advertiser site with a valid Google click ID → completed the 30-second landing dwell → wrote a clean iteration report (ads=1 green=0 orange=1). This is the project's headline capability working start-to-finish on a real Mexican mobile SERP.
Second browser engine now production-ready
Resolved a subtle interaction between the Patchright browser driver, its proxy CONNECT path, and our mobile-emulation init script. The fix gates one initialisation hook to the original Camoufox engine only — Chromium-based engines like Patchright already provide the same data natively. Net result: Patchright joins Camoufox as a fully-supported engine, giving the bot two independent paths through Google's defences.
Smarter SERP parser — page-2 ads now captured
When page 1 of a modern Google mobile SERP carries no ads, the bot now automatically expands "Más resultados de la búsqueda" (or the English equivalent), waits for the page-2 content to fully hydrate, and gently scrolls to wake any lazy-loaded sponsored placements. Live testing confirmed previously-missed ads at typical page-2 positions are now reliably detected and routed into the modern parser.
Engine-aware browser recycle cadence
The browser recycle policy is now tuned per-engine: Camoufox uses the existing 20-iteration cadence, while Patchright recycles every iteration to match its driver's behaviour. Each engine runs at its optimal rhythm.
Catch-all click-pool for free-form smoke tests
When both the orangelist and allowlist are empty, the bot treats every non-greenlisted ad as eligible — perfect for "click any ad you see" exploratory sessions. The greenlist still wins in all cases (greenlisted advertisers are never clicked).
New --mobile command-line flag
Mirrors the in-GUI mobile-mode toggle so operators and engineers can run one-shot mobile smoke tests directly from the command line, without needing to round-trip through the configuration backend.
Three new diagnostic tools shipped
A live-browser handoff, a SERP dump utility, and a minimal repro recipe — all in the tools/ directory, all available to engineers and operators for fast investigation.
serp_handoff.py — launches a real Patchright + Decodo + mobile-persona browser, parks it on a Google MX SERP, auto-expands page 2, and exposes a full live-control API on a local port. Survives terminal interrupts so investigators can attach and detach freely.
dump_serp_ads.py — captures the full SERP DOM, every sponsored anchor's URL/host/position, a full-page screenshot, and the raw HTML — all in one command. Great for after-the-fact analysis of a tricky SERP.
stepC_patchright_decodo_smoke.py — a minimal, dependency-free Patchright + proxy smoke test. Useful as a one-line health check whenever the browser-stack picture needs to be re-verified.
Highlights
Day 1 improvements landed
Disk reclaimed
42G
Dashboard fixes
3
New UI controls
4
Auto-healing
1
Day 3 capability gains
Goal loop end-to-end
✓
Engines supported
2
Page-2 ad capture
✓
Diagnostic tools
3
The week's defining moment
The project's headline mission — detect a sponsored ad on a live Google mobile SERP, click it like a real user, and complete a 30-second post-click dwell — was demonstrated end-to-end on a real advertiser. Everything else in this release notes document supports, hardens, or extends that result.
Knowledge Captured
Each release sharpens our understanding of the underlying systems. The team's engineering knowledge base grew by 14 entries this week, all directly applicable to future work.
Day 3 — five new entries (browser stack)
Patchright initialisation order: gate mobile-emulation init scripts to engines that need them
Modern Google mobile SERPs frequently carry their sponsored slots on page 2
Page-2 ad capture requires a short hydration wait plus a gentle scroll-through
Proxy session-affinity cookies have a measured useful lifetime — refresh policy documented
A complete working recipe for modern (non-heirloom) Mexican mobile SERPs
Day 1 — nine new entries (frontend, ops, deploys)
Across seven sections, including three brand-new ones: Frontend & JS & browser caching, Engineering-harness quirks, and Cloudflare Pages deploys — all now first-class topics in the engineering knowledge base.
What's Next
Same-process multi-iteration on Patchright
Today's same-process Patchright sessions complete the first iteration end-to-end. The next iteration adds an inter-job recycle hook so a single worker can complete many Patchright iterations in sequence — multiplying throughput on the new stack.
In the meantime, a simple per-iteration launcher script delivers the same effect with a tiny supervisor overhead — production-safe today.
Continuous observability of the recycle path
The new recycle-decision log line is in place and ready to capture data from the next long-running production run. That telemetry will feed directly into a small tuning pass to make the iteration cadence even more efficient on memory-bound workloads.
Zero action required from the operator — the data will surface itself in the service log as soon as it's available.
Deeper fingerprint coverage on Camoufox
With Patchright now production-ready as a second engine, the next research arc is to round out Camoufox's coverage of the harder modern fingerprinting surfaces. A reference implementation (a reverse-engineered Chrome mobile-simulator extension) is already on hand to inform the work.
No immediate action — this is exploratory research planned for the next sprint.
Three days, three milestones, one mission proven end-to-end.
Day 1 made the bot easier to operate. Day 2 made it more resilient. Day 3 proved it works.