Skip to content

v1.0.4 — Stealth layer, deadlock fix, docs overhaul

Choose a tag to compare

@albertje8118 albertje8118 released this 15 Feb 17:46
· 37 commits to main since this release

Critical Bug Fixes

  • Event-loop deadlock — _search_impl\ runs on the browser event loop; calling the sync \get_or_create_session()\ wrapper tried to submit a coroutine to the same loop and blocked, causing a 60s deadlock per attempt (~123s total). Fixed by using \�wait _get_or_create()\ / \�wait _release()\ directly.
  • Double-submit timeout — after pressing Enter the send button becomes disabled; the old _click_submit()\ then waited 30s trying to click the disabled button. New _submit_query()\ checks the button state first and only clicks as a fallback.

Browser Stealth Layer

  • New \stealth.py\ module — patches
    avigator.webdriver, \chrome.runtime, plugins, languages, WebGL vendor, permissions, and window dimensions.
  • Human-like input helpers: \human_type()\ (per-char jitter 35–120ms), \human_click()\ (mouse-move + click),
    andom_delay().
  • Stealth context options: viewport jitter, locale, timezone, Sec-CH-UA client hints, device scale factor.
  • Launch args: --disable-blink-features=AutomationControlled, --disable-infobars.
  • User-Agent updated to Chrome/132.

Documentation

  • README.md rewritten: concise, version-agnostic (overview, quick start, client setup, tools table, link to full docs).
  • Release Notes page added to nav across all 9 doc pages.
  • Architecture updated: session pool, stealth layer, anti-loop safety sections; updated diagram and project structure.
  • Configuration updated: 9 new env vars (search/parsed/topic cache, rate limiting, session pool, topic preview).

Testing

  • 22 new stealth tests; 151 total tests passing.
  • Added \ ests/diagnose_search.py\ — standalone diagnostic script for headless chat debugging.

Full Changelog: v1.0.3...v1.0.4