67 Commits
Author SHA1 Message Date
Lizzy 47dfbb4c8f Add OpenGL GPU video rendering for PC playback 2026-10-15 19:17:32 +02:00
Lizzy 11cf75a02c Use custom user dir for session config
Jellyframe stores user data in app-specific OS paths instead of Godot’s default location.
2026-10-15 10:13:31 +02:00
Lizzy 6ba97a99f4 Add files via upload
Add Godot imports for logo images
2026-10-15 10:08:41 +02:00
Lizzy e6697e5ac1 Fix player seek restarting video 2026-10-15 02:51:22 +02:00
Lizzy dd4022595f Expand Linux video and playback tests 2026-10-15 02:14:32 +02:00
Lizzy da3bcb3389 Show buffering popup 2026-10-15 02:12:33 +02:00
ItsAlexeii 969e7d9f9e PC playback stall recovery 2026-10-15 01:54:11 +02:00
Cuteminded 3fb03e885d Add playback quality setting 2026-10-15 00:50:30 +02:00
Cuteminded d850180050 Keep settings window fixed on projection change 2026-10-15 00:05:14 +02:00
Cuteminded 835c182bf9 Update README.md 2026-10-14 23:56:56 +02:00
Cuteminded 6f6eff9a16 Fix bundled Linux library conflicts on SteamOS 2026-10-13 22:33:32 +02:00
Cuteminded 1e2d2b22d4 Add bundled Linux decoder library packages 2026-10-12 21:10:07 +02:00
Cuteminded 987fbf4170 Run Linux export tests with Godot
Launch the headless renderer test through the Godot executable and pass the exported binary as its main pack.
2026-10-11 19:46:43 +02:00
Cuteminded 4c8ec97057 Add Vulkan Linux export alongside OpenGL 2026-10-10 18:23:19 +02:00
Lizzy 0541237aec Update setup-python action to version 7 2026-10-09 16:59:54 +02:00
ItsAlexeii 2486c3483f Refresh project documentation 2026-10-08 15:36:30 +02:00
ItsAlexeii fb754709a4 Add 180 video support 2026-10-07 14:13:05 +02:00
ItsAlexeii 02f3c2db30 Stabilize screen reset button access 2026-10-06 12:49:41 +02:00
ItsAlexeii bf614a6b70 Add 360 video support 2026-10-05 11:26:17 +02:00
ItsAlexeii acf2e73e83 Persist PC sign-in sessions 2026-10-04 10:02:52 +02:00
Lizzy c63abcdbed Add all-platform build workflow 2026-10-03 08:39:28 +02:00
Lizzy 5e197b465a Bump GitHub Actions in build workflows
Update the Android, Linux, and Windows build workflows to newer major versions of the checkout, artifact upload, Java setup, and Gradle setup actions. This keeps the CI configuration current across all release build pipelines.
2026-10-02 07:16:04 +02:00
Lizzy 7bf481673c Wordmark 2026-10-01 05:52:39 +02:00
Lizzy c326728d64 Restructure project documentation 2026-09-30 04:29:15 +02:00
Lizzy d964cb4b16 Add cinema environment option 2026-09-29 03:05:50 +02:00
Lizzy 6cd6b9c25c Switch UI icons to Material Symbols
Replaces custom SVG UI icons with Material Symbols assets across player controls, details, and sidebar navigation, including updated import metadata and icon mappings for library types and skip controls. Adds in-player control labels that appear on hover/focus (including timeline and pause/play state changes), plus a new `test_player_tooltips` coverage path wired into Linux and Windows CI. Updates README usage/licensing notes and export presets to bundle Material icon attribution/license files.
2026-09-28 01:42:26 +02:00
Lizzy ef41fa1e61 Return player Library to active title
Updates player navigation so the Library action returns to the currently playing movie or series details instead of the generic library view. For episodes, it restores the correct series season and keeps series context open; selecting the active title resumes playback without restarting the stream. Adds a new `test_player_return` integration test and wires it into Linux/Windows CI, plus README updates documenting the behavior and test command.
2026-09-27 00:19:02 +02:00
Lizzy e72139c8be Keep autoplay loading visible in VR
When an episode ends, the app now keeps the library hidden and shows the loading indicator while the next episode is fetched in VR. This prevents the library from reappearing during autoplay and ensures the wait state stays visible until the next video is ready.
2026-09-25 22:55:37 +02:00
Lizzy f65a1d6c93 Format episode titles with season and episode 2026-09-24 21:32:13 +02:00
Lizzy e6e5e8950b Add URL shortcut buttons to keyboard
Increase the on-screen keyboard height to fit a new shortcuts row, add `http://` and `https://` buttons, and extract insertion into a shared helper so shortcuts bypass the uppercase transform while letter keys keep existing casing behavior.
2026-09-23 20:08:49 +02:00
Lizzy 96e8654a8c Add episode autoplay countdown
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.
2026-09-22 18:45:24 +02:00
Lizzy 9b83b7c057 Add video loading indicator
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.
2026-09-21 17:22:00 +02:00
Lizzy 886abc1e13 Rename Android APK output and ignore build dir 2026-09-20 15:58:36 +02:00
Lizzy a22f5871a1 Refine user-facing copy and setup docs
Improve wording across the app
2026-09-19 14:35:11 +02:00
Lizzy 158e0eb5c6 Add OpenXR passthrough environment support
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.
2026-09-18 13:11:47 +02:00
Lizzy 665b3b027e Add immersive theatre environment mode
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.
2026-09-17 11:48:22 +02:00
Lizzy d0b32e764e Add screen reset action in settings view
Introduces reusable `SCREEN_KEYS` in settings and adds `reset_screen()` to restore screen-related defaults only. The settings UI now shows a “Reset to defaults” button for the screen section, rebuilds that section after reset, reapplies layout/focus, emits screen updates, and saves immediately. It also fixes format/swap handlers so toggles update local state consistently. Tests were expanded to cover reset behavior, persistence boundaries, save count, and refreshed UI values.
2026-09-16 10:24:58 +02:00
Lizzy 6e6dfc6c90 Add watched icon and played item fixture
Introduce the new watched status SVG asset and its Godot import metadata. Update the capture library test fixture to include `UserData.Played`, allowing tests to cover watched-state handling for library items.
2026-09-15 09:01:34 +02:00
Lizzy ea0ed9fe31 Add unified settings view and library sorting
Replaces the old screen-only settings page with a new Settings view that includes library sorting plus screen/environment controls, updates UI labels/tooltips from “Screen settings” to “Settings,” and documents the new behavior in the README. Adds persisted library sort field/order preferences, applies them to Jellyfin library requests while keeping Home fixed to newest-first, and implements stable random pagination via a cached catalog snapshot (cleared on sign-out). Includes new settings tests covering persistence/defaults, API query behavior, random ordering across pages, and the new settings UI interactions.
2026-09-14 07:38:09 +02:00
Lizzy ac5c408d15 Refresh library hero selection
Randomize the featured library hero while avoiding the previously shown item for each library, rename the default section heading to "Recently Added," and remove the hero eyebrow label to simplify the header.
2026-09-13 06:14:45 +02:00
Lizzy 6e27993ecc Sort newest library items 2026-09-12 04:51:21 +02:00
Lizzy 1d07bcb46f Add cast carousel with portrait navigation
Replaces the details page’s text-only cast list with a dedicated `CastCarousel` UI component that shows portrait cards, names, and roles in a horizontally scrollable row. It adds previous/next controls, hides the internal scrollbar, and handles horizontal wheel input without breaking vertical page scrolling.

Also adds `tests/test_cast.gd` to cover card rendering, image-tag based portrait loading, navigation button state, wheel behavior, long-text layout safety, and responsive sizing.
2026-09-11 03:27:56 +02:00
Lizzy 4f28515204 Add horizontal joystick scrolling
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.
2026-09-10 02:04:32 +02:00
Lizzy ebe8c141af Add season browser for series details
Replaces the flat series episode list with a dedicated season/episode browser in the details view. Added Jellyfin client helpers for season and paginated episode endpoints, introduced reusable `SeriesBrowser` and `EpisodeCard` UI components, and wired section scrolling/playback events through the details page. Updated HTTP/details tests and added comprehensive series browser coverage for pagination, retries, empty states, and stale-response handling.
2026-09-09 00:41:07 +02:00
Lizzy ed9774f151 Add rich details view and metadata helpers
Introduces a dedicated `DetailsView` UI with artwork, overview, cast/crew, stream info, and movie/episode playback actions, plus a new `DetailsMetadata` helper for formatting runtime, badges, and media stream labels. `main.gd` now mounts this view for item details, tracks page generations to avoid stale async updates, and routes series episode loading into the new component. Adds end-to-end UI checks in `test_details.gd` to cover playback actions, responsive layout, metadata fallbacks, and series episode behavior.
2026-09-07 23:17:43 +02:00
Lizzy 1a82550249 Fix library pagination grid appends
Increase Jellyfin library page requests to 25 items and keep subsequent results in the same poster grid so infinite scrolling fills rows correctly instead of creating a new container per page. The tests were updated to cover the new page size, retry behavior, and replacement of stale grid contents after refreshes.
2026-09-06 21:54:19 +02:00
Lizzy 817cb83d76 Add library auto-pagination and tests
This change adds infinite-scroll pagination for the library view by loading more items as the user approaches the bottom, resetting pagination on refresh/search, and preventing stale or repeated requests. It also adds focused tests for retry behavior, empty pages, final-page detection, and search invalidation.
2026-09-05 20:30:54 +02:00
Lizzy 4889b9677b Use OpenXR headset name in auth header
Update Jellyfin client authorization to send the detected OpenXR headset name as the `Device` value instead of a fixed label. The device name is sanitized for header safety (escaping quotes/backslashes and stripping newlines), and falls back to `OpenXR` when no initialized interface/system name is available.
2026-09-04 19:07:30 +02:00
Lizzy 224bcfb930 Add Linux PC video plugin support 2026-09-03 17:44:06 +02:00
Lizzy 5473808525 Rename native video module to android
Moves the Android native module from `native/video` to `native/android`
2026-09-02 16:20:41 +02:00