aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/mediacenter.md25
1 files changed, 23 insertions, 2 deletions
diff --git a/docs/mediacenter.md b/docs/mediacenter.md
index e983ef9..dbdf85c 100644
--- a/docs/mediacenter.md
+++ b/docs/mediacenter.md
@@ -594,8 +594,9 @@ season_meta_resp { tmdb_id, season, confidence, name, overview, air_date,
`video-app.js`'s `VideoDetailModal` shows a season picker
(`Specials` / `Season 1` / `Season 2` / …) whenever a show has more than one
-season, defaulting to whichever season the representative episode belongs
-to. Selecting a season both filters the episode list to it and swaps in that
+season, defaulting to the lowest-numbered season present (`defaultSeason`;
+specials only when there is nothing else). It defaulted to the representative
+episode's season until §10.5, which is not the same thing at all. Selecting a season both filters the episode list to it and swaps in that
season's own `overview`/`air_date` — falling back to the show-level
`overview` when a season's own comes back empty (TMDB has no season-level
text for every show), the same per-field fallback shape §5.4's English
@@ -883,6 +884,26 @@ rectangles, and say so in their own docstrings: `scrollbar-gutter`, because
headless Chrome gives the probe zero-width overlay scrollbars.
`test_tmdb_show_director.py` covers the credit.
+### 10.5 A show that opened on season 6 (2026-09-02)
+
+Every season was in the picker and none was missing; the *default* was wrong.
+`VideoDetailModal` took it from `repEntry.season`, and `repEntry` is the show's
+"representative entry", which the poster grid picks as
+`episodes.find((e) => e.thumb_hash) || episodes[0]` — the first episode that
+has a thumbnail, so the card has a fallback frame when TMDB has no poster.
+That choice is from the original Videos commit; the season tabs came later and
+read the same entry as "the episode the reader is looking at", which it never
+was on that path. Episodes are sorted by (season, episode), so a show whose
+first five seasons had no thumbnail yet — a partial enrichment pass, or ffmpeg
+failing on those particular files — hands back a season-6 episode.
+
+Two meanings of "representative" that were never the same thing, and only one
+of them is about what the reader is looking at. `defaultSeason(show)` now reads
+the season list and nothing else: the lowest-numbered season present, specials
+only when there is nothing else, and the lowest *number* rather than the first
+entry so it does not quietly depend on `buildSeasons` keeping its sort.
+`test_video_default_season.py` — no input it takes can carry a thumbnail.
+
## 11. Acceptance before shipping
1. Re-run the §3 validation (real TMDB calls, same corpus, same script