summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-07-28[mod] add Golang ecosystem to the SearXNG toolchainMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28[chore] overdue maintenance of shell scriptsMarkus Heiser
Removes obsolete scripts and fix various leftovers. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-28[fix] tracker pattern: let startup continue if url fetch fails (#5055)mggh0139
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
2025-07-27[fix] correct comment in settings.yml for value to disable scheduling (#5052)Fjara
settings.yml correct value to disable scheduling
2025-07-26[fix] webapp.py: info (and other) page(s) don't load properly (#5051)Bnyro
2025-07-26[fix] cleanup: rename `searx` leftovers to `SearXNG` (#5049)Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-25[fix] google video: refactor broken engine to work againSeriousConcept1134
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
2025-07-25[mod] make run: start granian server and versioning by Dependabot (#5037)Markus Heiser
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>
2025-07-25[l10n] update translations from Weblate (#5047)github-actions[bot]
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>
2025-07-24[fix] false is an invalid value for wiki_url in settings.yml (#5046)Markus Heiser
Closes: https://github.com/searxng/searxng/issues/5045
2025-07-24[fix] py: absolute static path (#5043)Ivan Gabaldon
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
2025-07-24[mod] wordnik: convert to answerer (#4980)Bnyro
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
2025-07-23[fix] py: restore `application` for uWSGI (#5040)Ivan Gabaldon
Was removed on https://github.com/searxng/searxng/pull/5032
2025-07-23[fix] py: overwrite version_frozen on explicit freeze (#5020)Ivan Gabaldon
Once version_frozen.py has been created, it will never be updated again unless the file is manually deleted.
2025-07-23[enh] py: whitenoise for static handling (#5032)Ivan Gabaldon
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
2025-07-22[fix] tracker url remover + external bangs: use standard network configBnyro
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
2025-07-19[fix] container: remove static path mount (#5006)Ivan Gabaldon
I've seen that by default Granian sets a `Cache-Control` header for 1 day IF `GRANIAN_STATIC_PATH_MOUNT` is set. This option is not a hard requirement, but it's set because I found to be faster when serving the static files. Another thing is that by removing `GRANIAN_STATIC_PATH_MOUNT`, the headers set by the application are present again in the static files, which was not the case before. Related https://github.com/searxng/searxng/pull/5004
2025-07-19[l10n] update translations from Weblate (#5023)github-actions[bot]
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>
2025-07-18[mod] py: don't append "-dirty" to DOCKER_TAG (#5021)Ivan Gabaldon
We don't expect tags to have "-dirty", just the GIT_VERSION regardless of how the container is built.
2025-07-18[upd] pypi: Bump certifi from 2025.7.9 to 2025.7.14 in the minor group (#5022)dependabot[bot]
Bumps the minor group with 1 update: [certifi](https://github.com/certifi/python-certifi). Updates `certifi` from 2025.7.9 to 2025.7.14 - [Commits](https://github.com/certifi/python-certifi/compare/2025.07.09...2025.07.14) --- updated-dependencies: - dependency-name: certifi dependency-version: 2025.7.14 dependency-type: direct:production 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>
2025-07-17[fix] calculator plugin: filtering real calculation tasks (#5016)Markus Heiser
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>
2025-07-16[fix] custom `plugins:` settings must not be merged.Markus Heiser
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>
2025-07-16[build] /staticmrpaulblack
2025-07-16[fix] simple theme: display image detail view fullscreen on landscape phonesmrpaulblack
2025-07-11[mod] container: remove `Cache-Control` header (#5005)Ivan Gabaldon
Granian shouldn't actually handle the cache, we leave that to the upstream proxy. Related https://github.com/searxng/searxng/pull/5004
2025-07-11[mod] remove option ui.static_use_hash (cache busting) (#5004)Markus Heiser
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>
2025-07-11[fix] devcontainers: missing Valkey package (#4997)Ivan Gabaldon
Use specific branch as `valkey-server` package is only available in trixie and bookworm backports. Reported https://github.com/searxng/searxng/discussions/4995 Closes https://github.com/searxng/searxng/issues/4996
2025-07-11[upd] pypi: Bump the minor group with 2 updates (#5000)dependabot[bot]
Bumps the minor group with 2 updates: [selenium](https://github.com/SeleniumHQ/Selenium) and [certifi](https://github.com/certifi/python-certifi). Updates `selenium` from 4.34.0 to 4.34.2 - [Release notes](https://github.com/SeleniumHQ/Selenium/releases) - [Commits](https://github.com/SeleniumHQ/Selenium/commits) Updates `certifi` from 2025.6.15 to 2025.7.9 - [Commits](https://github.com/certifi/python-certifi/compare/2025.06.15...2025.07.09) --- updated-dependencies: - dependency-name: selenium dependency-version: 4.34.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor - dependency-name: certifi dependency-version: 2025.7.9 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor
2025-07-11[l10n] update translations from Weblate (#4998)github-actions[bot]
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>
2025-07-11[chore] engines: remove redundant usages of utils#gen_useragent (#4993)Bnyro
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
2025-07-10[fix] public domain image archive: cloud provider changed angolia -> awsBnyro
- 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
2025-07-09[fix] prevent multiple, parallel initializations of tables in the cache DB ↵Markus Heiser
(#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>
2025-07-09[mod] migrate from Redis to Valkey (#4795)Gaspard d'Hautefeuille
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>
2025-07-08[fix] granian: enabling debug on searxng-docker causes server crash (#4985)Markus Heiser
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>
2025-07-08[fix] calculator plugin: subrocess is not closed on timeout (#4983)Markus Heiser
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>
2025-07-05[feat] engines: add pixabay for royalty free images/videosBnyro
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 ...
2025-07-04[fix] calculator plugin: crash when trying to evaluate non-math query (#4975)Bnyro
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.
2025-07-04[mod] container: replace uWSGI with Granian (#4820)Ivan Gabaldon
* [mod] container: replace uWSGI with Granian The configuration in Granian is handled with ENVs, much more convenient and practical for updating. The settings have been tested for over two months in a production instance, being usable on small to somewhat large instances without having to modify anything. It also removes the patch functions and ENVs abstraction from the entrypoint, this makes it possible to run the container with immutable configuration. In some setups, It may be desired to have the volumes/files under a specific uid/gid (other than searxng:searxng), if the entrypoint has root permissions it will chown automatically on every start, which may not be desired. Explicitly setting the new ENV `FORCE_OWNERSHIP=false` will prevent ownership from being modified. No manual migration is necessary **unless** the user has changed the default uWSGI configuration or has a very specific setup. Closes https://github.com/searxng/searxng/issues/4894 Closes https://github.com/searxng/searxng/issues/4818 Closes https://github.com/searxng/searxng/issues/4802 Supersedes https://github.com/searxng/searxng/pull/4596 Related https://github.com/searxng/searxng/discussions/4479 * [mod] docs: add container/granian All container documentation has been recreated. A new documentation page has been created for Granian. * [enh] misc: apply suggestions Minor documentation changes. Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134539259 Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134538610 Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134827964 Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2134544300 Suggested https://github.com/searxng/searxng/pull/4820#discussion_r2149387388 --------- Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> Co-authored-by: Ivan Gabaldon <igabaldon@inetol.net> Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2025-07-04[upd] web-client (simple): Bump the minor group across 1 directory with 4 ↵dependabot[bot]
updates (#4970) Bumps the minor group with 4 updates in the /client/simple directory: [ionicons](https://github.com/ionic-team/ionicons), [sort-package-json](https://github.com/keithamus/sort-package-json), [stylelint](https://github.com/stylelint/stylelint) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). Updates `ionicons` from 8.0.9 to 8.0.10 - [Release notes](https://github.com/ionic-team/ionicons/releases) - [Commits](https://github.com/ionic-team/ionicons/compare/v8.0.9...v8.0.10) Updates `sort-package-json` from 3.3.1 to 3.4.0 - [Release notes](https://github.com/keithamus/sort-package-json/releases) - [Commits](https://github.com/keithamus/sort-package-json/compare/v3.3.1...v3.4.0) Updates `stylelint` from 16.21.0 to 16.21.1 - [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/16.21.0...16.21.1) Updates `vite` from 7.0.1 to 7.0.2 - [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/v7.0.2/packages/vite) --- updated-dependencies: - dependency-name: ionicons dependency-version: 8.0.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor - dependency-name: sort-package-json dependency-version: 3.4.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor - dependency-name: stylelint dependency-version: 16.21.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor - dependency-name: vite dependency-version: 7.0.2 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>
2025-07-04[upd] pypi: Bump selenium from 4.33.0 to 4.34.0 in the minor group (#4968)dependabot[bot]
Bumps the minor group with 1 update: [selenium](https://github.com/SeleniumHQ/Selenium). Updates `selenium` from 4.33.0 to 4.34.0 - [Release notes](https://github.com/SeleniumHQ/Selenium/releases) - [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.33.0...selenium-4.34.0) --- updated-dependencies: - dependency-name: selenium dependency-version: 4.34.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04[upd] web-client (simple): Bump vite from 6.3.5 to 7.0.0 in /client/simple ↵dependabot[bot]
(#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>
2025-07-04[upd] github-actions: Bump aquasecurity/trivy-action (#4969)dependabot[bot]
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.31.0 to 0.32.0. - [Release notes](https://github.com/aquasecurity/trivy-action/releases) - [Commits](https://github.com/aquasecurity/trivy-action/compare/0.31.0...0.32.0) --- updated-dependencies: - dependency-name: aquasecurity/trivy-action dependency-version: 0.32.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04[l10n] update translations from Weblate (#4966)github-actions[bot]
2025-07-03[build] /staticMarkus Heiser
2025-07-03[mod] theme/simple: fmt/lint major passIvan Gabaldon
*Not so safe* changes, no behaviour changes. - More ES5 to ES2015+ conversion. - Make Biome not cry anymore applying remaining changes.
2025-07-03[mod] theme/simple: fmt/lint minor passIvan Gabaldon
*Safe* changes, no behaviour changes. - Initial ES5 to ES2015+ conversion. - Plenty of styling diff changes.
2025-07-03[mod] theme/simple: improve fmt/lint techIvan Gabaldon
This is one of various PR to refactor the simple theme internally. Replace eslint tool with Biome. I have been using this for quite some time, and it will help us to have more consistent and valid code without extending on other third party plugins. Removes unused dependencies.
2025-07-03[feat] wttr.in: migrate to new weather engine template (#4888)Bnyro
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
2025-07-03[feat] calculator: add support for math constants (e, pi)Bnyro
2025-07-03[feat] calculator: add support for comparation operators (<, <=, ==, ...)Bnyro