Releases: A3S-Lab/Search
Releases · A3S-Lab/Search
v0.9.0
- style: apply cargo fmt
- chore: bump version to v0.9.0
- feat: Lightpanda integration and browser field rename
- fix(node-sdk): add missing browser-related fields to TypeScript types
- ci: add GitHub Actions CI workflow and release automation
- docs: add Discord community link
- docs: add Windows platform support to README for v0.8.0
v0.7.0
- Bing engine (HTTP)
- HealthMonitor with configurable intervals and thresholds
- HCL configuration file support (SearchConfig::load / SearchConfig::parse)
- Dynamic proxy pool with ProxyProvider trait and spawn_auto_refresh
- AtomicBool enabled toggle for runtime proxy pool control
- SDK proxy pool alignment (Node.js + Python)
- cargo fmt fixes
v0.6.0
- chore: bump version to v0.6.0
- ci: build CLI with default features (include headless)
- ci: add CLI binary build, GitHub Release assets, and Homebrew auto-update
v0.5.5
- fix(ci): strip nested workspace sections from search Cargo.toml in CI
- fix(ci): proper updater stub in setup-workspace.sh, fix workspace root conflicts
- fix(ci): run CI checks directly from repo root, create updater stub inline
- fix(ci): use working-directory for fmt to avoid multiple workspace roots
- chore: bump version to v0.5.5, add automated release workflow
v0.5.4
Improvements
- Add release profile optimization (thin LTO, strip, panic=abort) for smaller binaries
- Add workspace definition for standalone builds
- Align all SDK versions to core version (0.5.4)
SDK Updates
- Node SDK (@a3s-lab/search): 0.5.4
- Python SDK (a3s-search): 0.5.4
v0.5.3
Hotfix
- Fix UTF-8 panic: Prevent panic when truncating multi-byte UTF-8 content (e.g., Chinese/CJK characters from Baidu results). Replaced byte-level slicing with safe
truncate_str()usingchar_indices(). - Added 7 tests for UTF-8 truncation edge cases (Chinese, emoji, mixed CJK)
Full Changelog: v0.5.2...v0.5.3
v0.5.2 - Unified PageFetcher for Proxy Support
What's Changed
Proxy Support for All Engines
- Refactored all non-headless engines (DuckDuckGo, Brave, Sogou, So360, Wikipedia) to use the unified
PageFetcherabstraction - The
-p(proxy) flag now works for all engines, not just headless ones - Each engine accepts a custom
PageFetcherviawith_fetcher()/with_http_fetcher()
API Changes
DuckDuckGo::with_fetcher(fetcher)— inject custom fetcherBrave::with_fetcher(fetcher)— inject custom fetcherSogou::with_fetcher(fetcher)— inject custom fetcherSo360::with_fetcher(fetcher)— inject custom fetcherWikipedia::with_http_fetcher(fetcher)— inject custom HTTP fetcher (JSON API)- All engines still support
::new()with default fetcher (backward compatible)
Tests
- 267 tests passing (added 5 new with_fetcher tests)
Install
# Homebrew (macOS)
brew install A3S-Lab/tap/a3s-search
# Cargo
cargo install a3s-search
# Binary download
# See assets belowFull Changelog: v0.5.1...v0.5.2
v0.5.1 - Auto Chrome Detection & Headless Default
What's Changed
🚀 Features
- Auto-detect and download Chrome for headless engines — no manual Chrome installation required. The engine automatically finds an existing Chrome/Chromium binary or downloads one on demand.
- Headless mode is now the default — the
--headlessCLI flag has been removed. Headless browser engines (Baidu, Bing China) are enabled by default. Use--no-default-featuresat build time to disable.
🧪 Testing & Quality
- Added 44 new unit tests (207 → 251 total), improving code coverage from 88% to 91.15%
- Added
justfilewith coverage support (just coverage)
📦 Install
Homebrew (macOS):
brew install A3S-Lab/tap/a3s-searchCargo:
cargo install a3s-searchBinary (macOS ARM64):
Download a3s-search-0.5.1-darwin-arm64.tar.gz below.
Full Changelog
v0.5.0 - Re-add Baidu & Bing China
What's New
Baidu & Bing China Re-added
- Baidu (百度): Re-added behind
headlessfeature using PageFetcher pattern - Bing China (必应中国): Re-added behind
headlessfeature using PageFetcher pattern - Both engines use the shared BrowserPool for efficient Chrome process management
Engine Count: 8 Total
- 5 default engines: DuckDuckGo, Brave, Wikipedia, Sogou, 360 Search
- 3 headless engines: Google, Baidu, Bing China (require
--headlessflag + Chrome)
Quality
- 222 unit tests (198 library + 24 CLI), 94.36% line coverage
- Clippy clean, zero warnings
Usage
# Search with Baidu and Bing China
a3s-search "Rust 编程" -e baidu,bing_cn --headless
# All headless engines
a3s-search "Rust" -e g,baidu,bing_cn --headlessv0.4.0 - Headless Browser Support
What's New
Headless Browser Support
- PageFetcher trait: Pluggable page fetching abstraction (plain HTTP or headless browser)
- HttpFetcher: reqwest-based PageFetcher for server-rendered pages
- BrowserPool: Shared Chrome process with tab concurrency control (semaphore-based)
- BrowserFetcher: CDP-based PageFetcher for JavaScript-rendered pages
- WaitStrategy: Configurable wait strategies (Load, NetworkIdle, Selector, Delay)
Google Engine Re-added
- Google search engine re-added behind
headlessCargo feature - Uses CSS selectors:
div.g,h3,a[href],div.VwiC3b - Weight: 1.5 (higher trust), Timeout: 10s
CLI Updates
--headlessflag for enabling headless browser modea3s-search enginesnow shows headless engines section- Graceful warnings when headless feature not compiled in
Quality
- 207 unit tests (183 library + 24 CLI), 94.07% line coverage
- Zero impact on default build (all browser code behind
headlessfeature) - Clippy clean, zero warnings
Install
# Homebrew
brew tap A3S-Lab/tap && brew install a3s-search
# Cargo
cargo install a3s-search
# With headless support
cargo install a3s-search --features headless