<feed xmlns='http://www.w3.org/2005/Atom'>
<title>searxng/searx/webutils.py, branch custom</title>
<subtitle>Free internet metasearch engine which aggregates results from various search services and databases</subtitle>
<id>https://git.ikboikov.net/searxng/atom?h=custom</id>
<link rel='self' href='https://git.ikboikov.net/searxng/atom?h=custom'/>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/'/>
<updated>2026-06-15T08:52:00Z</updated>
<entry>
<title>[chore] complete and normalize the attributes of engine objects (#6258)</title>
<updated>2026-06-15T08:52:00Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2026-06-14T13:16:26Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=6c9dcd42420cee087ad7fe3d686dfc2b632ebbee'/>
<id>urn:sha1:6c9dcd42420cee087ad7fe3d686dfc2b632ebbee</id>
<content type='text'>
Drop outdated engine attributes: supported_languages, language_aliases

Complete, normalize and document the type definitions for the engine-module and
engine-class.

For the ``engine.about`` section of the configuration, a type check is performed
based on structure ``searx.enginelib.EngineAbout``.

The property ``engine.about.language`` no longer exists; existing values have
been migrated to ``engine.language``.

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[unbload] drop meaningless field ``number_of_results_xpath`` from results (#6130)</title>
<updated>2026-05-25T10:43:02Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2026-05-25T10:43:02Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=dd27fce3b7b5a14e4855474ead81447adbf73d7d'/>
<id>urn:sha1:dd27fce3b7b5a14e4855474ead81447adbf73d7d</id>
<content type='text'>
In the result-list, the ``number_of_results`` indicate the number of hits in the
Index, they do not indicate how many results are in the answer.

In the past, search engines such as google or ddg had an indication on the first
page of a search term of how many hits there were for this term in total in
their index.

This info was added up in SearXNG and delivered under ``number_of_results``.
Nowadays the search engines no longer indicate how many hits there are in the
index and so this field in SearXNG is also superfluous.

- https://github.com/searxng/searxng/issues/2457#issuecomment-2566181574
- https://github.com/searxng/searxng/issues/2987
- https://github.com/searxng/searxng/issues/5034

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
<entry>
<title>[fix] JSON format: serialization of the result-types</title>
<updated>2025-10-01T05:13:10Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2025-09-30T12:00:09Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=e16b6cb148d9fe6599ec8ce4b2803f0aed3a1d6b'/>
<id>urn:sha1:e16b6cb148d9fe6599ec8ce4b2803f0aed3a1d6b</id>
<content type='text'>
The ``JSONEncoder`` (``format="json"``) must perform a conversion to the
built-in types for the ``msgspec.Struct``::

    if isinstance(o, msgspec.Struct):
        return msgspec.to_builtins(o)

The result types are already of type ``msgspec.Struct``, so they can be
converted into built-in types.

The field types (in the result type) that were not yet of type ``msgspec.Struct``
have been converted to::

    searx.weather.GeoLocation@dataclass -&gt; msgspec.Struct
    searx.weather.DateTime              -&gt; msgspec.Struct
    searx.weather.Temperature           -&gt; msgspec.Struct
    searx.weather.PressureUnits         -&gt; msgspec.Struct
    searx.weather.WindSpeed             -&gt; msgspec.Struct
    searx.weather.RelativeHumidity      -&gt; msgspec.Struct
    searx.weather.Compass               -&gt; msgspec.Struct

BTW: Wherever it seemed sensible, the typing was also modernized in the modified
files.

Closes: https://github.com/searxng/searxng/issues/5250
Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[mod] drop: from __future__ import annotations</title>
<updated>2025-09-03T11:37:36Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2025-08-24T13:16:46Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=f24d85bc4be732b8edb2157ef4ecf35d380d2b45'/>
<id>urn:sha1:f24d85bc4be732b8edb2157ef4ecf35d380d2b45</id>
<content type='text'>
Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[mod] addition of various type hints / tbc</title>
<updated>2025-09-03T11:37:36Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2025-08-22T15:17:51Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=57b9673efb1b4fd18a3ac15e26da642201e2cd33'/>
<id>urn:sha1:57b9673efb1b4fd18a3ac15e26da642201e2cd33</id>
<content type='text'>
- pyright configuration [1]_
- stub files: types-lxml [2]_
- addition of various type hints
- enable use of new type system features on older Python versions [3]_
- ``.tool-versions`` - set python to lowest version we support (3.10.18) [4]_:
  Older versions typically lack some typing features found in newer Python
  versions.  Therefore, for local type checking (before commit), it is necessary
  to use the older Python interpreter.

.. [1] https://docs.basedpyright.com/v1.20.0/configuration/config-files/
.. [2] https://pypi.org/project/types-lxml/
.. [3] https://typing-extensions.readthedocs.io/en/latest/#
.. [4] https://mise.jdx.dev/configuration.html#tool-versions

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
Format: reST
</content>
</entry>
<entry>
<title>[mod] remove option ui.static_use_hash (cache busting) (#5004)</title>
<updated>2025-07-11T14:53:36Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2025-07-11T14:53:36Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=574b285efa1658fd6d82d673e2063be659d5f624'/>
<id>urn:sha1:574b285efa1658fd6d82d673e2063be659d5f624</id>
<content type='text'>
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 &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
<entry>
<title>[fix] issues when launching a local development server</title>
<updated>2025-04-22T12:26:11Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2025-04-09T12:01:01Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=e9157b3c1a502a5898d370c0e98cc3e5ef8ef3f0'/>
<id>urn:sha1:e9157b3c1a502a5898d370c0e98cc3e5ef8ef3f0</id>
<content type='text'>
A local development server can be launched by one of these command lines::

    $ flask --app searx.webapp run
    $ python -m searx.webapp

The different ways of starting the server should lead to the same result, which
is generally the case.  However, if the modules are reloaded after code
changes (reload option), it must be avoided that the application is initialized
twice at startup.  We have already discussed this in 2022 [1][2].

Further information on this topic can be found in [3][4][5].

To test a bash in the ./local environment was started and the follwing commands
had been executed::

    $ ./manage pyenv.cmd bash --norc --noprofile
    (py3) SEARXNG_DEBUG=1 flask --app searx.webapp run --reload
    (py3) SEARXNG_DEBUG=1 python -m searx.webapp

Since the generic parts of the docs also initialize the app to generate doc from
it, the build of the docs was also tested::

    $ make docs.clean docs.live

[1] https://github.com/searxng/searxng/pull/1656#issuecomment-1214198941
[2] https://github.com/searxng/searxng/pull/1616#issuecomment-1206137468
[3] https://flask.palletsprojects.com/en/stable/api/#flask.Flask.run
[4] https://github.com/pallets/flask/issues/5307#issuecomment-1774646119
[5] https://stackoverflow.com/a/25504196

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[fix] JSON &amp; CSV format return error 500</title>
<updated>2025-01-29T04:04:41Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2025-01-28T15:51:07Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=df3344e5d5fdfd2425324d5e10e8c8e5104963b0'/>
<id>urn:sha1:df3344e5d5fdfd2425324d5e10e8c8e5104963b0</id>
<content type='text'>
For CSV and JSON output, the LegacyResult and the Result objects needs to be
converted to a python dictionary.

Closes: https://github.com/searxng/searxng/issues/4244
Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[mod] pylint all files with one profile / drop PYLINT_SEARXNG_DISABLE_OPTION</title>
<updated>2024-03-11T13:55:38Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarit.de</email>
</author>
<published>2024-03-11T13:06:26Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=542f7d0d7bd1a12e1884ba4a1508b40e2514d472'/>
<id>urn:sha1:542f7d0d7bd1a12e1884ba4a1508b40e2514d472</id>
<content type='text'>
In the past, some files were tested with the standard profile, others with a
profile in which most of the messages were switched off ... some files were not
checked at all.

- ``PYLINT_SEARXNG_DISABLE_OPTION`` has been abolished
- the distinction ``# lint: pylint`` is no longer necessary
- the pylint tasks have been reduced from three to two

  1. ./searx/engines -&gt; lint engines with additional builtins
  2. ./searx ./searxng_extra ./tests -&gt; lint all other python files

Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[fix] do highlight replacement at once</title>
<updated>2024-01-29T12:15:37Z</updated>
<author>
<name>allixx</name>
<email>1695323+allixx@users.noreply.github.com</email>
</author>
<published>2023-12-19T08:21:54Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=e4cf0a7d4f0416c9b7c45d45db26ccb3eb09af42'/>
<id>urn:sha1:e4cf0a7d4f0416c9b7c45d45db26ccb3eb09af42</id>
<content type='text'>
Highlights all search queries in search result in one go.

Fixes the case where search query contains word from highlight HTML code,
which causes broken HTML to appear in search results.

Closes #3057
</content>
</entry>
</feed>
