v0.21.0
What's in this release
This release opens up the retrieval and testing surfaces that consuming extensions previously had to reach into privately, and smooths two rough edges in how site content reaches the model.
Keyword search is now a public API
Extensions that need keyword site-search — a chatbot grounding its answers in site content, a "related content" finder, a backend agent — can call a supported, versioned keyword-search API instead of binding to private retrieval internals. Queries are always accepted (clamped rather than rejected), results are limited to what an anonymous visitor may see, and a search-backend outage degrades to an empty result instead of an error. A second, index-only variant lets hybrid setups treat "index unavailable" as "no results" rather than silently falling back to a database scan.
Measure retrieval quality before shipping a change
A new evaluation path scores how well a retriever surfaces the right documents, using labelled question sets and top-1/top-3 hit rates — the retrieval counterpart to the existing model-output evaluation. Any retriever plugs in, so an embedding swap, a reranker change, or a chunking retune can be compared on the same yardstick, and the results feed the existing regression tracking.
First-party test doubles
Extensions that test against nr-llm's tool-calling and embedding services no longer maintain their own fakes — which quietly broke whenever an interface grew. Ready-made doubles ship with the extension and stay in lock-step with the real contracts.
Smaller improvements
- Named configurations resolve safely from CLI commands, queue workers, and anonymous frontend requests, with clear errors when a configuration is missing, disabled, or access-restricted.
- Well-known embedding models arrive with their vector dimensions already known, so the first call no longer spends a paid probe to discover them.
- New developer guides for protecting anonymous, cost-bearing endpoints and for rendering model markdown safely.
Fixes
- Site-search citations on installations configured with a scheme-relative base URL are no longer emitted as malformed links, and a result pointing at a foreign host is dropped rather than rewritten onto your own domain.
- Text extracted from page content no longer glues adjacent words together ("Price100") in the excerpts handed to the model.
Installation
composer require netresearch/nr-llmPublication status
- TER: extensions.typo3.org/extension/nr_llm — 0.21.0 verified
- Packagist: packagist.org/packages/netresearch/nr-llm — 0.21.0 verified
- Documentation: docs.typo3.org/p/netresearch/nr-llm/0.21/en-us/ — render verified
Security
All release artifacts are signed with Sigstore keyless signing.
Verify signatures
cosign verify-blob \
--bundle nr-llm-0.21.0.zip.sigstore.json \
--certificate-identity-regexp "https://github.com/netresearch/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
nr-llm-0.21.0.zipVerify checksums
sha256sum -c checksums.txtSoftware Bill of Materials (SBOM)
SBOMs are provided in both SPDX and CycloneDX formats for supply chain transparency.