## Description
Now that Jellyfin 12 has been out for over six weeks, it's time to start
considering dropping support for Jellyfin 10 & 11 as part of #1640.
This PR adds a warning message on the switch server, switch user, &
preferences pages if the current server version is <12.
### Related issues
See https://github.com/damontecres/Wholphin/discussions/1640 for further
discussion!
### Testing
Emulator w/ faked data
## Screenshots
N/A, reuses the same error message space
## AI or LLM usage
None
## Description
Wholphin already ships a baseline profile. AGP merges the profiles from the AndroidX libraries into `assets/dexopt/baseline.prof` on every release build, so a release APK built from `main` already has one at around 15 KB. It just never gets installed on the device.
The reason is in `app/src/main/AndroidManifest.xml`, which removes `androidx.startup.InitializationProvider` completely:
That was added in #372 so WorkManager could be set up on demand through `Configuration.Provider` and `HiltWorkerFactory`. The problem is that `androidx.profileinstaller` registers `ProfileInstallerInitializer` inside the same provider, so removing the provider removes that as well.
### Related issues
#553
### Testing
API 34 AOSP emulator, `defaultRelease` signed with a debug key, clean install each time. With this change, logcat shows the profile being installed.
Not tested on a physical Fire TV device.
## Screenshots
None, there are no UI changes.
## AI or LLM usage
I used Claude for this one.
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Damontecres <damontecres@gmail.com>
## Description
On the switch server page, display error message at the bottom for the
focused server. This includes unsupported server version.
### Related issues
Jellyfin 10.11/12.0 support discussion: #1640
### Testing
Emulator
## Screenshots
<img width="1280" height="720" alt="server_error Large"
src="https://github.com/user-attachments/assets/1227e7e7-a364-48d9-9a77-cb3f78d134a1"
/>
## AI or LLM usage
None
## Description
Adds a setting to enable "Media management" which adds a context menu
item to delete media. This is accessible using either the More button or
long clicking.
You can delete episodes, seasons, series and movies/videos.
If order for the option to appear the current user must have server-side
settings for "Allow media deletion from" enabled for the library and the
in-app setting under Settings->Advanced Settings->"Show media management
options".
### Related issues
Closes#104
### Testing
Emulator
## Screenshots
### Context menu

### Confirmation

## AI or LLM usage
None
## Description
- Catch network exceptions when querying to populate the nav drawer
- Perform screensaver work on IO thread
- Fix possible crash if screensaver service runs while regular activity
is destroyed
- Fix genre images & backdrop images not loading
This PR also adds an Jellyfin SDK `ApiClient` wrapper to push all
network calls onto the IO thread. And tries to use a more strict
network-on-main policy for debug builds.
### Related issues
Fixes#994Fixes#1001
Should fix#1003
### Testing
Emulator with simulated exception throws
## Screenshots
N/A
## AI or LLM usage
None
## Description
Makes sure the invalid credentials error is propagated up instead of
displaying "No URL" as the error message.
Makes sure `OkHttp` is initialized since the startup initialization
provider is disabled. This fixes a possible crash if `OkHttp` needs to
access its assets.
Also, shows the URL when removing the Jellyseerr server.
Fixes thread used by changes from #359
Also create the device direct play profile lazily-ish off of the main
thread because this can take some time to create.
Should help address some of the "too much work" reported in #363, and
also fixes the network-on-main exception in the logs on #363
Adds ability to send app crash reports to the last connected server. The
app prompts you before sending. There is an advanced settings to disable
this as well.
Additionally, there is an advanced settings button to send the app logs
to the current server.
The resulting reports can be found on the server's web UI under
Dashboard->Logs
If sharing the logs, make sure there's no private information present!