aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
AgeCommit message (Collapse)Author
2026-03-13Merge pull request #16368 from redinsch/fix/image-language-priorityBond-009
Fix remote image language priority to prefer English over no-language
2026-03-11Use generic Enum overloads to resolve CA2263 warningsjaxx2104
Replace Enum.Parse(typeof(T), ...) and Enum.GetNames(typeof(T)) with their generic counterparts Enum.Parse<T>() and Enum.GetNames<T>() in MediaBrowser.Model/Dlna for improved type safety. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08Fix remote image language priority to prefer English over no-languageredinsch
Previously, images with no language were ranked higher (score 3) than English images (score 2), causing poorly rated languageless images to be selected over well-rated English alternatives for posters and logos. Swap the priority so English is preferred over no-language images. Backdrop images are unaffected as they have their own dedicated sorting. Add unit tests for OrderByLanguageDescending. Fixes #13310
2026-02-26Merge pull request #16255 from cosu/fix/streaminfo-malformed-query-stringBond-009
Fix malformed query string in StreamInfo.ToUrl() causing 500 error via proxies
2026-02-18Fix malformed query string in StreamInfo.ToUrl() causing 500 error via proxiesCosmin Dumitru
StreamInfo.ToUrl() generated URLs like `/master.m3u8?&DeviceId=...` (note `?&`) because `?` was appended to the path and all parameters started with `&`. When the first optional parameter (DeviceProfileId) was null, the result was a malformed query string. This is harmless when clients hit Jellyfin directly (ASP.NET Core tolerates `?&`), but when accessed through a reverse proxy that parses and re-serializes the URL (e.g. Home Assistant ingress via aiohttp/yarl), `?&` becomes `?=&` — introducing an empty-key query parameter. ParseStreamOptions then crashes on `param.Key[0]` with IndexOutOfRangeException. Changes: - StreamInfo.ToUrl(): Track query start position and replace the first `&` with `?` after all parameters are appended, producing valid query strings - ParseStreamOptions: Guard against empty query parameter keys - Tests: Remove .Replace("?&", "?") workaround that masked the bug Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15Fix buildBond_009
2026-01-27Merge pull request #16110 from nielsvanvelzen/api-deprNiels van Velzen
Remove some deprecated API members
2026-01-27Remove unused usingsNiels van Velzen
2026-01-26Merge pull request #14809 from lostb1t/fix/subtitleencoderNiels van Velzen
fix: prevent premature disposal of HTTP subtitle streams
2026-01-25Remove some deprecated API membersNiels van Velzen
2026-01-18Fix zh-CN subtitle language display (#15947)Bond-009
The DisplayTitle property was using .NET's CultureInfo.GetCultures(NeutralCultures) to resolve language display names. Since zh-CN is a specific culture (not neutral), it would fall back to the base 'zh' code, resulting in generic 'Chinese' instead of 'Chinese (Simplified)'. This change adds a LocalizedLanguage property to MediaStream that gets populated via LocalizationManager.FindLanguageInfo() when streams are retrieved from the database. This leverages Jellyfin's existing iso6392.txt mappings which correctly map zh-CN to 'Chinese (Simplified)'. The same pattern is already used for other localized strings like LocalizedDefault and LocalizedExternal.
2026-01-18Merge pull request #15926 from abitofevrything/feat/accurate_hls_seekingAbitofevrything
Refactor HLS transcode seeking
2026-01-14Update to .NET 10.0Bond_009
2026-01-05Fix zh-CN subtitle language displayZeusCraft10
The DisplayTitle property was using .NET's CultureInfo.GetCultures(NeutralCultures) to resolve language display names. Since zh-CN is a specific culture (not neutral), it would fall back to the base 'zh' code, resulting in generic 'Chinese' instead of 'Chinese (Simplified)'. This change adds a LocalizedLanguage property to MediaStream that gets populated via LocalizationManager.FindLanguageInfo() when streams are retrieved from the database. This leverages Jellyfin's existing iso6392.txt mappings which correctly map zh-CN to 'Chinese (Simplified)'. The same pattern is already used for other localized strings like LocalizedDefault and LocalizedExternal.
2025-12-31Optimize StringHelper.ToFirstUpper()stevenaw
2025-12-21wiplostb1t
2025-12-21wiplostb1t
2025-12-08Add ability to sort and filter activity log entries (#15583)Cody Robibero
2025-12-02Merge pull request #15538 from KarkaLT/masterNiels van Velzen
Add subtitle extraction timeout configuration option
2025-11-27Merge pull request #13977 from sususu98/fix/strm-local-subtitle-urlNiels van Velzen
refactor(StreamInfo): reorganize subtitle URL logic and conditions
2025-11-27Merge pull request #14950 from nielsvanvelzen/security-remove-has-passwordNiels van Velzen
Deprecate HasPassword property on UserDto
2025-11-18Disable legacy authorization methods by defaultNiels van Velzen
2025-11-17Add subtitle extraction timeout configuration optionKarolis
2025-11-02Backport pull request #15254 from jellyfin/release-10.11.zthornbill
Update password reset to always return the same response structure Original-merge: 4ad31418753840ca76c52fc2aa56fa1a4235ca87 Merged-by: crobibero <cody@robibe.ro> Backported-by: Joshua M. Boniface <joshua@boniface.me>
2025-10-26Bump version to 10.12.0 (for real this time)Joshua M. Boniface
2025-10-05Deprecate HasPassword property on UserDtoNiels van Velzen
2025-08-11Refactor to pull item counts in a single queryCody Robibero
2025-08-03Merge pull request #14410 from dyphire/languageJoshua M. Boniface
Further refinement of BCP 47 language labeling support
2025-07-30Further refinement of BCP 47 language labeling supportdyphire
2025-07-14vob file support (#14471)FJOX.win
2025-06-24Adapt LrcLyricParser to new LrcParser version (#14263)Max Rumpf
2025-06-16Use dto instead of db object when returning trickplayCody Robibero
2025-06-15Use square root scaling for high framerate videos' bitrate requirements (#14314)v10.11.0-rc2gnattu
2025-06-10Fix existing media segments not being handled on scan (#14218)ThunderClapLP
2025-06-09fix(Session): don't query DB if queue hasn't changed (#14244)Sid K
2025-06-01Merge pull request #13145 from SenorSmartyPants/RemoteImageSortingBond-009
Round RemoteImage CommunityRating to nearest tenths when sorting
2025-05-04Cleanup file related code (#14023)Bond-009
2025-04-24style: fix return statement indentation in StreamInfo.cssususu98
2025-04-24Style: Fix indentation in StreamInfo.cssususu98
2025-04-23refactor(StreamInfo): reorganize subtitle URL logic and conditionssususu98
# Conflicts: # MediaBrowser.Model/Dlna/StreamInfo.cs
2025-04-20Add Api and startup check for sufficient storage capacity (#13888)JPVenson
2025-04-19Fix SyncPlay WebSocket OpenAPI schemas (#13946)Niels van Velzen
2025-04-08Only reselect audio streams when user preference is respected (#13832)gnattu
2025-04-08Use Guid for parentPrimaryImageItemId (#13874)Niels van Velzen
2025-04-07Translate the ISO-639-2/B codes to ISO-639-2/T. (#13068)baka0815
* Translate the ISO-639-2/B codes to ISO-639-2/T. This enables 19 additional languages to be displayed correctly. * Convert the 2-dimensional array to a dictionary * Added the French language to the list of ISO-639-2/B codes * Don't change the property, use a local variable instead. * When creating the MediaStream in the MediaStreamRepository ensure that the ISO 639-2/T (f.e. deu) code is used for the language as that is the one the .NET culture info knows. The other code is most likely the ISO 639-2/B code (f.e. ger) which is unknown to the .NET culture info and will result in just displaying the code instead of the display name. * Move the substitution of ISO 639-2/B to /T to the localization manager. Some language (like Chinese) have multiple entries in the iso6392.txt file (f.e. zho|chi|zh|..., zho|chi|zh-tw|...) but the conversation between /T and /B is the same so use .TryAdd. * Change the method definition from GetISO6392TFromB to TryGetISO6392TFromB and return true if a case was found. * Add unit tests for TryGetISO6392TFromB.
2025-04-07Add API support for ELRC word-based lyrics (#12941)Alex
* Add API support for ELRC word-based lyrics Adds support for word-based timestamps from within ELRC files. * Create TimeTags object * redo TimeTag implementation Change TimeTag to long, redo TimeTag implementation Make timestamp not nullable Update MediaBrowser.Model/Lyrics/LyricLine.cs Make TimeTag list IReadOnlyList Remove nullable Timestamp Update TimeTag description Co-Authored-By: Cody Robibero <cody@robibe.ro> * Changes to LyricLineTimeTag Moved TimeTag to LyricLineTimeTag Change "timestamp" to "start" for consistency Change plural "TimeTags" to "Cues" Change comments * Change LyricLineTimeTag to LyricLineCue, include info about end times * Remove width * Remove width tag * Rewrite cue parser and add tests --------- Co-authored-by: Cody Robibero <cody@robibe.ro>
2025-04-06Returns album artists apart from artist names when doing a lyrics search ↵JQ
(#13852)
2025-04-03Make ReadInputAtNativeFramerate configurable for M3U tuner (#13773)timminator
2025-04-03Cleanup extracted files (#13760)Tim Eisele
* Cleanup extracted files * Pagination and fixes * Add migration for attachments to MigrateLibraryDb * Unify attachment handling * Don't extract again if files were already extracted * Fix MKS attachment extraction * Always run full extraction on mks * Don't try to extract mjpeg streams as attachments * Fallback to check if attachments were extracted to cache folder * Fixup
2025-04-02Improve dynamic HDR metadata handling (#13277)gnattu
* Add support for bitstream filter to remove dynamic hdr metadata * Add support for ffprobe's only_first_vframe for HDR10+ detection * Add BitStreamFilterOptionType for metadata removal check * Map HDR10+ metadata to VideoRangeType.cs Current implementation uses a hack that abuses the EL flag to avoid database schema changes. Should add proper field once EFCore migration is merged. * Add more Dolby Vision Range types Out of spec ones are problematic and should be marked as a dedicated invalid type and handled by the server to not crash the player. Profile 7 videos should not be treated as normal HDR10 videos at all and should remove the metadata before serving. * Remove dynamic hdr metadata when necessary * Allow direct playback of HDR10+ videos on HDR10 clients * Only use dovi codec tag when dovi metadata is not removed * Handle DV Profile 7 Videos better * Fix HDR10+ with new bitmask * Indicate the presence of HDR10+ in HLS SUPPLEMENTAL-CODECS * Fix Dovi 8.4 not labeled as HLG in HLS * Fallback to dovi_rpu bsf for av1 when possible * Fix dovi_rpu cli for av1 * Use correct EFCore db column for HDR10+ * Undo outdated migration * Add proper hdr10+ migration * Remove outdated migration * Rebase to new db code * Add migrations for Hdr10PlusPresentFlag * Directly use bsf enum * Add xmldocs for SupportsBitStreamFilterWithOption * Make `VideoRangeType.Unknown` explicitly default on api models. * Unset default for non-api model class * Use tuples for bsf dictionary for now