Commit Graph

1296 Commits

Author SHA1 Message Date
Junliang Feng b706b2b291 fix: gate Unix-specific APIs for Windows build (#470) actionbook-cli-v1.0.0 2026-04-02 23:09:54 +08:00
mcfn.feng add1259e98 [root]chore: add workflow_dispatch to test.yml for manual E2E trigger 2026-04-02 23:08:53 +08:00
mcfn.feng 6a2b6010fd [packages/cli]fix: increase Chrome startup timeout to 30s and relax snapshot assertion
- 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
2026-04-02 23:01:55 +08:00
mcfn.feng fd0dfe3f63 [packages/cli]fix: gate Unix-specific APIs behind #[cfg(unix)] for Windows build
- server.rs: gate flock, kill FFI, UnixListener, SIGHUP behind #[cfg(unix)]
- chrome_reaper.rs: gate SIGTERM FFI, fall back to child.kill() on Windows
- client.rs: gate UnixStream usage, return error on non-Unix platforms
2026-04-02 22:49:36 +08:00
Junliang Feng 6c820401d1 chore: version packages (#468) 2026-04-02 22:32:30 +08:00
github-actions[bot] 8b55277dad chore: version packages 2026-04-02 14:27:45 +00:00
asensagent c4a583f20f Add command block to Quick Start (#469)
[root]docs: add command block to Quick Start showing concurrent tab operations

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 22:27:21 +08:00
Junliang Feng 6bedc03f81 fix: restore minimal CHANGELOG.md for CLI platform packages (#467) 2026-04-02 22:16:35 +08:00
mcfn.feng 696d3e0e85 [root]fix: restore minimal CHANGELOG.md for platform packages
changesets/action reads CHANGELOG.md of changed packages when creating
the Version PR. Empty placeholders prevent ENOENT crash.
2026-04-02 22:15:50 +08:00
Junliang Feng 9a2903628f chore: add changeset for CLI 1.0.0 stable release (#464) 2026-04-02 22:12:19 +08:00
Adcent 3b14d7b47a Update README.md (#466) 2026-04-02 22:10:35 +08:00
mcfn.feng 163383437d [doc] update changelog 2026-04-02 22:09:12 +08:00
mcfn.feng ccc11376ad [root]chore: revert CLI changeset to patch for 1.0.0 release 2026-04-02 22:00:24 +08:00
mcfn.feng f79b944188 [root]chore: change CLI changeset to major for 1.0.0 release 2026-04-02 21:59:50 +08:00
mcfn.feng a0d22370ad [doc] update changelog. 2026-04-02 21:57:02 +08:00
mcfn.feng cc58aeebbc [root]chore: add changeset for CLI 1.0.0 stable release 2026-04-02 21:17:57 +08:00
Junliang Feng 442393fd04 release: merge release/1.0.0 into main (#463) 2026-04-02 21:15:38 +08:00
asensagent aeceb8d0a8 Update README for 1.0.0 (#462) 2026-04-02 20:53:31 +08:00
Asen's Agent d707c09777 [root]docs: restructure Installation, Quick Start, and add AI Agent Skills
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>
2026-04-02 20:44:06 +08:00
mcfn.feng 00a9b8ef14 [feat] update version 2026-04-02 20:02:06 +08:00
Adcent f1e4cc4e3d Update README.md 2026-04-02 18:47:09 +08:00
Asen's Agent de2cf2633e [root]docs: clarify demo description to show agent visits 192 websites
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 18:37:34 +08:00
Asen's Agent 52508eecaa [root]docs: update demo video description for First Round demo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 18:35:15 +08:00
Adcent 13f392cb1c Update README.md 2026-04-02 18:34:16 +08:00
mcfn.feng c2a2a43de5 [packages/cli]fix: select fixture uses DOM APIs to avoid TrustedHTML error
Chrome 146+ may enforce Trusted Types on certain pages, causing
innerHTML assignments to fail. Replace innerHTML with createElement
+ appendChild in install_select_fixture.
2026-04-02 18:13:32 +08:00
mcfn.feng 5cee89cde8 [packages/cli]fix: type/press key events not reaching correct tab + contenteditable fix
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
2026-04-02 18:02:23 +08:00
mcfn.feng 66b732b84e [packages/cli]chore: bump version to 1.0.0-alpha.10 2026-04-02 17:49:20 +08:00
Junliang Feng ead3cbe740 fix(cli): support contenteditable elements in type/fill/focus (#461) 2026-04-02 17:44:26 +08:00
AlexZ a2024fbcb1 [packages/cli]chore: fix formatting in contenteditable test
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 17:41:29 +08:00
AlexZ 7ab8a7c576 [packages/cli]fix: support contenteditable elements in type/fill/focus commands
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>
2026-04-02 17:39:34 +08:00
Junliang Feng bd1435a056 fix: graceful Chrome shutdown + bump alpha.9 (#460) 2026-04-02 17:27:57 +08:00
mcfn.feng ca4303a73d [packages/cli]chore: bump version to 1.0.0-alpha.9 2026-04-02 17:23:37 +08:00
Junliang Feng 943980b066 fix(cli): graceful Chrome shutdown to preserve window state (#459)
[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.
2026-04-02 17:20:46 +08:00
mcfn.feng f472fd2912 [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.
2026-04-02 17:15:26 +08:00
mcfn.feng 4128749c00 Merge branch 'bugfix/remove-device-metrics-override' into release/1.0.0 2026-04-02 17:08:30 +08:00
mcfn.feng 4f833ac38a [feat] update version. 2026-04-02 17:08:04 +08:00
Junliang Feng b486d8a476 fix(cli): remove setDeviceMetricsOverride to avoid bot detection (#458)
[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.
2026-04-02 17:05:49 +08:00
mcfn.feng ac13df5522 [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.
2026-04-02 17:04:51 +08:00
Junliang Feng 7cbff7fc00 [codex] cli: keep setup and switch its browser modes to local/cloud (#455) 2026-04-02 16:50:47 +08:00
mcfn.feng 9a1d5a756a cli: fix setup clippy lint 2026-04-02 16:42:24 +08:00
mcfn.feng 192905515f cli: restore setup command entrypoint 2026-04-02 16:30:26 +08:00
Junliang Feng 28adff22a2 [packages/cli]feat: --session get-or-create + --tab alias (#457) 2026-04-02 16:23:51 +08:00
mcfn.feng 0758c9ef62 [packages/cli]feat: add --session get-or-create and --tab alias for browser commands
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.
2026-04-02 16:21:56 +08:00
mcfn.feng d358a27ed0 cli: remove setup command and mark it coming soon 2026-04-02 16:17:34 +08:00
AlexZ 8591041c91 Merge branch 'release/1.0.0' of github.com:actionbook/actionbook into release/1.0.0 2026-04-02 16:16:34 +08:00
mcfn.feng 8af064f04b cli: switch setup browser modes to local/cloud 2026-04-02 16:13:22 +08:00
Junliang Feng 5cc3bd6d46 fix(cli): key events not reaching correct tab in multi-tab sessions (#456) 2026-04-02 16:11:59 +08:00
mcfn.feng 13abe9370d [packages/cli]fix: key events not reaching correct tab in multi-tab sessions
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
2026-04-02 16:10:17 +08:00
asensagent 6fe074bf4b docs(skills): rewrite SKILL.md for CLI v2 methodology (#454)
* 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>
2026-04-02 16:08:24 +08:00
mcfn.feng 969ef0e038 cli: rename setup isolated mode to local 2026-04-02 16:00:22 +08:00