Say a new series is refreshing, then show its seasons #177

Closed
opened 2026-08-24 17:58:27 +01:00 by naps62-yolo · 1 comment
Owner

Depends on: #176

With #176 refreshing a newly added title within seconds, the series detail page
should say so and then show the seasons when they land, instead of leaving a
message that reads like a dead end.

Today the page shows "no seasons revealed yet — a metadata refresh fills this
in" for two genuinely different states, and cannot tell them apart:

  • the series has never been refreshed (metadata_refreshed_at IS NULL), so
    seasons are coming
  • the series has been refreshed and upstream really has no seasons listed

Distinguish them. The first says a refresh is underway and resolves itself; the
second is a real, if rare, empty state and should read as settled rather than
pending.

While a refresh is pending, poll until the seasons arrive and paint them without
a manual reload. Stop polling once they land, once the refresh has been recorded
as done with no seasons, or after a bounded number of attempts — a page left
open must not poll forever. If it gives up, say so and offer a way to retry
rather than spinning silently.

metadata_refreshed_at is already selected into SeriesRow in
crates/arr-api/src/series.rs (added by #160), so the API may already carry
what the SPA needs; check before adding a field.

Goes through the impeccable skill. Drive a real browser with agent-browser,
never google-chrome --headless — raw headless Chrome times out on every
localhost URL in this VM.

Non-goals: no websockets or server-sent events; polling is proportionate here.
No change to the empty state of a series that genuinely has no seasons beyond
its wording.

Depends on: #176 With #176 refreshing a newly added title within seconds, the series detail page should say so and then show the seasons when they land, instead of leaving a message that reads like a dead end. Today the page shows "no seasons revealed yet — a metadata refresh fills this in" for two genuinely different states, and cannot tell them apart: - the series has never been refreshed (`metadata_refreshed_at IS NULL`), so seasons are coming - the series has been refreshed and upstream really has no seasons listed Distinguish them. The first says a refresh is underway and resolves itself; the second is a real, if rare, empty state and should read as settled rather than pending. While a refresh is pending, poll until the seasons arrive and paint them without a manual reload. Stop polling once they land, once the refresh has been recorded as done with no seasons, or after a bounded number of attempts — a page left open must not poll forever. If it gives up, say so and offer a way to retry rather than spinning silently. `metadata_refreshed_at` is already selected into `SeriesRow` in `crates/arr-api/src/series.rs` (added by #160), so the API may already carry what the SPA needs; check before adding a field. Goes through the `impeccable` skill. Drive a real browser with `agent-browser`, never `google-chrome --headless` — raw headless Chrome times out on every localhost URL in this VM. Non-goals: no websockets or server-sent events; polling is proportionate here. No change to the empty state of a series that genuinely has no seasons beyond its wording.
naps62-yolo added this to the Reliability and first run milestone 2026-08-24 17:58:27 +01:00
naps62-yolo added the difficulty/easyarea/webphase/6-tvtype/bug labels 2026-08-24 17:58:27 +01:00
naps62-yolo added a new dependency 2026-08-24 17:58:27 +01:00
Author
Owner

While verifying #177 in a browser with TMDB unconfigured, the series detail rich-metadata panel showed "metadata unavailable — database unavailable" — the message is wrong for that case. tmdb_client() in crates/arr-api/src/search.rs returns the generic ApiError::Unavailable both when the database is gone and when TMDB is not configured, and that variant always renders as "database unavailable" (crates/arr-api/src/movies.rs). An operator without TMDB configured sees a message that points at the wrong system. Filing here rather than fixing — search.rs is off-limits for this issue per the driving prompt.

While verifying #177 in a browser with TMDB unconfigured, the series detail rich-metadata panel showed "metadata unavailable — database unavailable" — the message is wrong for that case. `tmdb_client()` in `crates/arr-api/src/search.rs` returns the generic `ApiError::Unavailable` both when the database is gone and when TMDB is not configured, and that variant always renders as `"database unavailable"` (`crates/arr-api/src/movies.rs`). An operator without TMDB configured sees a message that points at the wrong system. Filing here rather than fixing — `search.rs` is off-limits for this issue per the driving prompt.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yolo/arr#177