## Description
Show the public users (ie "Hide this user from login screens" is
unchecked) if the server has any. Previously, all users had to be
explicitly added by username or quick connect.
This PR also refactors the server & user pages to use modern state flows
and deletes some unused code.
### Related issues
Closes#600
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Instead of adding/removing the `SubtitleView` from composition
sometimes, instead toggle its visibility. This is technically slightly
more efficient. There's also a couple other minor tweaks that make the
subtitles style a little more efficient.
This should also help prevent crash caused by possible a race condition
in libass-android
(https://github.com/peerless2012/libass-android/issues/75).
### Related issues
I think this fixes#1322
### Testing
Emulator mostly
## Screenshots
N/A
## AI or LLM usage
None
## Description
Just a lot of dependency bumps. There are no user facing changes.
Switches to the new Android gradle DSL now that the protobuf plugin is
compatible.
### Related issues
None
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes the delete button not showing on the movie detail page. Also fixes
some edge cases where button may not appear when toggling on the media
management setting.
Adds the delete button to album & artist pages. Previously, it was only
in the context menu.
### Related issues
Fixes#1343
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes an issue when changing subtitles during playback if you had
previously explicitly chosen subtitles for that item but not chosen an
audio track.
### Related issues
I don't think there is a specific issue for this
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
This PR simply enables the `largeHeap` flag to request more memory from
the OS.
I am a bit embarrassed that I haven't added this before now, but I had
read that using `largeHeap` was a bandaid, not a solution. So I assumed
Wholphin was doing something incorrect memory-wise. But after crawling
through many, many heap dumps to analyze Wholphin's memory usage, and
after further research, enabling this does make sense for handling high
bitrate, high resolution videos. Furthermore, many other Jellyfin
clients and other video apps like Plex and Prime Video have this
enabled.
So since I am pretty confident that Wholphin doesn't have any memory
leaks, I feel good about enabling this.
### Related issues
I believe this will fix many of the bug reports about crashes during 4K
playback, but it's not a cure-all since it is up the device & OS to
allocate the max memory.
Fixes#333Fixes#826Fixes#1189
### Testing
Shield 2019, Fire 4k Max
## Screenshots
N/A
## AI or LLM usage
None
## Description
Preload ~6 rows worth of images on library grid pages. So depending on
device CPU & memory, most cards do not show a placeholder image when
scrolling unless you press and hold up/down to scroll as fast as
possible.
There's a couple other minor optimizations on the grid code as well, but
nothing huge.
### Dev notes
This PR makes the `cacheWindow` for pre-rendering cards applicable to
their images. Previously, images would not be fetched until the card is
laid out within the window. This was to get the width/height to pass to
the server request. This PR instead calculates the card widths when the
grid itself is laid out and then passes this width into the cards'
composables.
### Related issues
Related to #1246
### Testing
Tested with emulator, shield, fire stick 4k max
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds a context menu option to choose the player backend or transcoding
to start playback. This allows for temporarily swapping to another
backend without having to updating the settings.
### Related issues
A couple comments have suggested this, but I don't think there's a
specific feature request
### Testing
Emulator
## Screenshots
<img width="1280" height="720" alt="play_with Large"
src="https://github.com/user-attachments/assets/2a75756f-5d7f-45f6-8ea6-a406f3d7f3e1"
/>
## AI or LLM usage
None
## Description
This PR refactors most of the context menu dialog code moving more of
the display into a Composable. This then allows for embedding the
confirm delete or choose version sub-dialogs. This will allow for easier
future expansion of the context menu.
Now instead of the page using a combination of `DiaglogPopup` &
`buildMoreFor` functions, pages create a `ContextMenu` object and pass
it to a composable.
There's no significant user facing changes.
### Related issues
None
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None