Skip to content

Releases: shrimp-software/eoka

v0.3.13

Choose a tag to compare

@cbxss cbxss released this 05 Mar 18:46

Refactor & Documentation

  • -100 LOC: Dedup helpers (send_void, sleep_ms, eval_str/eval_bool), merged redundant methods, type aliases for empty CDP structs
  • Single-pass escape_js_string: Replaces 10 chained .replace() calls
  • Fix: Duplicate "Win64; x64" in Windows user agent generation
  • Docs: Complete API coverage in README and CLAUDE.md — added Navigation, Network/Cookies, Configuration, Dialogs sections; fixed stale references

No API changes. All tests green.

v0.3.12

Choose a tag to compare

@cbxss cbxss released this 28 Feb 04:29

Lean pass

Dependencies trimmed:

  • rand → fastrand (4 fewer transitive deps)
  • smallvec removed
  • tokio features: 7 → 3 (process, sync, time)
  • 38 → 32 unique transitive dependencies

Dead code removed (~150 LOC):

  • 11 unused storage methods from Page
  • 5 unused CDP types

Bug fixes:

  • Pending entry leak on WebSocket write failure
  • Pong RFC 6455 compliance (echo ping payload)
  • 32-bit overflow guard in frame length parsing
  • go_forward() negative history index guard
  • DST-aware timezone offset precomputation

README simplified — removed verbose recipes section, tightened API reference

v0.3.11

Choose a tag to compare

@cbxss cbxss released this 28 Feb 01:40

What's Changed

Refactoring & Cleanup

  • Extract poll_until() helper, deduplicating 7 wait_for_* methods
  • Extract try_click_impl() to consolidate try-click error handling
  • Replace magic numbers with named constants (INTERACTION_DELAY_MS)
  • Deduplicate press_key() KeyDown/KeyUp via closure
  • Remove smallvec dependency — use Vec for mouse paths
  • Remove thread_local RNG wrapper — rand::rng() is already thread-safe

Bug Fixes & Hardening

  • Fix go_back()/go_forward() unchecked array index (use .get())
  • Fix WebSocket reader loop infinite-spin on consecutive timeouts
  • Fix NetworkWatcher unbounded memory growth (10k cap with LRU eviction)
  • Fix set_cookie/delete_cookie silently swallowing URL errors
  • Fix proxy auth write failure silently hanging requests
  • Fix wait_for_network_idle counter lost on page navigation
  • Fix DST getTimezoneOffset timing detection via precomputed offsets
  • Fix patched Chrome binary ~400MB disk leak on close
  • Fix escape_js_string missing \0, \u2028, \u2029
  • Fix evaluate_in_frame JS reserved word collision (fn → _exec)
  • Add WebSocket URL validation (ws:// prefix check)
  • Replace eprintln! with tracing::error! in transport

New Features

  • Add Browser::connect_with_config() for custom config on existing Chrome instances

v0.3.7

Choose a tag to compare

@cbxss cbxss released this 11 Feb 16:35

Fixes

  • Fix CDP reader thread deadlock: Changed blocking_send to try_send for event channel, preventing backpressure from blocking the reader thread on heavy pages (e.g. Yahoo login with many iframes/tracking scripts)
  • Add reader loop resilience: Read timeouts, per-command timeouts, and pending request drain on disconnect
  • Fix rand 0.10 compatibility: Replace use rand::Rng with use rand::RngExt for random_bool/random_range

v0.3.4

Choose a tag to compare

@cbxss cbxss released this 03 Feb 23:42

What's New

  • Multi-tab support
    • browser.tabs() - list all open tabs
    • browser.activate_tab(id) - focus a tab
    • browser.close_tab(id) - close specific tab
    • page.target_id() - get tab identifier
    • New TabInfo struct with id, title, url

v0.3.3

Choose a tag to compare

@cbxss cbxss released this 03 Feb 21:20

What's New

  • File upload: upload_file(), upload_files()
  • Select/dropdown: select(), select_by_text(), select_multiple()
  • Hover: hover(), human_hover() with Bezier curves
  • Keyboard shortcuts: press_key("Ctrl+A"), select_all(), copy(), paste()
  • Proxy support: Configure via StealthConfig

Breaking Changes

  • Removed press_enter(), press_tab(), press_escape() - use press_key("Enter") etc.

Internal

  • CI auto-formats with rustfmt
  • Dependabot for dependency updates