Implement automatic next-episode playback with a 5-second on-screen countdown, cancellation, and series-order lookup that works across season boundaries. Update the loading UI and VR pointer targeting to support the countdown flow, adjust shell/login presentation, and add autoplay coverage to tests and CI.
Show a dedicated loading spinner while playback is preparing, seeking, or buffering. This exposes buffering state from the Android and mpv backends, wires the indicator into the VR player UI, updates playback flow to keep it visible even when controls are hidden, and adds coverage for the new loading-state behavior.
Adds a new Passthrough viewing environment alongside Void and Theatre, including runtime support detection, environment blend switching, and safe fallback to Void when unsupported. Updates settings persistence/validation and the settings UI to expose Passthrough with proper disabled state and guidance. Also wires passthrough into world/main environment application flow, adds focused passthrough and settings tests, and introduces Android build setup to fetch/pin OpenXR vendor assets with checksum verification.
Introduces a new `TheatreEnvironment` with tiered seating, curtains, batched geometry, recentering, and fixed cinema-screen projection sizing. Settings UI is split into separate Screen and Environment pages so Theatre/Void can be switched independently, with Void position controls disabled in Theatre and screen reset no longer changing the environment choice. Main/world behavior and README were updated to reflect the new environment flow, and new/updated tests cover persistence, UI behavior, projection rules, and environment switching.
This change makes VR pointer input detect horizontal stick movement and emit horizontal mouse-wheel events while preserving vertical scrolling behavior. It also adds a regression test covering carousel scrolling with right and left joystick input.
This change replaces the old playback button strip with a transparent overlay attached to the movie screen. It adds a seekable timeline, duration reporting, and proper seek routing for resumed/transcoded streams while preserving paused state and overlay behavior across settings and recenter actions.
Pointer and scroll handling were also hardened to improve controller input stability, including hover tracking, exit handling, aim smoothing, and synthetic wheel release events. Regression tests and testing notes were extended to cover overlay toggling, timeline formatting, seek flows, recenter behavior, and pointer/scroll edge cases.