v30.2
janhq/janv30.2Apr 19, 2026by kishorenc
AI Summary
This release addresses a wide range of bugs in v30.1, including issues with numeric filtering, search highlighting, API key handling, and performance during bulk operations.
Key Highlights
- Fixed numeric `!=` filters and union search deduplication
- Resolved race conditions in highlighting during concurrent writes
- Fixed missing fields in curation GET responses
- Improved `/health` responsiveness and HTTP/2 handling
Full Release Notes
This release fixes some important bugs identified in `v30.1`. ### Bug Fixes - **[v30.2]** Fixed incorrect handling of numeric `!=` filters in both lazy and eager filter execution, including explicit not-equals lists on range-indexed numeric fields. - **[v30.2]** Fixed highlighting to correctly mark single-token phrase matches and to avoid race conditions during union searches that run alongside concurrent writes. - **[v30.2]** Fixed missing `synonyms`, `stem`, and `stemming_dictionary` fields in curation GET responses. - **[v30.2]** Fixed a number of edge cases in diversity search. - **[v30.2]** Fixed union search deduplication so curated pinned hits are no longer collapsed. - **[v30.2]** Fixed a bug related to reference faceting. - **[v30.2]** Fixed vector search behavior so zero-match phrase queries still preserve vector search results. - **[v30.2]** Fixed scoped API key handling so embedded collection parameters can supply a missing collection in multi-search requests. - **[v30.2]** Fixed conversation search error handling so failed searches do not incorrectly reuse the first search collection. - **[v30.2]** Fixed search cache keying so scoped API key parameters and request-specific embedded params do not collide in the cache. - **[v30.2]** Fixed JSON response escaping by using `nlohmann::json::dump()` when serializing response payloads. - **[v30.2]** Fixed `/health` responsiveness during heavy bulk inserts by routing health checks to the meta thread pool. - **[v30.2]** Fixed HTTP/2 async import teardown on early exit.