Commit graph

1490 commits

Author SHA1 Message Date
tapframe
4b6a15c950 Fix Trakt progress watched precedence 2026-07-06 00:59:53 +05:30
tapframe
94e1141bd1 fix: ignore unavailable episodes in watched state 2026-07-06 00:34:37 +05:30
tapframe
8c6741f5cb feat(trakt): add pagination support for fetching watched movies 2026-07-05 19:09:28 +05:30
tapframe
7191e91dd6 feat(PlaybackAutoPlaySettings): add additional hours 2026-07-04 15:43:44 +05:30
tapframe
b3c96bd7b3 feat: sentry diagnostics 2026-07-04 14:29:45 +05:30
tapframe
0e78513031 feat: implement open downloads directory for Android and iOS 2026-07-04 00:57:17 +05:30
WhiteGiso
43b5a42fb2 feat(ios): add Now Playing support 2026-07-03 14:52:47 +02:00
nosvasedis
cb6fbe4a9e Add Greek translations for 854 missing UI strings
Complete Greek (el) localization by translating all previously untranslated strings in values-el/strings.xml.

Changes:
- Added 854 Greek translations for UI strings
- Achieved 100% translation coverage (1903/1903 strings)
- Maintained format placeholders (%1\, %2\, etc.)
- Preserved existing Greek translations and terminology
- Ensured consistency with app UI context

Coverage before: ~50% (1049/1903 strings)
Coverage after: 100% (1903/1903 strings)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-03 12:43:05 +03:00
tapframe
caad155308 ref: fine tuning grains 2026-07-03 01:47:32 +05:30
tapframe
e6ef2fd3ae feat: adjust library and cw cards removal animations 2026-07-03 01:40:48 +05:30
tapframe
173584b191 Ignore self-originated realtime sync events 2026-07-02 18:42:44 +05:30
tapframe
dccbfc43c2 Add realtime sync invalidation handling 2026-07-02 18:31:43 +05:30
Ivek
3818429b39
Update StreamsSettingsPage.kt 2026-07-02 00:09:43 +02:00
Ivan
e2a6436da2
Fixed mistake 2026-07-01 23:20:42 +02:00
Ivan
a4b6ef597c
Fix Display section spacing in Stream Settings 2026-07-01 23:17:26 +02:00
emgeje
c6e3b343c8
Updated various strings in Hungarian localization 2026-07-01 17:38:01 +02:00
emgeje
7e081edfda
To ensure the Hungarian localization remains accurate and up-to-date with the latest application string changes. 2026-07-01 17:25:23 +02:00
tapframe
6ed61edef0 Refactor runtime configuration 2026-07-01 20:37:26 +05:30
tapframe
bc7c79f7f7 Revert "Merge branch 'switchdb' into cmp-rewrite"
This reverts commit e883d89031, reversing
changes made to 6885bbdee7.
2026-07-01 20:34:49 +05:30
tapframe
3ca3953fe3 Fix Android dominant color extraction 2026-07-01 15:35:15 +05:30
tapframe
ef9aece790 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-07-01 14:37:52 +05:30
Nayif
2880cbb507
Merge pull request #1432 from IberianSoldierPC/cmp-rewrite
spanish translation reinforced and updated
2026-07-01 14:36:42 +05:30
Nayif
4d95e3ab22
Merge pull request #1433 from Pupon11/cmp-rewrite
Update strings.xml  Updated Czech translations
2026-07-01 14:36:08 +05:30
Nayif
a032bb5b2d
Merge pull request #1434 from foXaCe/feat/i18n-fr-pass7
i18n(fr): backfill missing translations + extract residual hardcoded strings
2026-07-01 14:35:51 +05:30
tapframe
7dd20c9915 bump version 2026-07-01 14:33:53 +05:30
tapframe
dd0debb8b9 Use snapshot sync on mobile startup 2026-07-01 02:36:25 +05:30
tapframe
dccf264a27 Refresh series watched poster badges 2026-07-01 02:32:24 +05:30
tapframe
c17900ce0b fix: stabilize home startup and watched badges 2026-06-30 21:56:34 +05:30
tapframe
b9caec19e7 fix: reconcile watched series outside details screen 2026-06-30 20:06:33 +05:30
Stéphane
02f578a986 i18n(fr): backfill missing translations + extract residual hardcoded strings
- Backfilled 34 missing French translations (vouvoiement) for recent upstream
  features: app-store media server addons, playback engine / libmpv settings,
  donation progress, debug backend switch, terms links, original language.
- Fixed 2 residual tutoiement imperatives ("Reconstruis" -> "Reconstruisez").
- Extracted 10 hardcoded user-facing strings + 1 plural to composeResources:
  - Person detail sidebar labels (Born, Place of birth, Credits, Biography)
  - TMDB entity browse sidebar labels (Country, Type, Catalogue, About)
    + a title-count plural
  - External player subtitle overlay messages (loading / downloading)
- Key parity 1898/1898 strings, 3/3 plurals, 0 missing/orphan. Placeholders,
  vouvoiement, French typography (non-breaking spaces, Mo/Go) preserved.
2026-06-30 15:59:52 +02:00
Pupon11
d033eb6e46
Update strings.xml
Updated Czech translations
2026-06-30 13:46:02 +02:00
IberianSoldierPC
3e0d04b56a spanish translation reinforced and updated 2026-06-29 12:21:42 +02:00
Trần Khánh
7f13b201e8 Add Vietnamese language support
Add Vietnamese (vi) as an available language option with complete string translations. Updates include Android locale configuration, comprehensive Vietnamese translation file with 1927 strings, and AppLanguage enum to support Vietnamese selection in the app settings.
2026-06-29 11:32:53 +07:00
WhiteGiso
6916b0091f Add additional ita translations 2026-06-28 02:03:37 +02:00
tapframe
03bdc1a61e fix: stabilize dominant colour metadata background 2026-06-27 21:27:59 +05:30
tapframe
8a68d9e923 feat: add dominant colour bg 2026-06-27 21:01:08 +05:30
tapframe
35be889711 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-27 17:12:49 +05:30
tapframe
e4c84e0060 Add Bulgarian localization 2026-06-27 17:12:08 +05:30
tapframe
61c9096b8b Add Slovak localization 2026-06-27 17:07:19 +05:30
tapframe
a7dc224098 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-27 17:03:22 +05:30
Nayif
07a35ddbbb
Merge pull request #1030 from emgeje/cmp-rewrite
Add Hungarian translation
2026-06-27 17:03:11 +05:30
Nayif
e8b1449cb5
Merge pull request #1412 from WhiteGiso/pr/translations-it
Add Italian translations for Mobile
2026-06-27 17:01:21 +05:30
tapframe
d5d342cc2e ref: move external player button to top controls 2026-06-27 17:00:48 +05:30
tapframe
0d9efc4975 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-27 17:00:15 +05:30
Nayif
d7409923d7
Merge pull request #1422 from materemias/fix/debrid-device-auth-transient-poll
Fix debrid device-auth giving up on transient poll errors (#1409)
2026-06-27 17:00:07 +05:30
tapframe
8a1efa2551 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-27 16:46:34 +05:30
tapframe
4aa29087df Fix mobile home catalog cache invalidation 2026-06-27 16:19:17 +05:30
tapframe
f2eddbaf5b ref: add validation for duplicate collection 2026-06-27 15:17:44 +05:30
YLaskco
c388bd45d2 fix(player): preserve stream loading during external prep 2026-06-26 18:54:46 -04:00
tapframe
23480f50b6 fix: tune streams blur panel 2026-06-27 02:54:18 +05:30
YLaskco
7efdf52748 fix(player): speed up skip-segment launch prep 2026-06-26 15:13:33 -04:00
tapframe
5c5276fd7a Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-26 23:41:06 +05:30
tapframe
749917bcd7 fix: source change not recreating playback
fixes #1421
2026-06-26 23:40:21 +05:30
Nayif
ade6935330
Merge pull request #1420 from Laskco/skip-intro-merge-providers
fix(player): merge skip-intro providers instead of first-match-wins
2026-06-26 23:08:44 +05:30
Nayif
468a87ad61
Merge pull request #1418 from Joe00011/feat/japanese-translation
Update Japanese translation
2026-06-26 23:08:07 +05:30
Nayif
3395abde5e
Merge pull request #1415 from Laskco/external-player-skip-segments
Send resolved intro/outro skip segments to external players
2026-06-26 23:07:51 +05:30
tapframe
d6a0d2da52 ref: rename files 2026-06-26 22:53:12 +05:30
tapframe
1b4d08bbba feat: support for 6 profiles 2026-06-26 15:01:34 +05:30
Mate Remias
27c646eafa
Fix debrid device-auth giving up on transient poll errors
The device-authorization poll for debrid providers (TorBox/Premiumize)
treated any thrown redeem request as a fatal error and stopped polling,
showing "Could not start sign-in". The only thrown error it tolerated was
iOS request cancellation (isCancelledHttpRequest matched NSURLErrorDomain
/ code=-999); on Android a thrown request fell through to Failed(null)
and terminated the loop.

On aggressive ROMs (OxygenOS, MIUI, ...) the OS severs a backgrounded
app's sockets and fails its DNS while the user is in the browser approving
the code, so the in-flight poll throws UnknownHostException/IOException.
That terminated the login even though approval succeeded — reproduced on
OnePlus 13 / Android 16 (issue #1409): browser shows "logged in", app shows
"Could not start sign-in".

Treat a thrown redeem as Pending and keep polling instead of failing. To
avoid polling forever when the failure is persistent (airplane mode,
captive portal) rather than a brief background blip, a monotonic-clock
watchdog (DEVICE_AUTH_MAX_POLL_DURATION) bounds the throwing path and
surfaces failure once it elapses; a response-bearing expiry still stops
the loop earlier via the Expired branch. This also removes the now-unused,
iOS-only isCancelledHttpRequest helper.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 10:46:07 +02:00
YLaskco
cff97e3159 Skip Intro: merge providers instead of first-match-wins
SkipIntroRepository returned the result of the first provider that had
any data, so a provider with only a partial result (e.g. AniSkip with
just the intro) shadowed another provider that had the complete set
(e.g. IntroDB with intro + outro), silently dropping the outro.

Query IntroDB, Anime-Skip and AniSkip and merge their results by segment
category (opening / ending / recap), filling each category from the
highest-priority provider that has it (IntroDB, then Anime-Skip, then
AniSkip). The most complete set is always used and no provider shadows
another in either direction. The skipIntroEnabled gate and caching are
unchanged.
2026-06-26 01:46:18 -04:00
Joe00011
1ab467e810
Update Japanese strings.xml translation 2026-06-26 13:30:44 +09:00
YLaskco
0bfd611a45 Resolve skip segments on an app-lifetime scope
The skip lookup ran on the caller's composition-bound coroutine scope,
so navigating into the external player cancelled the in-flight network
request before it returned (and the cancelled lookup cached an empty
result, poisoning retries). Run resolution on a dedicated app scope so
it completes regardless of UI lifecycle.
2026-06-25 15:23:14 -04:00
YLaskco
af2e8ff926 Send resolved intro/outro skip segments to external players
Adds an opt-in External Player setting that hands resolved intro and
outro skip timestamps to external players via a skip_segments intent
extra, so a supporting player can auto-skip the opening and ending the
same way the internal player already does.

Resolution reuses the existing SkipIntroRepository (IntroDB, ARM,
AniSkip, Anime-Skip), so there is no new API, key, provider, or
dependency. The toggle is off by default and sits under Forward
Subtitles in the External Player settings. Resolution is bounded by a
timeout and only runs when the setting is on; players that do not read
the extra ignore it.
2026-06-25 14:38:45 -04:00
WhiteGiso
6e27baacda Add Italian translations for Mobile 2026-06-25 16:56:08 +02:00
tapframe
19f1e1a656 Remove settings sidebar border 2026-06-25 11:38:35 +05:30
tapframe
b9c3e62eb0 ref: adjust authscreen layout and gradients 2026-06-25 02:46:53 +05:30
tapframe
a2d3fda686 ref: reorganize settings page 2026-06-25 01:45:50 +05:30
tapframe
d767f60d35 Apply profile mesh background to loading screens 2026-06-25 01:04:17 +05:30
tapframe
87670e7cb0 ref: remove startup observer causing stale catalog setting push 2026-06-24 20:40:55 +05:30
tapframe
9d32d238f4 fix: libmpv ass override.
fixes #1403
2026-06-24 19:55:30 +05:30
tapframe
df8b05f1c2 Adjust App Store settings policy and copy 2026-06-24 13:22:53 +05:30
tapframe
69f0dab65e feat: local db switch for development 2026-06-23 19:43:27 +05:30
tapframe
3c1bdd3e18 update proguard rules and bump version 2026-06-22 21:12:43 +05:30
tapframe
6e815b91ed feat: libmpv engine for android 2026-06-22 20:43:12 +05:30
Nayif
f3128f369b
Merge pull request #1370 from VenusIsJaded/fix/android-7-lets-encrypt
fix: Let's Encrypt trust on Android 7
2026-06-22 19:53:26 +05:30
tapframe
f0f5e583a3 Fix home collections refresh
Fixes #1368
2026-06-22 19:43:22 +05:30
tapframe
e2215b64a4 Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-22 19:34:58 +05:30
Nayif
7f9cb51981
Merge pull request #1391 from VenusIsJaded/fix/imdb-rating-shows-tmdb-score
Fix: Keep addon IMDb rating instead of TMDB score
2026-06-22 19:34:51 +05:30
tapframe
85e1522712 Temporarily disable AVFoundation audio output 2026-06-22 19:31:21 +05:30
tapframe
7c7ab57334 Merge branch 'cmp-rewrite' into cmp 2026-06-22 19:04:48 +05:30
tapframe
6bd055d174 revert: rollback dependencies causing instablilty durign navigation and plugin fetches 2026-06-22 18:51:35 +05:30
tapframe
8498a5301d Fix mobile compile after merge 2026-06-22 18:36:56 +05:30
tapframe
4935ffc75a Merge branch 'cmp-rewrite' of https://github.com/NuvioMedia/NuvioMobile into cmp-rewrite 2026-06-22 18:19:28 +05:30
Nayif
bff4fa798d
Merge pull request #1141 from jhojhocraazy/cmp-rewrite
i18n(pt-BR): Add complete Brazilian Portuguese
2026-06-22 18:18:42 +05:30
Nayif
d7eea90691
Merge pull request #1386 from Joe00011/feat/japanese-translation
feat: Add Japanese language support
2026-06-22 18:16:40 +05:30
Nayif
1441797d3e
Merge pull request #1259 from WhiteGiso/pr/liquid-glass-profile-switch
feat(ios): improve liquid glass profile switching
2026-06-22 18:15:52 +05:30
VenusIsJaded
0bfd086917 fix: ExoPlayer unpausing when leaving the app and coming back
The LifecycleEventObserver was only capturing playWhenReady at the
time the effect ran. When ON_START fired later, it would use the old
value and resume playback even if the user had paused before leaving
the app.

Use rememberUpdatedState so we always read the live value.

Fixes #1080
2026-06-22 07:16:03 -05:00
VenusIsJaded
fca06204e0 fix(details): keep addon IMDb rating instead of TMDB score
When a metadata addon (e.g. aiometadata) supplies a genuine IMDb rating,
the TMDB enrichment on the details page was overwriting it with TMDB's
vote_average because the copy() preferred enrichment.rating over the
existing value. This made the IMDb placeholder display the TMDB score on
mobile, even though the addon provided IMDb ratings (the TV version was
already correct).

Invert the precedence so the addon-provided imdbRating is kept and TMDB's
vote_average is only used as a fallback when no rating was supplied.

Fixes #1377
2026-06-22 06:37:24 -05:00
VenusIsJaded
cc89e07eed fix: Let's Encrypt trust on Android 7 2026-06-22 05:38:31 -05:00
tapframe
389b990358 Handle deleted remote accounts on mobile
Fixes #81
2026-06-21 23:50:01 +05:30
Joe00011
029abadbe6
Add Japanese strings.xml translation 2026-06-21 20:30:48 +09:00
tapframe
e1cad830e9 Fix watch progress crash from concurrent updates 2026-06-21 16:51:20 +05:30
tapframe
3e49c78de7 fix: multiple ios crashes 2026-06-21 16:45:56 +05:30
tapframe
f2ef1e1383 refactor(plugin): unify dispatcher usage in PluginRuntime 2026-06-21 16:37:59 +05:30
tapframe
50a923d056 ref: remove entity outer box 2026-06-21 13:10:09 +05:30
tapframe
bdffcbb8bf Refine wide cast loading layout 2026-06-21 13:06:14 +05:30
tapframe
f4a2ce8963 Add wide cast and production layouts 2026-06-21 12:57:29 +05:30
Joe00011
f5b32acd42
Add Japanese language support to AppLanguage enum 2026-06-21 15:51:28 +09:00
Joe00011
cb8072b470
Add Japanese locale to locale_config.xml 2026-06-21 15:44:55 +09:00
tapframe
6c9b926b0e bump version 2026-06-20 22:23:13 +05:30