Skip to content

release: v3.0.0 — PerimeterX press-and-hold solver + CDP primitives - #48

Merged
KeyCode17 merged 5 commits into
mainfrom
develop
May 15, 2026
Merged

KeyCode17 merged 5 commits into
mainfrom
develop

Conversation

@KeyCode17

Copy link
Copy Markdown
Owner

Summary

Major version 3.0.0 — end-to-end PerimeterX press-and-hold challenge solver via pure CDP, plus the supporting primitives.

Breaking changes

  • chromiumoxide 0.6 → 0.9 (Chrome 142+ wire compat)
  • BrowserPort trait gains 6 required methods (mouse_down/up/move/hold, block_urls, clear_cookies)
  • Workspace internal version pins bumped 2.1.0 → 3.0.0

What's in this release

See PR #47 for the full feature breakdown. Pure-CDP PX solver verified working on pedidosya.com.ar; autodraw smoke verifies synthetic mouse pipeline draws on canvas.

🤖 Generated with Claude Code

KeyCode17 and others added 5 commits May 16, 2026 04:40
…} + block_urls + clear_cookies

Chrome 142 emits CDP message variants chromiumoxide 0.6's protocol crate
can't deserialize, breaking every WS frame. Bump to 0.9 restores wire
compatibility.

New BrowserPort primitives:
- mouse_down(x,y), mouse_up(x,y), mouse_move(x,y,buttons_mask)
- mouse_hold(x,y,ms): humanized approach + ±1px jitter drag during hold,
  designed to clear PerimeterX/HUMAN press-and-hold challenges
- block_urls(patterns): Network.setBlockedURLs glob (uses legacy `urls`
  array since chromiumoxide_cdp 0.9's `urlPatterns` shape is rejected by
  Chrome stable)
- clear_cookies(origin): Storage.clearDataForOrigin for cookies + storage,
  resets bot-detection clearance state between runs

Adapter refactored: extracted mouse_input.rs + cdp_ext.rs to keep each
file under 200 LOC; new with_page() helper and op! macro deduplicate the
page_for + within boilerplate.

BREAKING: workspace version bumped 2.8.0 → 3.0.0. BrowserPort trait gains
5 required methods (mouse_down/up/move/hold + block_urls + clear_cookies).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two new agent actions backed by BrowserPort::mouse_hold:
- press_and_hold_element { index, ms? }: resolves bbox center of a
  clickable in the current DOM snapshot
- press_and_hold_coordinate { x, y, ms? }: raw pixel coords for buttons
  that aren't in the snapshot (e.g. inside a cross-origin iframe)

Default hold 12000ms, clamped 100..60000. Both dispatch the humanized
CDP press (pre-approach + jitter during hold) so PerimeterX-style
press-and-hold widgets accept the gesture as human.

Registry default now exposes 10 actions; registry_test updated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ras_agent::brain target now emits per-step structured logs:
- agent decision: eval / memory / next_goal / actions[]
- agent action params (debug): raw parameters JSON per action
- action result: ok, done, extracted_content, error

ras_llm_openai gains TRACE-level dumps of the request body and the raw
response body, so the full prompt + completion can be inspected when
debugging a misbehaving model.

Tracing call sites factored out to run_step_log.rs.

Common log presets:
  RUST_LOG=info,ras_agent::brain=info       # brain + action stream
  RUST_LOG=info,ras_agent::brain=debug      # + raw action params
  RUST_LOG=info,ras_llm_openai=trace        # full LLM I/O (very loud)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nt path

The pre-commit guard scripts skip `*/tests/*`, `*/examples/*`, `*/xtask/*`,
but the glob requires a parent directory component. When lefthook passes
relative paths like `examples/foo.rs` (no leading `*/`), the exclusion
fails and the guard incorrectly checks throwaway PoCs.

Add the bare-path alternatives (`tests/*`, `examples/*`, `xtask/*`) to
the case arms so both forms match. Applied across check-loc.sh,
check-no-comments.sh, check-no-unwrap.sh.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
release: v3.0.0 — PerimeterX press-and-hold solver + CDP primitives
@KeyCode17
KeyCode17 merged commit afb2aa0 into main May 15, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant