Commit graph

1705 commits

Author SHA1 Message Date
renovate[bot]
e94e82479b
Update dependency org.openapi.generator to v7.24.0 (#1731) 2026-08-11 13:00:33 -04:00
renovate[bot]
5f44f870df
Update Kotlin to v2.4.10 (#1697) 2026-08-11 13:00:15 -04:00
renovate[bot]
2745e76b82
Update Github Actions (#1672) 2026-08-11 12:59:55 -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
Damontecres
fceb5f81a7
Release v1.0.5 2026-08-03 11:10:07 -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
Damontecres
1874b5babe
Merge remote-tracking branch 'origin/main' into github-main 2026-07-30 20:48:57 -04:00
Damontecres
89933c83f9
Fix incorrect translation merge (#1772)
Fixes the squash merge from #1764
2026-07-30 20:32:50 -04:00
Damontecres
c1b055db3a
Remove outdated dpad_seek_mode_skip_time entries 2026-07-30 20:14:13 -04:00
arcker95
145f716da4
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-30 20:10:01 -04:00
Outbreak2096
836706fffa
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-30 20:10:01 -04:00
opakholis
2ac7a3d83f
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-30 20:10:01 -04:00
n8llcaster
e24ef7783e
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-30 20:10:01 -04:00
idezentas
45f3cc7665
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-30 20:10:01 -04:00
Outbreak2096
99c5ce2fdf
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-30 20:10:01 -04:00
TheMatrixan
ab400fd7fb
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-30 20:10:01 -04:00
tal_sarid
708ba9dfab
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-30 20:10:01 -04:00
ymir
712fbcc9b8
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-30 20:10:00 -04:00
American_Jesus
e3afc3c583
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-30 20:10:00 -04:00
arcker95
d73cf5e9e8
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-30 20:10:00 -04:00
SimonHung
46347abbc7
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-30 20:10:00 -04:00
Priit Jõerüüt
45f05fbc69
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-30 20:10:00 -04:00
danpergal84
24792279cc
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-30 20:10:00 -04:00
idezentas
fe39318e04
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-30 20:10:00 -04:00
danpergal84
ea13c5c5ad
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-30 20:10:00 -04:00
Prahlis
50e306baa1
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-30 20:10:00 -04:00
Prahlis
0b94cdb509
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-30 20:10:00 -04:00
North-DaCoder
3830a9eb01
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-30 20:10:00 -04:00
Codeberg Translate
a26d0932b5
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-30 20:10:00 -04:00
idezentas
291ac6c50c
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-30 20:10:00 -04:00
Outbreak2096
22b04ff855
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-30 20:09:59 -04:00
n8llcaster
ec97a52ffc
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-30 20:09:59 -04:00
Prahlis
05560697a3
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-30 20:09:59 -04:00
danpergal84
10a7008ad2
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-30 20:09:59 -04:00
Prahlis
c4ac8b6a65
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-30 20:09:59 -04:00
TheMatrixan
1c3e269718
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-30 20:09:59 -04:00
ymir
9988974001
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-30 20:09:59 -04:00
opakholis
43e86e4769
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-30 20:09:59 -04:00
nofkclue
c393bc9697
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-30 20:09:59 -04:00
arcker95
a6887c0826
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-30 20:09:59 -04:00
outopik
a335dbcbc5
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-30 20:09:59 -04:00
SimonHung
4d7ac8f759
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-30 20:09:59 -04:00
unikitty
327a49f1d7
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-30 20:09:59 -04:00
damontecres
e7efe473c8
Added translation using Weblate (English (United Kingdom)) 2026-07-30 20:09:59 -04:00
idezentas
aa5c65b4a2
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-30 20:09:58 -04:00