Category now/next titles were incomplete because warmup capped streams and per-channel fetches timed out; load xmltv.php once, fix timezone parsing, and fill remaining gaps in the background.
Co-authored-by: Cursor <cursoragent@cursor.com>
Speeds up Live TV now/next titles via longer cache, background refresh, and category warmup; also expose logoUrl on spotlight items.
Co-authored-by: Cursor <cursoragent@cursor.com>
Backfill from file mtime and set discoveredAt on first index (and size changes) so new titles rise to the top instead of bulk-import path order (W/Z).
Co-authored-by: Cursor <cursoragent@cursor.com>
Use GREATEST(last_seen, created_at) so Recent/Films/shelves show truly newest media after bulk imports, and ship phone-first layout with touch-friendly players.
Co-authored-by: Cursor <cursoragent@cursor.com>
Separate applicationId for Play listings; touch bottom-nav and soft-keyboard search while sharing the same cluster API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Survive IMDb unique conflicts during movie matching, log per-file sync errors, add library lookup diagnostic, and ship upgrade-node.sh plus Admin upgrade button for Unraid/Synology nodes still on 1.2.9.
Load channel lists without EPG first, cache categories, and prefetch neighbors so left/right navigation feels snappy while EPG fills in on the background.
Prefetch now-playing titles for every channel when a category opens so program info is visible immediately, not only on row focus.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add epg=1 to the channels API so the app loads program titles in one request per category instead of one call per channel.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop bulk EPG prefetch from blocking the overlay; load program titles lazily on focus and keep the channel list visible while categories refresh.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prefetch now-playing titles for menu rows and use left/right to switch IPTV categories while the in-play overlay stays open.
Co-authored-by: Cursor <cursoragent@cursor.com>
Press up during playback to open a glass-style side panel with the current category channels; switch zenders without closing the menu until back is pressed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace large channel tiles with dense rows, horizontal category tabs, and a right-side EPG detail panel while keeping focus restoration behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
Focus lands on categories or last watched channel when opening TV or returning from playback, and refresh the category sidebar, channel grid, and EPG bar styling.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match Smarters by serving /live/user/pass/id.ts first from master-api, and tune the Android live player buffer for steadier TS playback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose client IPTV endpoints and admin toggle so viewers with IPTV access get a setup-box-style channel guide and live player in the TV app.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admin can set a separate homepage label per library shelf; the client home API uses it for row titles while browse keeps the canonical name. Also fixes LazyRow focus clipping on the TV home screen (0.8.4).
Co-authored-by: Cursor <cursoragent@cursor.com>
Batch-merge duplicates instead of O(n²) scans, prune duplicate file rows, cap IMDb backfill per run, and improve admin dashboard feedback. Android TV shows compact quality logos and version picker on movie details (0.8.2).
Co-authored-by: Cursor <cursoragent@cursor.com>
API returns clear logos, cast, rating and YouTube trailers; TV detail screens use a Netflix-style hero layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace oversized McButtons with a 6-column key grid so the whole keyboard stays visible Netflix-style.
Co-authored-by: Cursor <cursoragent@cursor.com>
Separate account, Google Play, and devices; collapse details by default so the overview stays scannable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Docker builds failed because tsc could not resolve fastify after it was accidentally dropped from package.json.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admins can enable or revoke store access per viewer; membership syncs to a configurable Google Group without changing app auth.
Co-authored-by: Cursor <cursoragent@cursor.com>
Long-press continue items to mark watched or hide, scroll-back before exit, confirm quit on home, and focus Play by default.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clean null metadata in stream labels, show readable subtitle track names, and let viewers pause to pick OpenSubtitles during playback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Home billboard shows latest titles; shelves sort by newest files; Films/Series get shelf subnav with search; player overlay closer to Netflix.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clear results after starting a job, show one clean list layout, and map Synology 403 to a readable destination hint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admin can search DS, confirm TMDB/IMDb, then auto-move finished downloads into a fixed 4K library folder via the media-node.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stremio drops videos without ISO-8601 released; also prefer IMDb IDs and mcseries- ids without extra colons.
Co-authored-by: Cursor <cursoragent@cursor.com>
Series listing broke after switching to series.episodes and selecting stillUrl — revert to the pre-TMDB catalog-aligned query.
Co-authored-by: Cursor <cursoragent@cursor.com>
Realtime fsnotify handles add/remove; optional interval scans default off; Stremio series meta now enriches episodes from TMDB (name, still, air date).
Co-authored-by: Cursor <cursoragent@cursor.com>
Catalogs now support skip so Stremio can load more than 100 titles; matching prefers TMDB and can merge orphans; admin can dedupe and see available vs scanned counts.
Co-authored-by: Cursor <cursoragent@cursor.com>