v30.2
Expensify/Appv30.2Apr 19, 2026by kishorenc
AI Summary
This release addresses critical bugs in filter execution, highlighting, and search cache keying. It fixes issues with numeric filters, union search deduplication, and JSON response escaping.
Key Highlights
- Fixed incorrect handling of numeric `!=` filters
- Fixed highlighting for single-token phrases and race conditions
- Fixed missing fields (synonyms, stem) in curation GET responses
- Fixed union search deduplication for pinned hits
- Fixed JSON response escaping
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.