App Suite · Home Theater, TV Series & Big-Screen Casting

RobOS Movie & Video Player

Your movies and TV shows, on your desktop and on your living-room TV. RobOS Movie Player (packages/movie-player) shares the warm dark theater theme and multi-pane architecture of RobOS Audio Player, scaled for 100,000 films and multi-season TV series — with automatic scene-filename cleaning, official TMDB & TVmaze posters, a dedicated TV Shows & Season Navigator, synced .srt / .vtt subtitles, SFTP & cloud byte-range streaming, optional ✦ AI Watchlists and a spoken Virtual Cinema Host, plus a native 3-row visual image-card app for Roku OS and Smart TVs.

RobOS Movie Player on the Movies (107) tab showing the Feature Film Spotlight hero banner for Annabelle (2014), genre filter chips, and 2:3 theatrical posters
RobOS Movie Player on the Movies (107) tab: the Feature Film Spotlight banner at top, one-click genre and franchise filter chips, virtualized 2:3 theatrical posters with resolution and year badges, and the collapsible Watch Queue dock on the right.

Works 100% without AI. Like every app in RobOS, Movie Player is a complete, fast local and LAN home theater out of the box. Public poster and plot enrichment uses open public APIs (TMDB/TVmaze/Wikidata) and local ffprobe/ffmpeg inspection. AI features (✦ AI Watchlist, Virtual Cinema Host, and agentic ✦ AI Fix Metadata) are optional buttons that use the coding-agent CLI you already signed in to.

1. Movies Theater: 100,000-Film Virtualized Poster Browser

Movie folders rarely arrive with clean metadata: filenames look like Avengers.Endgame.2019.2160p.UHD.BluRay.x265.10bit.HDR-GROUP.mkv, and duplicate encodes (`720p`, `1080p BluRay`, `2160p WEB-DL`) often sit side by side. During background worker-thread scanning (lib/track-metadata.js), cleanMovieFilename() strips release noise while extracting the canonical film title, 4-digit release year, resolution badge (4K UHD, 1080p, 720p), source medium (BluRay, WEB-DL, HDRip), and video codec (HEVC, AV1, H.264).

  • Feature Film Spotlight Banner: Highlights a featured film at the top of the library with its 2:3 theatrical poster, franchise badge (e.g. The Conjuring Universe, Marvel & Avengers, The Lord of the Rings, Harry Potter Wizarding World), release year, resolution badge, director and cast credits, plot synopsis, and one-click ▶ Watch Movie or 📺 Cast to TV actions.
  • Cinema Navigation Views: Switch between All Movies (virtualized 2:3 poster grid with an A–Z jump rail), Franchises & Box Sets (auto-grouped sagas and trilogies), Movie Genres (Action & Adventure, Animation & Family, Comedy & Romance, Drama & Cinema, Horror & Supernatural, Sci-Fi & Fantasy, Thriller & Mystery), 4K & BluRay Formats, Release Decades, and All Movies (A–Z List).
  • Watch Progress & Resume Tracking: Remembers your exact playback timestamp (`positionSec`, `progressPct`, `inProgress`, `completed`) across desktop and Smart TV sessions, surfacing partially watched films under Continue Watching.

2. TV Shows & Season Navigator: 48 Series & 2,641 Episodes

Movies and episodic television need different browsing ergonomics. Instead of dumping 2,600 episodes into a flat movie grid, RobOS Movie Player automatically detects episodic patterns (`S01E01`, `1x02`, `Season 1`, `Book One`, `Part II`, `Extras/Specials`) in lib/library-index.js and separates them into a dedicated top-level TV Shows tab.

RobOS Movie Player TV Shows (48 Series, 2,641 Episodes) Show and Season Navigator showing Archer Season 1 episodes with TVmaze ratings, air dates, and episode synopses
Show & Season Navigator: pick any series on the left (with official TVmaze poster, star rating, season/episode counts, and network badge), choose a season pill in the center, and browse or play individual episodes with original air dates and episode synopses.
RobOS Movie Player All TV Series Poster Grid showing 2:3 series posters for Archer, Atypical, Avatar: The Last Airbender, Big Brother, Bluey, BoJack Horseman, Breaking Bad, and more
All TV Series (Poster Grid): browse all 48 series as 2:3 poster cards with network pills (Netflix, HBO, FX, Apple TV+, AMC, Comedy Central), star ratings, and season/episode badges.
TV Shows Workspace ViewWhat it organizes
Show & Season NavigatorThree-tier master-detail browser: searchable Series list on the left → Series Hero header & horizontal Season pills (All Seasons, Season 1, Season 2, …, Specials & Extras) → Episode list with S01E01 badges, TVmaze star ratings, air dates, and plot summaries.
All TV Series (Poster Grid)2:3 poster wall of every series in your library with one-click filter chips by network (Netflix, Syfy, FOX, CBS, Hulu) and genre. Clicking any series poster opens its seasons and episodes.
Networks & StudiosGroups series by original broadcast network or streaming studio (HBO, Netflix, Apple TV+, FX / FXX, AMC, Nickelodeon, Cartoon Network, Showtime).
TV Show Genres & DecadesFilter series across 24 television genres (Sci-Fi & Fantasy, Crime & Mystery, Animated Sitcom, Espionage) or premiere decade (1990s–2020s).
Up Next & Continue WatchingTracks watch progress per episode and computes each show's Up Next episode (the currently in-progress episode or the next unwatched episode in season order).

3. Roku OS & Smart TV App: 3-Row 100% Visual Image-Card UX

When you sit 10 feet from a 65-inch TV with a directional remote, plain text menus feel dated and slow. RobOS Movie Player pairs with RobOS Smart TV Studio (packages/robos-lib/tv-engine.js) to sideload a native Roku OS SceneGraph channel (and serve an identical 10-foot web portal at :19210/movie-player for LG webOS, Samsung Tizen, and Google TV / Android TV) where every selectable item in every row is an image card with text.

Live hardware screenshot from a 65-inch TCL Roku TV showing the 3-row visual image-card Movies browser with Annabelle, Anyone But You, and Avengers posters
Live Roku TV Capture — Movies (107): Row 1 Movie/TV Show image tabs, Hero Spotlight banner, Row 2 Category image cards, and Row 3 theatrical poster cards.
Live hardware screenshot from a 65-inch TCL Roku TV showing the TV Shows (48 Series) browser with Archer, Atypical, Avatar, Big Brother, Bluey, and BoJack Horseman posters
Live Roku TV Capture — TV Shows (48 Series): switch to the TV Shows tab to browse series posters, network badges, and season/episode counts.
Live hardware screenshot from a 65-inch TCL Roku TV showing Archer Season cards in Row 2 and Episode cards in Row 3
Live Roku TV Capture — Series Season & Episode Drill-Down: pressing OK on any TV series turns Row 2 into visual Season Image Cards (All All Episodes, S01 Season 1, S02 Season 2…) and Row 3 into Episode Cards (S01E01 Mole Hunt, S01E02 Training Day…).

Thoughtful 2D Remote D-Pad Navigation

The entire 10-foot TV experience is organized into 3 visual rows so you can reach the Movies and TV Shows tabs in at most two presses of [UP] from anywhere on screen, and move [LEFT] / [RIGHT] smoothly across whichever row is focused:

RowWhat is in the row[LEFT] / [RIGHT] behavior[UP] / [DOWN] & [OK] behavior
Row 1: Top Image TabsMovies (107) image tab card, TV Shows (48 Series) image tab card, and contextual All TV Shows back-card when viewing a show's seasons.Instant live-switch between the Movies theater and TV Shows library (wrapping cleanly at ends).[DOWN] or [OK] drops into Row 2 Category/Season cards.
Row 2: Category & Season Image Cards6-card sliding shelf of visual category cards (each with a representative thumbnail poster, category title, and live film/series count) — or Season Image Cards (`All Seasons`, `Season 1`, `Season 2`…) when inside a TV series.Slides the 6-card window across all 12 Movie categories, 8 TV Show categories, or all Seasons of the active show, live-filtering Row 3 posters as you move.[UP] jumps straight to Row 1 Tabs; [DOWN] or [OK] drops into Row 3 Poster cards.
Row 3: Poster & Episode Cards6-card sliding shelf of large 2:3 Movie posters, TV Series posters, or Episode cards, synchronized with the Hero Spotlight banner above.Moves across posters one by one (wrapping around the collection) and updates the Hero Spotlight title, ratings, cast, and synopsis in real time.[UP] moves to Row 2 Categories/Seasons (and one more [UP] reaches Row 1 Tabs); [DOWN] pages ahead +6 posters; [OK] starts hardware video playback (or opens a TV show's seasons).

4. Cinema Stage, Synced Subtitles & Smart TV Output

Clicking any movie or episode (or switching to the Cinema Stage tab) opens the 16:9 theater viewport and synchronized transport deck:

RobOS Movie Player Cinema Stage screening Dune (2021) while casting live to a 65-inch TCL Roku TV
Cinema Stage: 16:9 HTML5 <video> viewport with letterbox/cover aspect controls, Picture-in-Picture (PiP), one-click Cast to 65" TCL Roku TV and TV Library (Remote UI) buttons, synchronized transport bar, and the Subtitles & Dialogue transcript panel below.
RobOS Movie Player Smart TVs (4) tab showing paired Roku OS, Google TV, LG webOS, and Samsung Tizen TVs
Smart TVs (4) tab: manage paired Roku OS, Google TV / Cast, LG webOS, and Samsung Tizen displays with one-click Display on TV and Open TV Library (Remote UI) actions.
RobOS Movie Player Theater Ambience tab showing procedural lobby and cinema soundscapes
Theater Ambience tab: procedural WebAudio soundscapes (Velvet Lobby Rain, 35mm Projector Booth, Late-Night Drive-In, Deep Space Drone) for intermissions or background focus.
  • Synced .srt / .vtt Subtitles & Click-to-Seek Dialogue (lib/lyrics.js): Automatically loads sidecar .srt, .vtt, or .lrc files or extracts embedded subtitle tracks via ffmpeg. Active lines render as a theater caption overlay on the video stage and auto-scroll in the transcript panel; clicking any dialogue line seeks both the local video and active Smart TV stream to that exact second.
  • Playback Speed, Aspect Fit, PiP & Frame Snapshots: Cycle speed (`0.5x`–`2x`), aspect fit (`Letterbox`, `Cover`, `Fill`), float the stage in an always-on-top Picture-in-Picture window, or capture native-resolution PNG stills to ~/Pictures/RobOS Movie Snapshots/.

5. Optional AI Watchlists & Spoken Virtual Cinema Host

Just like RobOS Audio Player offers AI Playlists and a Virtual DJ, RobOS Movie Player includes optional AI curation grounded in your own library:

AI Watchlist and Virtual Cinema Host modal in RobOS Movie Player
✦ AI Watchlist & Virtual Cinema Host: describe your marathon or mood, pick your RobOS agent, and optionally enable spoken introductions between films.
Watchlists tab in RobOS Movie Player showing saved movie marathons and queues
Watchlists tab: curate, reorder, export (.m3u8), and screen saved movie marathons or AI-generated double features.
  • ✦ AI Watchlist (src/AiPlaylist.jsx): Describe a theme (e.g. "90-minute supernatural horror double feature from the 2010s" or "family-friendly animated adventure night") and your active coding agent selects and orders matching titles from your library.
  • Virtual Cinema Host (src/useVirtualDj.js): Writes short 1–2 sentence TCM-style presenter intros ahead of each film in your queue and speaks them aloud via RobOS Voice (locally or over your Smart TV).

6. Public TMDB / TVmaze Enrichment & AI Metadata Fixer

Clicking Fetch Posters & Metadata in the library sidebar (or Fetch Metadata in the toolbar) runs lib/public-metadata.js across your movies and TV series:

AI Fix Metadata and Artwork modal in RobOS Movie Player
✦ AI Fix Metadata & Artwork: combines scene filename cleaning, .nfo sidecar parsing, ffprobe stream inspection, public poster lookup, and ffmpeg frame extraction.
  1. TV Series & Episode Enrichment (TVmaze Public API): Matches each TV series title, downloads the official 2:3 series poster into the content-addressed art cache (~/.cache/robos/movie-player/art/), and populates series plot synopses, network names, star ratings, premiere years, and per-episode titles, air dates, and episode overviews.
  2. Feature Film Enrichment (TMDB / Wikidata / Wikipedia REST + Apple iTunes Search): Fetches official theatrical 2:3 poster artwork, release years, MPAA/content ratings, director & cast credits, and plot synopses, persisted in ~/.config/robos/movie-public-metadata-cache.json.
  3. Local Sidecars & ffprobe / ffmpeg Fallback: Parses Kodi/Jellyfin .nfo XML files, inspects container streams via ffprobe, and extracts a real video frame at 10% runtime via ffmpeg whenever a personal home video has no public poster.

7. SFTP Data Sources & Cloud HTTP 206 Byte-Range Streaming

Your video library doesn't have to fit on your laptop's internal SSD. RobOS Movie Player connects directly to RobOS Data Sources (SSH/SFTP servers) and RobOS Cloud Accounts (Google Drive, Microsoft OneDrive, Dropbox, S3):

Cloud Storage and SFTP sources tab in RobOS Movie Player
Cloud Storage & SFTP Sources: index remote movie and TV folders in seconds without downloading multi-gigabyte video files upfront.
  • Metadata-Only Indexing (lib/cloud-storage.js): Walks remote SFTP directories (such as /downloads/movies and /downloads/shows) or cloud folders and indexes filenames, sizes, and season/episode structures in seconds without copying video bytes.
  • Zero-Cloud LAN HTTP 206 Partial Content Streamer (lib/cast-service.js): When you press Play on desktop or on your Roku TV, Movie Player serves `/cloud-stream/:trackId` with full HTTP byte-range (`Range: bytes=...`) support and a 2 GB LRU disk cache (`~/.cache/robos/movie-player/cloud`), enabling instant scrubbing and hardware decoding on Roku OS, Google TV, and desktop.

8. Architecture, File Layout & Reproducible CLI

RobOS Movie Player technical architecture diagram showing 100k Library Enricher, Cloud Cinema Proxy, Cinema Video Stage, and Zero-Cloud LAN Cast
System architecture of RobOS Movie Player (packages/movie-player) and its LAN streaming & Smart TV bridge.
Path / PortPurpose
packages/movie-player/Electron + React desktop application, worker-thread scanner, public metadata enricher, and LAN stream server.
packages/movie-player/lib/library-index.jsSeparates Movies from TV Shows, groups episodes into Show → Season → Episode trees, and computes watch progress.
packages/movie-player/lib/public-metadata.jsFetches official 2:3 theatrical posters, ratings, networks, cast, and synopses from TVmaze, Wikidata/Wikipedia, and iTunes.
packages/movie-player/lib/cast-service.jsHTTP 206 byte-range media & poster server (:19215), Google Cast controller, and Roku ECP / Smart TV Studio bridge.
packages/robos-lib/tv-engine.jsGenerates the 3-row visual image-card Roku SceneGraph channel (MainScene.xml / MainScene.brs) and serves :19210/movie-player.
~/.config/robos/movie-library.jsonIndexed movie & TV episode catalog with public metadata and artwork IDs.
~/.cache/robos/movie-player/art/Content-addressed SHA-1 JPEG poster cache served at http://<HOST-IP>:19215/art/<artId>.jpg.
# Build the renderer bundle and run the 19-test Movie & TV Show verification suite
cd packages/movie-player && npm run build && npm test

# Launch RobOS Movie Player and inspect via the DOM Snapshot server (:19214)
npx electron packages/movie-player --no-sandbox
node packages/robos-lib/snapshot-cli.js movie-player --text
node packages/robos-lib/snapshot-cli.js movie-player --screenshot /tmp/movie-player.png