Auto-search an empty deck; drop the row search button #167

Closed
opened 2026-08-24 11:23:47 +01:00 by naps62-yolo · 1 comment
Owner

Every season row and every episode row carries both a search button and a
deck button. search queues a sweep and leaves you where you were; the
results land in the deck, which you then have to open yourself. Two controls,
one intent, and the first gives no sign of having worked beyond a status line.

What to change

Opening a deck that has no indexed releases fires a targeted sweep immediately
and shows its progress in place. The standalone search button comes off both
season rows and episode rows.

A re-search control lives inside the deck, for forcing a fresh sweep on a
deck that already has results.

The pieces are in web/src/main.ts (seasonRow and detailEpisodeRow build
both buttons; tvDeck owns the deck) and web/src/series.ts (seasonTarget
and episodeTarget both expose search()). The deck already reports "no
releases indexed yet" — that is the state that should now trigger a sweep
rather than describe one.

Done looks like

  • A season or episode row shows one control where it showed two.
  • Opening a deck with nothing indexed sweeps without further input, and the deck
    says it is sweeping rather than saying nothing is indexed.
  • Opening a deck that already has releases does not sweep.
  • A sweep that fails reports the failure inside the deck.
  • The re-search control queues a fresh sweep and refreshes the list.

Non-goals

  • The movie release deck is not part of this change unless it shares the same
    component, in which case keep its behaviour identical to the TV one.
  • Do not change the search endpoints or what a sweep does (§6.2). This is
    entirely about when the SPA calls them.

Depends on: #159

Every season row and every episode row carries both a `search` button and a `deck` button. `search` queues a sweep and leaves you where you were; the results land in the deck, which you then have to open yourself. Two controls, one intent, and the first gives no sign of having worked beyond a status line. ## What to change Opening a deck that has no indexed releases fires a targeted sweep immediately and shows its progress in place. The standalone `search` button comes off both season rows and episode rows. A `re-search` control lives inside the deck, for forcing a fresh sweep on a deck that already has results. The pieces are in `web/src/main.ts` (`seasonRow` and `detailEpisodeRow` build both buttons; `tvDeck` owns the deck) and `web/src/series.ts` (`seasonTarget` and `episodeTarget` both expose `search()`). The deck already reports "no releases indexed yet" — that is the state that should now trigger a sweep rather than describe one. ## Done looks like - A season or episode row shows one control where it showed two. - Opening a deck with nothing indexed sweeps without further input, and the deck says it is sweeping rather than saying nothing is indexed. - Opening a deck that already has releases does not sweep. - A sweep that fails reports the failure inside the deck. - The re-search control queues a fresh sweep and refreshes the list. ## Non-goals - The movie release deck is not part of this change unless it shares the same component, in which case keep its behaviour identical to the TV one. - Do not change the search endpoints or what a sweep does (§6.2). This is entirely about when the SPA calls them. --- Depends on: #159
naps62-yolo added this to the Feedback pass milestone 2026-08-24 11:23:47 +01:00
naps62-yolo added the phase/5-uitype/featuredifficulty/moderatearea/web labels 2026-08-24 11:23:47 +01:00
naps62-yolo added a new dependency 2026-08-24 11:23:53 +01:00
Author
Owner

Out of scope for this change, noticed while working in the deck: the movie release deck still requires a manual click on an empty deck — its empty state says "search indexers runs a sweep now" but does not fire one (main.ts emptyVerdict). The TV deck now sweeps on open. The two decks also tell empty apart differently: the movie one uses last_searched_at to distinguish a sweep in flight from a sweep that found nothing; the TV one has no equivalent signal and waits out its poll window. Worth a follow-up issue if the two should converge.

Out of scope for this change, noticed while working in the deck: the movie release deck still requires a manual click on an empty deck — its empty state says "search indexers runs a sweep now" but does not fire one (main.ts `emptyVerdict`). The TV deck now sweeps on open. The two decks also tell empty apart differently: the movie one uses `last_searched_at` to distinguish a sweep in flight from a sweep that found nothing; the TV one has no equivalent signal and waits out its poll window. Worth a follow-up issue if the two should converge.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yolo/arr#167