<feed xmlns='http://www.w3.org/2005/Atom'>
<title>searxng/searx/plugins, 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-08-17T04:45:07Z</updated>
<entry>
<title>Plugins</title>
<updated>2026-08-17T04:45:07Z</updated>
<author>
<name>Ivan K. Boikov</name>
<email>mail@ikboikov.net</email>
</author>
<published>2025-01-29T14:21:09Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=62b48e78c5c8a6e88f7303bf4c8927c1838746ed'/>
<id>urn:sha1:62b48e78c5c8a6e88f7303bf4c8927c1838746ed</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[fix] plugin unit-converter - remove leftovers (#5517)</title>
<updated>2025-12-04T06:51:48Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2025-12-04T06:51:48Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=3c7545c6ce3fbe40b47d242b84f21f133e1179fe'/>
<id>urn:sha1:3c7545c6ce3fbe40b47d242b84f21f133e1179fe</id>
<content type='text'>
Signed-off-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
<entry>
<title>[mod] client/simple: client plugins (#5406)</title>
<updated>2025-12-02T10:18:00Z</updated>
<author>
<name>Ivan Gabaldon</name>
<email>igabaldon@inetol.net</email>
</author>
<published>2025-12-02T10:18:00Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=fb089ae297b27f51777318e3a28bca8b172a4165'/>
<id>urn:sha1:fb089ae297b27f51777318e3a28bca8b172a4165</id>
<content type='text'>
* [mod] client/simple: client plugins

Defines a new interface for client side *"plugins"* that coexist with server
side plugin system. Each plugin (e.g., `InfiniteScroll`) extends the base
`ts Plugin`. Client side plugins are independent and lazy‑loaded via `router.ts`
when their `load()` conditions are met. On each navigation request, all
applicable plugins are instanced.

Since these are client side plugins, we can only invoke them once DOM is fully
loaded. E.g. `Calculator` will not render a new `answer` block until fully
loaded and executed.

For some plugins, we might want to handle its availability in `settings.yml`
and toggle in UI, like we do for server side plugins. In that case, we extend
`py Plugin` instancing only the information and then checking client side if
[`settings.plugins`](https://github.com/inetol/searxng/blob/1ad832b1dc33f3f388da361ff2459b05dc86a164/client/simple/src/js/toolkit.ts#L134)
array has the plugin id.

* [mod] client/simple: rebuild static</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>[feat] plugins: add new time/timezone search plugin</title>
<updated>2025-08-28T08:49:50Z</updated>
<author>
<name>Bnyro</name>
<email>bnyro@tutanota.com</email>
</author>
<published>2025-04-26T20:21:39Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=5ca08c18134123fd5f9a457829090410221a93ce'/>
<id>urn:sha1:5ca08c18134123fd5f9a457829090410221a93ce</id>
<content type='text'>
The plugin uses the ``GeoLocation`` class, which is already implemented in the
context of weather forecasts, to determine the time zone. The ``DateTime`` class
is used for the localized display of date and time.

Co-authored-by: Markus Heiser &lt;markus.heiser@darmarit.de&gt;
</content>
</entry>
<entry>
<title>[mod] limiter: trusted proxies (#4911)</title>
<updated>2025-08-09T21:03:30Z</updated>
<author>
<name>Ivan Gabaldon</name>
<email>igabaldon@inetol.net</email>
</author>
<published>2025-08-09T21:03:30Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=ce8929cabe27c7cf0bfb21b47786c7442ffb3712'/>
<id>urn:sha1:ce8929cabe27c7cf0bfb21b47786c7442ffb3712</id>
<content type='text'>
Replaces `x_for` functionality with `trusted_proxies`. This allows defining
which IP / ranges to trust extracting the client IP address from X-Forwarded-For
and X-Real-IP headers.

We don't know if the proxy chain will give us the proper client
address (REMOTE_ADDR in the WSGI environment), so we rely on reading the headers
of the proxy before SearXNG (if there is one, in that case it must be added to
trusted_proxies) hoping it has done the proper checks. In case a proxy in the
chain does not check the client address correctly, integrity is compromised and
this should be fixed by whoever manages the proxy, not us.

Closes:

- https://github.com/searxng/searxng/issues/4940
- https://github.com/searxng/searxng/issues/4939
- https://github.com/searxng/searxng/issues/4907
- https://github.com/searxng/searxng/issues/3632
- https://github.com/searxng/searxng/issues/3191
- https://github.com/searxng/searxng/issues/1237

Related:

- https://github.com/searxng/searxng-docker/issues/386
- https://github.com/inetol-infrastructure/searxng-container/issues/81</content>
</entry>
<entry>
<title>[fix] calculator plugin: filtering real calculation tasks (#5016)</title>
<updated>2025-07-17T17:50:02Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2025-07-17T17:50:02Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=e851bc1269916a5a8c7a822946eccf71ce138403'/>
<id>urn:sha1:e851bc1269916a5a8c7a822946eccf71ce138403</id>
<content type='text'>
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 &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
<entry>
<title>[fix] prevent multiple, parallel initializations of tables in the cache DB (#4991)</title>
<updated>2025-07-09T15:32:10Z</updated>
<author>
<name>Markus Heiser</name>
<email>markus.heiser@darmarIT.de</email>
</author>
<published>2025-07-09T15:32:10Z</published>
<link rel='alternate' type='text/html' href='https://git.ikboikov.net/searxng/commit/?id=2fe8540903c53e3939c86dad6f7f7c0b3162de0f'/>
<id>urn:sha1:2fe8540903c53e3939c86dad6f7f7c0b3162de0f</id>
<content type='text'>
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 &lt;markus.heiser@darmarit.de&gt;</content>
</entry>
</feed>
