Links search matches the URL, and multi-word queries
PR #396 · captured against this branch's dev build, signed in as the e2e
test user. Not merged yet — this report is the approval gate.
Gates ✅ green
CI ✅ green
Tests 2079 passing
Schema unchanged
1 · Search now looks inside the URL
The search box matched title, description, note, domain, site, author, handle
and tags — but never the URL itself. A link you only remember
by a piece of its address was unfindable. The raw URL is now part of what gets
matched, so /reel/, an
owner/repo pair, or a
?v=… id all work.
Starting point — four saved links, no search./reel/ → 1 of 4 links. That
fragment appears nowhere but the URL, so before this change it matched nothing.
Query strings work too — watch?v=dQw4w9 finds the
YouTube link.
Video — a throwaway project is created, four links are saved, both URL
searches run, then the project is deleted. (create → delete)
2 · Multi-word queries match term by term
Typing two words used to search for that exact phrase. Now each word is matched
separately and all of them must appear somewhere on the link, in
any order — across different fields. This only ever finds more than before,
never less.
github kanban → 1 of 4 links: one
word comes from the domain, the other from the title.
Video — the second word is typed after the first, and the result set narrows
as it lands. (create → delete)
Also in this change
A titleless link no longer matches "undefined". The old code
concatenated missing fields into the searchable text, so legacy links without a
title carried the literal word. They don't any more.
The searchable text is built once per link instead of being
re-assembled for every link on every keystroke.
No copy changed — nothing to publish to the Translations CMS,
and no new env vars or secrets.
QA — try these yourself
New behavior
Open any Links Manager and search a path fragment (/reel/,
/watch, a slug word) → only links whose URL contains it remain.
Search an owner/repo pair from a GitHub link → that link is found.
Type two words that live in different places (a domain word + a title word) → the link still matches.
Regression watch
still works: searching by title, note, tag, author, or site name.
still works: search combined with the Type / Source / Tags / Watched filters, and the result count line.
still works: pagination resets to page 1 when the query changes, and the "By author" view.
still works: Hebrew/RTL — the search box and results mirror correctly (no copy changed).