What's New
Unified Tab Resolution
Fixed a critical bug where shadow mode, evaluate, navigate, and other tools would target the wrong Chrome tab when falling back to AppleScript. The root cause: CDP returns a global flat tab list while AppleScript uses per-window (window_index, tab_index) pairs — and no translation existed between them.
Changes
_resolve_applescript_tab()— New translation function that matches tabs by URL between CDP cache and AppleScript listing, with normalized URL and title fallbacks- Fixed all 13 AppleScript call sites across 7 handlers:
shadow,evaluate,navigate,get_web_tree,wait_for,fill_form,close_tab - Fixed CDP persistent vs legacy ordering —
_get_cdp_session()now matches by URL instead of assuming index alignment between CDP backends - Fixed
_list_tabs_individual()— AppleScript fallback now correctly uses per-window tab indices - Fixed
_handle_list_chrome_tabs— AppleScript path shows consistent global indices - AppleScript tab cache with 2s TTL and automatic invalidation on tab mutations (open/close/navigate)
Impact
- Shadow mode now reliably targets the correct tab across any number of Chrome windows
- All tools that accept
tab_indexare now consistent — index N always means the same physical tab regardless of which backend executes the request - Zero changes to user-facing API — fully backwards compatible
Full Changelog: v0.7.0...v0.8.0