- Updated MainAppContent to use p2pFileIdx and p2pFilename for improved torrent handling.
- Enhanced P2pStreamRequest to include magnetUri for better P2P stream requests.
- Modified PlayerLaunch and PlayerScreen to accommodate new torrentMagnetUri parameter.
- Improved StreamItem to extract P2P metadata from clientResolve when top-level fields are missing.
- Added tests for StreamItem to validate P2P metadata extraction logic.
- Introduced warmup and shutdown methods in P2pStreamingEngine for better state management.
- Created build script for TorrServer Android binaries and updated APK installation logic.
Switch Norwegian locale code from "no" to the ISO 639-1 code "nb" for consistency. Updated Android locale_config.xml, renamed resource folder values-no to values-nb (strings moved/renamed accordingly), and changed the AppLanguage enum to use "nb". Also removed a now-duplicate media_series string entry in the renamed resources.
Migrates the long tail of user-facing English literals identified by the
audit report — 65 new keys across 14 source files plus the matching FR
translations (tutoiement, NBSP, curly apostrophes).
Categories:
- TMDB filter placeholders in CollectionEditorScreen (10 keys, "28,12",
"2020-01-01", "100", "en, ko, ja, hi", etc.)
- Collection editor titles & errors in CollectionEditorRepository
(TMDB/Trakt fallback titles, validation errors, "Could not load …")
- Folder type labels in FolderDetailRepository ("Trakt Series List",
"Trakt Movie List")
- TMDB resolver errors (api key required, not found, missing IDs, discover
no data) in TmdbCollectionSourceResolver
- Trakt public list resolver errors and search-result fallbacks in
TraktPublicListSourceResolver (rate limit, not public, items/likes
counts, credentials missing, error_with_code formatter)
- Comments load failure in TraktCommentsRepository
- Trakt status messages (Connected/Disconnected) in TraktAuthRepository
- AppUpdater exceptions (no release, github api error, missing tag,
no APK asset) — also strips the "cmp-rewrite" branch name from the
user-facing copy
- HTTP error fallbacks shared by both AddonPlatform.{android,ios}.kt
("Request failed with HTTP %d", "Empty response body")
- AndroidAppUpdaterPlatform download/install errors
- iOS DownloadsPlatformDownloader file/HTTP errors
- SubtitleRepository addon-subtitle display format
- DownloadsLiveStatusPlatform.android Pause action (reuses
compose_action_pause) and the byte-unit table (now includes
unit_bytes_tb)
Non-Composable suspend bodies use the existing `getString(...)` pattern;
synchronous bodies (constructors, lambda inits) use the established
`runBlocking { getString(...) }` pattern already in the codebase.
Keys that overlap with #943 (the FR overhaul PR) use the exact same
names so the eventual merge is a no-op on those.