summaryrefslogtreecommitdiffstats
path: root/docs/mediacenter.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/mediacenter.md')
-rw-r--r--docs/mediacenter.md27
1 files changed, 27 insertions, 0 deletions
diff --git a/docs/mediacenter.md b/docs/mediacenter.md
index 0df115b..3f70112 100644
--- a/docs/mediacenter.md
+++ b/docs/mediacenter.md
@@ -743,6 +743,33 @@ centralization was for (one computation, reused by every member).
| ~~V6~~ | ~~Two folders of the same show, named by different release groups, can produce two separate poster-grid cards~~ | **Closed, 2026-08-24.** Rather than fuzzy title matching (real design decision, still deferred), `PosterGrid` now merges raw show-groups client-side once each group's TMDB lookup resolves to the same confident `tmdb_id` (`onMetaResolved` reports each `PosterCard`'s resolved meta upward; a `useMemo` groups by id, combining episodes/seasons into one card). This only merges what TMDB already agrees is one show — a genuinely unmatched show still gets its own card, which is correct. Confirmed live: `OVNIs.S01...`/`Ovnis-S01...` now render as a single "OVNI(s)" card with both seasons |
| ~~V7~~ | ~~A show's automatic TMDB match can be wrong at the show level (not just mis-ranked locally), and a wrong match's `overview` can read as scoped to one season~~ | **Closed, 2026-08-24 — §5.7.** Per-season tabs (own `overview`/`air_date`, falling back to the show-level text when empty) plus an operator-only "Fix match…" search-and-correct affordance, applied to every file sharing the resolved `display_title`. Confirmed live on the operator's real "War of the Worlds" 3-season show, itself matched to a wrong season-3-specific 1988 promotional TMDB entry: season tabs correctly filtered episodes and swapped in each season's own air_date, and the search overlay returned real TMDB candidates for a manual correction |
+### 10.1 Movie-matching bugs — a batch found live (2026-08-29)
+
+Several wrong poster-grid matches on a real library: a two-volume film's second part
+matched the first; a numbered sequel matched a same-year making-of documentary (TMDB's
+real entry uses a Roman numeral); two entries of one franchise matched a single early
+entry whose *localized* TMDB title is the franchise name, and a third matched nothing.
+One mechanism: `_tmdb_search` returned the first candidate query whose title-similarity
+ratio merely cleared 0.6, before `alternative_title` / the Roman-numeral variant was
+tried. **Fixed** (branch `fix/videos-tmdb-matching`): scored retry ladder + year-exact
+rescue for a sub-0.6 top hit (§3.3's "trust TMDB's own ranking" still holds per query —
+no local re-rank of any one result list); `volume`/`part` folded into `display_title`;
+movie "Fix match" applied to the one file, not the whole `display_title` group;
+`ops.rematch_video` + a rename now drop stale cached matches (`media_cache.tmdb_override`
+shields manual corrections); the movie detail modal shows the source filename + resolved
+TMDB id, and an unmatched poster gets a badge.
+
+**Still open, noted so they are not lost (all found while fixing the above):**
+
+| # | Item | Severity |
+|---|---|---|
+| V8 | The **TV/show branch** of `_tmdb_search` still returns the first candidate over 0.6 — the same shape just fixed for movies. §5.7's own wrong show-level match was this class; its parade was Fix match + season tabs, not the search. Give it the scored ladder too | medium |
+| V9 | `_best_match` still trusts `results[0]` per query unconditionally. The movie fix works around it by trying more queries; if no competing query beats a wrong-but-high-ratio `results[0]`, it still wins. The originally-planned year-aware `_best_match` (mediacenter "C") would harden this — deferred: apply the year signal only when the #1 hit is already low-confidence | medium |
+| V10 | `sequel_variants` is narrow: one trailing digit 2–9, arabic→roman only. No "Part One", "Chapitre 2", "10", roman→arabic | low |
+| V11 | Extra TMDB calls in the 0.6–0.85 band: a film that used to match in one request now makes 2–4 before settling (then cached). Bounded, but real | low |
+| V12 | Movies are not merged in the poster grid — a film present in 1080p + 720p shows as two cards (the `tmdb_id` merge in §V6 is show-only) | cosmetic |
+| V13 | A per-card "re-match this one file" button in the SPA — `ops.rematch_video` is group-wide and CLI/loopback only; a per-card control needs a new signed op or MNP message. Fix match already covers targeted correction | low |
+
## 11. Acceptance before shipping
1. Re-run the §3 validation (real TMDB calls, same corpus, same script