mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-11-05 14:53:38 -05:00
Phase 1 of docs/plans/2026-09-15-search-refinement.md. Every parameter search.files accepts is now either honored or fails closed; nothing is validated, logged, and ignored anymore. Ordering and pagination live in a new pipeline module with a backend-neutral candidate type, per R6 of the source-runtime plan: one deterministic global sort before final pagination, equal keys settling on case-folded name and record id so results stop reshuffling between keystrokes. Library search sums each partition's full filtered match count into total_found and contributes only the page window of candidates to the merge, so a partition can never lose a result that belongs on the page. The 200-result cap and the synthetic pagination block are gone; the response reports the caller's window over the true total (a "spacedrive" search now reports 496 matches instead of a complete-looking 200). Filter fixes: extensions compare case-insensitively, hidden entries are excluded by default and included with include_hidden (advertised in available_filters), and a missing timestamp fails a date filter instead of passing it, so the unanswerable AccessedAt and IndexedAt fields fail closed rather than silently matching everything. Deletes dead code the plan condemned: sorting.rs and the unused facets.rs duplicates, plus the legacy entry-era imports in query.rs. Verified live: --limit 5 returns five with the true total, size and name sorts order and reverse, offset pages advance.