Kanban · pre-merge review

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.

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.

Links Manager with four saved links and an empty search box
Starting point — four saved links, no search.
Search for /reel/ narrows four links to one Instagram reel
/reel/1 of 4 links. That fragment appears nowhere but the URL, so before this change it matched nothing.
Search for watch?v=dQw4w9 narrows to the YouTube link
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.

Search for github kanban narrows four links to the GitHub repo link
github kanban1 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

  1. Open any Links Manager and search a path fragment (/reel/, /watch, a slug word) → only links whose URL contains it remain.
  2. Search an owner/repo pair from a GitHub link → that link is found.
  3. Type two words that live in different places (a domain word + a title word) → the link still matches.

Regression watch

  1. still works: searching by title, note, tag, author, or site name.
  2. still works: search combined with the Type / Source / Tags / Watched filters, and the result count line.
  3. still works: pagination resets to page 1 when the query changes, and the "By author" view.
  4. still works: Hebrew/RTL — the search box and results mirror correctly (no copy changed).

Deployed?

TargetEnvironmentDeployed?
🌐 App (Cloudflare Pages)Preview (PR #396)✅ built
🌐 App (Cloudflare Pages)🚀 PRODUCTION⬜ NOT deployed yet
🗄️ DB (Supabase)Dev— n/a
🗄️ DB (Supabase)🚀 PRODUCTION— n/a