From 7cfe188bbe212b860c3bbab9ce68a8c212999e22 Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Sun, 9 Aug 2026 17:56:59 +0200 Subject: [PATCH] Fix engine pruning: disabled -> inactive (they were still running) The previous commit's pruning did not actually take effect. Per enginelib, "disabled" only sets the DEFAULT for a fresh visitor -- "will allow the user to manually activate it in the settings" -- so any browser session with an existing preferences cookie kept running every pruned engine. yandex images was still throwing JSONDecodeErrors in the log minutes after being "disabled". "inactive" is the key that actually removes an engine. Converted 84 entries. Verified behaviourally rather than by reading config: an images search now serves from google cse images ALONE (20 results, unresponsive=[]), and no pruned engine appears in the logs after a restart. brave and qwant deliberately keep "disabled". Sibling engines reference their outgoing connection pool by name (network: brave <- brave.images/ .videos/.news; network: qwant <- qwant news/images/videos), and "inactive" removes the definition entirely, so the container dies at startup with KeyError: 'qwant'. "disabled" keeps the pool defined while hiding the engine. Pool owners in this image: brave, qwant, yandex, piped, yacy. Also fixes two status checks that could report a healthy instance as broken. Public /search was returning 429 while loopback returned 200, which looked like a regression but was a missing Accept-Language header in the request: botdetection runs one check per header and rejects on the first failure. Setting "debug: true" under general: makes SearXNG log the exact rejecting method ("NOT OK (searx.botdetection.http_accept_language)"), which settled it in one run after several wrong theories. wait_for_site and check_headers had the same omission and are fixed; the full required header set is documented at check_http. Public path confirmed working end to end: general 200 with 21 results in 0.71s, images 200 with 40 proxied thumbnails in 0.58s. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Cb77nxXGwFYFM4fyXEQkzG --- .../evidence/setup-searxng-2026-08-09.json | 10 + .../single_use/features/setup_searxng.sh | 201 ++++++++++-------- 2 files changed, 125 insertions(+), 86 deletions(-) diff --git a/docs/superpowers/evidence/setup-searxng-2026-08-09.json b/docs/superpowers/evidence/setup-searxng-2026-08-09.json index 9c6d668f..66e08681 100644 --- a/docs/superpowers/evidence/setup-searxng-2026-08-09.json +++ b/docs/superpowers/evidence/setup-searxng-2026-08-09.json @@ -61,6 +61,16 @@ "result": "pass", "evidence": "All CSS/JS/img/manifest same-origin (/static/...). ZERO inline scripts (the single