## Description
Hopefully this is the last round of bug fixes for customizing the home
page!
Fixes a possible crash when scrolling after adding a row after resetting
to default or loading remote settings that have more rows than the
original settings
Fixes some incorrect titles
### Related issues
Related to #399 & #803
### Testing
Emulator & nvidia shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds a basic way to add a collection or playlist as a row on the home
page.
There's a simple search dialog to find the collection or playlist.
### Related issues
Related to #399 & #803
### Testing
Emulator testing
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes/improves thumb image handling by falling back to backdrop images
if available. Episodes without a parent thumb/backdrop will fall back to
their primary image.
Also fixes the nav drawer selected item not updating (bug introduced by
#886).
### Related issues
Fixes#642Fixes#914
### Testing
Emulator in various situations with missing thumbs
## Screenshots
N/A
## AI or LLM usage
None
## Description
This PR updates cards that have a title and subtitle, so that they are
visually distinct instead of sharing the same font and style.
Titles use bodyMedium typography with semiBold weight.
Subtitles use bodySmall typography with normal weight.
This affects:
- PersonCard
- EpisodeCard
- DiscoverItemCard
- GridCard
- SeasonCard
### Related issues
Related to [735](https://github.com/damontecres/Wholphin/issues/735)
### Screenshots
<img width="960" height="540" alt="Screenshot_20260125_190057"
src="https://github.com/user-attachments/assets/4bbf29a3-3df8-482b-944e-454a9b091e44"
/>
### AI/LLM usage
No LLM usage
## Description
- Smoothly bumps up the title and subtitle text above the seek progress
label when the seek bar is focused to prevent overlap.
- Adds a semi-transparent black backer to the text label that appears
above the seek progress indicator. Helps with visibility when the image
in the playback matches the color of the text. Note: the backer is black
with Alpha of 0.6 for now because I felt that looked good for contrast
across all themes. However, if you prefer it respect a particular theme
color, I'd be willing to make that change.
### Related issues
In the playback screen, when focusing the seek bar on Android TVs (at
least the ones I was able to test), the seek text above the seek bar
will overlap with the media title. This is a purely cosmetic issue in
the UI, but it seemed worth a fix. See before and after images in in the
Screenshots section below
This problem is briefly mentioned in point number 2 of [#528
](https://github.com/damontecres/Wholphin/issues/528)
### Testing
Tested manually on TCL model 50S434 running Android TV. Tested manually
using AVD emulation on Television (1080p) and Television (4K) preset
devices. Reproduced the problem on all 3 devices and confirmed that my
fix works across all.
## Screenshots
Before:
<img width="2046" height="1184" alt="before"
src="https://github.com/user-attachments/assets/64708e13-3fa4-4248-91e3-e203f8ac1f7d"
/>
After:
<img width="2046" height="1183" alt="after"
src="https://github.com/user-attachments/assets/db9d1767-cf93-4153-b13a-9a18fbc89e0c"
/>
## AI or LLM usage
None
---------
Co-authored-by: Ray <154766448+damontecres@users.noreply.github.com>
## Description
Fixes several issues with home page customization such as
- Displaying wrong episode-specific display options
- Smaller text on cards without images
- Prefer fill scaling for posters, like the old home page
### Related issues
Related to #803
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
An attempt to fix#769
1. Always fetch the `DisplayManager` when switching refresh rates
2. Use the Activity context instead of Application context
### Related issues
Fixes#769
### Testing
I still haven't reproduced #769 myself, but this change works fine on my
shield + LG C2
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes the nav drawer preference reordering & save logic. Also improves
the UI a bit with animations.
It's also now stored in memory and saved when the dialog is dismissed.
### Related issues
Related to #886
### Testing
Emulator mostly
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes an issue where the "Next Up" popup continuously pops up when
dismissed if you have "Show next up during credits/outro" enabled.
### Related issues
Fixes#895
Bug introduced by #884
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
- Update header when editing a row
- Exclude non-empty rows to prevent scroll lock
- Only save settings locally if they are different from the source
### Related issues
Related to #803
### Testing
Emulator, tested remote & local settings changes
## Screenshots
N/A
## AI or LLM usage
None
## Description
This PR has no user facing changes.
Upgrade AGP to 9.x and Gradle to 9.x. Also updates some dependencies as
well.
Note: still using deprecated `android.newDsl=false` because the protobuf
plugin is not yet compatible:
https://github.com/google/protobuf-gradle-plugin/issues/793.
### Related issues
N/A
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Improves home page customization for Live TV & Recordings
- Add row for live tv channels
- Add row for "on now" programs
- Clicking on a TV channel or TV program starts playback
- Better name for "Recently recorded" instead of "Recently added in
Recordings"
Also fixes a back stack issue after adding rows
### Related issues
Follow up from #803
### Testing
Emulator
## Screenshots
<img width="663" height="190" alt="image"
src="https://github.com/user-attachments/assets/49d41953-42ab-4621-92f1-b7936aab7e97"
/>
## AI or LLM usage
None
## Description
Customizing the home page (#803) and nav drawer (#886) were developed
independently, so this PR just cleans up somethings so that those two
changes work together.
This PR restores the default home page when there is no customization to
be the same as before: continue watching/next up row(s) followed by the
order of the nav drawer libraries' recently added rows.
Finally gets rid of `NavDrawerIteRepository` and related functions which
all had weird, hard to follow code.
### Related issues
Related to #803 & #886
### Testing
Emulator testing
## Screenshots
N/A
## AI or LLM usage
None
## Description
Allows for reordering the items in the navigation drawer
This does not change the home page row order since #803 decouples the
nav drawer and home page rows.
The initial order will be the "Library Order" settings on the web under
Profile->Home. Making any changes locally in Wholphin will set the
order. If any new libraries are added or if Seerr integration is
enabled, these will added to the end of the "pinned" list.
### Related issues
Closes#822
Related to #399 & #803
### Testing
Tested on emulator
- Re-ordering
- Granting/Revoking user permission to a new library
## Screenshots
N/A, nav drawer is the same, just sorted differently
## AI or LLM usage
None
## Description
This PR adds the ability to customize the home page in-app
### Features
- Add, remove, & reorder rows
- Persist the configuration locally
- Save the configuration to the server, allowing to pull down on other
devices
- Adjust view options for rows such as card height, image type,
preferring series images, or aspect ratio (similar to libraries)
- Pull down the web client's home rows (no plugins are supported yet!)
- Preview of the home page which is usable & updated as changes are made
### Row options
These are row types that can be added in-app via the UI:
- Continue watching
- Next up
- Combined continue waiting & next up
- Recently added in a library
- Recently released in a library
- Genres in a library
- Suggestions for a library (movie & TV show libraries only)
- Favorite movies, tv shows, episodes, etc
Additionally, there are more row types that don't have a UI to add them
(yet):
- Simple query to get items from a parent ID such as a collection or
playlist
- Complex query to get arbitrary items via the `/Items` API endpoint
### Dev notes
Settings are loaded in order:
1. Locally saved
2. Remote saved
3. Fallback to default similar to Wholphin's original home rows
The remote saved settings are stored via the display preferences API.
I know some server admins would prefer to push a default setup to their
clients. This PR does not have that ability, but it does define a
straightforward API for defining the settings. Something like the
potential server plugin work started in #625 could be slimmed down to
expose a URL to be added in the load order.
I'm also investigating integration with popular home page plugins to
allow for further customization, but will take more time.
### Related issues
Closes#399Closes#361Closes#282
Related to #340
## Description
As of #842, if an error occurred on some pages that display a generic
error message, it would be shown under the nav drawer making it
difficult to read.
This PR fixes that by passing the `modifier` into the `ErrorMessage`
composables ensuring it has proper offset & padding. Also, for
consistency, passes it the `LoadingPage`s.
### Related issues
Caused by #842
### Testing
Threw an exception during home page loading to observe the issue and fix
on the emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fix a bug where movie suggestions would get stuck loading when the
on-disk cache file doesn't exist.
### Related issues
Fixes#876
### Testing
Ran unit tests locally.
## Screenshots
N/A
## AI or LLM usage
Used AI to add testing for this scenario to unit test
---------
Co-authored-by: Ray <154766448+damontecres@users.noreply.github.com>
## Description
Fixes the segment (intro, credits, etc) skip button appearance behavior
For the button shown on the video: if the button for a given segment is
clicked, dismissed by the back button, or times out after 10 seconds, it
will never appear again even if you rewind the video.
However, the current non-ignored segment will always show a button on
the playback controls though so it's possible to still use it.
### Related issues
Fixes#875
### Testing
Tested a bunch of scenarios on the emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
- Adding `Quick Connect` drawer to the Settings under the Seer
integration, and before Additional options.
- When interacted with, A inline-dialog appears (after internally
resetting itself), with gutter options Cancel / OK, like existing
dialogs, and when that is completed, where it completes the other side
of `Quick Connect`, e.g. login to your phone Jellyfin app by using
Wholphin.
- Failure and success both are indicated to the user and if success, it
closes the window.
### Related issues
Related to #819Closes#819
### Testing
Tested on development build from my repo on a Nvidia Shield 2019.
Performed several logout/login, both success and fail to observe dialog
state and function.
## AI or LLM usage
Used Claude Sonnet 4.5 for most of the code, ChatGPT, reviewed it, then
I reviewed it, made a few tweaks.
## Description
Fixes the possible glitch on some devices when scrolling left-right on
rows on the home page
### Related issues
Fixes#367Fixes#872
### Testing
Emulator & shield 2019
## Screenshots
N/A
## AI or LLM usage
None
## Description
If the continue watching row is empty on recommended pages, it would
scroll to the first successfully loaded row even if previous ones are
still pending.
This PR fixes that so the page waits until the right first row is ready.
### Related issues
Fixes#839
### Testing
Emulator & shield 2019
## Screenshots
N/A
## AI or LLM usage
None