| Age | Commit message (Collapse) | Author |
|
Sometimes, there's only an `adaptivestreaming` field in `streams`, which
is usually an m3u8 file. That's however not supported by the video player
of any browser, so we can't use and must build a different url instead.
|
|
WhiteNoise requires all headers to be strings, however it's common to use
other primitive types (e.g. numbers) in the header, e.g. `X-XSS-Protection: 0`.
Thus, we must convert all types of values (i.e. numbers) to strings.
- closes https://github.com/searxng/searxng/issues/5091
|
|
Building the container currently does not work properly.
When rebuilding several times with `make container`, `version_frozen.py`
is recreated, which wouldn't be an issue if the file’s timestamp was constant.
Now, when creating `version_frozen.py`, it will have the same timestamp as the
commit when it was created. (`version_frozen.py` is moved to a dedicated layer).
Reusing "builder" cache when building "dist" could be slow
(CD reports 2 seconds, but locally I've seen it take up to 10 seconds),
so the Dockerfile is now split and we save a couple steps
by importing the "builder" image directly.
The last changes made it possible to remove the layer cache in "builder",
since the overhead is now greater than building the layers from scratch.
Until now, all "dist" layers were squashed into a single layer,
which in most cases is a good idea
(except for storage/delivery pricing/overhead), but in our case,
since we manage the entire pipeline, we can ignore this
and share layers between builds.
This means (for example) that if we change files unrelated to the container
in several consecutive commits (documentation changes), we don't have to push
the entire image to registry, but only the different layers
(`version_frozen.py` in this example).
The same applies when pulling, as only the layers that have changed
compared to the local layers will be downloaded (that's the theory,
we'll see if this works as expected or if we need to tweak something else).
|
|
- not 100% sure about the condition code mapping, there are no real matches for most of the codes from Apple WeatherKit to the weather codes we have in SearXNG
- related: https://github.com/searxng/searxng/issues/4885
|
|
The app and website were taken offline in December 2024, with the latter
pointing to KitchenAid's US website. [1]
[1] https://en.wikipedia.org/wiki/Yummly
Closes: https://github.com/searxng/searxng/issues/5079
|
|
* [fix] CI task "update_engine_traits.py" fails
To catch all problems with an HTTP request, the more general class
``httpx.HTTPError`` must be caught, for your test use::
$ ./manage dev.env
$ python ./searxng_extra/update/update_engine_traits.py
Closes: https://github.com/searxng/searxng/issues/5068
* [data] update searx.data - update_engine_traits.py
|
|
17e9fcd68 - 2025-07-29 - musabustun <musabustun@noreply.codeberg.org>
90b302e3e - 2025-07-29 - return42 <return42@noreply.codeberg.org>
023a22292 - 2025-07-29 - return42 <return42@noreply.codeberg.org>
17d37ede6 - 2025-07-30 - gkalathas <gkalathas@noreply.codeberg.org>
3c64c165f - 2025-07-29 - return42 <return42@noreply.codeberg.org>
d8f65cdc7 - 2025-07-26 - IcewindX <icewindx@noreply.codeberg.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
|
|
The error message in case the vqd value could not be determined was incorrect
and triggered an exception::
File "/usr/local/searxng/searxng-src/searx/engines/duckduckgo.py", line 132, in get_vqd
logger.error("vqd value from duckduckgo.com ", resp.status_code)
Message: 'vqd value from duckduckgo.com '
Arguments: (202,)
|
|
If the ``on_result`` handle returns False, then the ``else`` was always jumped
to, which throws the NotImplementedError exception::
File "/usr/local/searxng/searxng-src/searx/results.py", line 99, in extend
raise NotImplementedError(f"no handler implemented to process the result of type {result}")
NotImplementedError: no handler implemented to process the result of type MainResult(title=...
|
|
Use Python exception to prevent startup crash in case of fetch ClearURL
failure. Also add some logs.
Closes: https://github.com/searxng/searxng/issues/5054
|
|
settings.yml correct value to disable scheduling
|
|
|
|
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
The current google_videos.py in the master branch is completely non functional, due to it not parsing the returned video search results correctly. The result is searxng saying that no results were found. This commit is a new updated google_videos.py that's designed to fix that and is confirmed to be working.
Implementing the suggestions by Bnyro.
Re-formatted with `black` for compatibility. After failing automated checks, ran the command:
black --line-length 120 --skip-string-normalization --target-version py311 google_videos.py
|
|
The new ``requirements-server.txt`` (granian) is installed into the virtualenv
of Dockerfile.
When ``make run`` is called, a granian server is started with auto reload on
application's files changes / requires granian[reload] extra, see
``requirements-dev.txt``.
Dependabot supports updates to any ``.txt`` file [1].
[1] https://docs.github.com/en/code-security/dependabot/ecosystems-supported-by-dependabot/supported-ecosystems-and-repositories#pip-and-pip-compile
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
19de4a735 - 2025-07-23 - eudemo <eudemo@noreply.codeberg.org>
4504f8600 - 2025-07-22 - IcewindX <icewindx@noreply.codeberg.org>
2b4ec6d2c - 2025-07-22 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
69b3590de - 2025-07-22 - Fjuro <fjuro@alius.cz>
f48c7b9ac - 2025-07-21 - alexgabi <alexgabi@noreply.codeberg.org>
f8bc97254 - 2025-07-21 - alexgabi <alexgabi@noreply.codeberg.org>
7bd4b6441 - 2025-07-21 - Juno Takano <jutty@noreply.codeberg.org>
527bc690c - 2025-07-20 - 0ko <0ko@noreply.codeberg.org>
dd242f579 - 2025-07-20 - IcewindX <icewindx@noreply.codeberg.org>
f2a3cdb26 - 2025-07-19 - ledjfou <ledjfou@noreply.codeberg.org>
6781d5611 - 2025-07-20 - alexgabi <alexgabi@noreply.codeberg.org>
df82ea943 - 2025-07-18 - zbbhzdaajc <zbbhzdaajc@noreply.codeberg.org>
7892aac02 - 2025-07-18 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
|
|
Closes: https://github.com/searxng/searxng/issues/5045
|
|
The path to static should be relative (If sxng is served under "/sxng", the static route passed to the client won't be "/sxng/static/..." as expected but "/static/...")
Closes https://github.com/searxng/searxng/issues/5042
|
|
Wordnik is now an answerer and not in the infobox anymore: it uses the
translations answerer, because it provides all the features needed. By default,
only its first results is shown
Additionally a new "define" category is added - I know, it's the same as the
"dictionaries" category, but I don't think we can alias categories. This allows
to search e.g. for `!define tree`, the idea is to allow easy searches for
definitions of words.
Related:
- https://github.com/searxng/searxng/issues/4111
|
|
Was removed on https://github.com/searxng/searxng/pull/5032
|
|
Once version_frozen.py has been created, it will never be updated again unless the file is manually deleted.
|
|
While looking at ways to better handle static files, I saw a package that replaces Flask `static_folder` functionality. Not only it's considerably faster, but already includes the capability to serve sidecars without having to intercept. This also replaces the uWSGI folder mapping functionality.
Closes https://github.com/searxng/searxng/issues/4977
|
|
Using plain `httpx` directly doesn't use SearXNG's additional network config, including proxies, http2 config, ...
Related issues:
- https://github.com/searxng/searxng/issues/5027
|
|
fce853a65 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
234a91155 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
162ff0369 - 2025-07-16 - return42 <return42@noreply.codeberg.org>
3307e81ab - 2025-07-16 - return42 <return42@noreply.codeberg.org>
7948181fb - 2025-07-15 - Juno Takano <jutty@noreply.codeberg.org>
e88a0b264 - 2025-07-15 - muha7a <muha7a@noreply.codeberg.org>
7b37b944e - 2025-07-14 - Cookie_Monster <cookie_monster@noreply.codeberg.org>
d6c61f1ff - 2025-07-14 - kolegacik <kolegacik@noreply.codeberg.org>
5bd662542 - 2025-07-15 - lucasmz.dev <lucasmz.dev@noreply.codeberg.org>
4ddad097c - 2025-07-14 - yoonhahwang <yoonhahwang@noreply.codeberg.org>
a8d319c18 - 2025-07-13 - norizou <norizou@noreply.codeberg.org>
e7e471f65 - 2025-07-13 - Hēphaistos <hephaistos@noreply.codeberg.org>
b6b198f0a - 2025-07-12 - return42 <return42@noreply.codeberg.org>
9da60d355 - 2025-07-11 - sourdragon <sourdragon@noreply.codeberg.org>
632b879ba - 2025-07-12 - return42 <return42@noreply.codeberg.org>
a543b2b87 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
7e418d9cc - 2025-07-12 - return42 <return42@noreply.codeberg.org>
6e78fbd5c - 2025-07-12 - return42 <return42@noreply.codeberg.org>
917b27bad - 2025-07-12 - return42 <return42@noreply.codeberg.org>
82e69afbf - 2025-07-12 - return42 <return42@noreply.codeberg.org>
096c36ef7 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
2048ef8e2 - 2025-07-12 - return42 <return42@noreply.codeberg.org>
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
|
|
We don't expect tags to have "-dirty", just the GIT_VERSION regardless of how the container is built.
|
|
Whether the query is a real calculation tasks is currently only detected in the
AST, resulting in unnecessary creatins of subprocesses. This problem is
mitigated with this patch: if the query contains letters, it is obviously not a
math problem, and the plugin can return without further action.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
In customizing it should be decided which plugin modules should be loaded and
which should not.
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
|
|
Cache busting has caused serious problems for users in the past, here are two
examples:
- https://github.com/searxng/searxng/issues/4419
- https://github.com/searxng/searxng/issues/4481
And it makes development and deployment significantly more complex because it
binds the client side to the server side:
- https://github.com/searxng/searxng/pull/4466
In the light of a decoupled development of the WEB clients from the server side:
- https://github.com/searxng/searxng/pull/4988
is it appropriate to abandon this feature. In fact, it has been ineffective
since #4436 anyway.
However, the benefit has always been questionable, since at best only a few kB
of data are saved (at least in the context of an image_proxy, the effect is below
the detection limit). Ultimately, the client is responsible for caching.
Related: https://github.com/searxng/searxng/issues?q=label%3A%22clear%20browser%20cache%22
Closes: https://github.com/searxng/searxng/pull/4466
Closes: https://github.com/searxng/searxng/issues/1326
Closes: https://github.com/searxng/searxng/issues/964
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
6c74fe951 - 2025-07-08 - janindu-t <janindu-t@noreply.codeberg.org>
a17afd1fd - 2025-07-06 - ajiou <ajiou@noreply.codeberg.org>
6424a07ea - 2025-07-05 - aindriu80 <aindriu80@noreply.codeberg.org>
e62b0059e - 2025-07-05 - kratos <makesocialfoss32@keemail.me>
Co-authored-by: searxng-bot <searxng-bot@users.noreply.github.com>
|
|
These engines override the user agent manually using `gen_useragent`, although that's already done in the online preprocessor that runs before the actual `request(query, params)` method is called. Hence, this call is duplicated.
Related:
- https://github.com/searxng/searxng/pull/4990#discussion_r2195142838
|
|
- apparently, PDIA switched from Angolia to AWS :/
- we no longer require an API key, but the AWS node might change, so we still have to extract the API url of the node
- the response format is still the same, so no changes needed in that regard
- closes #4989
|
|
(#4991)
Depending on the respective runtime behavior, it could happen that the initial
loading of the DB tables in the cache was performed multiple times and in
parallel. The concurrent accesses then led to the `sqlite3.OperationalError:
database is locked` exception as in #4951.
Since this problem depends significantly on the runtimes (e.g., how long it
takes to retrieve the content for a table), this error could not be observed in
all installations.
Closes: https://github.com/searxng/searxng/issues/4951
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
This patch migrates from `redis==5.2.1` [1] to `valkey==6.1.0` [2].
The migration to valkey is necessary because the company behind Redis has decided
to abandon the open source license. After experiencing a drop in user numbers,
they now want to run it under a dual license again. But this move demonstrates
once again how unreliable the company is and how it treats open source
developers.
To review first, read the docs::
$ make docs.live
Follow the instructions to remove redis:
- http://0.0.0.0:8000/admin/settings/settings_redis.html
Config and install a local valkey DB:
- http://0.0.0.0:8000/admin/settings/settings_valkey.html
[1] https://pypi.org/project/redis/
[2] https://pypi.org/project/valkey/
Co-authored-by: HLFH <gaspard@dhautefeuille.eu>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
When debugging is enabled, the context in which the process is running (uWSGI or
`Flask.run` server) was previously checked [1]. This check has not yet taken the
granian server into account.
----
The check is actually only required for the developer environment (`make run`)
[2] and is intended to prevent double loading of modules when initializing a
Flask server [3].
In the long term, we should find a more robust solution that explicitly enables
the specific features of a development environment via switches. Further
information on this problematic code can be found in [4][5][6].
[1] https://github.com/searxng/searxng/issues/4973#issuecomment-3047890957
[2] https://flask.palletsprojects.com/en/stable/api/#flask.Flask.run
[3] https://github.com/pallets/flask/issues/5307#issuecomment-1774646119
[4] https://github.com/searxng/searxng/pull/1656#issuecomment-1214198941
[5] https://github.com/searxng/searxng/pull/1616#issuecomment-1206137468
[6] https://stackoverflow.com/a/25504196
- closes: https://github.com/searxng/searxng/issues/4973
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
The issue was introduced in commit: edfbf1e
Problematic code::
def timeout_func(timeout, func, *args, **kwargs):
...
if not p.is_alive():
ret_val = que.get()
else:
logger.debug("terminate function after timeout is exceeded") # type: ignore
p.terminate()
p.join()
p.close()
The `logger` function in the `else` path is not defined. Was accidentally
removed in commit edfbf1e without providing an appropriate replacement.::
File "/usr/local/searxng/searx/plugins/calculator.py", line 216, in timeout_func
logger.debug("terminate function after timeout is exceeded") # type: ignore
^^^^^^
NameError: name 'logger' is not defined
The exception triggered by this prevents the `p.terminate()` from being
executed. As a result, the processes accumulate in memory (memory leak).
Related: https://github.com/searxng/searx-instances/discussions/708#discussioncomment-13688168
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
|
|
What's changed?
- this PR adds Pixabay, a collection of royalty free images
- additionaly it seems to have some videos, so there's an engine for it too
Author Notes
- when using SearXNG's transport, all our requests will get blocked, probably due to fingerprinting
- we should find an alternative solution because this is just a hacky change to make things work for now, but idk how ...
|
|
It's possible that `SyntaxError` or `TypeError` instances are thrown
when we can't evaluate a query, simply because it's not a math expression.
In this case, it should just be skipped, i.e. the calculator plugin doesn't
return any result instead of forwarding the exception.
|
|
(#4944)
* [upd] web-client (simple): Bump vite in /client/simple
---
updated-dependencies:
- dependency-name: vite
dependency-version: 7.0.0
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* [fix] theme/simple: api sync
CSS sourcemap generation doesn't work right now anyway.
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net>
|
|
|
|
|
|
*Not so safe* changes, no behaviour changes.
- More ES5 to ES2015+ conversion.
- Make Biome not cry anymore applying remaining changes.
|
|
Author Notes
- wttr.in provides 8 hourly time forecasts per day, I assumed that they're always describing the weather for 3 hours each, starting at 1 o'clock in the morning
related:
- https://github.com/searxng/searxng/pull/4663
- https://github.com/searxng/searxng/issues/4885
|