MainScene | Scene (root) | Global state init, screen orchestration, task lifecycle, deep link routing, session auth checks, exit flow |
SplashScreen | Screen | Displays the launch splash for SPLASH_MS (1500 ms), then fires splashDone |
OnboardingScreen | Screen | First-run welcome screen; routes to LoginScreen via goToLogin |
LoginScreen | Screen | On-device credential form; requests Roku email via ChannelStore.getUserData; runs AuthTask |
MainScreen | Screen | Category-tabbed channel grid; signals AppLaunchComplete beacon on first channel load; doubles as the channel-selection overlay during playback |
PlayerScreen | Screen | HLS playback via Video node; hosts AdManager, channel banner, number overlay, error and offline dialogs; spawns ConnectivityTask, AdsPollingTask, and MetricsTask |
SettingsScreen | Screen | Safe-area adjustment, channel refresh, logout, server management (admin-unlocked) |
HandshakeTask | Task | Discovers the active server via health-check across the server list; writes activeServer to m.global |
AuthTask | Task | Authenticates username/password against /auth/{user}/{pass}; returns success or failure with a classified reason code |
PlaylistTask | Task | Downloads and parses the M3U8 playlist from /auth/{user}/{pass}/playlist/m3u8/hls; returns channels and categories arrays |
ConnectivityTask | Task | Polls internet reachability every NET_RETRY_MS (30 s); updates m.global.hasInternet |
AdsPollingTask | Task | Performs ads handshake, then polls /app/ads/active every ADS_POLL_MS (10 s); signals inactivity and session invalidation |
MetricsTask | Task | Batches and POSTs impression events to /api/v1/app/metrics/track |
ServerProbeTask | Task | One-shot health-check for a given server URL; used by the settings server-test action |
AdManager | Component | Receives ad snapshots; selects and renders the correct format node; manages video viewport reduction for Format C |
AdFormatA/B/C | Component | Individual ad renderers; Format C emits videoHeightReduction and videoOffsetY to compress the video area |