u/GreenNo2789

▲ 2 r/mcp

Update: Chromeflow v0.9.7, multi-instance MCP race fix + browser-automation hardening

Follow-up to the v0.9.4 Show post last week. v0.9.6 + v0.9.7 shipped fixes driven by ~3 hours of distribution-sprint use and a couple of long agentic task sessions, plus a real-world test pass on Wikipedia, Reddit, and a handful of crafted fixtures.

What changed:

* Multi-instance race in the WS bridge. Second claude session on port 7879 no longer fails its first chromeflow call because the extension's reconnect was in exponential backoff. Added a 10s grace poll on the MCP side, dropped the extension's reconnect cap from 30s to 5s.

* click_element gained `within_selector` and `near_text` for scoping nth counting to a section. Solves "10 'Minor Issue(s)' radios across one long evaluation form".

* `until_url_contains` now requires an actual URL change when the substring was already in the pre-click URL. No more false-positive successes on /tasks/OLD to /tasks/NEW navigations.

* New `until_url_changes: true` for submits whose destination URL isn't known up front.

* fill_input refuses ambiguous fuzzy-walk matches with a candidates list instead of silently overwriting the wrong textarea (the canonical "Brief Rationale" / "Review comment" failure mode on dense forms).

* execute_script now handles every navigation-during-script case (chrome.scripting Frame-removed, CDP "Inspected target navigated or closed", sync `location.href` + await hangs) as a clean `[navigated]` signal instead of throwing or hanging the WS for 30s.

* New `tab_query` on execute_script targets a specific tab without focus thrash. Helpful for self-rescheduling loops where the user's active tab may have drifted while AFK.

* get_form_fields walks the ancestor chain when classifying hidden fields. Conditional sections inside a `display:none` parent are now excluded from the inventory and counted in the "may unfurl after radio click" warning.

Repo: https://github.com/NeoDrewX/chromeflow

Web Store: https://chromewebstore.google.com/detail/chromeflow/lkdchdgkbkodliefobkkhiegjdiidime

Site + comparison: https://chromeflow.run/compare

Account note: the previous post linked NeoDrew/chromeflow. That GitHub account was suspended; the repo is now mirrored at NeoDrewX/chromeflow. Same code, same npm package, same Web Store listing.What changed:* Multi-instance race in the WS bridge. Second claude session on port 7879 no longer fails its first chromeflow call because the extension's reconnect was in exponential backoff. Added a 10s grace poll on the MCP side, dropped the extension's reconnect cap from 30s to 5s.* click_element gained `within_selector` and `near_text` for scoping nth counting to a section. Solves "10 'Minor Issue(s)' radios across one long evaluation form".* `until_url_contains` now requires an actual URL change when the substring was already in the pre-click URL. No more false-positive successes on /tasks/OLD to /tasks/NEW navigations.* New `until_url_changes: true` for submits whose destination URL isn't known up front.* fill_input refuses ambiguous fuzzy-walk matches with a candidates list instead of silently overwriting the wrong textarea (the canonical "Brief Rationale" / "Review comment" failure mode on dense forms).* execute_script now handles every navigation-during-script case (chrome.scripting Frame-removed, CDP "Inspected target navigated or closed", sync `location.href` + await hangs) as a clean `[navigated]` signal instead of throwing or hanging the WS for 30s.* New `tab_query` on execute_script targets a specific tab without focus thrash. Helpful for self-rescheduling loops where the user's active tab may have drifted while AFK.* get_form_fields walks the ancestor chain when classifying hidden fields. Conditional sections inside a `display:none` parent are now excluded from the inventory and counted in the "may unfurl after radio click" warning.Repo: https://github.com/NeoDrewX/chromeflowWeb Store: https://chromewebstore.google.com/detail/chromeflow/lkdchdgkbkodliefobkkhiegjdiidimeSite + comparison: https://chromeflow.run/compareAccount note: the previous post linked NeoDrew/chromeflow. That GitHub account was suspended; the repo is now mirrored at NeoDrewX/chromeflow. Same code, same npm package, same Web Store listing.Follow-up to the v0.9.4 Show post last week. v0.9.6 + v0.9.7 shipped fixes driven by ~3 hours of distribution-sprint use and a couple of long agentic task sessions, plus a real-world test pass on Wikipedia, Reddit, and a handful of crafted fixtures.

What changed:

* Multi-instance race in the WS bridge. Second claude session on port 7879 no longer fails its first chromeflow call because the extension's reconnect was in exponential backoff. Added a 10s grace poll on the MCP side, dropped the extension's reconnect cap from 30s to 5s.

* click_element gained `within_selector` and `near_text` for scoping nth counting to a section. Solves "10 'Minor Issue(s)' radios across one long evaluation form".

* `until_url_contains` now requires an actual URL change when the substring was already in the pre-click URL. No more false-positive successes on /tasks/OLD to /tasks/NEW navigations.

* New `until_url_changes: true` for submits whose destination URL isn't known up front.

* fill_input refuses ambiguous fuzzy-walk matches with a candidates list instead of silently overwriting the wrong textarea (the canonical "Brief Rationale" / "Review comment" failure mode on dense forms).

* execute_script now handles every navigation-during-script case (chrome.scripting Frame-removed, CDP "Inspected target navigated or closed", sync `location.href` + await hangs) as a clean `[navigated]` signal instead of throwing or hanging the WS for 30s.

* New `tab_query` on execute_script targets a specific tab without focus thrash. Helpful for self-rescheduling loops where the user's active tab may have drifted while AFK.

* get_form_fields walks the ancestor chain when classifying hidden fields. Conditional sections inside a `display:none` parent are now excluded from the inventory and counted in the "may unfurl after radio click" warning.

Repo: https://github.com/NeoDrewX/chromeflow

Web Store: https://chromewebstore.google.com/detail/chromeflow/lkdchdgkbkodliefobkkhiegjdiidime

Site + comparison: https://chromeflow.run/compare

Account note: the previous post linked NeoDrew/chromeflow. That GitHub account was suspended; the repo is now mirrored at NeoDrewX/chromeflow. Same code, same npm package, same Web Store listing.

reddit.com
u/GreenNo2789 — 3 days ago
▲ 5 r/mcp

Show: Chromeflow — Chrome extension and MCP server lets Claude Code or Codex CLI drive your real Chrome

A few engineering choices that might interest folks here:- stdio MCP + local WebSocket bridge (ports 7878-7888 → up to 11 parallel sessions in different Chrome windows)- Privileged-fetch tool runs in the extension's background SW so authenticated fetches bypass page CSP (Canvas attachments, Stripe document downloads, etc.)- In-extension docx parsing using DecompressionStream — no local CLI dependencies- Watchdog on stdin close + PPID change so abandoned MCP processes can't leakv0.9.4 just shipped (yesterday): pruned 38 tools → 26 by merging overlapping ones, added a privacy fix where inspect_request_headers now redacts cookies by default.Battle-tested by 400+ hours of real agentic browser work before public release. MIT, free, on the Chrome Web Store.Repo: https://github.com/NeoDrew/chromeflowWeb Store: https://chromewebstore.google.com/detail/chromeflow/lkdchdgkbkodliefobkkhiegjdiidimeComparison vs Playwright / Browser Use / Puppeteer: https://chromeflow.vercel.app/compareOpen to feedback, PRs, or "you should have done X differently."

reddit.com
u/GreenNo2789 — 9 days ago