Commit graph

1402 commits

Author SHA1 Message Date
Damontecres
5219b22fc7
Update wholphin-extensions & media3 (#1814)
Updates playback dependencies:
- `wholphin-extensions` to `v0.2.2`
- `media3` to `1.11.0`
- `libass-android` to `0.5.1`
2026-08-11 13:35:11 -04:00
Damontecres
bd1a6c44ee
Add shuffle parameter to playback intent (#1813)
## Description
Adds an optional boolean parameter `shuffle` that is read for the
playback intent. When true, it will cause the resulting media to be
shuffled if applicable.

Something can be shuffled if the `itemId` is a grouping on media such as
a playlist, series, season, or even library.

### Related issues
Depends on #1756

### Testing
Emulator with the documented command

## Screenshots
N/A

## AI or LLM usage
None
2026-08-11 13:33:49 -04:00
calebvetter
c1abb57cd2
Add back stack for deep link navigation (#1756)
## Description
When testing the new deep link feature from this PR
[#1688](https://github.com/damontecres/Wholphin/pull/1688)
I noticed that the back button would close the app. As in, all routes
are cleared and only the playback is in the nav stack.

I figured a more desirable behavior would be to create a nav stack,
always starting with the home screen, then also inserting the media
item's details page, if available.

To achieve this, I made the return Target.destinations a list of
destinations, and updated the other two uses in IntentService.

Open to implementation tweaks, or scrap it if this isn't how it should
work, haha.

### Testing

Tested deep links, which produced the following nav stacks:
- Movie view
  - Home → Movie details
- Movie playback (with and without position)
  - Home → Movie details → Playback
- Series view
  - Home → Series details
- Season view
  - Home → Season details
- Episode view
  - Home → Episode details
- Episode playback (with and without position)
  - Home → Episode details → Playback
- Trailer/extras playback (no details page available)
  - Home → Playback
- TV channel view
  - Home → Playback
- TV channel playback
  - Home → Playback

## AI or LLM usage
AI was used to generate the initial code, debug and test, then manual
refactoring and cleanup was done.

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2026-08-11 10:59:20 -04:00
Stefan Bullones
a0966dd05a
Fix alphabet highlight for names starting with "The " (#1788)
## Description
The alphabet scroll bar highlighted the letter of an item's *display*
name while the grid sorted by the server's article-stripped `SortName`,
so "The Beatles" sat under **B** but highlighted **T**.

- **Artists:** the Artists tab never requested `SortName`, so the
highlight silently fell back to `Name`. It now asks for `SlimItemFields`
(which already includes `SORT_NAME`), matching the sibling `/Items`
branch. The count-only query used for letter positions passes `fields =
null`, since a `limit = 0` request has no use for them.
- **Genres and studios:** these grids bucketed on the display name
unconditionally. The sort-name fallback is extracted as
`BaseItemDto.alphabetSortName` (`sortName ?: name ?: ""`) and carried
onto the `Genre` and `Studio` grid items, so all three grids now derive
the letter from one value.

### Related issues
https://github.com/damontecres/Wholphin/issues/1787

### Testing
Two unit tests added:
- `CollectionFolderViewModelTest` pins that the artist pager actually
requests `SORT_NAME` — the field whose absence caused the bug.
- `AlphabetSortNameTest` covers both branches of the `alphabetSortName`
fallback.

Manually: select a music library → Artists tab → put the cursor on an
artist starting with "The " and confirm the highlighted letter matches
the grid position. Same check on the genre and studio grids.

## AI or LLM usage
I used Cursor for debugging and implementing the fix, and Claude Code
for a follow-up cleanup pass over the diff.
2026-08-10 21:52:43 -04:00
Damontecres
454c0212b6
Fix issues with external subtitles & transcoding (#1790)
## Description
Fixes a bug where the external subtitle track would not be activated if
playback is transcoded

Also fixes a bug where external subtitles would cause MPV to incorrectly
switch to transcoding

### Related issues
Fixes #1778

### Testing
Emulator with files that have a variety of external SRT, embedded SRT &
ASS, & embedded PGS

## Screenshots
N/A

## AI or LLM usage
None
2026-08-10 20:17:42 -04:00
Damontecres
7581b189aa
Fix preference text overflow/clipping (#1785)
## Description
Removes the max height constraints for slider preferences and navigation
drawer preferences so that longer text (possibly in other languages or a
long library name) won't cut off any content

### Related issues
Fixes #1784 

### Testing
Emulator with manual long text

## Screenshots
N/A, no significant change except sliders can be slightly taller if
needed

## AI or LLM usage
None
2026-08-04 11:01:19 -04:00
Stefan Bullones
d7d63f52c3
Fix the alphabet buttons scroll bar on the Artists tab (#1775)
## Description
positionOfLetter counted through /Items no matter which endpoint the
grid was actually paging. A music library's Artists tab pages /Artists,
so the index it returned had counted every album and song before the
letter - an order of magnitude more rows than the artist grid holds -
and every letter jumped to the last row.

Count through the same endpoint createPager builds its pager from:
/Artists for the ARTIST override, /Items for NONE. The artist request is
now built once in createGetArtistsRequest and shared by both, so the two
cannot drift apart.

GetPersonsRequest has neither nameLessThan nor startIndex, so /Persons
cannot be counted up to a letter at all; the PERSON override returns
null, which the call sites already map to the "no jump" sentinel. That
path is unreachable today - the only PERSON tab sorts by
ItemSortBy.DEFAULT, so showLetterButtons is never true there and
AlphabetButtons is never composed.

### Related issues
https://github.com/damontecres/Wholphin/issues/1774

### Testing
Select a music library -> Go to Artist tab -> Select a letter on the
right side alphabet scroll bar

## AI or LLM usage
I used Cursor and Claude Code for planning, implementation and code
review.

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2026-08-03 09:54:03 -04:00
Damontecres
6ad96865e7
Fix live tv & recorded tv playback (#1770)
## Description
#1654 broke playback for both live TV and recorded programs in `.ts`
format.

This PR fixes both issues! Jellyfin returns `NoCompatibleStream` for
live tv if the source ID is passed in, so that is now skipped for live
tv. `.ts` files may have IDs formatted with a slash instead of colon, so
the logic is updated to handle that plus fallbacks for potentially
unknown future formats.

### Related issues
Fixes #1767

### Testing
Emulator & nvidia shield, plus unit tests

## Screenshots
N/A

## AI or LLM usage
None
2026-08-02 11:11:32 -04:00
Damontecres
7c6ab39436
Fix translations again (#1776)
## Description
Another follow up to https://github.com/damontecres/Wholphin/pull/1764 &
#1772

Also adds `lint.xml` to mark the extra translations as just a warning
since they don't cause a problem in the final build.

### Related issues
#1764
#1772

### Testing
N/A

## Screenshots
N/A

## AI or LLM usage
None
2026-08-02 10:31:56 -04:00
arcker95
b98dab8945
Translated using Weblate (Italian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-07-29 20:57:55 +00:00
Outbreak2096
fbeb192ad7
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (642 of 642 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-29 14:21:55 +00:00
opakholis
d0d996fda7
Translated using Weblate (Indonesian)
Currently translated at 97.5% (626 of 642 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2026-07-29 14:21:55 +00:00
n8llcaster
42155bdab0
Translated using Weblate (Slovak)
Currently translated at 98.9% (634 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-07-29 14:21:55 +00:00
idezentas
05f8456177
Translated using Weblate (Turkish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-29 14:21:55 +00:00
Outbreak2096
4f05b6ffab
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-29 14:21:55 +00:00
TheMatrixan
477e4c921d
Translated using Weblate (Polish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-29 14:21:55 +00:00
tal_sarid
4ed689064e
Translated using Weblate (Hebrew)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/he/
2026-07-29 14:21:55 +00:00
ymir
dcb304641d
Translated using Weblate (French)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-07-29 14:21:55 +00:00
American_Jesus
d969e73bd0
Translated using Weblate (Portuguese)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2026-07-29 14:21:55 +00:00
arcker95
4633209fb3
Translated using Weblate (Italian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-07-29 14:21:55 +00:00
SimonHung
a1b5182e6a
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.8% (640 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-29 14:21:55 +00:00
Priit Jõerüüt
e41d0032f5
Translated using Weblate (Estonian)
Currently translated at 98.7% (633 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-07-29 14:21:55 +00:00
danpergal84
36369afb70
Translated using Weblate (Spanish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-07-29 14:21:55 +00:00
idezentas
4dde8b80cc
Translated using Weblate (Turkish)
Currently translated at 100.0% (639 of 639 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-29 14:21:55 +00:00
danpergal84
50f2afc5c4
Translated using Weblate (Spanish)
Currently translated at 100.0% (639 of 639 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-07-29 14:21:55 +00:00
Prahlis
9a6749a0d3
Translated using Weblate (Swedish)
Currently translated at 87.8% (559 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-07-29 14:21:55 +00:00
Prahlis
5820398b4a
Translated using Weblate (Swedish)
Currently translated at 87.7% (558 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-07-29 14:21:55 +00:00
North-DaCoder
6c8be55c29
Translated using Weblate (German)
Currently translated at 100.0% (636 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-07-29 14:21:55 +00:00
Codeberg Translate
25bbc7c418
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-29 14:21:55 +00:00
idezentas
eedca7331a
Translated using Weblate (Turkish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-29 14:21:55 +00:00
Outbreak2096
09e835a374
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (636 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-29 14:21:55 +00:00
n8llcaster
e7a54c8012
Translated using Weblate (Slovak)
Currently translated at 100.0% (636 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-07-29 14:21:55 +00:00
Prahlis
0964322ab9
Translated using Weblate (Swedish)
Currently translated at 87.4% (556 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-07-29 14:21:54 +00:00
danpergal84
a4e62fb532
Translated using Weblate (Spanish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-07-29 14:21:54 +00:00
Prahlis
b3cc7c424d
Translated using Weblate (Swedish)
Currently translated at 85.7% (543 of 633 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-07-29 14:21:54 +00:00
TheMatrixan
6827201bdc
Translated using Weblate (Polish)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-07-29 14:21:54 +00:00
n8llcaster
c198f5c2b6
Translated using Weblate (Slovak)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-07-29 14:21:54 +00:00
idezentas
043dfb61bd
Translated using Weblate (Turkish)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-07-29 14:21:54 +00:00
nofkclue
c7a5ec61a3
Translated using Weblate (German)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-07-29 14:21:54 +00:00
ymir
b96d50d166
Translated using Weblate (French)
Currently translated at 99.8% (624 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-07-29 14:21:54 +00:00
opakholis
08444c2509
Translated using Weblate (Indonesian)
Currently translated at 99.8% (624 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2026-07-29 14:21:54 +00:00
nofkclue
aa83ee1382
Translated using Weblate (German)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-07-29 14:21:54 +00:00
Outbreak2096
320c9acc8a
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-07-29 14:21:54 +00:00
arcker95
63893894d0
Translated using Weblate (Italian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-07-29 14:21:54 +00:00
SimonHung
8abbbabcd5
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-29 14:21:54 +00:00
Codeberg Translate
f7348a6c7a
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-29 14:21:54 +00:00
outopik
75f1f06345
Translated using Weblate (French)
Currently translated at 98.5% (616 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/fr/
2026-07-29 14:21:54 +00:00
n8llcaster
7ba5c83f33
Translated using Weblate (Slovak)
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-07-29 14:21:54 +00:00
SimonHung
ab993b0d96
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (625 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-07-29 14:21:54 +00:00
unikitty
920af648be
Translated using Weblate (English (United Kingdom))
Currently translated at 6.7% (42 of 625 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/en_GB/
2026-07-29 14:21:54 +00:00