Releases
v0.13.0
Compare
Sorry, something went wrong.
No results found
0.13.0 (2026-08-22)
Features
add autonomous CAPTCHA detection and recovery (#456 ) (c77266b ), closes #455
add deterministic LLM contract scenarios (f71781b )
add deterministic LLM contract scenarios (86dc5f4 )
add deterministic SlopSearX contract twin (216c65f )
add deterministic SlopSearX contract twin (1445642 )
agent,cli: retryable rate-limit contract (ADR-0053) (2eab2b7 )
agent,cli: retryable rate-limit contract (ADR-0053) (eba5122 )
agent: add --search-type flag for research depth control (f7dd947 )
agent: add --search-type flag for research depth control (f7dd947 )
agent: add portable research state projection (#464 ) (2b40ad0 )
agent: harden research-memory cache compatibility and freshness (fa2e14f ), closes #529
allow maintainer to merge own PRs (review bypass only) (1ec81ba )
allow maintainer to merge own PRs (review bypass only) (b17bf2f ), closes #499
allow maintainer to merge own PRs (review bypass only) (#518 ) (1ec81ba )
ashby: add official Ashby API tiers to the adapter (bb66bbf )
ashby: add official Ashby API tiers to the AshbyHQ adapter (544bb7e )
compose: expose direct SlopSearX MCP service (629e54e )
compose: expose SlopSearX MCP service (f406ff6 )
mcp-svc: complete MCP tool surface and fix adapter correctness (b4b7982 )
mcp-svc: complete MCP tool surface and fix adapter correctness (58802c1 )
metrics: add stage timer, gauge inc/dec, and shared stage helpers (52ef618 )
parse-svc: adopt firecrawl-anydoc as the conversion engine (3721a05 )
parse-svc: adopt firecrawl-anydoc as the conversion engine (bb96263 ), closes #523
Bug Fixes
add graceful shutdown with drain timeout to MCP server (#417 ) (3541515 ), closes #410
add transient Playwright error recovery (f6f6c71 )
add transient Playwright error recovery (#412 ) (b69efba )
admission: refund granted waiter weight on cancellation (e9573ed )
agent,cli: address review findings on retry metadata safety (66c2cdc )
agent: align polling research with streaming (#463 ) (4fe03f6 )
agent: cap answer sources at num_sources after URL dedup (5bf9b71 )
agent: correct cancelled/completed telemetry across agent paths (c3a31a3 )
agent: degrade find_similar on any semantic backend failure, not just 503 (#545 ) (0cfbd1d )
agent: harden hybrid blend dedup, malformed URLs, and diversity floor (81f2104 )
agent: opt-in downstream 429 classification for retry paths (6554ea1 )
agent: preserve compact sources and single-flight SWR refresh (802be94 )
agent: record research memory Valkey lookup errors (1db27b4 )
agent: track stream-mode crawl workload telemetry (ca74265 )
agent: treat degraded lightweight scrape as insufficient (27600cf )
agent: wire search_type through streaming pipeline and SSE plan event (5345c7e )
agent: wire search_type through streaming pipeline and SSE plan event (5345c7e )
agent: wire search_type through streaming pipeline and SSE plan event (42e8a5c )
align tests with explicit LLM model contract (cc1bc41 )
align tests with explicit LLM model contract (ba775de )
ashby: gate RPC tier to individual postings and document the key (277e6b8 )
ashbyhq: escape pipes and newlines in API markdown table cells (95d1c76 )
ashbyhq: escape pipes and newlines in markdown table cells (a613e32 )
benchmarks: fail cleanly when StackRunner is unwired (2138462 )
benchmarks: reject non-positive --runs with a clean error (accf580 )
browser: do not count failed session creation as destroyed (ea98f96 )
browser: stop manually started Playwright controllers (c3e99a8 )
browser: stop manually started Playwright controllers (6cfd068 )
ci: classify root *.md as docs-only and contract-test RUNTIME_SERVICES (7a942fd )
ci: classify root *.md as docs-only and contract-test RUNTIME_SERVICES (3153b8b )
ci: copy benchmarks into integration container (c0b703a )
ci: make mcp-svc test steps pass under CI config (b45ed7c )
ci: make release-please version tracking explicit (29199b2 )
ci: make release-please version tracking explicit (0f1902d )
ci: treat .github/ markdown as docs-only per review (45b32d4 )
complete LLM scenario error contracts (b62345e )
compose: bound browser workloads and profile indexing (#482 ) (47967cd )
compose: delegate slopsearx-mcp grant defaults to upstream secure policy (#579 ) (3df5948 ), closes #578
compose: gate slopsearx-mcp behind opt-in mcp profile (#558 ) (60fab8d )
compose: stop slopsearx-mcp aborting a no-config docker compose up (8e53441 )
differentiate Playwright browser errors from generic upstream errors (#416 ) (85dc819 ), closes #408
document BRAVE_API_KEY and surface search degradation warnings (#414 ) (a9e33c4 ), closes #406
drop release-please bypass exemption (dependabot-only review policy) (01d2f9f )
drop release-please bypass exemption (dependabot-only review policy) (c42748f ), closes #499
emit parseable semantic service metrics (#451 ) (1569fca )
harden research-memory cache compatibility and freshness (d1d2e65 )
isolate search twin integration lane (d57d069 )
make LLM fixture deterministic with sources (415735e )
mcp-svc: address review findings on monitor contract, SSRF, retries (f29f4e8 )
mcp-svc: fail-closed DNS-rebinding default, address review findings (3bf116e )
mcp-svc: make DNS-rebinding Host allowlist explicit and configurable (ffdc57c )
mcp-svc: make DNS-rebinding Host allowlist explicit and configurable (4d76637 ), closes #524
mcp-svc: wire MCP_ALLOWED_ORIGINS through docker-compose (6971bea )
metrics: distinguish cache lookup errors from misses (7c69e21 )
metrics: omit invalid OpenMetrics timestamps (5371956 )
metrics: omit OpenMetrics timestamps (#488 ) (e1ac66d )
metrics: record search-stream TTFB on empty results (2a88e29 )
metrics: record stream TTFB at first real event (f8c2608 )
omit integration_id from Ruleset B required status checks payload (8fe4bea )
omit integration_id from Ruleset B required status checks payload (865a41a ), closes #499
omit integration_id from Ruleset B required status checks payload (#515 ) (8fe4bea )
politeness: read-only per-tier checks and aborted-delay rollback (911e90d )
reject unsupported version inferences in research (10f0c8c )
reject unsupported version inferences in research (5cd4a0a )
remove hardcoded gpt-4o-mini defaults from research modules (#415 ) (0dc1b1e )
satisfy service dependency and fixture contracts (171c4d9 )
scraper: bound browser process lifecycles (#468 ) (efdc388 ), closes #467
scraper: record tier error metric on smart_scrape raise (b382978 )
scraper: sample browser stage metrics on Playwright raise (fc7fd8c )
scraper: sample extraction histogram on empty/failed extractions (47e7c5c )
security: reject all NAT64 space and redact webhook URLs in logs (f6fad87 )
security: reject IPv4-encapsulating IPv6 forms in SSRF guard (a7db7bf )
security: reject IPv4-mapped IPv6 private addresses in SSRF guard (6c67dec )
security: unmap Teredo client and NAT64-embedded IPv4 in SSRF guard (0a92dc7 )
security: validate webhook destinations to prevent SSRF (4cd6e90 )
security: validate webhook destinations to prevent SSRF (3889bfa )
semantic-svc: resolve 7 mypy errors surfaced by qdrant_client stubs (1d63dd8 )
semantic-svc: resolve 7 mypy errors surfaced by qdrant_client stubs (cb61034 )
semantic: bound Qdrant query timeout and degrade to 503 instead of 500 (#544 ) (c34d906 )
semantic: narrow Qdrant readiness client type (ae37711 )
semantic: narrow Qdrant readiness client type (e96a935 ), closes #486
semantic: require Qdrant for readiness (#485 ) (3e5ab1a )
skip failed results in research memory cache (609440d )
skip failed results in research memory cache (0e32c79 ), closes #432
support disabling llama.cpp template reasoning (b3a7912 )
support disabling llama.cpp template reasoning (9140613 )
test: remove unused variable flagged by vulture (261368f )
update CLI coverage script to scan routes/ package (7d2905d )
update CLI coverage script to scan routes/ package instead of api.py (d401e17 )
wait for semantic service readiness (746ee46 )
wait for semantic service readiness (37be058 )
webhook: never leak parser or resolver errors from destination guard (9a7d799 )
webhook: redact userinfo credentials from webhook URL logs (d618215 )
webhook: retry transient DNS failures during destination validation (9828d7b )
worker: do not double-count cancelled jobs (5465541 )
Performance Improvements
add concurrent cache-assisted hybrid retrieval (a3cfb96 )
add global admission control and end-to-end cancellation (65a8f22 )
add stage-level latency and capacity telemetry (25b24ca )
agent: add concurrent cache-assisted hybrid retrieval planner (399e4a2 )
agent: add global weighted admission controller and cancel token (cd3cff7 ), closes #531
agent: instrument research stages, caches, streaming, and workload class (b10ba94 )
agent: request-scoped source artifact with rerank reuse (0802c50 )
agent: single research-memory lookup per agent request (d4eaba6 )
agent: wire admission and cancellation into fan-out paths (f6e9bfc ), closes #531
benchmarks: add stdlib benchmark harness and checked-in baseline (2b3fc71 )
eliminate duplicate retrieval, cache, and browser work (2b96563 )
scraper: add tier/adapter/cache and browser lifecycle telemetry (87cf58c )
scraper: browser-tier admission and politeness burst fix (ae3c625 ), closes #531
scraper: lightweight-only contract and awaited cancellation (bef4b5e )
worker: bound batch scrape task creation with a worker pool (2f1636a )
Documentation
add ADR-0049 for research-memory compatibility, freshness, and SWR (b6a100a ), closes #529
add contribution intake and Now/Next/Later roadmap (adaa195 )
add contribution intake and Now/Next/Later roadmap (23f3ab5 )
add graphify query tuning guidance to AGENTS.md (966643b )
add graphify query tuning guidance to AGENTS.md (e380a8d )
add release and dependency-update PR triage routine (104def5 )
add release and dependency-update PR triage routine (486a9c9 )
add stage telemetry ADR, metric inventory, and dashboard panels (09b35c4 )
ADR-0051 admission control, observability, public surface (0a7fa3e ), closes #531
adr: make async-job durability an explicit deployment and roadmap decision (#521 ) (608486f )
adr: remove private deployment identifier from ADR-0026 (838ce9f )
adr: remove private deployment identifier from ADR-0026 (7a1c75f )
agent: clarify async job durability (#462 ) (8f37b7b )
align emergency runbook trigger list with self-merge note (e725c72 ), closes #499
benchmarks: fix percentile interpolation docstring (f42aae0 )
clarify CLI authentication configuration (a0eca83 )
clarify CLI authentication configuration (ab247f7 )
correct search-client mutation-review kill claims (09921fc )
correct triage summary kill claims (947bfb5 )
document dedup/retry metrics and ADR-0050 (a1af8ba )
document hybrid blend diversity floor in ADR-0052 (a275777 )
document hybrid retrieval planner and add benchmark script (b542bdb )
document PR review loop and merge bypass for agents (9b42178 )
document PR review loop and merge bypass for agents (a77564a )
mark vision as historical (1719843 )
mark vision as historical (00dcbf3 )
note AshbyHQ posting API and expanded parse formats (3a3cb34 )
note AshbyHQ posting API and expanded parse formats (0f1a9fc )
note maintainer self-merge in emergency runbook (d185b6a )
note maintainer self-merge in emergency runbook (74bac62 ), closes #499
note maintainer self-merge in emergency runbook (#520 ) (d185b6a )
note minimum graphify version for --context flag (5bc186d )
overhaul documentation and add drift checks (#422 ) (8473fdd )
place roadmap under docs/ so docs-only PRs stay docs-only (156239a )
promote ADR-0046 status to accepted (6eebdf7 )
promote ADR-0046 status to accepted (0b58e34 )
readme: fix quickstart examples and required auth token (9ebcb3c )
readme: restructure quickstart into Choose your path (cf9c4dc )
readme: restructure quickstart into Choose your path (#472 ) (f6aa8cd )
register MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINS in public-surface inventory (a305a1e )
verify observability artifact chain (#449 ) (3c13dfc )
CI/CD
add diagnostic critical journey smoke (#446 ) (2c06ea8 )
bump actions/setup-python from 6 to 7 (6935654 )
bump actions/setup-python from 6 to 7 (5b6f1d3 )
bump actions/upload-artifact from 4 to 7 (19ea3a7 )
bump actions/upload-artifact from 4 to 7 (553da2c )
bump Factory-AI/droid-action (c40a056 )
bump Factory-AI/droid-action from 7c7bfea2aa3bb7ea87579402cc1d89dbcf6b13b3 to 2041e7cc36d1390346bdaa6616e4bf7ac6b96b27 (3835742 )
compile fixture probes exactly (4cb1577 )
docker: address droid-review P1/P2 on runtime lanes (#494 ) (fafd1e0 )
docker: address droid-review P1/P3 on fork guard (#483 ) (eacbc9c )
docker: drop dead parse deps from integration lane (f073df9 )
docker: drop dead parse deps from integration lane (d6815e9 )
docker: fix mcp-svc build-and-push context (8d2ad15 )
docker: fix mcp-svc build-and-push context (69ebf00 )
docker: fix mcp-svc build-and-push context (#494 follow-up) (f736a5b )
docker: fix mcp-svc build-and-push context (#494 ) (c048977 )
docker: guard self-hosted integration against fork PRs (#483 ) (9d4723c )
docker: guard self-hosted integration against fork PRs (#483 ) (43608a8 )
docker: publish parse-svc and mcp-svc images (f752bbd )
docker: service-local PR builds and remove duplicate --build (#494 ) (323d6f0 )
docker: service-local PR builds, remove duplicate --build (#494 ) (e029a06 )
docker: tolerate unpublished images in the pull lane (#494 ) (e981516 )
enforce critical journey smoke gate (#447 ) (c407aa0 )
enforce required QA checks and review policy on main (9277c29 )
enforce required QA checks and review policy on main (66e44fe ), closes #499
gate source-backed fixture contracts early (5e88b9c )
integrate dependency twin validation (e3bbf6f )
integrate dependency twin validation (7f86d0d )
make dependency hygiene blocking (4f15fb2 )
make dependency hygiene blocking (4c0c5c3 ), closes #471
parse-svc: install firecrawl-anydoc in the integration test runner (fc055a8 )
parse-svc: install pypdf in the integration test runner (da18a7e )
preserve integration failure diagnostics (0106eba )
provide MCP token for integration stack (030176e )
publish parse-svc and mcp-svc images (5d4ca1c )
reset persisted test memory before integration (16f557e )
resolve twin review findings (7b26d55 )
review: trigger re-review on synchronize pushes (a113198 )
review: trigger re-review on synchronize pushes (ca2477b )
review: use DeepSeek V4 Flash for droid auto review (d787c24 )
review: use DeepSeek V4 Flash for droid auto review (3cb5724 )
route answer evals through host lane (b1a9a97 )
run deterministic fast tests on every change (0bbbf24 )
separate hosted and compose twin contracts (93dc54e )
serialize shared-runner integration jobs (#453 ) (946e6ed )
skip Docker integration for docs-only pull requests (8f6b280 )
skip Docker integration for docs-only pull requests (1781908 )
Refactoring
agent: unify research execution (#461 ) (d3e94d8 )
webhook: share destination validation between job and monitor paths (80ec386 )
Tests
add bounded mutation-testing pilot harness for search-client slice (ae4299b )
add grounded answer evaluation harness (9f4446c )
add grounded answer evaluation harness (e3186e2 )
admission budgets, cancellation teardown, batch parallelism, politeness (5f6f4ec ), closes #531
agent: cover degraded-lightweight fallback and answer URL dedup (51f9a1e )
agent: cover hybrid blend dedup, malformed URLs, and diversity floors (a235b73 )
agent: cover hybrid retrieval planner and call-site delegation (4de1ab3 )
agent: cover research-memory compatibility, freshness, SWR, and sweep (21abf71 ), closes #529
agent: cover run_answer_stream rerank reuse (a0af90f )
agent: cover SWR compact sources and single-flight refresh (f743f76 )
bounded mutation-testing pilot on search policy (bf0ca66 )
cover issue 530 dedup, reuse, and browser lifecycle (a3a3cb3 )
crawler: cover cancellation branches in the fast lane (0041def )
finalize search-client mutation-pilot evidence, report, and ADR-0057 (64b44d0 )
govern pytest outcome lifecycle (#509 ) (f6e8a28 ), closes #502
harden deferred search-client oracle gaps (027de90 )
harden evaluation artifacts and baselines (2f37b5e )
isolate hosted socket dependency (68ab87f )
make GitHub adapter coverage deterministic (41a70f5 )
mcp-svc: fix _default_allowed_test_host exact host:port handling (87b90f2 )
mcp-svc: isolate origin-derivation test, derive allowed Host from allowlist (e14883c )
metrics: cover browser session expired lifecycle paths (80b0489 )
metrics: cover semantic OpenMetrics renderer (ff3a938 )
metrics: cover semantic OpenMetrics renderer (90d0551 )
metrics: cover stage metrics, browser lifecycle branches, and harness (eb67ce2 )
metrics: cover stage-metric error and stream telemetry paths (a8edb1b )
metrics: cover TTFB, tier error, and browser create-failure regressions (79d03b9 )
metrics: run service-module metric tests in unit lane (a796352 )
parse-svc: add real .docx/.pptx/.xlsx fixtures (3c8cb0a )
quarantine live Gutenberg probes (abd6ab5 )
quarantine live Gutenberg probes (b9bfbbe )
remove live-search dependency from cross-session isolation (72a01fa )
triage search-client survivors and harden Retry-After boundary gaps (9a7b881 )
url: assert permanent rejection for overlong hostnames (#508 ) (1fc36f5 )
Chores
coverage: exempt cross-container high-risk files from integration gate (05f63db )
deps: regenerate lockfile for cloakbrowser 0.5.3 (9181fce )
deps: regenerate lockfile for qdrant-client <1.20.0 (30b7f00 )
ignore parallel-mode coverage data files (67630b0 )
ignore parallel-mode coverage data files (.coverage*) (e0ed4c2 )
remove search-svc fixture, update docs from SearXNG to SlopSearX (#405 ) (fd556b1 )
You can’t perform that action at this time.