Summary
Shows hidden from Next Up in Scrob still appear in Umbrella's Progress view.
Reproduction
- Connect Umbrella to Scrob.
- Watch part of a TV series so it appears in Next Up/Progress.
- Hide that show from Next Up in the server UI.
- Confirm the server's canonical
GET /history/next-up response no longer includes it.
- Open Umbrella's Progress view.
Expected: the hidden show is absent.
Actual: Umbrella still reconstructs and displays its next episode.
Cause
The Scrob client already has scrob.get_next_up(), which calls the canonical /history/next-up endpoint. That endpoint owns the per-user hidden-show preference and excludes hidden shows by default.
However, episodes.py::scrob_progress_list() rebuilds Next Up from scrobsync.get_watched_episodes() instead. That data originates from raw /history?type=episode, which intentionally contains watch history and has no view-only Next Up hide semantics.
Relevant source:
Filtering /history server-side is not safe because Umbrella also uses it for watched indicators.
Suggested change
- For normal Scrob Progress, use
scrob.get_next_up() as the authoritative show/season/episode position.
- Continue enriching the returned identifiers with Umbrella's existing TMDB metadata path before
episodeDirectory().
- Keep raw history sync only for watched/unwatched indicators.
- For
upcoming=True, support /history/next-up?include_unaired=true when the connected server offers it, with a graceful fallback for older servers.
The canonical response already supplies show_tmdb_id, show_tvdb_id, show_title, season_number, episode_number, and last_watched_at, so it contains the position identifiers needed by the existing renderer.
The duplicated Umbrella package trees (matrix, nexus, omega, and piers) appear to share this same implementation.
Summary
Shows hidden from Next Up in Scrob still appear in Umbrella's Progress view.
Reproduction
GET /history/next-upresponse no longer includes it.Expected: the hidden show is absent.
Actual: Umbrella still reconstructs and displays its next episode.
Cause
The Scrob client already has
scrob.get_next_up(), which calls the canonical/history/next-upendpoint. That endpoint owns the per-user hidden-show preference and excludes hidden shows by default.However,
episodes.py::scrob_progress_list()rebuilds Next Up fromscrobsync.get_watched_episodes()instead. That data originates from raw/history?type=episode, which intentionally contains watch history and has no view-only Next Up hide semantics.Relevant source:
scrob_progress_listscrob.get_next_upFiltering
/historyserver-side is not safe because Umbrella also uses it for watched indicators.Suggested change
scrob.get_next_up()as the authoritative show/season/episode position.episodeDirectory().upcoming=True, support/history/next-up?include_unaired=truewhen the connected server offers it, with a graceful fallback for older servers.The canonical response already supplies
show_tmdb_id,show_tvdb_id,show_title,season_number,episode_number, andlast_watched_at, so it contains the position identifiers needed by the existing renderer.The duplicated Umbrella package trees (
matrix,nexus,omega, andpiers) appear to share this same implementation.