Commit graph

616 commits

Author SHA1 Message Date
Ray
8b40e89b8a
Update MPV playback threading model (#481)
There's no user facing changes in this PR

This PR updates `MpvPlayer` to use a threading model more similar to
[ExoPlayer's
model](https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#threading-model).

There's now a dedicated thread looper message queue between the UI
interactions on the main thread and calls to `libmpv`. This is necessary
because previously, the main thread would make the calls into `libmpv`.
`libmpv` uses internal mutex locking for some operations which meant
that the main thread would be blocked momentarily.

Now, the UI issues a command (eg seek to X position) and the command is
added to the thread looper queue and processed on that separate thread.
This uses the standard Android Handler/Looper mechanisms.

Related to #235
2025-12-17 18:24:25 -05:00
Ray
7320c12f0c
Merge pull request #497 from damontecres/translations-2025-12-17
Fix merge
2025-12-17 17:19:36 -05:00
Ray
8c0defb772
Add translations as of 2025-12-17 (#495)
Adds another batch of translated strings.

Thank you to all of the contributors!

---------

Co-authored-by: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
Co-authored-by: ymir <ymir@noreply.codeberg.org>
Co-authored-by: ianvm <ianvm@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@noreply.codeberg.org>
Co-authored-by: American_Jesus <american_jesus@noreply.codeberg.org>
Co-authored-by: Vistaus <vistaus@noreply.codeberg.org>
Co-authored-by: Geekice <geekice@noreply.codeberg.org>
Co-authored-by: opakholis <opakholis@noreply.codeberg.org>
Co-authored-by: RabSsS <rabsss@noreply.codeberg.org>
Co-authored-by: arcker95 <arcker95@noreply.codeberg.org>
Co-authored-by: Rand0mB0y <rand0mb0y@noreply.codeberg.org>
Co-authored-by: SimonHung <simonhung@noreply.codeberg.org>
Co-authored-by: efko <efko@noreply.codeberg.org>
Co-authored-by: DragoWing <dragowing@noreply.codeberg.org>
Co-authored-by: oyvhov <oyvhov@noreply.codeberg.org>
2025-12-17 17:01:08 -05:00
Ray
8479d8621d
Bump dependency versions, notably media3 (#496)
## Description
Bumps dependency versions, notably media3/ExoPlayer to `1.9.0`

### Related issues

Fixes #108
Fixes #355
Fixes #479
2025-12-17 17:00:15 -05:00
Priit Jõerüüt
badb56880b
Translated using Weblate (Estonian)
Currently translated at 100.0% (314 of 314 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2025-12-17 18:25:40 +00:00
oyvhov
e19cf0de2c
Translated using Weblate (Norwegian Nynorsk)
Currently translated at 8.0% (25 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nn/
2025-12-17 18:25:40 +00:00
oyvhov
0ed15a3251
Added translation using Weblate (Norwegian Nynorsk) 2025-12-17 18:25:40 +00:00
efko
c94dcbf3dd
Translated using Weblate (Greek)
Currently translated at 57.8% (180 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/el/
2025-12-17 18:25:40 +00:00
Outbreak2096
461caaa8fd
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (311 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2025-12-17 18:25:40 +00:00
DragoWing
5ca5826cb3
Translated using Weblate (Dutch)
Currently translated at 99.3% (309 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2025-12-17 18:25:40 +00:00
Priit Jõerüüt
e816151651
Translated using Weblate (Estonian)
Currently translated at 100.0% (311 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2025-12-17 18:25:40 +00:00
arcker95
da12095434
Translated using Weblate (Italian)
Currently translated at 100.0% (311 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2025-12-17 18:25:40 +00:00
American_Jesus
5f3a7ebff1
Translated using Weblate (Portuguese)
Currently translated at 100.0% (311 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2025-12-17 18:25:40 +00:00
efko
a67bd0f83f
Translated using Weblate (Greek)
Currently translated at 44.6% (139 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/el/
2025-12-17 18:25:40 +00:00
SimonHung
cb62344e53
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 87.1% (271 of 311 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2025-12-17 18:25:40 +00:00
ymir
f2e3ae2447
Translated using Weblate (French)
Currently translated at 100.0% (310 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2025-12-17 18:25:40 +00:00
Codeberg Translate
131b44c439
Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/
2025-12-17 18:25:40 +00:00
Rand0mB0y
7da9189b4d
Translated using Weblate (Greek)
Currently translated at 20.3% (63 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/el/
2025-12-17 18:25:40 +00:00
Rand0mB0y
1497a0718b
Added translation using Weblate (Greek) 2025-12-17 18:25:40 +00:00
opakholis
6a7a2a5c79
Translated using Weblate (Indonesian)
Currently translated at 98.0% (304 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2025-12-17 18:25:40 +00:00
RabSsS
d0000e4811
Translated using Weblate (French)
Currently translated at 98.7% (306 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2025-12-17 18:25:40 +00:00
Outbreak2096
cae07b0acd
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (310 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2025-12-17 18:25:40 +00:00
Vistaus
79b84cfe6b
Translated using Weblate (Dutch)
Currently translated at 100.0% (310 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2025-12-17 18:25:40 +00:00
arcker95
a68e9d8eb9
Translated using Weblate (Italian)
Currently translated at 100.0% (310 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2025-12-17 18:25:40 +00:00
RabSsS
c0a68c5daa
Translated using Weblate (French)
Currently translated at 98.0% (304 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2025-12-17 18:25:40 +00:00
opakholis
dcd9560113
Translated using Weblate (Indonesian)
Currently translated at 84.1% (261 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2025-12-17 18:25:40 +00:00
Priit Jõerüüt
5dbc2049cb
Translated using Weblate (Estonian)
Currently translated at 100.0% (310 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2025-12-17 18:25:40 +00:00
American_Jesus
1c38979c48
Translated using Weblate (Portuguese)
Currently translated at 100.0% (310 of 310 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2025-12-17 18:25:40 +00:00
Outbreak2096
1caa7b32c4
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 91.5% (280 of 306 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2025-12-17 18:25:40 +00:00
American_Jesus
9fde9c70ed
Translated using Weblate (Portuguese)
Currently translated at 99.6% (305 of 306 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2025-12-17 18:25:40 +00:00
Geekice
b8891eee35
Translated using Weblate (Italian)
Currently translated at 97.0% (297 of 306 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2025-12-17 18:25:40 +00:00
Priit Jõerüüt
4b3efc097e
Translated using Weblate (Estonian)
Currently translated at 100.0% (306 of 306 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2025-12-17 18:25:40 +00:00
American_Jesus
eef886b285
Translated using Weblate (Portuguese)
Currently translated at 99.3% (304 of 306 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2025-12-17 18:25:40 +00:00
Outbreak2096
1c890f64aa
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (272 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2025-12-17 18:25:40 +00:00
Vistaus
8b20c392f3
Translated using Weblate (Dutch)
Currently translated at 100.0% (272 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2025-12-17 18:25:40 +00:00
ymir
56416da486
Translated using Weblate (French)
Currently translated at 100.0% (272 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2025-12-17 18:25:40 +00:00
American_Jesus
ca7c8b2e5f
Translated using Weblate (Portuguese)
Currently translated at 90.0% (245 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2025-12-17 18:25:40 +00:00
Outbreak2096
8bdd030f42
Added translation using Weblate (Chinese (Simplified Han script)) 2025-12-17 18:25:40 +00:00
Codeberg Translate
6e77afe672
Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/
2025-12-17 18:25:39 +00:00
ianvm
4fac067fb0
Translated using Weblate (Dutch)
Currently translated at 100.0% (272 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2025-12-17 18:25:39 +00:00
ymir
18a2f648ca
Translated using Weblate (French)
Currently translated at 100.0% (272 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2025-12-17 18:25:39 +00:00
Priit Jõerüüt
6776640087
Translated using Weblate (Estonian)
Currently translated at 99.6% (271 of 272 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2025-12-17 18:25:39 +00:00
Ray
7581b05b97
Move time tracking into a CompositionLocal (#493)
## Description
Creates a `CompositionLocal` which tracks the current time in a single
place and is usable anywhere in the app.

Can be used such as:
```kotlin
val now = LocalClock.current.now
val details = remember(item, now) {
  // Create detail strings based the item and current time
  // This will be recomposed/updated whenever the time changes
}
```

### Related issues
Related to #475
2025-12-17 13:25:36 -05:00
YogiBear12
2908f539e2
Redesign alphabet picker to fit all letters on screen (#480)
- Switch to tv.material3.Button with ButtonDefaults for better styling
- Add opacity changes based on focus (0.85f focused, 0.2f unfocused)
- Keep selected letter fully visible when picker is unfocused
- Reduce button size from 24.dp to 14.dp to fit all letters
- Reduce spacing between letters (1.1.dp vertical, 2.dp horizontal)
- Use transparent backgrounds for unfocused letters
- Use border color for selected letter when focused, tertiary when
unfocused
- Add Box with CircleShape clip to prevent focus indicator overflow
- Reduce font size by 15%
- Add 16.dp end padding to push picker away from screen edge

When using the 'Show details' view option, the alphabet picker will
still overflow the bottom edge of the screen. I find this an acceptable
option though, as the backdrop pushes the card grid further down the
page.

Closes https://github.com/damontecres/Wholphin/issues/386

>[!NOTE]
> AI was used in the making of this PR

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2025-12-17 12:16:46 -05:00
YogiBear12
801ff5e67b
Redesign Select Server and Select User screens (#478)
Redesign Select Server and Select User screens with horizontal card
layout, similar to traditional streaming services

- Replace vertical lists with horizontal list of icons
- Center align text in Quick Connect and Username/Password modals
- Display Jellyfin profile images
- Fallback to first letter of username if no image is available
- Filter out duplicate server entries in the auto-discovery list

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2025-12-17 11:56:19 -05:00
Ray
bbfbc13532
Backdrop improvements (#476)
## Description

The backdrop image shown on most pages is now configurable in advanced
settings:
* Image w/ dynamic color - Shows the backdrop with dynamic color filling
the entire space (new default)
* Image only - Shows only the backdrop image (current Wholphin behavior)
* None - Don't show any backdrops

Additionally, the backdrop is retained between page loads for the same
items.

## Acknowledgements

Big thanks to @YogiBear12 from which the idea and implementation for the
dynamic color was adapted from!

Code adapted from
https://github.com/YogiBear12/Halfin/blob/main/COLOR_EXTRACTION_AND_BACKDROP.md#backdrop-fading-and-transitions

## Issues

Closes #221
Closes #461
Closes #442



https://github.com/user-attachments/assets/1acbc487-c697-44d7-89ed-e7e4c9169360
2025-12-17 11:18:57 -05:00
Ray
8224f83678
Add pull request template 2025-12-16 20:01:56 -05:00
Damontecres
5b21e352bc
Update development.md with info on setting up the dev environment 2025-12-16 19:35:14 -05:00
Damontecres
f77d345abf
Allow null ItemTrackModification from DB 2025-12-16 13:52:44 -05:00
damontecres
d5a55ce4ad
Fix trickplay image scaling (#477)
Fix to #467 to scale the tiles by the actual calculated ratio based on
the server's fixed width and our target width instead of using the
general density scaling

I verified this on 1080p & 4k with 4:3, 16:9, & 2.35:1 videos.

Fixes
https://github.com/damontecres/Wholphin/issues/432#issuecomment-3657381461
2025-12-15 16:53:06 -05:00