Skip to content

0.3.1: every filter finds all the words, in any order - #24

Merged
ralyodio merged 1 commit into
mainfrom
feat/filter-all-words
Oct 14, 2026
Merged

ralyodio merged 1 commit into
mainfrom
feat/filter-all-words

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Every filter (Live TV, the TV guide, Movies & Shows, server-side title search, and the CLI/TUI/MCP channel lookup) required one exact substring, so espn us never found US| ESPN HD. Anthony uses Silk on a Fire TV, where the lists can't be scrolled, so the filter has to find things reliably.

  • New src/core/match.js, shared by all of them:
    • every word must appear in the name (or group), in any order
    • case, accents and punctuation are ignored
    • a word also matches across a missing space (sports1 finds Sports 1, bbc one finds BBCOne)
    • a lone number is still the channel number
  • The folded text is cached per item: about 28 ms per key press across 53,819 channels.
  • Tests: test/match.test.js; 87 pass. Checked in headless Chrome against the real line: 1080p espn sports tnt uk finds exactly UK: TNT SPORTS ESPN [1080p] in Live TV, a ?q= link and the guide; the Movies filter also works with words out of order.

🤖 Generated with Claude Code

Live TV, the guide, Movies & Shows, the server search, and the CLI/TUI/MCP
lookup all matched one exact substring, so "espn us" never found
"US| ESPN HD". They now share src/core/match.js: every word anywhere in
the name (or group), any order, ignoring case, accents and punctuation; a
word also matches across a missing space ("sports1" finds "Sports 1");
a lone number is still the channel number. Haystacks are cached per item,
so 53k channels filter in ~28 ms a key press.

On a Fire TV, Silk cannot scroll the lists, so the filter is the way to a
channel there; it has to find it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ralyodio
ralyodio merged commit fe83802 into main Oct 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant