Repository navigation
fix(watchlist): count a part-watched single season as Watching - #89
Merged
Merged
Conversation
A brand-new show has exactly one aired season, and "in progress" was gated on `isTrackable` — the predicate that decides whether the season *stepper* earns its place, which answers no below two seasons because a 0-to-1 counter is pure friction. Two unrelated questions, one bar. So the episode picker recorded three episodes of Lanterns, the card read "Next: S1E4", and the Watching tab still said nothing was being watched. Every surface that asks "what am I in the middle of" was really asking "does this show deserve a stepper". `isInProgress` now measures against the season ceiling itself: one aired season is enough to be part-way through something. `seasonCeiling` is lifted out of `progress` to say that, keeping the fallback to the total for rows saved before air dates were tracked. The rail had quietly inherited the same assumption — it only ever drew the stepper, because only multi-season shows reached it. A single-season show has none to draw, and drawing one anyway printed "0/0" beside an empty bar, so those get the card's own watched toggle instead. Closes #88
Isma-L154
force-pushed
the
fix/88-watching-single-season
branch
from
September 19, 2026 07:30
3ada410 to
2ce8fda
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #88.
What was happening
Lanterns and Neagley are both brand-new shows with exactly one aired season. The episode picker recorded episodes for them quite happily — the card even read
Next: S1E4— but the Watching tab reported nothing was being watched, and neither show reached the Continue-watching rail.Root cause
isInProgresswas gated onisTrackable. That predicate answers a different question: does the season stepper earn its place — and it answers no below two seasons, because a 0-to-1 counter is pure friction. Episode tracking, added later, works from a single aired season. The two bars drifted apart, and "what am I in the middle of" ended up asking "does this show deserve a stepper".So any show with one aired season could never be in progress, however many of its episodes had been ticked off. The answer to the issue's open question is yes: it is specific to new series, and to a first season while a second is only announced.
The fix
seasonCeilingis lifted out ofdomain/progress— "is there a ceiling at all" and "is the ceiling above one" are two questions, and callers kept reaching forisTrackableto ask the first. It keeps the existing fallback tototalSeasonsfor rows saved before air dates were tracked.isInProgressmeasures against that ceiling: one aired season is enough to be part-way through something.0/0beside an empty bar — those now get the card's own watched toggle.No schema change, so nothing to migrate.
Tests
Four cases in
domain/watchlist.spec.ts(single season part-watched; first season in progress with a second announced; untouched single season stays out; unresolved season data stays out) and a newContinueWatching.svelte.spec.tspinning which control each kind of show gets.496 unit tests, 17 e2e,
lintandcheckall pass.QA
Seeded a local DB with the two real shows from the issue (TMDB 95350 and 273207, one 8-episode season each) and drove it in Chrome.
Before —
Next: S1E4on the card, Watching 1, rail shows only Breaking Bad.After — Watching 3, rail shows all three, single-season shows get a
Watchedbutton rather than0/0.Also exercised: marking episode 4 through the picker (moves to
Next: S1E5, stays in Watching), the rail's newWatchedbutton (leaves the rail,Watching 3→2,Watched 1→2), and unwatching it back to zero (returns to To watch, not Watching). Checked at 390px. No console errors.