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.