## Description
When parsing intents, not every path for authentication was checked, so
launching via the "Next Up" OS channel wouldn't check for a profile PIN.
This PR fixes that.
Additionally, the "Next Up" OS channel launch wasn't checking the
correct parameter to ensure the back stack was written properly.
### Related issues
Fixes#1883
### Testing
I manually test on the emulator with these test cases:
- No profile PIN, cold start
- No profile PIN, hot start
- Profile PIN, cold start
- Profile PIN, hot start
- No profile PIN, launch via "Next Up" channel
- No profile PIN, launch via intent
- Profile PIN, launch via "Next Up" channel
- Profile PIN, launch via intent
Also added unit tests for intent-based and regular launching which
covers those cases and more.
## Screenshots
N/A
## AI or LLM usage
None
## Description
Another PR to gather small bug fixes:
- Fix aspect ratio for episodes on person page
- Use the song's artist instead of the album's artist on album page
- Fix how the dim percentage is applied to the OS screensaver dim
percentage (#1834)
### Related issues
Fixes#1851Fixes#1863
### Testing
<!-- Describe how this change was tested and on what device(s) -->
## Screenshots
<!-- Please include screenshots if the PR alters any UI elements -->
## AI or LLM usage
<!-- If you used any AI or LLM assistance, please list where in the code
and how you tested it -->
## Description
There were two problems with the experimental "Use AC3 for surround
sound audio" setting (#947):
1. Defaulted to true
2. Access wasn't guarded by enabling experimental settings
This caused unintentional audio transcoding
### Related issues
Fixes#1878
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Slight optimization to remove "child count" for grid pages. Adds back
"primary image aspect ratio" for several queries where its necessary.
Also updates extras cards to use the "primary image aspect ratio"
instead of a hard coded value.
Dev note: some light refactoring is also in this PR including renaming
the item fields lists to better reflect the intended usage in code
### Related issues
Fixes#1843
### Testing
Emulator, I tested many pages and views, but probably need to do "real
world" testing to see if I missed anything
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds a new sceensaver setting to add dimming. A larger value is darker
This works with or without the in-app screensaver. If dimming is
enabled, the screen be will be dimmed after inactivity. If both dimming
and the in-app screensaver are enabled, the screensaver will show dimmed
after inactivity.
### Related issues
Closes#1179
### Testing
Emulator
## Screenshots
N/A, it's just darker
## AI or LLM usage
None
## Description
The audio player passed handleAudioFocus = false when setting its audio
attributes, so ExoPlayer never requested audio focus. Music kept playing
and mixed with other audio when a call arrived, another app started
playback, or voice search took focus.
### Related issues
Fixes https://github.com/damontecres/Wholphin/issues/1841
### Testing
1. Play a music track
2. Open YouTube and play a video
## AI or LLM usage
Cursor and Claude Code
## Description
Fixes several issues on the discover pages:
- Fixes sorting by release date for tv shows
- Fixes automatic go-to for movie & tv show grid
- Fixes tv show discover page's go-to using a movie detail page
- Updates the alignment & padding for the headers on different discover
pages to match the reset of the app
- Use media's logo image if available and the setting is enabled
### Related issues
N/A
### Testing
Emulator mostly
## Screenshots
N/A, headers and logos are unchanged, just moved slightly to match
regular content
## AI or LLM usage
None
## Description
When viewing images in a slideshow, this PR enqueues the next image so
it will likely be cached and ready to display when the slideshow
advances.
This works for both automatic and manual scrolling as well as advancing
next or previous images.
### Related issues
Closes#1835
### Testing
Emulator with large photos
## Screenshots
N/A
## AI or LLM usage
None
## Description
I accidentally removed the original fix/workaround from #1089 during a
merge in #1052, so this PR restores the fix.
### Related issues
Fixes#1736
Related to the original fix#1089
### Testing
Emulator with portrait and landscape images
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fix some bugs on discover pages:
- UI fixes for available seasons
- Fix toggle not updating when removing a season from a pending request
- Don't request images if the path is null
- Better error handling when fetching ratings
### Related issues
Follow up to #1816
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes several small bugs and does some minor refactoring:
- Use "Recently Added in XYZ" instead of "Recently recorded" for
recorded tv libraries
- Improve home page query performance by using fewer fields in the query
- When an error occurs connecting to discovered servers, show the error
instead of only logging
- Fix headers sometimes appearing briefly on some pages when navigating
back
- Catch exceptions in socket connections
- Use a larger buffer when downloading updates
- Split up ADB logging for media info
### Related issues
Related to
https://github.com/damontecres/Wholphin/issues/1517#issuecomment-5184316086
Maybe the larger download buffer will help with
https://github.com/damontecres/Wholphin/issues/1696
Will help show the error in #1801
Prevents the crash in #1786
### Testing
Emulator & nvidia shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
Add `density` to `configChanges` and handle any changes to density that
occur. Thankfully, Compose handles density changes itself, so only
changes where a density calculation is "remembered" needed to be
updated.
Without this, some devices will recreate `MainActivity` when switching
resolutions for playback. That recreation would cause playback to end
immediately.
### Related issues
Fixes#1809
### Testing
Tested on Onn 4k Pro & nvidia shield
I was able to reproduce on the Onn, but not the Shield, so this might be
device and/or API level specific
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes requesting additional seasons of a show if a previous request has
already been approved
Now if the previous request is already approved/completed/etc, a new
request will be created instead of trying to update the previous one.
Pending requests will still be updated as before instead of requesting a
new one.
### Related issues
Fixes#1702
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes an edge case where clicking on an episode to go to Series Overview
wouldn't scroll to the episode if there is a special (season 0) episodes
in the episode list.
Dev note: to simplify things, if the entire dataset is cached, then just
search with `indexOf`. Often the data is cached because 20 seasons or
100 episodes are fetched initially which covers many shows.
### Related issues
Follow up to #1708
### Testing
Emulator and unit tests
## Screenshots
N/A
## AI or LLM usage
None
## Description
Ensure that a playlist or collection's items are random sorted on the
home page, if applicable.
Previously, the request did sort by random then by sort name resulting
in only sorting by sort name.
However, there are still issues with random sorting in general, see
#1819
### Related issues
Technically fixes#1806
Further bugs in #1819
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
By default, Wholphin plays music with hardware audio offloading enabled.
This delegates audio decoding to the device's hardware DSP, making
playback stability highly dependent on the manufacturer's system audio
implementation. On certain hardware (such as my TCL TVs, e.g., the
Chinese Model Q9L Pro), this implementation causes music playback to
hang indefinitely at 0 seconds.
### Related issues
#1372
### Testing
Tested on a TCL TV (Q9L Pro):
- Some musics playback hangs at 0s with offloading enabled.
- Disabling audio offloading fixes the issues for all medias.
## Screenshots
<!-- Please include screenshots if the PR alters any UI elements -->
<img width="4284" height="5712" alt="IMG_9486"
src="https://github.com/user-attachments/assets/ddf95e68-6ebd-42f9-9565-568de4fbfc42"
/>
## AI or LLM usage
Developed in pair with Gemini and human-reviewed, tested.
---------
Co-authored-by: Damontecres <damontecres@gmail.com>
## Description
This PR has updates the Now Playing page.
Now only the song's backdrops and the song's artists' backdrops will
show. First, if the song has any backdrops (probably pretty uncommon),
they will be shuffled and shown, then if the song's artists have
backdrop, those are shuffled and shown. The backdrop changes every 2
minutes unless there's <15s left in the song to prevent rapid changes.
Note: album backdrops and album artists not directly linked to the
specific song are not included.
If a song has a lyrics and the user is scrolling through them, if the
user doesn't scroll for 5 seconds, the focus leaves the lyrics and they
scroll to the current line if available.
Dev note: Both backdrop & lyric updates are refactored to use `Flow`s to
trigger lookups
### Related issues
Fixes#1170
### Testing
Emulator, I need to test it longer term
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds an optional boolean parameter `shuffle` that is read for the
playback intent. When true, it will cause the resulting media to be
shuffled if applicable.
Something can be shuffled if the `itemId` is a grouping on media such as
a playlist, series, season, or even library.
### Related issues
Depends on #1756
### Testing
Emulator with the documented command
## Screenshots
N/A
## AI or LLM usage
None