Commit Graph
16 Commits
Author SHA1 Message Date
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 bef7dc4772 Add Windows mpv playback backend and CI build 2026-08-30 12:10:28 +02:00
Lizzy 09828faa76 Refine app copy and onboarding messaging
Reworks README into a clearer user-facing guide with project status, Quest install steps, limitations, and collapsed developer setup details. Updates in-app text across login, library loading, playback errors, calibration guidance, and 3D mode instructions to be more explicit and user-friendly. Also adjusts hero card fallback text and CTA label for clearer browsing flow.
2026-08-24 03:50:02 +02:00
Lizzy 1ebaf4cc30 Hide shell rail when signed out
Store the shell's rail container on the scene so `set_signed_in()` can toggle its visibility along with the other auth-driven controls. The project config was also refreshed for a newer Godot version, including reordered sections and updated engine metadata.
2026-08-23 02:26:38 +02:00
Lizzy 620bfbd62d Refine shell nav layout and remove recenter
Removes the unused `recenter` signal wiring between `main.gd` and `ui/shell.gd`, including the Recenter button. Updates the shell rail and navigation typography for a cleaner, more consistent sidebar: wider rail, adjusted section label size, and standardized button/library font sizes.
2026-08-22 01:03:13 +02:00
Lizzy d212ed23c7 Filter sidebar libraries and add type icons
Limit sidebar library entries to supported video/mixed collection types, attach per-type icons for movies, TV shows, and home videos, and keep a default icon fallback. Update empty-state copy to clarify unsupported results. Add a focused sidebar test covering filtering, icon presence, navigation payloads, and unsupported-only behavior.
2026-08-20 23:39:49 +02:00
Lizzy 91d1fdb0b2 Handle OpenXR recenter events
Connect the main scene to OpenXR pose recenter notifications so the screen and menu reposition when the headset is recentered. Extend the recenter test to simulate an OpenXR recenter event and verify the movie screen, menu placement, and overlay visibility update correctly.
2026-08-19 22:16:24 +02:00
Lizzy dca5882721 Replace app icon with Jellyframe logo assets
Adds new PNG logo/wordmark assets and import metadata, removes the old SVG icon, and updates `project.godot` to use the new logo as the application icon. The shell sidebar branding is switched from a styled text label to the Jellyframe wordmark image for consistent visual identity.
2026-08-18 20:53:00 +02:00
Lizzy fc46df5a60 Add icon-based playback controls
This adds SVG asset files and Godot imports for the player overlay controls, replacing the text-heavy playback HUD with icon buttons, tooltips, and accessibility labels for pause, seek, stop, settings, library, and hide actions. It also ignores the generated docs directory and removes the checked-in documentation markdown files from the repo.
2026-08-17 19:29:36 +02:00
Lizzy 364eaca48f Add playback overlay and timeline seeking
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.
2026-08-16 18:06:11 +02:00
Lizzy 424c3204e3 Initial commit 2026-08-15 16:42:47 +02:00