feat(search): has:file / has:link / in:thread operators (LC-530) #503
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/LC-530-search-filters"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds three search operators -
has:file,has:link,in:thread- to the room/enclave/home search box, filling the concrete gap left after LC-280 (which addedfrom:/before:/after:).has:filenarrows to messages with an attachment (an EXISTS overfile_uploads),has:linkto messages whose body contains an http(s) URL, andin:threadto thread replies (parent_id IS NOT NULL). All three are bind-free SQL clauses layered on the existing access-scoped FTS query, so they compose with the current scope + operator binds without disturbing bind order. Unknownhas:/in:values stay as free text, matching thebefore:/after:fallback; operator-only queries still collapse (FTS needs a text term), same asfrom:alone today.Shipped as three small logical commits: db columns + SQL, operator parsing + wiring, and tests.
Tests: parser unit tests (new operators + unknown-value fallback) and a db-layer integration test asserting each flag narrows to exactly the matching message.
just test+just test-saas+just checkgreen.Not operator-visible (no env/config/security change).
🤖 Generated with Claude Code