Provider filter (#4): - client.discover() + engine.discover_filter() take a TMDB provider id and pass with_watch_providers + watch_region (engine._region) + flatrate. Browse gets a streaming-service chip row (Netflix/Prime/Disney+/Max/Apple TV+/Hulu/Paramount+/ Peacock); the grid title reflects 'on <service>'. Infinite scroll (#6): - Grid paginates via an IntersectionObserver sentinel (600px lookahead) with a bottom spinner; the Load more button stays only as a no-IO fallback. Polish (#7): - Hero keyboard nav (←/→ when Discover is the visible view, ignoring inputs and while the trailer is open); focus-visible rings on chips/segments/cards/arrows. Note: 'complete-the-franchise' rail (#5) needs a collection_id per movie, which the schema doesn't store yet — deferred (would need an enrichment pass). Tests: +1 (provider watch_region params); updated the discover_filter fake for the new kwargs. Enrichment + API suites: 115 passed. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| calendar.py | ||
| dashboard.py | ||
| detail.py | ||
| discover.py | ||
| enrichment.py | ||
| libraries.py | ||
| library.py | ||
| poster.py | ||
| scan.py | ||
| search.py | ||
| watchlist.py | ||