Temporarily hide cast rows on TV movie, episode, and series detail surfaces while preserving the surrounding section layout.
Simplify TV player queue rows by removing the secondary subtitle line so queued items scan more cleanly.
Increase the next-up queue fetch from 5 to 10 items and skip missing playlist episodes with an error log instead of throwing during queue mapping.
Move playback-related media state into shared model types and make the player consume a single PlayableMedia object instead of separately loading MediaItems, track preferences, resume positions, and media segments.
This updates PlayableMediaRepository to return playable media bundles, seeds the player playlist with the current item, keeps next-up entries in the same model, restores resume/segment handling, and fixes current queue highlighting.
The change also moves track preference models into core-model, centralizes Jellyfin BaseItemDto conversion, removes placeholder movie audio/subtitle fields, bumps the offline Room schema, and updates mobile/TV queue UI code for the playlist model.
Verification:
./gradlew --no-daemon :core-model:compileDebugKotlin :core:compileDebugKotlin :data:compileDebugKotlin :app:compileDebugKotlin
Adds the ability to play and pause media using the Center or Enter keys
without displaying the full player controls. When pausing via this
method, a brief visual "Pause" feedback overlay is shown in the center
of the screen.
- Added `TvPlayerHiddenStopFeedback` component and related logic
- Updated `handleTvPlayerRootKeyEvent` to support background playback toggling
- Added `pausePlayback` and `resumePlayback` to `PlayerViewModel` and `PlayerManager`
- Included comprehensive UI tests for the new hidden control behavior
Move the TV player queue into a simplified bottom inline playlist row and keep the existing seek bar -> controls -> playlist navigation hierarchy.
Focus playlist entry on the current queue item, keep focus pinned on the row at the horizontal edges, and return to the controls row on Up/Back.
Add compose coverage for playlist expansion, current-item focus, fallback focus, and row edge navigation.
Introduce a new Suggestions section on the home screen that fetches and
displays recommended content from the Jellyfin API. This replaces the
previous manual featured items logic with a more robust suggestion
system supporting movies, series, and episodes.
Key changes:
- Implement `getSuggestions` in `JellyfinApiClient` to fetch video content.
- Update `AppContentRepository` and its implementation to manage
suggestions, including caching and background refreshing.
- Add `SuggestedItem` models and update `AppViewModel` to expose
suggestions as a state flow.
- Replace `HomeFeaturedSection` with `SuggestionsSection` using a
horizontal pager.
- Implement auto-scrolling logic in `HomeContent` to ensure suggestions
are visible upon initial load if the user hasn't already interacted.
Overhauls the home screen to provide a modern, media-focused discovery
experience. Key changes include:
- Introduced a featured content carousel at the top, highlighting
continue watching items, next up episodes, and library additions.
- Implemented a search overlay with a real-time search bar and grid
results for movies and series.
- Redesigned the top bar with a large collapsible title and subtitle
that dynamically reflects content status.
- Updated sections for "Continue Watching", "Next Up", and libraries
with high-fidelity cards, progress indicators, and better typography.
- Added a dedicated empty state with quick actions for refreshing or
browsing libraries.
- Improved navigation by adding library-specific click actions and
search-to-detail transitions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>