A simple Media Hub
Find a file
Stéphane 8e97bac880 feat(network): send Accept-Language header to addons
Adds an `Accept-Language` header on every addon HTTP call so Stremio-
compatible addons that maintain localized payloads (catalog names,
descriptions, …) can serve them in the user's language.

Resolution rules (mirrors NuvioTV PR #1766 with stricter region handling):

- User-picked in-app language (always region-less, e.g. `fr`):
  legacy behaviour `fr, en;q=0.7` — accept any French variant the addon serves.
- Otherwise device locale tag from `Locale.getDefault().toLanguageTag()` /
  `NSLocale.preferredLanguages.first`.
  - Regional locale (`fr-FR`, `pt-BR`, `es-MX`):
    strict chain `fr-FR, fr;q=0.9, en;q=0.5` — exact region first, then any
    variant of the same language, then English. Cross-region variants
    (e.g. `fr-CA`) are not preferred.
  - English (with or without region): tag itself, no q-suffix.
- Final fallback: `en`.

Header is added as a default — if the caller already specified
`Accept-Language` (case-insensitive), it is preserved untouched.

Affects every place in the app that displays a catalog name pulled from
an addon manifest: home rows, "see all" header, search → discover catalog
selector, addon reorder home catalogs screen, collection editor catalog
picker.

Adding a request header is fully backward-compatible — addons that
ignore it return identical payloads.
2026-05-13 19:34:48 +02:00
.github adding CONTRIBUTING.md 2026-04-19 18:59:45 +05:30
composeApp feat(network): send Accept-Language header to addons 2026-05-13 19:34:48 +02:00
Docs/Stremio addons refer kmp init 2026-03-04 09:00:00 +05:30
gradle chore: update coil version 2026-05-12 18:34:00 +05:30
iosApp bump version 2026-05-13 14:00:38 +05:30
libass-android@c10b71ab8b fix: update addon fetch timeout 2026-04-10 20:09:45 +05:30
MPVKit@97923266e4 feat: update WatchingActions to mark watched items 2026-04-22 15:32:54 +05:30
scripts feat: add manual play option and update stream loading logic 2026-04-07 14:56:05 +05:30
vendor fix: ios downloads 2026-04-30 17:13:19 +05:30
.gitignore update deps 2026-04-23 00:59:28 +05:30
.gitmodules update deps 2026-04-23 00:59:28 +05:30
build.gradle.kts kmp init 2026-03-04 09:00:00 +05:30
CONTRIBUTING.md adding CONTRIBUTING.md 2026-04-19 18:59:45 +05:30
gradle.properties fix: adjust behaviour logic of streamlink caching 2026-05-12 12:22:58 +05:30
gradlew kmp init 2026-03-04 09:00:00 +05:30
gradlew.bat kmp init 2026-03-04 09:00:00 +05:30
LICENSE update readme 2026-04-19 00:35:34 +05:30
README.md update readme 2026-04-19 00:37:20 +05:30
settings.gradle.kts kmp init 2026-03-04 09:00:00 +05:30

Nuvio

Contributors Forks Stargazers Issues License

A modern media hub for Android and iOS built with Kotlin Multiplatform and Compose Multiplatform.
Stremio addon ecosystem • Cross-platform

About

Nuvio is the current Kotlin Multiplatform rewrite of the original React Native app. It delivers a shared Compose UI for Android and iOS while keeping the playback-focused experience, collection tools, watch progress flows, downloads, and Stremio addon ecosystem integration that shaped the earlier app.

The mobile app is built from a single shared codebase in composeApp, with native platform entry points for Android and iOS.

Installation

Android

Download the latest Android build from GitHub Releases.

iOS

Development

git clone https://github.com/NuvioMedia/NuvioMobile.git
cd NuvioMobile
./scripts/run-mobile.sh android
# or
./scripts/run-mobile.sh ios

Project Structure

  • composeApp/ contains the shared Kotlin Multiplatform and Compose Multiplatform app code.
  • composeApp/src/commonMain/ contains shared UI, features, repositories, and platform-agnostic logic.
  • composeApp/src/androidMain/ contains Android-specific integrations.
  • composeApp/src/iosMain/ contains iOS-specific integrations.
  • iosApp/ contains the native Xcode project and iOS entry point.

Useful commands:

./gradlew :composeApp:assembleDebug
./gradlew :composeApp:compileKotlinIosSimulatorArm64
./scripts/build-distribution.sh

Versioning is driven from iosApp/Configuration/Version.xcconfig, which is used as the shared source of truth for both iOS and Android builds.

Nuvio functions solely as a client-side interface for browsing metadata and playing media provided by user-installed extensions and/or user-provided sources. It is intended for content the user owns or is otherwise authorized to access.

Nuvio is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.

For comprehensive legal information, including our full disclaimer, third-party extension policy, and DMCA/Copyright information, please visit our Legal & Disclaimer Page.

Built With

  • Kotlin Multiplatform
  • Compose Multiplatform
  • Kotlin
  • AndroidX Media3
  • AVFoundation and native iOS integrations

Star History

Star History Chart