Commit graph

477 commits

Author SHA1 Message Date
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
damontecres
ebfc00c016
Always save series audio & subtitle preferences regardless of preferred languages (#473)
## Description

This PR adjust the logic for audio & subtitle track selection for TV
series. Instead of only saving for future episodes if the newly selected
track is a different language than the user's preferred, always save it.

Basically this means if you change the audio or subtitle language for an
episode, the same audio or subtitle language will be used for future
episodes (if available).

Also, fixes the "default" subtitle mode to take the user's preferred
language into consideration.

## Issues
Follow up to https://github.com/damontecres/Wholphin/issues/378 &
https://github.com/damontecres/Wholphin/issues/427

Fixes #469
2025-12-15 12:15:17 -05:00
damontecres
ab8bbf2bd7
MPV: Adjust subtitle delay/offset (#470)
**This is for MPV playback backend only!** Since this only works in MPV
for now, the option is not shown if using ExoPlayer.

Adds a setting (the gear icon during playback) to adjust the subtitle
delay.

A negative delay shows subtitles sooner. A positive delay shows them
later. For example, if a subtitle is supposed to show between
1000ms-2000ms, a negative 250ms delay will show it at 750ms-1750ms
instead.

The delay is persisted between plays of the same media & subtitle track.

Ref: #12 


![subtitle_delay](https://github.com/user-attachments/assets/824e3a28-650a-4619-9535-b67addaabf1e)
2025-12-15 10:06:36 -05:00
Damontecres
3f5ce703d2
Release v0.3.6 2025-12-14 19:21:33 -05:00
damontecres
7ab39eba57
Improve trickplay image preview speed (#467)
Moves the clipping of trickplay images from the image loading layer to
the composition/graphics layer.

Effectively, this PR loads and renders the entire trickplay image which
is then moved around to the right position and finally is clipped so
only a single tile is shown. Since moving the image around on screen
plsu clipping is 1) very fast and 2) done during recompositions, this
means it is _much_ faster at rendering each trickplay tile image and
Coil only has to load the image once.

Fixes #432
2025-12-14 19:04:01 -05:00
damontecres
ff43f8b1b5
Use sdk provided device name (#457)
Use the SDK to get the device name since it handles older Android
versions and has a fallback.

This should not change the device ID or name if the device was working
before this change.

Maybe related to #454
2025-12-14 10:07:46 -05:00
damontecres
43703436c5
Switch back to older text input (#459)
Revert some of the changes to input text fields from #327. This PR
switches back to using the `value/onValueChange` variants for single
line input.

Fixes #413
2025-12-13 21:03:41 -05:00
damontecres
a386028b6b
Fix possible NPE during refresh rate switch (#448)
Use current thread's looper or fallback to the main looper for the
display change callback.

This is the behavior in newer versions of Android whereas older versions
assumed a non-null looper.

Fixes #446
2025-12-13 17:58:30 -05:00
damontecres
d2e1c4683d
Only use server provided aspect ratios if >0 (#453)
Fixes #451
2025-12-13 16:43:49 -05:00
damontecres
6edcfb1067
Customize TV guide display (#443)
Adds a view options button for the TV guide to allow some basic
customization:
* Show details header
* Adjust how channels are sorted
* Toggle color coding for programs

Related to #250 
Closes #288 
Fixes #439
2025-12-12 22:05:01 -05:00
damontecres
0d8800863b
Prefetch trickplay images (#445)
Prefetch trickplay images and cache them so that quick scrolling doesn't
require network calls and images will appear significantly faster

Fixes #432
2025-12-12 22:04:52 -05:00
Damontecres
652becd685
Disable pin check 2025-12-12 19:16:43 -05:00
Amar Sandhu
c3f6fd7f60
Add media information dialog. (#416)
Addresses #414

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2025-12-12 11:49:30 -05:00
damontecres
6d6156917c
Update readme with features 2025-12-11 16:28:03 -05:00
damontecres
ce2e34294c
Merge pull request #426 from damontecres/translations-2025-12-11
Fix merge from #425
2025-12-11 13:05:10 -05:00
damontecres
e381df0295
Add batch of translations (#425)
Update translations from
https://translate.codeberg.org/projects/wholphin/

---------

Co-authored-by: damontecres <damontecres@noreply.codeberg.org>
Co-authored-by: n8llcaster <n8llcaster@noreply.codeberg.org>
Co-authored-by: RabSsS <rabsss@noreply.codeberg.org>
Co-authored-by: Vistaus <vistaus@noreply.codeberg.org>
Co-authored-by: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
Co-authored-by: sarjona98 <sarjona98@noreply.codeberg.org>
Co-authored-by: SimonHung <simonhung@noreply.codeberg.org>
Co-authored-by: arcker95 <arcker95@noreply.codeberg.org>
Co-authored-by: streamyfinchris <streamyfinchris@noreply.codeberg.org>
Co-authored-by: opakholis <opakholis@noreply.codeberg.org>
Co-authored-by: Tellos <tellos@noreply.codeberg.org>
Co-authored-by: SuperCool <supercool@noreply.codeberg.org>
Co-authored-by: Pawsi <pawsi@noreply.codeberg.org>
Co-authored-by: American_Jesus <american_jesus@noreply.codeberg.org>
Co-authored-by: ictu <ictu@noreply.codeberg.org>
Co-authored-by: adambibor <adambibor@noreply.codeberg.org>
2025-12-11 13:03:27 -05:00
damontecres
2403a44c18
Add view option for hiding card titles (#422)
Adds a view option for grids to show/hide titles. It is enabled by
default.

Closes #403
2025-12-11 13:03:16 -05:00
damontecres
f63a30d295
Add additional ffmpeg audio decoders (#423)
Adds a few more ffmpeg audio decoders for ExoPlayer

Fixes #417
2025-12-11 12:55:52 -05:00
Damontecres
c2ad0a6a8a
Fix pre-commit 2025-12-11 12:55:31 -05:00
damontecres
c5c0dff705
Fix subtitle smart mode to check chosen audio language (#420)
Fixes how the smart subtitle mode logic works

Fixes #406
2025-12-11 12:52:21 -05:00
damontecres
319b46983f
Play item directly when clicking play button on remote (#424)
On the home page or any grid, if focused on a "playable" item (movie,
episode, etc), pressing the Play or Play-Pause button on the remote will
immediately start playback.

Dev note: Also guards against an edge case where an item passed into
playback doesn't have media sources due to more limited item fields in
the query.
2025-12-11 12:52:13 -05:00
Priit Jõerüüt
e4e56bf7e1
Translated using Weblate (Estonian)
Currently translated at 100.0% (271 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2025-12-11 15:40:38 +00:00
adambibor
163da18f73
Translated using Weblate (Hungarian)
Currently translated at 62.3% (169 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/hu/
2025-12-11 15:40:38 +00:00
adambibor
86d58eba04
Added translation using Weblate (Hungarian) 2025-12-11 15:40:38 +00:00
Pawsi
2f5d6f7e1c
Translated using Weblate (Polish)
Currently translated at 89.6% (243 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2025-12-11 15:40:38 +00:00
ictu
7d465b1a60
Translated using Weblate (Polish)
Currently translated at 89.6% (243 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2025-12-11 15:40:38 +00:00
Pawsi
048bf89a66
Translated using Weblate (Polish)
Currently translated at 89.6% (243 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2025-12-11 15:40:38 +00:00
American_Jesus
f0b3f01fba
Translated using Weblate (Portuguese)
Currently translated at 27.3% (74 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2025-12-11 15:40:38 +00:00
Pawsi
5ee8df7939
Added translation using Weblate (Polish) 2025-12-11 15:40:38 +00:00
streamyfinchris
c5712415f2
Translated using Weblate (Swedish)
Currently translated at 85.2% (231 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2025-12-11 15:40:38 +00:00
SuperCool
4428f6b093
Added translation using Weblate (Hebrew) 2025-12-11 15:40:38 +00:00
Vistaus
4dd4aa8198
Translated using Weblate (Dutch)
Currently translated at 100.0% (271 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2025-12-11 15:40:38 +00:00
SimonHung
ecab42e443
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 90.0% (244 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2025-12-11 15:40:38 +00:00
arcker95
66b60bab4d
Translated using Weblate (Italian)
Currently translated at 100.0% (271 of 271 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2025-12-11 15:40:38 +00:00
Tellos
527d104074
Translated using Weblate (Russian)
Currently translated at 100.0% (267 of 267 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ru/
2025-12-11 15:40:38 +00:00
Vistaus
c984c02ff5
Translated using Weblate (Dutch)
Currently translated at 100.0% (267 of 267 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2025-12-11 15:40:37 +00:00
arcker95
a0472fdbed
Translated using Weblate (Italian)
Currently translated at 100.0% (267 of 267 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2025-12-11 15:40:37 +00:00
Tellos
01d10ea128
Translated using Weblate (Russian)
Currently translated at 91.7% (244 of 266 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ru/
2025-12-11 15:40:37 +00:00
Tellos
062e7f331d
Translated using Weblate (Russian)
Currently translated at 65.7% (175 of 266 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ru/
2025-12-11 15:40:37 +00:00
arcker95
ac8a2a40b7
Translated using Weblate (Italian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2025-12-11 15:40:37 +00:00