Commit graph

819 commits

Author SHA1 Message Date
TheMatrixan
48455bc13f
Translated using Weblate (Polish)
Currently translated at 100.0% (610 of 610 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-30 20:09:57 -04:00
SimonHung
b86e454db6
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (610 of 610 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-30 20:09:57 -04:00
n8llcaster
c03abe4511
Translated using Weblate (Slovak)
Currently translated at 100.0% (610 of 610 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-07-30 20:09:57 -04:00
Priit Jõerüüt
8747dd30b7
Translated using Weblate (Estonian)
Currently translated at 100.0% (610 of 610 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-07-30 20:09:57 -04:00
Damontecres
ad7b53ec15
Fix ExtraTranslation vital lint errors 2026-07-29 16:57:38 -04:00
Damontecres
7074123bc1
Translations 2026-07-29 (#1764)
Update translations as of 2026-07-29

Thank you to all of the contributors!

---------

Co-authored-by: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
Co-authored-by: n8llcaster <n8llcaster@noreply.codeberg.org>
Co-authored-by: SimonHung <simonhung@noreply.codeberg.org>
Co-authored-by: TheMatrixan <thematrixan@noreply.codeberg.org>
Co-authored-by: butterflyoffire <butterflyoffire@noreply.codeberg.org>
Co-authored-by: idezentas <idezentas@noreply.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@noreply.codeberg.org>
Co-authored-by: arcker95 <arcker95@noreply.codeberg.org>
Co-authored-by: North-DaCoder <north-dacoder@noreply.codeberg.org>
Co-authored-by: danpergal84 <danpergal84@noreply.codeberg.org>
Co-authored-by: tal_sarid <tal_sarid@noreply.codeberg.org>
Co-authored-by: streamyfinchris <streamyfinchris@noreply.codeberg.org>
Co-authored-by: viretius <viretius@noreply.codeberg.org>
Co-authored-by: opakholis <opakholis@noreply.codeberg.org>
Co-authored-by: ymir <ymir@noreply.codeberg.org>
Co-authored-by: American_Jesus <american_jesus@noreply.codeberg.org>
Co-authored-by: damontecres <damontecres@noreply.codeberg.org>
Co-authored-by: unikitty <unikitty@noreply.codeberg.org>
Co-authored-by: outopik <outopik@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: nofkclue <nofkclue@noreply.codeberg.org>
Co-authored-by: Prahlis <prahlis@noreply.codeberg.org>
2026-07-29 16:25:24 -04:00
Damontecres
8bae9c7f23
Fixes for error handling, UI padding, & more (#1759)
## Description
Another collection of small individual fixes that don't warrant a full
PR:
- Better error handling for series and collection detail pages
- Better error handling on Discover search tab
- Fix issues when changing view options on card grid without reloading
the page
- Better error handling when changing the refresh rate or resolution
- Fix some nav drawer items disappearing briefly when restarting the app
- Fix that the discover search row would not clear when the query is
cleared

And some UI tweaks:
- Use consistent padding for the different customize home page sections
- Convert the "Continue watching click behavior" setting from a toggle
to choice dialog (the options & behaviors have not changed)

### Related issues
I think the error handling when changing the refresh rate might help
with #1737

### Testing
Emulator mostly

## Screenshots
N/A, UI changes are minor

## AI or LLM usage
None
2026-07-29 10:21:49 -04:00
Damontecres
79cb93db08
Fixes to artist detail page (#1762)
## Description
Fixes an incorrect query for an artist's albums (thanks @StefanBS for
reporting & fixing in #1761!)

Additionally, another album row for "Appears on" is added. This is
definitely necessary because Wholphin only has a tab for all artists
which includes artists featured on albums attributed to a different
artist. So those albums will now show in the "Appears on" similar to the
web UI instead of an empty artist page.

Finally, the long-click context menu is added for music videos on an
artist's page.

### Related issues
Fixes #1760
Replaced #1761 

### Testing
Emulator, particularly with artists who are not album artists

Also, verified the query fix against the web UI dev console

## Screenshots
N/A

## AI or LLM usage
None, but the fix included from #1761 did use some AI

---------

Co-authored-by: Stefan Bullones <stefan.bullones@gmail.com>
2026-07-28 15:17:57 -04:00
Damontecres
9954365c6f
Add two new themes: Red & Brown (#1721)
## Description
Adds new two new theme colors: Red & Brown

### Related issues
Related to #91, #950
Closes #1646

### Testing
<!-- Describe how this change was tested and on what device(s) -->

## Screenshots
<img width="2727" height="2171" alt="image"
src="https://github.com/user-attachments/assets/ae19f98d-e782-466a-bafc-6c0502f64e00"
/>

## AI or LLM usage
None
2026-07-25 22:52:09 -04:00
Damontecres
e7b0be2660
Display server error message on server list (#1741)
## Description
On the switch server page, display error message at the bottom for the
focused server. This includes unsupported server version.

### Related issues
Jellyfin 10.11/12.0 support discussion: #1640

### Testing
Emulator

## Screenshots
<img width="1280" height="720" alt="server_error Large"
src="https://github.com/user-attachments/assets/1227e7e7-a364-48d9-9a77-cb3f78d134a1"
/>

## AI or LLM usage
None
2026-07-25 22:52:02 -04:00
Damontecres
26a23d673b
Add option for dpad skipping with no seek bar (#1742)
## Description
Adds a third option for d-pad seeking to not show any seek bar which
only shows the skip indicator and not the seek bar along the bottom

### Related issues
Original work to add other mode in #1650
Closes #1520

### Testing
Emulator testing

## Screenshots
<img width="546" height="347" alt="image"
src="https://github.com/user-attachments/assets/2872566e-4598-4284-92cb-95a45b307835"
/>

## AI or LLM usage
None
2026-07-25 16:10:00 -04:00
calebvetter
cf3c00a1e1
Add option for trickplay preview mode when D-Pad seeking (#1650)
## Description
Adds a setting to allow the user to choose between the current D-Pad
skip functionality, and a new simple trickplay overlay.

The setting is added in Advanced, under the Playback section, called
"D-Pad seek mode". The options are "Skip time" and "Trickplay previews".
I left the default as "Skip time" since that's how it operates now, and
nothing would change for users after this option is added unless they go
and set it.

When "Trickplay previews" is enabled, it shows an simple overlay when
using the D-Pad to seek (without the full overlay open). The new simple
overlay is the same implementation of the components in the full
overlay: seekbar, trickplay images, current playhead time, remaining
time. The components were pulled from the full overlay's inline UI code
into their own reusable components, now used in both the full overlay
and the simple overlay.

#### Notes
I could see there being an adjustment for the overlay hide delay. It's
currently hard coded to 1.5s.

This could be the default method, but it seems like preference is split
as to whether people want this, or the minimalistic skipped seconds only
version.

### Related issues
This is directly in response to this issue, as well as my own desire for
the feature :)
https://github.com/damontecres/Wholphin/discussions/1084

It's also loosely related to this issue, in that it would solve it since
it shows the playhead and remaining times.
https://github.com/damontecres/Wholphin/discussions/1122

### Testing
Built and tested on an Amazon Fire TV Stick 4K Max. I wouldn't
anticipate and compatibility or performance changes since it's a simple
settings/UI change involving already-used UI components.

## Screenshots
<img width="1920" height="1080" alt="wholphin-20260630-155708"
src="https://github.com/user-attachments/assets/52046cc2-7413-4f66-89dd-355464fa0f91"
/>
<img width="1920" height="1080" alt="wholphin-20260630-155723"
src="https://github.com/user-attachments/assets/57a4a271-9e44-4d2a-bea3-ce5c9cdc731a"
/>
<img width="1920" height="1080" alt="wholphin-20260630-153825"
src="https://github.com/user-attachments/assets/2cf664ff-3db5-4a2e-8626-10219946669c"
/>


## AI or LLM usage
AI was used to generate the change, automate some testing, and provide
information surrounding the change. I manually did some refactoring and
cleanup to keep it clean and consistent with the rest of the code
conventions.

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2026-07-23 15:32:40 -04:00
Damontecres
5bc874a9ff
Fix music artist listing & show music in collections (#1739)
## Description
Switches to use the Artists API instead of Items API when fetching the
list of artists in a library.

Enables fetching artists, albums, and music videos in a collection.

Also adds titles for the remaining `BaseItemKind` types for future
proofing even if they aren't used anywhere in the app.

### Related issues
Fixes #1733
Fixes #1734
Fixes #1735


### Testing
Emulator, created a new collection with the above. Also verified the
artist query against the web UI

## Screenshots
N/A

## AI or LLM usage
None
2026-07-23 14:23:48 -04:00
Damontecres
00490b14ec
Improvements to subtitle search & download (#1728)
## Description
Changes to searching & downloading subtitles:
- Activating newly downloaded subtitles more reliably
- Better audio index adjustment checks after downloading subtitles
- Sort subtitle downloadable options by whether the file hash matches
first
- Update the UI for subtitle downloadable options

Also, some improvements to the subtitle choice dialog:
- It now loops from top to bottom (and vice versa)
- It now focuses initially on current choice

### Dev notes
This PR now the selected tracks from `state.currentItemPlayback` to
`state.currentPlayback`. `currentItemPlayback` now only reflects the
user's choices saved in the database instead of a combination of DB and
"actual" state. `currentPlayback` stores the actual, resolved track
indexes regardless of how they were derived.

This means the indexes values in `state.currentItemPlayback` and
`state.currentPlayback` may be different. For example, if the user has
chosen "Only forced", `state.currentItemPlayback==-3` but
`state.currentPlayback` might be an actual forced track index.

### Related issues
Fixes #1549
Fixes #1718
Closes #1723
Fixes bug reported in
https://github.com/damontecres/Wholphin/issues/1498#issuecomment-5019965271

### Testing
Emulator

## Screenshots

Now shows SDH & hash matching

<img width="779" height="280" alt="image"
src="https://github.com/user-attachments/assets/4c33e5af-c9a1-4c9c-8217-6bc2ab3fcd27"
/>

## AI or LLM usage
None
2026-07-23 13:30:43 -04:00
Damontecres
4f5cd3e7b1
Fix errors when a plural translation is missing (#1716)
## Description
Previously not every plural translation had full coverage and some did
not have the fallback "other" quantity translation. So for some
languages this would cause an error when trying to display the string
depending on the quantity. This PR ensures every plural translation has
the "other" fallback.

Note: the "other" fallback is copied from an existing translation so I'm
sure some will not be grammatically correct!

Dev note: I used a python script to parse and fix the entries, so it
also rewrote some of the unrelated `CDATA` entries.

### Related issues
Fixes #1676

### Testing
On the emulator, I reproduced the error in the issue with the Danish
translation, verified it was fixed after the patch was applied

## Screenshots
N/A

## AI or LLM usage
None
2026-07-18 17:52:16 -04:00
Damontecres
35c4d13f8f
Various minor bug fixes (#1707)
## Description
Gathering several small bug fixes:
- Clear the backdrop when manually reloading the home page
- Convert the "# years old" string resource to plural
- Fix a spelling error in the source English strings
- Ensure #1680 is respected when searching for subtitles to download
- Slightly adjust padding for the header in collection details to match
other headers

### Related issues
Fixes string issues reported in
https://github.com/damontecres/Wholphin/issues/1705#issuecomment-4982909931

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-07-18 17:50:35 -04:00
Damontecres
3f60fa7550
Add option to override user profile settings for audio & subtitle languages (#1680)
## Description
Adds settings under the "User profile settings" section which allows for
specifying preferred languages for audio and subtitles and the preferred
subtitle mode.

By default (matching existing Wholphin behavior), the preferred
languages and subtitle mode are derived from the user's profile settings
provided by the server which can be set on the WebUI:
User->Settings->Playback or Subtitles. However, this isn't well
understood and Wholphin doesn't display these values anywhere, so many
users were confused.

The preferred languages and subtitle mode can now be configured from
within Wholphin. Setting these will **not** update the server. The
settings are **only** used locally.

### Related issues
Related to #319
Closes #790

### Testing
Emulator manually changing some settings, added additional unit tests to
ensure the overrides are respected when choosing tracks

## Screenshots
### Settings page
<img width="1280" height="720" alt="settings_01 Large"
src="https://github.com/user-attachments/assets/28cc2f6b-3a60-42a4-b268-48695086d566"
/>

### Clicking into "More user profile settings"
<img width="1280" height="720" alt="settings_02 Large"
src="https://github.com/user-attachments/assets/6c3be3aa-c177-4d44-8060-b76d15fb10d7"
/>

### Language choice dialog

Can filter languages by typing in the search box at the top

<img width="1280" height="720" alt="settings_03 Large"
src="https://github.com/user-attachments/assets/c014d0ba-8d5b-4201-a6ee-4876b478148c"
/>


## AI or LLM usage
None
2026-07-14 14:17:31 -04:00
Damontecres
d481aea85a
Experimental option to transcode surround sound audio to AC3 (#947)
## Description
Adds an experimental setting to prefer transcoding audio with more than
2 channels to AC3. Stereo audio does not transcode.

This is basically a workaround for HDMI ARC (not eARC) or optical audio
devices because instead of 2 uncompressed PCM channels, 6 AC3 channels
(ie 5.1) is possible.

An downside of enabling this is that embedded subtitles be burned in
causing a video transcode as well.

### Related issues
Fixes #255
Incorporates some code from #1410

### Testing
Just on the emulator so far to observe if the settings trigger the
transcode or not

## Screenshots
N/A

## AI or LLM usage
None

---------

Co-authored-by: darkflame91 <darkflame91@gmail.com>
2026-07-09 13:15:42 -04:00
idezentas
e0143c0e26
Translated using Weblate (Turkish)
Currently translated at 100.0% (608 of 608 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-07 17:56:28 +00:00
Outbreak2096
ab47868b6c
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (608 of 608 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-07 17:56:28 +00:00
TheMatrixan
b93e12681e
Translated using Weblate (Polish)
Currently translated at 100.0% (608 of 608 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-07 17:56:28 +00:00
SimonHung
b57a6d7b00
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (608 of 608 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-07 17:56:28 +00:00
North-DaCoder
b4c6d40edc
Translated using Weblate (German)
Currently translated at 100.0% (608 of 608 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-07-07 17:56:28 +00:00
Waspoedertje
182c258c03
Translated using Weblate (Dutch)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2026-07-07 17:56:28 +00:00
North-DaCoder
30ec17e50f
Translated using Weblate (German)
Currently translated at 99.8% (600 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-07-07 17:56:27 +00:00
TheMatrixan
422ac89575
Translated using Weblate (Polish)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-07 17:56:27 +00:00
arcker95
517b5b0507
Translated using Weblate (Italian)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-07-07 17:56:27 +00:00
SimonHung
db4b4b8489
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-07 17:56:27 +00:00
opakholis
63d4e8e80d
Translated using Weblate (Indonesian)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2026-07-07 17:56:27 +00:00
n8llcaster
eea9a61064
Translated using Weblate (Slovak)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-07-07 17:56:27 +00:00
idezentas
f1a205a465
Translated using Weblate (Turkish)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-07 17:56:27 +00:00
Outbreak2096
52e5aa41d2
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-07 17:56:27 +00:00
SimonHung
662ef66319
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-07 17:56:27 +00:00
ymir
a3de7c330a
Translated using Weblate (French)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-07-07 17:56:27 +00:00
TheMatrixan
dfafed5801
Translated using Weblate (Polish)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-07 17:56:27 +00:00
Priit Jõerüüt
d7d283c188
Translated using Weblate (Estonian)
Currently translated at 100.0% (601 of 601 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-07-07 17:56:27 +00:00
TheMatrixan
b887507301
Translated using Weblate (Polish)
Currently translated at 100.0% (597 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-07 17:56:27 +00:00
idezentas
c8cf918116
Translated using Weblate (Turkish)
Currently translated at 100.0% (597 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-07 17:56:27 +00:00
Outbreak2096
b2f1cf1455
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (597 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-07 17:56:27 +00:00
SimonHung
818692a405
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (597 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-07 17:56:27 +00:00
opakholis
4f9abd0edc
Translated using Weblate (Indonesian)
Currently translated at 98.1% (586 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2026-07-07 17:56:27 +00:00
Priit Jõerüüt
44d7880468
Translated using Weblate (Estonian)
Currently translated at 100.0% (597 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-07-07 17:56:26 +00:00
North-DaCoder
e69afe1848
Translated using Weblate (German)
Currently translated at 100.0% (597 of 597 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-07-07 17:56:26 +00:00
Codeberg Translate
94a568ae95
Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/
2026-07-07 17:56:26 +00:00
JorgeLNJunior
56455344ed
Translated using Weblate (Portuguese (Brazil))
Currently translated at 93.7% (559 of 596 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt_BR/
2026-07-07 17:56:26 +00:00
idezentas
ac45a7b64a
Translated using Weblate (Turkish)
Currently translated at 100.0% (596 of 596 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-07 17:56:26 +00:00
arcker95
c6bbd0a2de
Translated using Weblate (Italian)
Currently translated at 100.0% (596 of 596 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-07-07 17:56:26 +00:00
Priit Jõerüüt
d0f44513f6
Translated using Weblate (Estonian)
Currently translated at 100.0% (596 of 596 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-07-07 17:56:26 +00:00
idezentas
a33670ef11
Translated using Weblate (Turkish)
Currently translated at 100.0% (594 of 594 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-07 17:56:26 +00:00
Outbreak2096
587c289775
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (594 of 594 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-07 17:56:26 +00:00