- Increase DevTools URL discovery timeout from 15s to 30s for CI environments
- Relax snap_selector_flag_limits_subtree assertion to allow ±2 node tolerance
- Increase E2E test workflow timeout to 20 minutes
Move Installation before Quick Start with npm and cargo-from-source
options. Simplify Quick Start to usage only. Add dedicated AI Agent
Skills section.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Chrome 146+ may enforce Trusted Types on certain pages, causing
innerHTML assignments to fail. Replace innerHTML with createElement
+ appendChild in install_select_fixture.
Three issues fixed:
1. Input.dispatchKeyEvent routes to Chrome's active tab, ignoring sessionId.
- type: add Target.activateTarget before key dispatch loop
- press: add Target.activateTarget before key dispatch
2. type command used minimal key definitions (just key+text) which didn't
trigger native text insertion on contenteditable elements.
- Reuse key_definition() from press module for full CDP key definitions
(code, windowsVirtualKeyCode, nativeVirtualKeyCode, unmodifiedText)
3. Contenteditable e2e test fixture had element at top:500px, whose center
(y=531) exceeded headless viewport height (513), causing click to miss.
- Changed to top:200px
Closes ACT-822
CDP DOM.focus fails on contenteditable divs (e.g., Lark/Notion/Slate editors)
with "Element is not focusable" (-32000). This change adds a JS .focus()
fallback and click-to-place-cursor for rich text editors.
Changes:
- Add TabContext::focus_element() with JS .focus() fallback when DOM.focus fails
- type command: detect contenteditable and click element center to establish
cursor position (required by Slate/ProseMirror internal cursor management)
- fill/focus commands: use focus_element() instead of raw DOM.focus
- Add E2E tests for type and focus on contenteditable elements
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[packages/cli]fix: graceful Chrome shutdown via SIGTERM before SIGKILL
Send SIGTERM first so Chrome can flush Preferences (window placement,
cookies, etc.), wait up to 3s for graceful exit, then fall back to
SIGKILL. This allows Chrome to restore window position and size on
next launch.
Send SIGTERM first so Chrome can flush Preferences (window placement,
cookies, etc.), wait up to 3s for graceful exit, then fall back to
SIGKILL. This allows Chrome to restore window position and size on
next launch.
[packages/cli]fix: remove setDeviceMetricsOverride and hardcoded window-size to avoid bot detection
setDeviceMetricsOverride creates detectable inconsistencies between
window.outerWidth/innerWidth and screen dimensions that anti-fingerprint
scripts use to flag automated browsers. The hardcoded --window-size
Chrome arg is also removed to let the browser use its default size.
setDeviceMetricsOverride creates detectable inconsistencies between
window.outerWidth/innerWidth and screen dimensions that anti-fingerprint
scripts use to flag automated browsers. The hardcoded --window-size
Chrome arg is also removed to let the browser use its default size.
browser start --session sid: get-or-create semantics — reuses existing
session if found, creates with that ID if not. Works for both local and
cloud modes. Conflicts with --set-session-id (which always force-creates).
browser new-tab --tab tid: visible alias for --set-tab-id — creates tab
with custom ID, returns TAB_ID_CONFLICT on duplicate.
Input.dispatchKeyEvent always routes to Chrome's active/foreground tab,
ignoring the CDP sessionId. This caused type and press commands to
silently fail when the target tab was not the active one.
- type: replace per-character Input.dispatchKeyEvent with Input.insertText
which correctly routes via CDP session. Also faster (1 CDP call vs 2N).
- press: add Target.activateTarget before dispatching key events since
functional keys (Enter, Tab, etc.) require Input.dispatchKeyEvent.
- type: add contentEditable support for cursor positioning (Selection/Range
API fallback when setSelectionRange is unavailable).
Closes ACT-822
* docs(skills): rewrite SKILL.md for CLI v2, focus on methodology
Rewrite the main skill to focus on general usage workflow rather than
duplicating command listings. Key changes:
- Restructured as Step 1 (search/get) → Step 2 (browser automation)
- Updated all commands to v2 syntax with --session/--tab
- Point agents to --help for command details instead of inline listings
- Added command categories table with help pointers
- Replaced example with cohesive Airbnb flow using @ref
- Removed outdated daemon section (v1-specific)
- Removed duplicate command listings (covered by --help and command-reference.md)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs(skills): align SKILL.md with new actionbook messaging
Update description, "When to Use", and "How It Works" to match the new
README framing: action manuals, 10x faster, accurate on modern web,
concurrent multi-tab architecture.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs(skills): fix description voice — skill is read by agent
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs(skills): remove DOM terminology per 1.0.0 messaging
Replace "DOM structure", "DOM node", "virtual DOMs" with
neutral terms (element selectors, elements). Aligns with
the 1.0.0 framing: action manuals, not raw DOM.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>