6324 Commits
Author SHA1 Message Date
github-actions[bot]andsearxng-bot ef0ec03da0 [l10n] update translations from Weblate (#6850)
3dfe3d3f7 - 2026-10-19 - cyh21185 <cyh21185@noreply.codeberg.org>
896dc9faf - 2026-10-20 - marc-lopez <marc-lopez@noreply.codeberg.org>
f53baeeae - 2026-10-16 - marc-lopez <marc-lopez@noreply.codeberg.org>

Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
2026-10-24 10:46:18 +02:00
Bnyro 81371861f6 [del] engines: remove andisearch for now - #687
This reverts commit 2a6fc07be3.
2026-10-19 23:27:52 +02:00
WookieeOnCrack d47cb96bfb [feat] brave: parse JavaScript IIFE to fix engine
- Should resolve #6819 by reverting Accept-Encoding headers back to the curl_cffi default value
- Adds IIFE Parsing / Data Extraction that appears after headers update
2026-10-19 13:30:53 +02:00
jerry155756294 62366b05c0 [fix] engine - DDG: ignore zero-click answers without URLs (#6865)
If the provider uses DDG, and a HEX color code is searched for (for example, `A87771`), it directly reports `SearxEngineXPathException: index 0 not found` (the Web UI displays a parsing error), because DDG displays an icon for a color code.  This causes the parser to be unable to parse that icon. This fix directly ignores this special function.
2026-10-19 08:44:54 +02:00
Bnyro 2a6fc07be3 [feat] engines: add andisearch (general) 2026-10-17 11:16:04 +02:00
Bnyro 8252c0bf6d [chore] resulthunter: fix broken linter 2026-10-16 18:24:21 +02:00
Bnyro 47aa11475b [fix] resulthunter: blocked with access denied 2026-10-16 18:17:43 +02:00
Aadniz ca8e1582be [build] /static 2026-10-16 13:27:46 +02:00
Bnyro ff8f5ddcc9 [fix] yep: send x-csrf-protection header to bypass botdetection 2026-10-16 00:18:44 +02:00
Brock Vojkovic b00212a836 [mod] image proxy: /image with the default network (#6816)
- Changes the path of the /image_proxy endpoint to /image. This ensures that if the user copies the image through the browser, it is named image.png rather than image_proxy.png as the latter can be attributed to searxng hence preserving the privacy of the user.
- Removed the dedicated network for the image proxy. Previously this was used to force http/2 off but since moving to curl from httpx this is not as much of a problem. Now instead uses the default network.

Signed-off-by: vojkovic <git@vojk.au>
2026-10-15 06:59:50 +08:00
Bnyro 22c64b8d39 [fix] xprivo: crashes when parsing response 2026-10-13 12:15:09 +02:00
ky0nshi ad46ebd7d8 [fix] typo in ayo engine - https://search.ayo.de (#6817)
typo in the address fixed -> https://search.ayo.de
2026-10-11 17:52:29 +02:00
dependabot[bot] f4822b3fc4 [upd] web-client (simple): Bump the minor group (#6826)
Bumps the minor group in /client/simple with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [ol](https://github.com/openlayers/openlayers) | `10.10.0` | `10.11.0` |
| [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) | `2.5.14` | `2.5.15` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.6.3` | `26.6.4` |
| [browserslist](https://github.com/browserslist/browserslist) | `4.29.2` | `4.29.3` |
| [stylelint](https://github.com/stylelint/stylelint) | `17.15.0` | `17.16.0` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.3.1` | `8.3.3` |

Updates `ol` from 10.10.0 to 10.11.0
- [Release notes](https://github.com/openlayers/openlayers/releases)
- [Commits](https://github.com/openlayers/openlayers/compare/v10.10.0...v10.11.0)

Updates `@biomejs/biome` from 2.5.14 to 2.5.15
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.5.15/packages/@biomejs/biome)

Updates `@types/node` from 26.6.3 to 26.6.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `browserslist` from 4.29.2 to 4.29.3
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.29.2...4.29.3)

Updates `stylelint` from 17.15.0 to 17.16.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.15.0...17.16.0)

Updates `vite` from 8.3.1 to 8.3.3
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.3.3/packages/vite)

---
updated-dependencies:
- dependency-name: ol
  dependency-version: 10.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: "@biomejs/biome"
  dependency-version: 2.5.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: "@types/node"
  dependency-version: 26.6.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: browserslist
  dependency-version: 4.29.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: stylelint
  dependency-version: 17.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
- dependency-name: vite
  dependency-version: 8.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-09 20:59:16 +02:00
Markus Heiser 9f042d2f67 [build] /static 2026-10-09 16:16:48 +02:00
DangTAnh 815f58994a [feat] simple theme: translate hotkeys help dialog (#6806)
Move hardcoded English strings of the hotkeys help (keyboard.ts) to the
server side get_translations() so translators can pick them up. The client
looks them up via settings.translations with identical English fallbacks.
2026-10-09 16:16:48 +02:00
Markus Heiser bba4f64e8a [fix] issues reported by pylint v4.1.2 (#6827)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-10-09 15:19:50 +02:00
github-actions[bot] 2dc2b14628 [l10n] update translations from Weblate (#6828)
cf8a68cc8 - 2026-10-05 - lugged9922 <lugged9922@noreply.codeberg.org>
046b92a92 - 2026-10-06 - kratos <makesocialfoss32@keemail.me>
475f33d38 - 2026-10-04 - SomeTr <sometr@noreply.codeberg.org>
2f508cdb2 - 2026-10-05 - Stephan-P <stephan-p@noreply.codeberg.org>
0de45dca2 - 2026-10-05 - Kito <q1t0@noreply.codeberg.org>
76a5f5248 - 2026-10-05 - ghose <ghose@noreply.codeberg.org>
d7bfd43bd - 2026-10-04 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
bcc67b083 - 2026-10-04 - gallegonovato <gallegonovato@noreply.codeberg.org>
2026-10-09 14:08:51 +02:00
Guillaume P.andGuillaume PUTIER 6671d89bed [fix] engines: wikidata, no list as content when an entity has no description (#6824)
Wikidata kept showing up in `unresponsive_engines` as "unexpected crash", but only for some queries (`!wikidata loi anti gaspillage` for instance).

In `get_results`, `itemDescription` defaults to `[]`. When an entity has no description and `display_type` contains `"list"`, that empty list goes out as the `content` of a list result, and `ResultContainer.extend` fails with `TypeError: expected string or bytes-like object, got 'list'`. Every wikidata result of the query is dropped with it.

The default is now an empty string. `len(infobox_content) == 0` still works, and the infobox branch already expected a string.

`tests/unit/test_engine_wikidata.py` covers an entity with no description, once with `display_type` `["list"]` and once with `["infobox"]`. Without the fix both tests fail (`'content': []` instead of `''`), with it both pass.




itemDescription defaulted to [] in get_results. With "list" in display_type, that empty list was sent as the content of a list result and ResultContainer.extend raised a TypeError, so the whole wikidata answer of the query was lost. Default to an empty string instead.

Signed-off-by: Guillaume PUTIER <putier.guillaume@gmail.com>
Co-authored-by: Guillaume PUTIER <putier.guillaume@gmail.com>
2026-10-07 11:18:19 +02:00
Brock Vojkovic d48c4b5554 [feat] sort infobox so images are first (#6815)
Often there will be two or more results in the infobox.

We now sort this so infoboxes with an image show above those that do not.

Signed-off-by: vojkovic <git@vojk.au>
2026-10-04 08:16:51 +02:00
Brock Vojkovic 44b98e6102 [fix] engines: privacywall referer to bypass botdetection (#6813)
Privacywall needs a referer header now or else returns access denied.
2026-10-04 07:49:12 +02:00
Bnyro 7a3e41d420 [feat] s1search: parse suggestions (#6810)
- parse s1search suggestions
- thereby also fixes that some queries would crash the engine if using `https://search.nation.online` as base url because it tried to parse the suggestions as real results

### How to test this PR locally?

- set `base_url = "https://search.nation.online"` and `inactive: false`
- !s1 rust
2026-10-04 07:47:00 +02:00
Brock Vojkovic ce913b8934 [fix] engines: dogpile cors headers (#6814)
Added Sec-Fetch-Mode header to fix the engine. Dogpile now has better bot detection, similar to tusksearch, we now require CORS headers in the request.
2026-10-04 07:44:15 +02:00
dependabot[bot] 19ffbcd306 [upd] web-client (simple): Bump the minor group (#6807)
Bumps the minor group in /client/simple with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [browserslist](https://github.com/browserslist/browserslist), [sharp](https://github.com/lovell/sharp) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `@types/node` from 26.6.2 to 26.6.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `browserslist` from 4.29.0 to 4.29.2
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.29.0...4.29.2)

Updates `sharp` from 0.35.4 to 0.35.5
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.35.4...v0.35.5)

Updates `vite` from 8.3.0 to 8.3.1
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.3.1/packages/vite)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.6.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: browserslist
  dependency-version: 4.29.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: sharp
  dependency-version: 0.35.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
- dependency-name: vite
  dependency-version: 8.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 16:37:24 +02:00
Brock Vojkovic 26b90797e0 [enh] simplify and clean up preferences (#6126)
- The 'engine tokens' field is only shown now if there are any engines with tokens configured.

- DOI Resolver now has combined the previous two settings (one dropdown and one toggle) into just a single dropdown similar to the favicon resolver.
2026-10-02 18:36:07 +08:00
kcs81 a9d9900334 [fix] map Brave API SafeSearch levels correctly (#6799)
API description:

- https://api-dashboard.search.brave.com/api-reference/web/search/get#parameter-safesearch
2026-09-30 07:39:34 +02:00
quacker 4e2c1ea7f4 [fix] duckduckgo_web: make preload link timeout use the global configuration - #6768 2026-09-29 14:33:54 +02:00
github-actions[bot] f5035873ad [mod] data: update searx.data - update_firefox_version.py (#6792) 2026-09-29 08:44:07 +02:00
github-actions[bot] c11cbda117 [mod] data: update searx.data - update_ahmia_blacklist.py (#6793) 2026-09-29 08:35:03 +02:00
github-actions[bot] bad451b3da [mod] data: update searx.data - update_currencies.py (#6794) 2026-09-29 08:08:20 +02:00
github-actions[bot] 896ec8d3af [mod] data: update searx.data - update_engine_descriptions.py (#6796) 2026-09-29 07:43:48 +02:00
github-actions[bot] 487f519227 [l10n] update translations from Weblate (#6771)
4bf358751 - 2026-09-24 - bittin <bittin@noreply.codeberg.org>
ca4696cb4 - 2026-09-23 - ghose <ghose@noreply.codeberg.org>
2026-09-25 11:04:23 +02:00
Brock Vojkovic 3cd69d30e2 [fix] engines: tusksearch requires cors headers for botdetection (#6773)
Sec-Fetch-Mode and Sec-Fetch-Dest headers now mandatory
2026-09-23 23:18:45 +08:00
Bnyro 783a094625 [feat] engines: add xprivo - general, news, videos (#6641)
Add support for xprivo.com.  Xprivo has a rate-limit of smth like 20 requests
per day without an API key.  However, if you use a proxy like the IPv6 rotating
proxy [1] you basically get unlimited requests.

[1] https://github.com/vojkovic/http-proxy-ipv6-pool-docker
2026-09-23 13:00:51 +02:00
Bnyro dcf1d477ae [feat] engines: add iconify - icons (#6541) 2026-09-23 11:47:20 +02:00
Bnyro d63bbef7a0 [feat] engines: add findborg.com - general, news, images, videos (#6688)
Adds support for findborg.com which also uses the Brave results.
2026-09-23 09:31:34 +02:00
Bnyro 4d9c982cda [mod] brave-based engines: reuse result parsing methods (#6688)
Many engines use the JSON results from Brave (e.g. Brave, BraveAPI, Tusksearch
and more), so the result parsing logic is always the same. This PR deduplicates
this code.
2026-09-23 09:31:34 +02:00
vojkovic 019460e07d [build] /static (#6766) 2026-09-22 09:14:25 +02:00
Crizomb b3c3895294 [docs] indicate modification of settings.yml is necessary to add new … (#6685)
* [docs] indicate modification of settings.yml is necessary to add new plugin + small exemple code correction
* [docs] plugins: add more details about adding new plugins
2026-09-22 09:13:02 +02:00
Austin-Olacsi df67eb6c26 [fix] rewrite vimeo engine 2026-09-21 17:56:49 +02:00
Markus Heiser f372096fb1 [build] /static (#6742) 2026-09-21 14:49:04 +02:00
Bnyro 52284fd320 [feat] categories: add icons for remaining category tabs (#6759)
Icons are provided for the main categories known to us.

The distinction between CATEGORY_GROUPS and CATEGORY_NAMES is abandoned in favor
of the latter.

HINT: we need single-color icons; transparent background and the color must be
`currentColor` so that the icons can be used in light/dark themes.

The following SVGs from the ionicons had to be revised (use ``currentColor``).

- client/simple/src/svg/ionicons/logo-rss.svg
- client/simple/src/svg/ionicons/radio-outline.svg
- client/simple/src/svg/ionicons/color-palette-outline.svg

For the following categories, I did not find any usable icons in Ionicons; new
SVGs were created for these categories.

- onions: client/simple/src/svg/ionicons/tor-browser.svg
- lyrics: client/simple/src/svg/ionicons/song-lyric-music.svg [1]
- packages: client/simple/src/svg/ionicons/package_2.svg [1]

[1] Based on Google's Material icons: https://fonts.google.com/icons

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-09-21 14:49:04 +02:00
Bnyro 49064747a2 [fix] c3tv: crashes on missing description (#6752) 2026-09-21 10:07:38 +02:00
Bnyro 591ad564a9 [mod] c3tv: modernize engine (#6752) 2026-09-21 10:07:38 +02:00
Markus Heiser 2e624bed40 [fix] utils.parse_duration_string - the last three of [00, HH, MM, SS] (#6743)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-09-20 16:57:45 +02:00
Markus Heiser 2e41cf7407 [mod] migration of some engine results to the video class (#6743)
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-09-20 16:57:45 +02:00
Markus Heiser ce48993997 [build] /static 2026-09-20 16:57:45 +02:00
Markus Heiser e40de2d992 [mod] typification of SearXNG: add new result type Video (#6743)
- Python class:   searx/result_types/video.py
- Jinja template: searx/templates/simple/result_templates/videos.html
- CSS (less)      client/simple/src/less/result_types/video.less

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2026-09-20 16:57:45 +02:00
vojkovic fdd8525b1a [build] /static 2026-09-20 18:58:14 +08:00
vojkovic bcd2b709fe [mod] theme: improve thumbnails display on results page
Deletes thumbnails instead of showing an error image and also moves them to the right side. Also gives them a background and makes them into rounded 4:3 rectangles for better ui.
2026-09-20 18:58:14 +08:00
Brock Vojkovic e75fd22d09 [mod] defaults: disable image engines with poor results (#6690)
The image search defaults are a bit of a mix of results atm with random stock photos, some broken thumbnails (artic) and svg icons.
2026-09-20 11:10:16 +08:00