aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
AgeCommit message (Collapse)Author
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
2025-03-31Cleanup ItemFields (#13818)Tim Eisele
* Cleanup ItemFields * Update MediaBrowser.Model/Querying/ItemFields.cs
2025-03-31Preserve SplashscreenLocation when updating branding config (#13756)KGT1
* add BrandingOptionsDto and add branding endpoints * refactor new HttpGet Configuration Branding into existing API calls * Add BrandingOptions to _ignoredConfigurations for openAPI * rename BrandOptionsDto to BrandingOptionsDto
2025-03-31Explicitly set default value for enums used in API models (#13821)gnattu
Enums in response model with no nullability or default value will make the API very fragile as each extension to the enum will break the API for some clients, but a lot of enums actually do have an unknown value which should be used as a default. This set all model properties that are non-nullable using an enum that has an Unknown member in 10.10, except MediaStream.VideoRangeType which is refactored in #13277