Commit graph

115 commits

Author SHA1 Message Date
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
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
tapframe
8a68d9e923 feat: add dominant colour bg 2026-06-27 21:01:08 +05:30
tapframe
f2eddbaf5b ref: add validation for duplicate collection 2026-06-27 15:17:44 +05:30
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
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
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
6e815b91ed feat: libmpv engine for android 2026-06-22 20:43:12 +05:30
tapframe
85e1522712 Temporarily disable AVFoundation audio output 2026-06-22 19:31:21 +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
skoruppa
a764046e29
Merge branch 'NuvioMedia:cmp-rewrite' into cmp-rewrite 2026-06-18 14:48:06 +02:00
skoruppa
311da87592 feat: add Original Audio language option with TMDB enrichment
- Add AudioLanguageOption.ORIGINAL to preferred audio language picker
  (primary and secondary) with hint 'Requires TMDB enrichment'
- Resolve content original language from meta.language with fallback
  to country-based inference (countryToLanguageCode mapping)
- Pass contentLanguage through PlayerLaunch, PlayerScreen, and
  StreamLinkCache for reuse on subsequent playback sessions
- Add Device Language as default app language option (resets to system
  locale instead of forcing English)
- Add all missing Polish translations (417 strings)
- Add LanguageSelectionOption.description support in settings dialogs
2026-06-18 14:46:31 +02:00
tapframe
4a013678f8 fix: update donations api 2026-06-18 17:46:34 +05:30
tapframe
0645f3504e Align next up copy with TV app 2026-06-18 15:39:24 +05:30
tapframe
4a883a1add Add runtime sync backend switch 2026-06-17 23:29:00 +05:30
WhiteGiso
53d600768f
Merge branch 'cmp-rewrite' into pr/liquid-glass-profile-switch 2026-06-15 10:09:40 +02:00
Stéphane
75f9b46818 i18n(fr): full FR parity + extract residual hardcoded strings (pass 6)
Rebased on current cmp-rewrite, then reconciled and extended.

- Restored full EN<->FR parity: 1854/1854, 0 missing/orphan/duplicate keys.
- Reconciled post-rebase drift from the desktopweb revert: removed 5 FR
  orphans (desktop navigation, about version format) and the now-dead
  desktop P2P string + localizedP2pNotAvailableDesktop() helper whose call
  site was deleted upstream; added the 2 new touch-gestures translations.
- Extracted 11 residual hardcoded user-facing strings via stringResource and
  the LocalizedUiText.resourceString / localizedString(StringResource)
  patterns:
    - 9 Trakt library-sync error messages (TraktLibraryRepository)
    - P2P unknown torrent error (P2pStreamingEngine.android)
    - "More actions" detail action-menu contentDescription (DetailActionButtons)
- FR aligned with existing keys for consistency (request failed, rate limit,
  watchlist). Technical terms kept (Trakt, P2P, badge, URL). Tutoiement,
  apostrophes typographiques. MPVKit submodule pointer untouched.
2026-06-13 08:47:12 +02:00
tapframe
7cbd4503e6 Add touch gestures settings 2026-06-12 21:24:14 +05:30
tapframe
32a26951f7 Refresh watch progress when clearing CW cache 2026-06-12 20:07:28 +05:30
tapframe
1c7d6acd9b Revert "Merge branch 'desktopweb' into cmp-rewrite"
This reverts commit b420dcaf71, reversing
changes made to fdadc7c610.
2026-06-12 16:03:28 +05:30
tapframe
3308a60528 Merge branch 'cmp-rewrite' into desktopweb 2026-06-11 00:34:38 +05:30
skoruppa
860e5e4e2c Add option to enable addons logo in stream screen 2026-06-10 14:46:48 +02:00
tapframe
84cc669bd5 feat: sidebar for desktop 2026-06-09 23:10:01 +05:30
tapframe
9a79a5a7e3 feat: support app versioning 2026-06-09 21:42:34 +05:30
tapframe
daac198e1b feat(badges): change pos - top,bottom 2026-06-07 03:09:29 +05:30
tapframe
9b3298fe2c feat: trakt as a source for morelikethis 2026-06-06 23:56:23 +05:30
tapframe
ab5415f477 feat: clear cw cache 2026-06-06 23:31:32 +05:30
tapframe
d7e1da6b47 feat(settings): add advanced settings section 2026-06-06 23:23:40 +05:30
tapframe
2446465494 feat: remember last used profile 2026-06-06 23:17:53 +05:30
tapframe
406ef99cfc feat(MPV): Spatial Audio for ios 2026-06-06 21:48:35 +05:30
WhiteGiso
3a87ecce0f feat(ios): rapid profile switch for liquid glass 2026-06-06 00:04:26 +02:00
tapframe
150081f832 feat(android): metahero trailer playback 2026-06-04 01:01:15 +05:30
tapframe
16dcac85f0 feat: toggle for size badge, localise some hardcoded strings 2026-06-01 16:13:23 +05:30
tapframe
df15c4d2f2 feat: support streambadges globally 2026-05-31 15:41:40 +05:30
tapframe
d757f1baed Merge branch 'pr/1211' into cmp-rewrite
# Conflicts:
#	composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt
2026-05-31 14:49:00 +05:30
tapframe
55eb5ea2eb Merge branch 'cmp-rewrite' into skoruppa/cmp-rewrite 2026-05-31 14:06:35 +05:30
tapframe
5a47d1fe56 Add P2P playback integration 2026-05-30 02:09:23 +05:30
tapframe
7477600514 Make blank debrid templates use original text 2026-05-30 00:59:47 +05:30
skoruppa
464cfb3059 Port improved external players support 2026-05-29 11:38:11 +02:00
tapframe
8aed980b32 feat(cloud): preserving orginal order as a sort option 2026-05-29 14:37:51 +05:30
tapframe
388dcbdf0f Merge branch 'feat/i18n-fr-consolidated' into cmp-rewrite 2026-05-29 03:08:30 +05:30
tapframe
e89d7c5406 feat: adding tv style cw card 2026-05-29 02:25:35 +05:30
tapframe
2fc6a925a1 feat: adding subtitle delay, styles management. 2026-05-27 00:25:23 +05:30
Stéphane
a258b8c12e i18n(fr): extract platform stubs + audit FR quality (pass 4)
Extract hardcoded strings (23 sites in 9 platform-specific files):
- AppUpdaterPlatform stubs (iOS, Desktop, Android Playstore)
- PluginRepository stubs (iOS App Store, Android Playstore) + main fullCommonMain
- AddonRepository.normalizeManifestUrl require message
- CollectionEditorRepository dynamic titles (TMDB Collection/List/Production/
  Network/Person/Director + Trakt List fallback)
- ExternalPlayerPlatform.android.kt (Android system player label)

New keys added (2):
- collections_editor_trakt_list_title_format (Trakt List %1$s)
- external_player_android_system (Android system player)

Reused existing keys (8): updates_not_available, plugins_error_unavailable_build,
plugins_error_enter_valid_url, plugins_error_provider_not_found,
plugins_error_enter_repo_url, addons_error_enter_url, and 6 tmdb_*_title_format.

Audit FR quality (1719 strings) — 26 corrections + 68 apostrophe normalizations:
- Fix 3 residual vouvoiement (Controlez/Enrichissez/Programmez → tu)
- Fix 2 imperative conjugations (Parcoure→Parcours, Inclut→Inclus)
- Fix 2 placeholder type bugs (%1$d→%1$s where String input)
- Fix 1 trailing space, 1 double negation calque
- Harmonize "Plus comme ceci"→"À voir aussi", flux→stream, Jun/Jul→Juin/Juil.,
  rate limit "debit"→"requetes", "Crédits de personne TMDB"→"Crédits TMDB de la personne"
- Improve 7 anglicisms (en focus→focus sur, indice→indication UI, etc.)
- Normalize 68 lines: ' → ’ typographic (192 typo / 0 droite)

Parity EN ↔ FR: 1719 strings, 2 plurals.
Builds: composeApp:compileFullDebugKotlinAndroid + compilePlaystoreDebugKotlinAndroid
both SUCCESSFUL. xmllint OK on both XML files.

Merged origin/cmp-rewrite to integrate PR #1173 (release alert badge + dropped-show
filtering for CW section), resolving conflicts in strings.xml EN+FR.
2026-05-25 21:12:33 +02:00
Stéphane
fa9528d3a7 Merge remote-tracking branch 'origin/cmp-rewrite' into feat/extract-hardcoded-strings-pass4
# Conflicts:
#	composeApp/src/commonMain/composeResources/values-fr/strings.xml
#	composeApp/src/commonMain/composeResources/values/strings.xml
2026-05-25 19:47:53 +02:00
Guilherme Lima Pereira
28fe7fc567 feat: release alert badge and dropped-show filtering for CW section
- Add New Episode / New Season badge to the Continue Watching next-up
  cards, matching the NuvioTV implementation. Badge fires when a new
  episode has aired after the user's last watched timestamp and within
  the 60-day recency window.

- Filter shows that are marked as 'dropped' on Trakt from the Continue
  Watching in-progress list, next-up seed candidates, and the
  enrichment disk cache, matching NuvioTV behaviour.

- Add AirDateUtils.kt with calculateReleaseAlertState() and
  parseReleaseDateToEpochMs() helpers used for both badge logic and
  correct next-up sort ordering when a release alert is active.

- Persist isReleaseAlert / isNewSeasonRelease in CachedNextUpItem so
  badge state survives cold starts without waiting for a full re-fetch.

- Extend translations for the badge strings (airs today / tomorrow /
  in N days / on date) across de, el, es, fr, id, it, nb, pl, pt, tr,
  cs and the default English strings.

- Add unit tests for parseReleaseDateToEpochMs, calculateReleaseAlertState
  inputs/outputs, formatReleaseDateWithoutYear, isoCalendarDateOrNull,
  daysUntilExplicitRelease, and isoEpochDay.
2026-05-24 19:59:41 -03:00
Stéphane
5aa87684c9 i18n(fr): resolve cherry-pick conflicts after merging PR #943 + #1025 + #1029
After cherry-picking pass3 changes on top of the 3 merged i18n PRs:
- Combined imports & merged code from both versions where compatible
- For CollectionEditorRepository.kt: kept pass3 version entirely (cleaner
  scope.launch + getString flow vs runBlocking in #1025)
- For SubmitIntroDialog.kt: kept #943 convention (_label/_button suffixes)
- For TmdbCollectionSourceResolver.kt: merged all imports (#1025 + pass3)
- For PlayerControls.kt: kept #943 submit_intro_action key
- For PlaybackSettingsPage.kt: kept #943 pre-loaded invalidKeyMessage
- For CollectionEditorScreen.kt: kept new tmdb_country_placeholder key
- Added missing import in SubtitleRepository.kt

Strings.xml result: 1709 EN ↔ 1709 FR, 0 missing, 0 orphan, 0 vouvoiement.
2026-05-24 10:00:34 +02:00
Stéphane
33412cc700 i18n(fr): extract hardcoded strings, harmonize tutoiement, audit cohérence
- Extract 13 hardcoded user-facing strings from cloud, collection, player,
  debrid, IntroDB to res/values/strings.xml (FR translations included)
- Refactor titleForMedia() to accept localized suffixes as parameters,
  wrap addTmdbSourceFromInput/addTraktSourceFromResult in scope.launch
- Pre-load error message for runCatching error() to keep i18n-aware
- Harmonize entire values-fr/strings.xml to tutoiement (100 occurrences
  converted from vouvoiement: Cliquez→Clique, Vous→Tu, Votre→Ton, etc.)
- Fix terminology inconsistencies: Résumé→Aperçu, Réseaux→Chaînes (TMDB),
  Suivant→À suivre (up next), Téléchargement échoué→Échec du téléchargement,
  Découverte TMDB→TMDB Discover, etc.
- Add 134 EN strings, +444 FR (134 new + 310 backfill/rewrites)
- Parity preserved: 1532 ↔ 1532 strings, 0 placeholder divergence
2026-05-24 09:48:01 +02:00