Commit graph

1404 commits

Author SHA1 Message Date
Damontecres
0a1f2a5fef
Update renovate settings (#1588)
Just updating the renovate config to separate out android TV
dependencies & use digests for GHA.
2026-06-18 12:00:39 -04:00
Damontecres
e17ae3eb8a
Use Wholphin-specific dispatchers (#1583)
## Description
Switches all usages of `kotlinx.coroutines.Dispatchers` to
`WholphinDispatchers`.

`WholphinDispatchers` provides an easier and more reliable mechanism to
use a test dispatcher in unit tests. For regular app usage,
`WholphinDispatchers` just delegates to `Dispatchers`.

There are no user facing changes

### Related issues
None

### Testing
Basic emulator testing & unit tests

## Screenshots
N/A

## AI or LLM usage
None
2026-06-18 11:17:19 -04:00
Damontecres
ddbec0da73
Fix issues from #1530 2026-06-14 19:55:01 -04:00
jankg
8534c58426
Translated using Weblate (German)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-06-14 17:36:51 -04:00
Damontecres
fa5cc99c3b
De-duplicate string resource keys (#1560)
## Description
Ensures that all string & plural resource keys are unique. This should
help make sure all of the strings are shown in weblate's translation.

### Related issues
Related to #1551

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-12 01:24:24 -04:00
Damontecres
38b4a8c4de
Play or shuffle series, season, collections, & playlists from context menu (#1544)
## Description
Adds options to the context menu to play or shuffle items in a series,
season, collection, or playlist. So you can long click a TV show and
play it directly.

Playing a TV show will play the next up episode (same as the play button
on the series detail page).

Playing a season, collection, or playlist will start from the beginning.

Also, removes the green play arrows and uses the same neutral color as
other icons.

### Related issues
Closes #1451
Closes #1507

### Testing
Emulator from library pages & series detail pages

## Screenshots
N/A

## AI or LLM usage
None
2026-06-10 19:30:07 -04:00
Damontecres
f7f0ea9cca
Fixes missing parental ratings & focus loss when changing filters (#1559)
## Description
- Ensures all parent ratings are shown in the filter drop down
- Fixes focus loss after filtering library and there are no results

### Related issues
Fixes #1535 (along w/ #1529)
Fixes #1534

### Testing
Emulator w/ a UK movie library

## Screenshots
N/A

## AI or LLM usage
None
2026-06-10 19:29:49 -04:00
Damontecres
01bd3249fa
Fixes two row bouncing UI issues (#1543)
## Description

Fixes row bounce using `SeasonCard` when are two exactly two items. This
was done by calculating the y-offset in the `layout` modifier instead of
`offset`. This has the side effect of probably being very slightly more
efficient since only 1 animation state is needed now.

Fixes row bounce on the second row of the home page if the first row is
empty and not shown.

### Related issues
Fixes #1528
Fixes #1271

### Testing
Emulator in different situations. Also checked the layout inspector to
make sure the optimizations from #1184 weren't affected

## Screenshots
N/A

## AI or LLM usage
None
2026-06-08 17:23:09 -04:00
Damontecres
93d601e7bf
Improvements to debug page (#1538)
## Description
Makes some improvements to the debug page. Also adds some audio device
listing for debugging.

### Related issues
N/A

### Testing
Emulator & shield

## Screenshots
N/A

## AI or LLM usage
None
2026-06-08 13:45:48 -04:00
Damontecres
b49926f80b
Store remembered tabs in app database instead of preferences (#1541)
## Description
Moves storing the remembered tabs from app preferences to the app
database. This means deleting the user will remove the remembered tabs
and the app preferences file is smaller and faster to load.

The remembered tabs are migrated automatically when the app is updated.

There are no significant user facing changes in this PR.

### Related issues
N/A

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-08 13:45:38 -04:00
Damontecres
a4ee1e5175
Only show relevant parental ratings when filtering (#1529)
## Description
Updates the parental rating filter so it only shows the relevant options
instead of all of them. This is now the same behavior as the web UI.

Additionally, the filter options are cached for a short time so the UI
doesn't need to load them every time the menu is opened.

Dev note: Refactors `FilterUtils` into a service which allows for the
caching

### Related issues
Closes #410

### Testing
Emulator with movie & tv show libraries

## Screenshots
N/A

## AI or LLM usage
None
2026-06-07 07:15:40 -04:00
Damontecres
d1b8c09615
Add a shortcut to chosing the version of an item (#1522)
## Description
Based on feedback from users, many felt it was difficult to 1) tell if
multiple version of an item existed and 2) choose the version they want

So this PR adds a new expandable button next to Play/Resume/Restart to
choose the version. It is a shortcut to the More->Choose Version dialog,
but also serves as a more prominent indicator that there are multiple
versions. The button is only shown if there are 2+ versions to choose
from.

Also adds displaying the bitrate in the choose version dialog just in
case there are identically named versions with the same resolution.

Dev note: I also added some docs for classes & functions related to
choosing a version

### Related issues
Related to #652

### Testing
Emulator

## Screenshots
<img width="1280" height="720" alt="choose_version_button_unfocused
Large"
src="https://github.com/user-attachments/assets/4f6051ef-b6ae-4fad-9d54-3840523350ed"
/>

<img width="1280" height="720" alt="choose_version_button Large"
src="https://github.com/user-attachments/assets/0e8412bc-2d18-4c6c-987a-2f067363ad2c"
/>

## AI or LLM usage
None
2026-06-07 07:15:30 -04:00
Damontecres
99fab9a383
Release v1.0.1 2026-06-05 12:30:39 -04:00
Damontecres
2a002f3d11
Translations 2026-06-05 (#1526)
Updates translations as of 2026-06-05

Thanks to all of the contributors!

---------

Co-authored-by: streamyfinchris <streamyfinchris@noreply.codeberg.org>
Co-authored-by: SimonHung <simonhung@noreply.codeberg.org>
Co-authored-by: arcker95 <arcker95@noreply.codeberg.org>
Co-authored-by: TheMatrixan <thematrixan@noreply.codeberg.org>
Co-authored-by: tal_sarid <tal_sarid@noreply.codeberg.org>
Co-authored-by: pavel-miniutka <pavel-miniutka@noreply.codeberg.org>
Co-authored-by: nofkclue <nofkclue@noreply.codeberg.org>
Co-authored-by: ymir <ymir@noreply.codeberg.org>
Co-authored-by: American_Jesus <american_jesus@noreply.codeberg.org>
Co-authored-by: Wit Krittawit <krittawit.st@gmail.com>
Co-authored-by: North-DaCoder <north-dacoder@noreply.codeberg.org>
2026-06-05 11:43:23 -04:00
North-DaCoder
01081b1985
Translated using Weblate (German)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-06-05 14:01:15 +00:00
Wit Krittawit
be1b0c0a35
Translated using Weblate (Thai)
Currently translated at 96.8% (557 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/th/
2026-06-05 14:01:15 +00:00
American_Jesus
33dd630a59
Translated using Weblate (Portuguese)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2026-06-05 14:01:15 +00:00
ymir
8a5988b95e
Translated using Weblate (French)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-06-05 14:01:14 +00:00
nofkclue
9e15db4143
Translated using Weblate (German)
Currently translated at 99.8% (574 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-06-05 14:01:14 +00:00
pavel-miniutka
ac2e1e8f64
Translated using Weblate (Belarusian)
Currently translated at 1.5% (9 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/be/
2026-06-05 14:01:14 +00:00
tal_sarid
5cc9d3697d
Translated using Weblate (Hebrew)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/he/
2026-06-05 14:01:14 +00:00
TheMatrixan
5fb207ce08
Translated using Weblate (Polish)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-06-05 14:01:14 +00:00
arcker95
5375c279ab
Translated using Weblate (Italian)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-06-05 14:01:14 +00:00
SimonHung
0035367c83
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-06-05 14:01:14 +00:00
streamyfinchris
7bd555aaa7
Translated using Weblate (Swedish)
Currently translated at 86.6% (498 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-06-05 14:01:14 +00:00
Damontecres
2cc25d068d
Release v1.0.0 2026-06-05 14:01:14 +00:00
Damontecres
e2a6ae6be4
Two more bug fixes (#1521)
## Description
Fixes bugs:
- Follow up to #1487 since the 404 exception can be ignored in some
cases
- Fixes a only-on-main-thread exception when clearing the secure flag in
some cases

### Related issues
Related to #1469

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-05 10:01:08 -04:00
Justin Caveda
0842c35e34
Fix combined search results losing keyboard focus when typing (#1524)
## Description
Minor tweak to prevent the keyboard from losing focus when typing search
queries when "combine search results" is enabled

### Related issues
Fixes #1523

### Testing
Emulator only

## Screenshots
N/A

## AI or LLM usage
None

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2026-06-05 09:54:06 -04:00
Damontecres
a0869ca6e4
Several minor fixes (#1505)
## Description
Collecting some minor fixes together:

- Adds error handling when submitting a discover/seerr request,
previously there was no visual feedback if the request failed
- Fix MpvPlayer reporting that it was buffering forever
- Fix discover results row on regular search page not being clickable
- Fix focus loss when returning to movie details after playback advanced
enough to switch the button from Play to Resume
- Fix some focus issues when returning to the TV guide page

### Related issues
Related to #1503 for MPV
Fixes #1500
Fixes #1508
Fixes #1501

### Testing
Emulator & nvidia shield

## Screenshots
N/A

## AI or LLM usage
None
2026-06-03 20:47:07 -04:00
Damontecres
a1b372667b
Fix highlighting the wrong 'more' nav drawer item (#1515)
## Description
Fixes an issue where the wrong nav drawer item would be highlighted in
the "More" section

Previously, displaying the discover nav item was partially handled in
the view model state and partially within the UI code which caused this
bug. This PR moves it all into the view model state.

### Related issues
N/A

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-03 20:46:57 -04:00
Damontecres
471dbd62db
Fixes a crash during playback (#1514)
## Description
Fixes a crash that could occur during the beginning of playback

Also adds better handling for clicking next extremely fast

### Technical details

The playlist objects would be created on the IO thread and it had a
`mutableIntStateOf` to track the current index. This meant that there is
a race conditions for the IO thread to commit the snapshot for the main
thread to see them. If the main thread is faster, it will crash.

To fix that, this PR moves the mutable state in `Playlist` into the
`PlaybackState` flow in the view model. This enures both the background
threads and re-compositions have the right state.

### Related issues
Fixes #1509 

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-03 12:41:13 -04:00
Damontecres
5ae452155e
Fix showing live tv programs on home page (#1504)
## Description
Fixes the inconsistent live tv programs shown on the home page by using
a different API endpoint & filtering.

Also some UI fixes:
- Use the "Watch live" string consistently for the row instead of it
sometimes switching to "Live TV"
- Adjust the "Ends at" in the home page header to show the actual end
time
- Show the channel name in "quick details"
- Show season & episode number, if applicable, in "quick details"

### Related issues
Fixes #1080

### Testing
Nvidia shield w/ fake EPG data

## Screenshots
N/A, just UI fixes, nothing new

## AI or LLM usage
None
2026-06-03 12:40:53 -04:00
Damontecres
6c64470c28
Only show view more card if row has more items (#1493)
## Description
Only show the view more card at the end of row if there are actually
more items (or at the limit).

Also reduces the size of the arrow a bit

### Related issues
Related to #1392 

### Testing
Emulator with different max items setting

## Screenshots
N/A

## AI or LLM usage
None
2026-05-30 17:41:44 -04:00
Damontecres
68836bb834
Fix click/long click issues on some view more grid pages (#1486)
## Description
On a library recommended tab, if you clicked View More, clicking a card
on the grid would directly play the item instead of the regular
behavior.

This PR fixes that and simplifies the code required to support simple
context menus.

### Related issues
Fixes #1480

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-05-30 17:41:27 -04:00
Damontecres
7660c53e3a
Don't show home row w/ 404 Not Found (#1487)
## Description
If a home page row returns 404 Not Found, treat it as empty and don't
show it.

It will still show as an error on home row settings, since this page
doesn't hide empty rows.

Also fixes a bug where you can't scroll up if there are 3+ empty rows
before the current row.

### Related issues
Closes #1469

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-05-30 16:56:52 -04:00
Damontecres
273a6138c6
Add more sort options to different types (#1488)
## Description
Adds more sorting options, notably premier date & ratings, to different
media types.

### Related issues
Closes #1417
Closes #1429
Replaces #1420

### Testing
Emulator on movie genre's items and music video libraries

## Screenshots
N/A

## AI or LLM usage
None
2026-05-30 16:56:33 -04:00
Damontecres
81e5f31401
Workaround for resource shrinking w/ split ABIs 2026-05-27 13:56:18 -04:00
Damontecres
30837d0a9a
Release v1.0.0 2026-05-27 13:05:32 -04:00
Damontecres
1da72c5df2
Translations as of 2026-05-27 (#1471)
Updates translations as of 2026-05-27

Thank you to all of the contributors!
2026-05-27 13:05:18 -04:00
Damontecres
967295fd5e
Fix linting 2026-05-27 12:56:46 -04:00
Outbreak2096
428f58b1e3
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-05-27 12:53:18 -04:00
idezentas
64d6579cae
Translated using Weblate (Turkish)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-05-27 12:53:18 -04:00
Priit Jõerüüt
40b080ce32
Translated using Weblate (Estonian)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-05-27 12:53:18 -04:00
danpergal84
696af7b39d
Translated using Weblate (Spanish)
Currently translated at 100.0% (575 of 575 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-05-27 12:53:18 -04:00
thotranhuu99
0dbf172742
Added translation using Weblate (Vietnamese) 2026-05-27 12:53:18 -04:00
TheMatrixan
c5fc26bbff
Translated using Weblate (Polish)
Currently translated at 100.0% (573 of 573 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-05-27 12:53:17 -04:00
opakholis
445ed91275
Translated using Weblate (Indonesian)
Currently translated at 100.0% (573 of 573 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2026-05-27 12:53:17 -04:00
danpergal84
fb8b516239
Translated using Weblate (Spanish)
Currently translated at 100.0% (573 of 573 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-05-27 12:53:17 -04:00
JoschiGrey
caa0e769da
Translated using Weblate (German)
Currently translated at 99.8% (572 of 573 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-05-27 12:53:17 -04:00
idezentas
a29dcd2ea0
Translated using Weblate (Turkish)
Currently translated at 100.0% (573 of 573 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-05-27 12:53:17 -04:00