Commit graph

1836 commits

Author SHA1 Message Date
TheMatrixan
391a38e777
Translated using Weblate (Polish)
Currently translated at 98.6% (648 of 657 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-09-12 22:39:03 +00:00
SimonHung
cd0128e1db
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (657 of 657 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-09-12 22:39:03 +00:00
Priit Jõerüüt
0db4d45dbc
Translated using Weblate (Estonian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-09-12 22:39:02 +00:00
Prahlis
584c3566d6
Translated using Weblate (Swedish)
Currently translated at 90.7% (595 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-09-12 22:39:02 +00:00
American_Jesus
f79c0bdfe7
Translated using Weblate (Portuguese)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2026-09-12 22:39:02 +00:00
MrGegaz
bad47eb638
Translated using Weblate (Croatian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/hr/
2026-09-12 22:39:02 +00:00
Andi Chandler
8a570b89fb
Translated using Weblate (English (United Kingdom))
Currently translated at 8.6% (57 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/en_GB/
2026-09-12 22:39:02 +00:00
opakholis
7bd1e993d0
Translated using Weblate (Indonesian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/id/
2026-09-12 22:39:02 +00:00
n8llcaster
c0f6293ea7
Translated using Weblate (Slovak)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-09-12 22:39:02 +00:00
Prahlis
6647cf338c
Translated using Weblate (Swedish)
Currently translated at 90.3% (593 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-09-12 22:39:02 +00:00
marinosGR
3598e3010b
Translated using Weblate (Greek)
Currently translated at 51.0% (335 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/el/
2026-09-12 22:39:02 +00:00
Priit Jõerüüt
60a0d633bd
Translated using Weblate (Estonian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-09-12 22:39:02 +00:00
danpergal84
5ee6b31018
Translated using Weblate (Spanish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-09-12 22:39:02 +00:00
idezentas
1e86616d2a
Translated using Weblate (Turkish)
Currently translated at 99.8% (655 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/tr/
2026-09-12 22:39:02 +00:00
tal_sarid
7b39854621
Translated using Weblate (Hebrew)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/he/
2026-09-12 22:39:02 +00:00
lednurb
8e050a0830
Translated using Weblate (Dutch)
Currently translated at 91.6% (601 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2026-09-12 22:39:02 +00:00
SimonHung
114df65de3
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-09-12 22:39:02 +00:00
North-DaCoder
d6b1d77c28
Translated using Weblate (German)
Currently translated at 100.0% (656 of 656 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/de/
2026-09-12 22:39:02 +00:00
lednurb
6e12b0c776
Translated using Weblate (Dutch)
Currently translated at 92.6% (601 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nl/
2026-09-12 22:39:02 +00:00
Bone NI
026f8c7592
Added translation using Weblate (Lao) 2026-09-12 22:39:02 +00:00
alexkahler
2ade8173ff
Translated using Weblate (Danish)
Currently translated at 99.8% (648 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/da/
2026-09-12 22:39:02 +00:00
Andi Chandler
8c2cbcb7b2
Translated using Weblate (English (United Kingdom))
Currently translated at 7.8% (51 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/en_GB/
2026-09-12 22:39:02 +00:00
American_Jesus
de6cf7fb59
Translated using Weblate (Portuguese)
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt/
2026-09-12 22:39:02 +00:00
TheMatrixan
c8d202c3fa
Translated using Weblate (Polish)
Currently translated at 99.6% (647 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pl/
2026-09-12 22:39:02 +00:00
brdaustra
7f587b9f50
Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (645 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/nb_NO/
2026-09-12 22:39:01 +00:00
Prahlis
cf83266e4a
Translated using Weblate (Swedish)
Currently translated at 90.4% (587 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-09-12 22:39:01 +00:00
n8llcaster
0398f3f689
Translated using Weblate (Slovak)
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sk/
2026-09-12 22:39:01 +00:00
tal_sarid
cbebc9e63c
Translated using Weblate (Hebrew)
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/he/
2026-09-12 22:39:01 +00:00
arcker95
e73d0961ab
Translated using Weblate (Italian)
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-09-12 22:39:01 +00:00
Outbreak2096
5a9e5c406f
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hans/
2026-09-12 22:39:01 +00:00
SimonHung
c0401914a7
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/zh_Hant/
2026-09-12 22:39:01 +00:00
Priit Jõerüüt
0b275a2daa
Translated using Weblate (Estonian)
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-09-12 22:39:01 +00:00
danpergal84
8931bf5d7a
Translated using Weblate (Spanish)
Currently translated at 100.0% (649 of 649 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/es/
2026-09-12 22:39:01 +00:00
Priit Jõerüüt
4f4e13723c
Translated using Weblate (Estonian)
Currently translated at 100.0% (647 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/et/
2026-09-12 22:39:01 +00:00
tal_sarid
db7cfaee9b
Translated using Weblate (Hebrew)
Currently translated at 100.0% (647 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/he/
2026-09-12 22:39:01 +00:00
arcker95
048a5f35b6
Translated using Weblate (Italian)
Currently translated at 100.0% (647 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/it/
2026-09-12 22:39:01 +00:00
Prahlis
9602b4f3f0
Translated using Weblate (Swedish)
Currently translated at 90.5% (586 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/sv/
2026-09-12 22:39:01 +00:00
olliveiraanderson
d6eb23d29f
Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.1% (622 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/pt_BR/
2026-09-12 22:39:01 +00:00
true-seeker
f3239c7b15
Translated using Weblate (Russian)
Currently translated at 65.0% (421 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ru/
2026-09-12 22:39:01 +00:00
jatag41526
f7c391ad54
Translated using Weblate (Russian)
Currently translated at 65.0% (421 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ru/
2026-09-12 22:39:01 +00:00
SergeiAK
02163ba47c
Translated using Weblate (Russian)
Currently translated at 65.0% (421 of 647 strings)

Translation: Wholphin/Wholphin
Translate-URL: https://translate.codeberg.org/projects/wholphin/wholphin/ru/
2026-09-12 22:39:01 +00:00
Damontecres
98fba1340f
Fix OS screensaver starting during playback with dim enabled (#1956)
## Description
Fixes some devices activating the OS screensaver during playback when
the in-app dim was enabled.

I was not able to reproduce this on Shield 2017/2019, but could easily
on a Fire TV Stick. #1834 added the dim feature and, when enabled, would
not pass the keep screen on flag to the OS during playback. It seems
maybe regular Android TV's screensaver also listened to active media
session to prevent starting but maybe Fire TV OS doesn't. I'm not 100%
sure. This PR changes the logic slightly so that the keep screen on flag
is always set during playback.

### Related issues
Fixes #1894
Related to dim feature from
https://github.com/damontecres/Wholphin/pull/1834

### Testing
Emulator, shield 2019, & fire tv stick 4k

## Screenshots
N/A

## AI or LLM usage
None
2026-09-12 18:38:54 -04:00
Damontecres
074eab22f3
Increase memory for CI builds (#1954)
## Description
Increases the memory available for CI builds and splits up builds a bit
more

There are no user facing changes

### Related issues
Recently dev builds failed due to OOM

### Testing
https://github.com/damontecres/Wholphin/actions/runs/34710759629

## Screenshots
N/A

## AI or LLM usage
None
2026-09-12 15:14:14 -04:00
Damontecres
4a118b6ddb
Update dependencies (#1952)
## Description
Now that the SDK level is updated, many dependencies can be updated as
well.

This includes a fix from `wholphin-extensions` for a TLS timeout issue
on some devices using MPV
(https://github.com/damontecres/wholphin-extensions/pull/13).

### Related issues
Fixes #1932

### Testing
Just basics on emulator & nvidia shield

## Screenshots
N/A

## AI or LLM usage
None
2026-09-11 15:40:38 -04:00
Damontecres
616565f671
Fixes to v1.0.7 (#1953)
## Description
Collection of minor bug fixes for `v1.0.7`

- Fixes a possible race condition crash when navigating to the search
page
- Uses friendlier error message when login fails due to parental
restrictions (based on
[`jellyfin-web`](https://github.com/jellyfin/jellyfin-web/blob/v10.11.11/src/controllers/session/login/index.js#L38-L41))
- Don't re-sort search results by name, just by relevance scoring
- Consume the key event when dim is active (ie if the screen is dimmed,
pressing a key will un-dim and not perform another action)

### Related issues
Fixes #1922 
Fixes #1951
Related to #1848 (search sorting)

### Testing
Emulator & nvidia shield

## Screenshots
N/A

## AI or LLM usage
None
2026-09-11 15:40:11 -04:00
SergeiAK
6486bd19ed
Fix person credits: movie release dates, full filmography, sorted order (#1950)
<!-- By submitting this pull request, you acknowledge that you have read
the [contributing
guide](https://github.com/damontecres/Wholphin/blob/main/CONTRIBUTING.md,
including the AI/LLM policy, and [developer's
guide](https://github.com/damontecres/Wholphin/blob/main/DEVELOPMENT.md)
-->

## Description

Person pages that get a filmography from Seerr had three problems, all
in the same place.

The release date was taken from `firstAirDate` alone — the field TMDB
fills for series — so
movie cards showed no year at all. The library person page capped the
row at 25 cast + 25 crew while
`DiscoverPersonPage` had no cap, because each screen carried its own
copy of the same logic.
And `cast + crew` left the row in no order a viewer can read, with a
title appearing twice when
a person is both cast and crew on it.

This PR:

* maps credit dates as `releaseDate ?: firstAirDate` — the expression
the search result mapping
  already uses;
* moves the credits logic into a single `SeerrService.personCredits()`
used by both screens, so
  they cannot drift apart again;
* drops the 25 + 25 cap, de-duplicates by TMDB id and sorts by release
date descending, with
  undated entries last.

Rows on movie and series pages are untouched: only the
`BaseItemKind.PERSON` branch of
`similar()` changed.

Two things worth your opinion:

* Without the cap, the row for a person with a long filmography is long
— 135 cards for Cameron
Diaz, for example. If you would rather keep a cap, the row could keep
the newest 25 and gain a
`ViewMoreCard` opening the full grid — `Destination.DiscoveredItem` with
a `PERSON` item
already routes to `DiscoverPersonPage`. I am happy to add that in a
second commit.
* The sort is fixed to release date descending. It now lives in one
function, so a different key
  or a user-facing choice would be cheap to add later.

### Related issues

Fixes #1873

### Testing

CI in my fork ran the repository's own PR workflow on this branch:
`pre-commit` (ktlint) and
`assembleDefaultDebug` with `testDefaultDebugUnitTest` are both green.

I then installed a debug build of the same code on an NVIDIA Shield TV
Pro 2019 (Android 11),
against Jellyfin 10.11.11 with Jellyseerr, and opened Cameron Diaz from
the cast row of
*Charlie's Angels* before and after the change:

* movie cards show a year now; before, the only two cards in the row
with a year were the two
  TV entries;
* the row is ordered by release date descending, movies and series
interleaved, instead of the
  API order of all cast followed by all crew;
* the row is no longer cut at 25 + 25 — it now runs back to her 1952
credit, and the entries
  TMDB has no date for sit at the very end of the row.

Not tested on any other device; nothing in the change is device
specific.

## Screenshots

Person page of Cameron Diaz, reached from the cast row of *Charlie's
Angels*. The library rows
above the Discover row are the same in every shot and are useful as a
reference: they always had
their years.

Before, start of the Discover row — no year under any card:
<img width="1920" height="1080" alt="pr1873-1-before-start"
src="https://github.com/user-attachments/assets/585d0670-ae39-4214-9004-0c92262991da"
/>

Before, end of the Discover row — the row stops here, and the only two
years in it belong to the
two TV entries:
<img width="1920" height="1080" alt="pr1873-2-before-end"
src="https://github.com/user-attachments/assets/85c58575-2ad0-4369-a103-60f04c8d2350"
/>

After, start of the row — years on the movie cards, ordered by date
descending:
<img width="1920" height="1080" alt="pr1873-3-after-start"
src="https://github.com/user-attachments/assets/804745c5-e1a6-4fe4-93bd-dc6c97a7a876"
/>

After, end of the row — the list now reaches 1952, with the undated
entries last:
<img width="1920" height="1080" alt="pr1873-4-after-end"
src="https://github.com/user-attachments/assets/2c32389c-ec0b-4df5-b9d1-f564ef10d8b3"
/>

## AI or LLM usage

The code was written with Claude Opus 5 (Claude Code): the two mapping
lines, the extracted
`personCredits()` function and the two call sites. I reviewed every line
and can explain it.
This description was written by me in Russian and translated into
English with the same
assistant.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Damontecres <damontecres@gmail.com>
2026-09-11 15:22:02 -04:00
Damontecres
9c56965c82
Add controls to edit playlists (#1927)
## Description
Adds support to remove items from a playlist and move items within a
playlist

The remove option is in the context menu. Moving has buttons on the
right side. The buttons are available if the user has edit permissions
and the playlist is sorted by "Default" (the playlist order). Remove
from playlist option is available if the user has edit permissions.

Also, thumb images are now preferred instead of primary/poster images
since the layout is much wider than tall.

### Related issues
Closes #1881

### Testing
Emulator with both a user with & without permissions to edit

## Screenshots
### With move buttons
<img width="1280" height="720" alt="playlist_buttons Large"
src="https://github.com/user-attachments/assets/ce7880c3-b823-4b69-9ad4-cfc9e7ee5fd5"
/>

### Without move buttons
<img width="1280" height="720" alt="playlist_no_buttons Large"
src="https://github.com/user-attachments/assets/f2027052-4628-4d44-8257-6c2a5e8c3af4"
/>


## AI or LLM usage
None
2026-09-10 17:18:26 -04:00
Damontecres
0b995b5404
Configure playback controls for RTL (#1945)
## Description
Reverts/fixes parts of #1404 for the playback UI. Generally the playback
UI always uses left-to-right for seek bar & media controls even on RTL.
Other buttons or texts will be RTL.

### Related issues
Fixes #1397 

### Testing
Emulator w/ forced RTL English

## Screenshots
See
https://github.com/damontecres/Wholphin/issues/1397#issuecomment-5553711593

## AI or LLM usage
None
2026-09-08 22:51:54 -04:00
Damontecres
4a567cbcf4
Fixes to season/episode search with duplicates (#1946)
## Description
Fixes cases where the server has duplicate season IDs causing the season
index search to fail and default to the first season in the list.

### Related issues
Fixes #1837

### Testing
Emulator & unit tests

## Screenshots
N/A

## AI or LLM usage
None
2026-09-08 22:51:46 -04:00
Damontecres
1778bdb34c
Consolidate sending media reports & app logs (#1936)
## Description
Consolidates sending reports/logs to the server into
`ServerReportService` (renamed from `MediaReportService`)

Also ensures a consistent header is used including the build flavor.

### Related issues
N/A

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-09-05 12:11:38 -04:00