mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-12 12:06:16 -08:00
The Similar rail only existed on Xtream because it matched against the locally loaded catalog; Stalker catalogs are server-paginated, so its detail views had no rail despite tmdb_recommendations being cached. New CrossPortalSimilarService (libs/services) matches recommendations against ALL imported Xtream playlists with one batched DB_MATCH_TITLES worker request — the same two-tier normalized-title + year-compatibility rule as actor pages and the trending rail. Electron-only; resolves to [] in the PWA. - Stalker: the shared VodDetailsComponent (movies; covers catalog and inline detail hosts) and stalker-series-view (series) now render a "Similar" rail from cross-portal matches, each card badged with the source playlist and navigating into that portal's detail view. - Xtream: vod/serial detail rails keep instant local-catalog matches and append cross-portal matches (current playlist excluded, deduplicated against local hits by normalized exact title), also playlist-badged. - Loads async after the detail view renders, staleness-guarded; the section only appears when there is something to show. Tests: cross-portal-similar.service.spec.ts (PWA gate, navigation targets, playlist exclusion, type/year guards). Docs updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>