Commit graph

1473 commits

Author SHA1 Message Date
Damontecres
a8ade9171e
Update wholphin-extensions with newer MpvPlayer (#1365)
## Description
Uses the newer version of `wholphin-extensions` which now has the Kotlin
code, so this PR removes the MPV Kotlin code from this repo. Also
updates gradle to use providers.

There are no user facing changes

### Dev notes

`wholphin-mpv` can be provided by:
1. [Fetching pre-built
binaries](https://github.com/damontecres/wholphin-extensions#pre-built-binaries)
(Preferred method for devs)
2. Building `wholphin-extensions` from
[source](https://github.com/damontecres/wholphin-extensions#build-from-source)
3. Using `wholphin-mpv-stub` (the new module added in this PR) which
allows for compiling Wholphin, but will throw exceptions if MPV is used
during runtime

### Related issues
Related to #1172 

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-26 12:50:45 -04:00
Damontecres
f5ce9745ba
Several UI/UX minor changes (#1623)
## Description
Gathering some smaller UI/UX changes:
- Default to the user's preferred subtitle language when
searching/downloading subtitles and if unset, fall back to the UI's
language
- Only show >0s runtime on quick details & don't show negative ends at
- On the OS channel row for recently added, only include movies &
episodes
- Only show movies & episodes to "Recently Added" Android OS channel
- Fix context menu for adding songs & albums to the music queue

### Related issues
Related to #1339 & #1484
Fixes #1617
Fixes
https://github.com/damontecres/Wholphin/issues/1329#issuecomment-4440684328

### Testing
Just on the emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-26 12:43:56 -04:00
Damontecres
e5887dfa15
Better UX for separate SDR vs HDR subtitle styles (#1622)
## Description
This PR moves the separated HDR subtitle style behind a toggle. This
means users must now opt-in to using separated SDR vs HDR subtitle
styles. This is a better UX for users who want to customize the style
but use the same styles for both.

Users who have changed the HDR subtitles previously will have the toggle
enabled automatically. If the user hasn't changed HDR style or their SDR
& HDR styles are the the same, the toggle will be disabled.

Also, fixes a bug where when playback switched between SDR or HDR, the
subtitle styles might not be updated.

### Related issues
Closes #1603

### Testing
Emulator & unit tests for migration

## Screenshots
N/A

## AI or LLM usage
None
2026-06-24 19:26:05 -04:00
Christian Tismer-Sperling
8a684545ac
Respect system 24-hour setting in clock time format (#1619)
## Description
<!-- Describe the changes in detail -->
The clock ignored the device's system 24-hour preference:
getTimeFormatter derived 12/24h purely from the locale. This reads
DateFormat.is24HourFormat and builds the time pattern from it, so the
clock follows the system setting.

### Related issues
<!-- If this is a new feature or a change, there must be a discussion in
an issue first, reference the issue here -->
<!-- If fixing a bug, reference the bug issue here, or describe the bug,
including steps to reproduce -->

### Testing
<!-- Describe how this change was tested and on what device(s) -->
Tested on the emulator toggling the system 24-hour setting on/off.
assembleDefaultDebug, testDefaultDebugUnitTest and pre-commit (ktlint)
pass.

## 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 -->
The analysis and the fix were done by me with AI assistance (Claude). I
wrote the description myself; the English wording was polished with AI.
I understand the code and can maintain it.
2026-06-24 17:02:53 -04:00
Damontecres
d705a3ea01
Add filtering & sorting for discover grid pages (#1614)
## Description
This PR adds sort & filter options for the discover grid pages.

Sort options:
- Popularity
- Release date
- "Community rating" (TMDB user vote)
- Name

Filter options:
- Genre
- Studio/Network
- "Community rating" (TMDB user vote)
- Parental rating
- Production status (TV only)

Also, two more tabs are added to the discover page for browsing movies
and TV. These are essentially the same as clicking "View more" on the
respective rows on the Discover tab.

### Limitations

This PR hardcodes the region used for studio listing and filtering to
"United States". I'll work on a follow up PR to enable users to specify
this.

The sort & filters are not persisted. I think they should be on the two
new tabs, but not elsewhere, but this will be a follow up PR.

### Related issues
Related to #702 
Implements some of #1511
Rewrites the filter logic in #1610 

### Testing
Emulator, but needs further testing

## Screenshots
<img width="1280" height="720" alt="discover_filters Large"
src="https://github.com/user-attachments/assets/cdefb95c-c4b7-4e06-9bac-b535d372ba03"
/>


## AI or LLM usage
None
2026-06-23 17:24:37 -04:00
Damontecres
552c3b5500
Fix inconsistent playback end behavior issues (#1616)
## Description
The exact behavior of what happens when playback ends based on the
user's settings would change between versions. This PR defines the
behaviors better and includes unit tests to verify future changes won't
break it again.

### Related issues
Fixes #1548
Related to https://github.com/damontecres/Wholphin/pull/1257

### Testing
Emulator & unit tests

## Screenshots
N/A

## AI or LLM usage
None
2026-06-23 17:23:47 -04:00
Damontecres
899e3decc2
Prefer non-forced when subtitle preference is always on (#1618)
## Description
If subtitles preferences are "Always", this PR will prefer non-forced
tracks even if any forced ones are default tracks.

This is in-line with the web UI from my testing and another review of
the code.

### Related issues
Fixes
https://github.com/damontecres/Wholphin/issues/790#issuecomment-4708705576

### Testing
Unit tests

## Screenshots
N/A

## AI or LLM usage
None
2026-06-23 17:23:37 -04:00
Damontecres
7422f15bff
Fix possible crash if remembered tab no longer exists (#1613)
## Description
If remember tabs is enabled and the current remembered index is somehow
removed, the app would crash.

I think the only way a regular user can encounter this is if the server
removes a live TV recording folder that the user has
selected/remembered. All other tabbed pages use a fixed list.

### Related issues
None

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-23 11:11:39 -04:00
Damontecres
f21b29fe1b
Discover movies & tv shows by genre (#1610)
## Description
Adds genre rows for movies & TV shows to the discover page. These work
the same as on the Seerr web UI, clicking one will show media in the
genre.

### Related issues
Related to https://github.com/damontecres/Wholphin/issues/702

### Testing
Just on the emulator so far

## Screenshots
<img width="1280" height="720" alt="discover_genres Large"
src="https://github.com/user-attachments/assets/93e5ef25-e253-49bc-9009-89f814889c98"
/>


## AI or LLM usage
None
2026-06-22 19:35:44 -04:00
Damontecres
c945e1a472
Several small fixes (#1612)
## Description
- Fixes showing "null" in the subtitle for some tv episodes (usually
daily shows like Jeopardy)
- Partially fix holding back to return to the previous grid position
(still has focus issues)
- Show/hide tabs on the discover page similar to other pages in the app
- Prevent a warning server-side if a negative playback timestamp is sent

### Related issues
N/A

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-22 18:38:19 -04:00
Damontecres
77d7571276
Choose Seerr quality profile & root folder (#1604)
## Description
Adds option to select the quality profile and/or root folder when
requesting from Seerr.

The user needs "Advanced Requests" permission to use this feature. If
not, the options won't show.

### Related issues
Closes #863
Related to #702

### Testing
Emulator w/ different user permissions and different request
configurations

## Screenshots
<img width="1280" height="720" alt="request_movie Large"
src="https://github.com/user-attachments/assets/2665dcbb-e6c3-4d26-857c-b465edff6a02"
/>


## AI or LLM usage
None
2026-06-22 18:37:16 -04:00
Damontecres
4431757705
Release v1.0.2
Some checks failed
Create release / publish (push) Has been cancelled
2026-06-22 10:36:27 -04:00
Damontecres
30edde5bd2
Translations 2026-06-22 (#1609)
Updates translations as of 2026-06-22

Thank you to all of the contributors!
2026-06-22 10:36:01 -04:00
Damontecres
d85f188236
Show runtime on different versions dialog (#1607)
## Description
Small PR to add the runtime for different versions of media to the
choose version dialog.

This can be helpful to further distinguish versions such as theatrical
vs extended editions.

### Related issues
Suggested
https://github.com/damontecres/Wholphin/pull/1522#issuecomment-4766811832

### Testing
Emulator

## Screenshots
<img width="560" height="337" alt="image"
src="https://github.com/user-attachments/assets/47b0c1be-d1d7-4845-b097-a67358f584f9"
/>


## AI or LLM usage
None
2026-06-22 09:44:19 -04:00
tal_sarid
ac18bdf285
Translated using Weblate (Hebrew)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/he/
2026-06-21 21:06:25 +00:00
danpergal84
501ecf89b0
Translated using Weblate (Spanish)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-06-21 21:06:25 +00:00
wizart
db401962d0
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/uk/
2026-06-21 21:06:25 +00:00
SimonHung
c2f2f13146
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-06-21 21:06:25 +00:00
Priit Jõerüüt
0cb0d899a1
Translated using Weblate (Estonian)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-06-21 21:06:25 +00:00
Pwnisher
200b2cd06c
Translated using Weblate (Romanian)
Currently translated at 55.8% (329 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ro/
2026-06-21 21:06:25 +00:00
gatisr
52f11cc405
Translated using Weblate (Latvian)
Currently translated at 38.7% (228 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/lv/
2026-06-21 21:06:25 +00:00
alexkahler
dc5792e5ce
Translated using Weblate (Danish)
Currently translated at 66.3% (391 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/da/
2026-06-21 21:06:25 +00:00
idezentas
5568ded067
Translated using Weblate (Turkish)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-06-21 21:06:24 +00:00
Sathen
8245b49cbc
Translated using Weblate (Ukrainian)
Currently translated at 68.2% (402 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/uk/
2026-06-21 21:06:24 +00:00
veisen
78195740a3
Translated using Weblate (Czech)
Currently translated at 77.4% (456 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/cs/
2026-06-21 21:06:24 +00:00
oyvhov
77f944dd99
Translated using Weblate (Norwegian Nynorsk)
Currently translated at 54.6% (322 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nn/
2026-06-21 21:06:24 +00:00
Outbreak2096
cb2724e881
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-06-21 21:06:24 +00:00
adambibor
eac606f1dd
Translated using Weblate (Hungarian)
Currently translated at 53.4% (315 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/hu/
2026-06-21 21:06:24 +00:00
TheMatrixan
bcc84a99a4
Translated using Weblate (Polish)
Currently translated at 97.9% (577 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-06-21 21:06:24 +00:00
arcker95
2cdf5a1738
Translated using Weblate (Italian)
Currently translated at 95.4% (562 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-06-21 21:06:24 +00:00
ymir
ef1a8184da
Translated using Weblate (French)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-06-21 21:06:24 +00:00
RabSsS
d06ae90f1d
Translated using Weblate (French)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-06-21 21:06:24 +00:00
oyvhov
8adfa3f312
Translated using Weblate (Norwegian Bokmål)
Currently translated at 52.1% (307 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nb_NO/
2026-06-21 21:06:24 +00:00
n8llcaster
818e14c53a
Translated using Weblate (Slovak)
Currently translated at 85.9% (506 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-06-21 21:06:24 +00:00
Priit Jõerüüt
127f3c74c2
Translated using Weblate (Estonian)
Currently translated at 95.4% (562 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-06-21 21:06:24 +00:00
streamyfinchris
115799c6c6
Translated using Weblate (Swedish)
Currently translated at 82.3% (485 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-06-21 21:06:24 +00:00
American_Jesus
f88f78116b
Translated using Weblate (Portuguese)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2026-06-21 21:06:24 +00:00
damontecres
b522320e97
Translated using Weblate (Spanish)
Currently translated at 99.6% (587 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-06-21 21:06:24 +00:00
nofkclue
cb779c82ff
Translated using Weblate (German)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-06-21 21:06:23 +00:00
North-DaCoder
cd263fadd3
Translated using Weblate (German)
Currently translated at 100.0% (589 of 589 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-06-21 21:06:23 +00:00
Pwnisher
060641ece3
Translated using Weblate (Romanian)
Currently translated at 56.1% (330 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ro/
2026-06-21 21:06:23 +00:00
gatisr
afe26f3db4
Translated using Weblate (Latvian)
Currently translated at 38.9% (229 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/lv/
2026-06-21 21:06:23 +00:00
EmadAljohani
222c6c4924
Translated using Weblate (Arabic)
Currently translated at 25.8% (152 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ar/
2026-06-21 21:06:23 +00:00
alexkahler
66459bb2fc
Translated using Weblate (Danish)
Currently translated at 66.6% (392 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/da/
2026-06-21 21:06:23 +00:00
RafaelSoaresP
e80d689603
Translated using Weblate (Portuguese (Brazil))
Currently translated at 91.3% (537 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt_BR/
2026-06-21 21:06:23 +00:00
Sathen
8168a07dc6
Translated using Weblate (Ukrainian)
Currently translated at 68.5% (403 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/uk/
2026-06-21 21:06:23 +00:00
veisen
1ce07862af
Translated using Weblate (Czech)
Currently translated at 77.7% (457 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/cs/
2026-06-21 21:06:23 +00:00
oyvhov
1a90b480eb
Translated using Weblate (Norwegian Nynorsk)
Currently translated at 54.9% (323 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nn/
2026-06-21 21:06:23 +00:00
Rand0mB0y
7f43642467
Translated using Weblate (Greek)
Currently translated at 29.0% (171 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/el/
2026-06-21 21:06:23 +00:00
efko
5c5c5cd202
Translated using Weblate (Greek)
Currently translated at 29.0% (171 of 588 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/el/
2026-06-21 21:06:23 +00:00