feat: "Up Next" row on the overview (next unwatched episode per show) - #1069
feat: "Up Next" row on the overview (next unwatched episode per show)#1069fjacques-2025 wants to merge 4 commits into
Conversation
Add GET /watched/upnext returning the next unwatched episode per in-progress (Watching) show, and an "Up Next" horizontal row on the overview page with a quick "mark watched" action that advances to the next episode. Episodes are offered regardless of TMDB air_date (which reflects TV broadcast, not streaming/replay availability); the broadcast date is shown on each card, flagging episodes not yet aired. Relates to sbondCo#1008, sbondCo#903.
|
Hi, thank you for taking the time on this. I'll have to think about implementation, I have a feeling this should wait until after we have refreshing of our own data to avoid having to rewrite this feature to use it later. |
|
Thanks, that makes sense — I'd rather it fit the eventual data-refresh work than be For what it's worth, the current implementation is fairly decoupled: it reads the I'll leave this as a draft for reference. Is the data-refresh mechanism (#1048/#1049) |
- Add a 'Drop' button on Up Next cards (PUT /watched/:id status=DROPPED) so a show can be abandoned from the overview without opening it; it then leaves the row. - Show the season episode count (e.g. S6.E2/12) via a new seasonEpisodeCount field.
|
Update — I've been running this on my own instance in daily use, and it's working "Up Next" row on the overview — for each in-progress show, its next unwatched
Backend is a single Still a draft — I understand you'd rather land this after the data-refresh work so it |
GetUpNext now binds sort/sortDir and applies the shared watchedRefineSort scope, and the frontend passes the current sort. So the Up Next row follows the same order as the series list instead of insertion order. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Small addition (pushed): the Up Next row now follows the same sort as the watched list ( |
|
Kept this current — rebased onto v4.2.x and migrated to the new |
… show Adapted from community draft PR sbondCo#1069 onto current conventions (that draft predates the req wrapper migration and used axios directly). - New GET /watched/upnext: for each Watching show, scans seasons from the highest already-touched one via cached TMDB season details to find the next unwatched episode. Doesn't filter on TMDB air_date (broadcast schedule != streaming availability) - the date is only shown as a badge. - New row at the top of the homepage (both view modes). Deliberately not built as a bespoke widget: reuses PosterEpisodeBadge, PosterProgressBar, PosterRating and PosterStatus verbatim so it's pixel- and behavior- identical to posters elsewhere, not just similar. The status picker's FINISHED option marks this specific next episode watched (the point of the row); every other option updates the show exactly like any other poster would. - The remaining-episode count subtracts the displayed next episode itself (the shared GetWatchProgress counts it, which is correct for the Watching row's "last watched" badge but double-counts here). - Actions here now trigger a refresh of the Watching section/list below, which previously went stale after a mark-watched/drop from this row.

What
Adds an "Up Next" row at the top of the overview: for each in-progress (Watching)
show, it shows the next unwatched episode with a quick "✓ Watched" action that
marks it and advances the card to the following episode.
Relates to #1008 (the unwatched "to watch" part) and #903 (quick-mark next episode).
How
GET /watched/upnextreturning the next unwatched episode perWatching show (
server/feature/watched/watched_upnext.go); scans seasons fromthe highest watched one using cached TMDB season details.
ContentProvidergainsSeasonDetails.UpNext.svelte(aHorizontalList) on the overview; "✓ Watched"reuses
POST /watched/episodethen refreshes.Design note
Episodes are offered regardless of TMDB
air_date: that date is the TV broadcastschedule and doesn't reflect streaming/replay availability (a fully streamable show
can still have "future" broadcast dates). The broadcast date is shown on each card,
flagging not-yet-aired episodes — broadcast viewers know to wait, streaming viewers
can mark ahead.
Draft — open questions
/watched/upnextendpoint preferred over computing client-side?Not included yet: rating from the card; the "upcoming calendar" half of #1008
(depends on a periodic refresh mechanism, #1048/#1049).
Testing
Ran locally (Go + SvelteKit). Marking advances the card; the row clears when a show
is fully watched.