#292 + #293: global search-as-you-type with ranked matching; Recents view #294

Merged
Cordy merged 4 commits from feat/sr56 into main 2026-08-20 20:00:37 +00:00
Owner

Closes-when-verified: #292, #293 (left open for dogfood per house process).

#292 — Search everywhere, as you type:

  • Typing 2+ chars in the search box now runs the global search (300ms debounce, sequence-guarded against stale responses; Escape restores the folder; Enter still forces an immediate run).
  • Results ranked by match quality: exact name (extension ignored) → prefix → word-boundary start → substring by position; ties broken by path depth (shallower first), then name. Multi-word queries require every word to match; worst word scores the name.
  • Scoped per user as before — the BFS walks the caller's scoped store.

#293 — Recents:

  • New internal/recents statestore (atomic JSON, per-user, cap 15, dedupe-to-front), recorded in the raw-download handler; WebDAV deliberately not recorded.
  • GET /api/v1/recents re-Stats each path through the caller's scoped store — vanished/moved/revoked entries drop off silently.
  • Sidebar "Recents" entry (clock icon, under Personal), files-style view, i18n in all four languages.

Tests: TestMatchClassOrdering, TestRankNameMultiToken, TestRecordDedupeCapOrder, TestPersistenceRoundTrip.

Closes-when-verified: #292, #293 (left open for dogfood per house process). **#292 — Search everywhere, as you type:** - Typing 2+ chars in the search box now runs the global search (300ms debounce, sequence-guarded against stale responses; Escape restores the folder; Enter still forces an immediate run). - Results ranked by match quality: exact name (extension ignored) → prefix → word-boundary start → substring by position; ties broken by path depth (shallower first), then name. Multi-word queries require every word to match; worst word scores the name. - Scoped per user as before — the BFS walks the caller's scoped store. **#293 — Recents:** - New `internal/recents` statestore (atomic JSON, per-user, cap 15, dedupe-to-front), recorded in the raw-download handler; WebDAV deliberately not recorded. - `GET /api/v1/recents` re-Stats each path through the caller's scoped store — vanished/moved/revoked entries drop off silently. - Sidebar "Recents" entry (clock icon, under Personal), files-style view, i18n in all four languages. Tests: `TestMatchClassOrdering`, `TestRankNameMultiToken`, `TestRecordDedupeCapOrder`, `TestPersistenceRoundTrip`.
Cordy merged commit 4f7dfeb8eb into main 2026-08-20 20:00:37 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#294
No description provided.