Commit Graph

88 Commits

Author SHA1 Message Date
6433225014 feat(search): add Jellyfin-backed search 2026-05-02 17:40:56 +02:00
36e89f35d9 refactor: rename media repository files for consistency 2026-05-02 16:53:48 +02:00
217e8df417 refactor: merge media catalog reader into repository 2026-05-02 16:51:55 +02:00
672d8e1d64 feat(search): wire full-screen search with genre browsing 2026-05-02 15:17:06 +02:00
44219d00d8 feat(app): add HomeSearchFullScreen route and integrate search functionality in HomeScreen 2026-05-02 12:26:33 +02:00
58087bb4a5 fix(tv): format secondary text for episode display 2026-05-02 10:20:17 +02:00
f304b1f1f5 feat(tv): add seriesName and seasonIndex to Episode data model 2026-05-01 21:28:33 +02:00
e738e9637f fix(tv): open selected episode in series screen 2026-05-01 20:59:50 +02:00
bfc007f24f feat(player): batch relative seek requests 2026-05-01 20:06:21 +02:00
b0baad7f8c refactor(player): remove unused setControlsAutoHideDelay method from PlayerViewModel 2026-05-01 19:40:57 +02:00
c4eed9ece3 fix(tv): open episodes in SeriesScreen view 2026-04-30 20:08:32 +02:00
22c414b5e2 Revert "refactor: remove unused name field from LibraryDto"
This reverts commit 8a1d5ccfab.
2026-04-29 18:09:13 +02:00
790474d992 refactor: remove unused HomeModels 2026-04-29 17:45:41 +02:00
8a1d5ccfab refactor: remove unused name field from LibraryDto 2026-04-29 17:44:20 +02:00
bd5e43114b refactor: extract and rename LibraryUiModel 2026-04-29 17:35:52 +02:00
f086956578 feat: enhance track label formatting for audio, subtitles, and video 2026-04-26 13:15:17 +02:00
522c8273d5 feat: add skip segment functionality to player 2026-04-26 12:21:52 +02:00
1b8300ee1d refactor: streamline playback handling by removing redundant seekTo call 2026-04-25 22:43:51 +02:00
aa58cf3aff refactor: optimize playlist queue updates by combining flows for current playable media 2026-04-25 22:35:58 +02:00
81a3504606 refactor: update media retrieval to use Flow and improve error handling in PlaylistQueue loading 2026-04-25 22:31:39 +02:00
b15453ab01 refactor: convert PlayableMedia to sealed class with specific media types 2026-04-25 21:25:11 +02:00
f9eaf0cf84 refactor: update artwork URL construction in PlaylistElementUiModel 2026-04-25 20:46:14 +02:00
78a5f716c0 refactor: refine TV detail cast rows and player queue behavior
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.
2026-04-25 18:43:14 +02:00
f7f9fc1058 refactor: centralize playable media state
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
2026-04-25 18:08:23 +02:00
2433ececac refactor: change dependency structure. core should not depend on data. Move repository interfaces to core. Move hilt bindings in the data model. 2026-04-24 19:02:26 +02:00
354314710b refactor: extract core-model into its own module 2026-04-24 18:11:28 +02:00
7232352014 refactor: rename domain module to core module 2026-04-24 17:42:18 +02:00
3f7c1966af Collapse shared modules into data domain and ui-common 2026-04-23 20:42:59 +02:00
59a471c535 feature: Added MediaSegmentManager 2026-04-23 19:59:12 +02:00
f0a4aadcf0 Derive player state from Media3 events 2026-04-22 20:04:47 +02:00
65f2bd811b refactor: Update MediaTrackPreferences handling for improved null safety and initialization 2026-04-22 19:39:24 +02:00
899e2f08b0 refactor: Added MediaSegments to MediaContext to make it accesible during playback. Also refactored MediaTrackPreferences to load preference in the PlayerViewModel 2026-04-22 19:34:11 +02:00
a2931b78f9 refactor: simplify AppContentRepository initialization logic. 2026-04-21 21:34:22 +02:00
9545e4d619 refactor: remove forced common PosterCardContent and inline them in the corresponding app ui module 2026-04-20 18:13:25 +02:00
920b0e0e4a Refactor TV home media cards smaller 2026-04-19 20:35:20 +02:00
2c5585417a refactor: add backdropImageUrl to MediaUiModel for improved image handling 2026-04-19 20:14:19 +02:00
a0086c6f62 refactor: rename imageUrl to primaryImageUrl for consistency across components 2026-04-19 20:08:41 +02:00
76eebc1139 refactor: remove overcomplicated TvHomeHeroState 2026-04-19 19:49:12 +02:00
632dda52d6 Refactor media models to use MediaUiModel for improved consistency and type safety 2026-04-18 21:35:56 +02:00
5a377fc428 Add keys to lazy Compose entries 2026-04-17 18:02:22 +02:00
9591b72273 Extract shared Compose UI into core module 2026-04-15 21:21:10 +02:00
ad930e899f feat: introduce core data models and interfaces for playback and downloads 2026-04-15 20:02:50 +02:00
b67c8076f1 refactor: update package structure and imports for consistency across UI components 2026-04-14 22:03:36 +02:00
3509a09064 Separate mobile downloads from TV playback 2026-04-13 16:31:57 +02:00
a0af187e8f feat: implement quick play/pause toggle for TV player
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
2026-04-12 19:02:45 +02:00
7c30e12af7 Fix TV player track selector focus 2026-04-09 19:59:01 +02:00
512f7bbb5b feat: Enable ASS direct play in TV device profile 2026-04-09 18:54:56 +02:00
58980f4ac7 feat: Update episode retrieval counts in API client and media repository 2026-04-09 18:45:21 +02:00
d007c80af7 Refine TV player inline playlist flow
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.
2026-04-09 18:22:21 +02:00
d253a6c8d0 feat: Add HLS support to ExoPlayer implementation 2026-04-09 14:03:53 +02:00