๐ Release notes for 12.0Notes on UpdatingBefore upgrading from an earlier version, a full backup of the data directory is strongly recommended, as this release includes database changes that prevent rolling back without a full restore.Direct upgrades from 10.10.7 and 10.11.x to 12.0 are supported; intermediate upgrades are not required. Users running releases older than 10.10.7 are strongly encouraged to upgrade to 10.10.7 before migrating to 12.0.Installed repository plugins (anything not built-in) should also be removed before migrating. Plugins will likely need time to adapt to the new database changes, so re-adding them afterward is the safest approach for testing.Official plugins compatible with Jellyfin are available through the stable plugin repository. If you have changed to the unstable plugin repository please change it back.Go to Dashboard -> Plugins -> Manage RepositoriesUpdate the Plugin Repository URL to: https://repo.jellyfin.org/files/plugin/manifest.jsonAfter migrating please perform the following steps.Perform a full library scan to restore alternative versionsIf you run into issues, please prefix bug reports with "[12.0]".PackagingDebian Bullseye and Ubuntu Focal packages are no longer builtServerPerformance PR implications #16062We're running a full path-based check on all library items to clean up left overs. Depending on size this can take some timeAlternative versions of media that were auto resolved (not manually merged) will be removed due to data type issues -> A full library scan will fix this again and is therefore REQUIRED AFTER UPGRADEFirst scan will take significantly longer than normal and some movies might appear as newly added due to type issues that got fixed on-scanMultiple versions for episodesSimilarity & recommendation providersSearch providers, letting plugins extend or replace how search results are producedSchedulesDirect and EPG refresh fixesFixes to the parental rating systemProper data pruning on file replacement/deletionSupport triple+ digit episode numbersAdd library-specific BoxSet and Playlist filtering, allowing per-library collection and playlist viewsCACHEDIR.tag supportAccept-Language header supportAdd VideoRotation profile condition for Android TVs that do not support rotation metadataParse provider IDs from season and episode folder/file namesAllow tmdb, tvdb, and imdb as aliases for the tmdbid, tvdbid, and imdbid provider IDsAdd curly brace and parentheses support for parsing attribute valuesAdd NameStartsWith and NameLessThan filters to Person searchAdd new filters for audio and subtitle languagesAdd OriginalLanguage as option to PreferredAudioLanguageAdd a collection API for Included In featureAdd support for VobSub subtitle streamsAdd Tmdb missing episode providerBreaking and behavior changesLegacy route prefixes removed (/emby/* and /mediabrowser/*). Old third-party clients that rely on them will stop workingLegacy authorization is now disabled by default, and a migration disables it on existing installs as wellRemoved obsolete API routes: POST /Users/{userId}/EasyPassword (the EasyPassword feature is gone), GET /Items/{itemId}/CriticReviews, GET /Environment/NetworkShares, POST /System/MediaEncoder/Path, GET /LiveTv/Recordings/Groups/{groupId}, and GET /QuickConnect/InitiateThe global subtitle configuration has been removed, subtitle settings are configured per library.ogg is no longer treated as a video extension and is audio only, .aifc is now recognized as audio, and .aiff is no longer treated as an imageSymlinks are only resolved at playback timeSorting by name now uses SortName and CleanName, and the same cleaning logic is applied to ForcedSortName. Library ordering may change compared to 10.11Image endpoints no longer upscale beyond the source resolution, so low resolution artwork renders at its real size instead of being enlargedUsername capitalization can now be changed. Usernames are stored in a normalized column with a unique index, so installs with usernames that differ only by case need to be corrected before upgradingDatabase and performancePlaylists and collections are now properly relational, using a new LinkedChildren table instead of serialized child lists. OwnerId and PrimaryVersionId are real GUID foreign keys, and ExtraIds has been droppedMany tuning migrations covering item counts, item names, type and clean name, latest items, image info, and primary version idMigration routines clean up existing data on first boot: duplicate music artists and people are merged, orphaned extras and external data are removed, incorrect owner relationships are repaired, and clean names, forced sort names, and series presentation keys are recomputedHeavy database tasks no longer run while a library scan is in progressFaster queries for Resume, Next Up, rewatching, Latest Items for music, playlists and collections, artist lookup, and item countsItem deletion is batched, which fixes "too many SQL variables" failures when deleting large numbers of itemsjellyfin.db can now be stored at a custom pathOperationsNew --mode startup flag with MediaServer, MigrateSystem, and SeedSystem, allowing migrations or database seeding to be run without starting the server. This is useful for containerized and orchestrated deployments and for controlled upgradesThe startup interface has been restyled and now shows version and activity informationDisabled plugins are no longer re-enabled on restartFull system backups skip corrupt keyframe rows instead of failingMedia and subtitlesSubtitle writing now goes through SubtitleEdit, which is what avoids the SSA to ASS conversion and loss of stylesExternal subtitles can be embedded into MKV when transcodingThe subtitle extraction timeout is now configurableClient-rendered graphical subtitles are allowed during remuxFixes for races in concurrent subtitle conversion, cache invalidation when a subtitle is replaced, and ffmpeg hangs during extractionNew HlsAudioSeekStrategy configuration optionTrickplay: existing files are discovered during a scan, duplicates from interlaced video are fixed, invalid PTS values from containers are normalized, and the cache is cleaned up after a failureLive TVLive TV no longer returns unreachable "server-local" streaming URLs to clientsXMLTV background images and episode thumbnails are now importedXMLTV guide imports skip programs whose data has not changed, using an ETag computed from the fields the server actually consumes, which makes repeat guide refreshes considerably cheaper. Other listings providers stay on the existing field-by-field update pathMetadata and providersListenBrainz is now bundled with the server and provides similar artist data with a selectable similarity algorithmTVDB provider IDs are supported for moviesAudioDb artist searchReplayGain album gain is parsedMusicBrainz lookups are more resilientWEB-DL release tags are recognized in file namesHyphenated numbers in episode titles are no longer parsed as multi-episode files3D format detection works when the tag is the last token of the pathPerson metadata refreshes are queued instead of blocking the requestTranscoderNew upstream version of FFmpeg 8.1Optimized CUDA transposing filter performanceOptimized OCL scaling filter performanceOptimized OCL tonemapping filter performance on Mali GPUUse EOTF from BT 2446 Method B for HLG tonemappingFix potential A/V desync in HLS when transcoding video while remuxing audioAvoid SSA to ASS conversion and loss of stylesAdd spec-compliant dvh1 HLS variant for DoVi P5 for compatibilityWebThe Modern layout is now the default, the previous layout is now called LegacyUpdated Music Videos viewUpdated Mixed Media viewUpdated Collections & Playlists viewUpdated Books viewAdd still watching promptAdd delay setting for photo slideshowAdd caching of queries to indexed db for the tanstack query client for improved loading performanceAdd watch feature to log viewerAdd , and . as controls to scrub frame-by-frameAdd filters for audio and subtitle languages (modern layout only)Add Collections and playlist tab to all librariesAdd collections to item details pageReplace libpgs with libbitsub and adds support for vobsub renderingMerge cards for crew with multiple rolesLayout and themesAll themes now derive from a shared base theme built on CSS variables, including Dark, Light, WMC, Blue Radiance, Apple TV, and Purple Haze. Custom themes may need to be adjustedThe library toolbar has been merged into the app bar, with a sticky library header and design polish throughout the libraryCustom links can be added to the Modern layoutThe screensaver time setting is now available in the Modern layoutLibraries and browsingCollections and folders tabs for book libraries, and a folder view in the Modern home videos layoutDefault tab options for Home Videos and Photos librariesStudio search, and an extended Studios tabPlay All and Shuffle buttons on the series library. Both are disabled rather than hidden when no items are availableImproved Upcoming viewSorting and filtering on the Activity pageA Reset Filters button in the filter dropdownFolders can be marked as playedTV show creators are shown on item detailsSimilarity providers can be configured per libraryPagination controls are hidden when paging is disabledPlaybackThe playback info overlay is more compact and shows more detailChapter names are shown in the OSD slider bubbleBitrate detection now runs in webDolby Vision in MKV on webOS 25 and newerAV1 fMP4 stream copy on TV clientsDirect play of anamorphic video on Tizen, and loosened anamorphic restrictions for browser device profilesOn iOS, background playback continues when the screen is turned off, and audio normalization is disabled to fix pitch and speed issueslibbitsub updated to v1.11.0 with an HLS offset fixThe screensaver is suppressed while viewing photos or readingTV and remoteGame controller navigation fixes, and the gamepad repeat rate is no longer tied to framerateKeyboard controls work on non-Latin keyboard layouts, with additional fixes for older browsersRewind and FastForward play state commands are handledSyncPlay menu update, and the SyncPlay ping is now reported to the serverFocused and checked checkbox styling in the TV layoutUnder the hoodWebSockets have been migrated to SDK subscriptionsThe React and TypeScript migration continues with the libraries, Live TV, and networking pages, and the dashboard user pages now use the TS SDKTanStack Query now backs user settings and home screen sections, and the query cache is cleared when the server restartsNotable fixesBlurry card images on high DPI displays, and card image sizes are rounded upDuplicate /socket connectionsLogin loop, connecting to the wrong server when several are configured, and native shell server selection when signing outAn invalid request for all items on page loadThe Live TV default landing tabHolding and dragging on media no longer activates multi-selectA warning is shown before restoring a version, a warning is shown when starting a backup while a scan is running, and a library scan starts automatically when folders are added to a librarySecurityServer:Path validation has been added to the legacy HLS segment endpoints and to the plugin image endpoint, so a requested file must resolve inside the transcode directoryPath traversal hardening has been extended to the image and plugin endpoints and to username path handling, building on the fixes released in 10.11.xThe startup wizard can no longer be re-run without authentication on a misconfigured serverUnsafe plugin package names are rejected by the plugin installerParental filtering is enforced on additional endpoints, playlist visibility has been corrected, non-admin access to additional parts has been fixed, and people are exempt from the allowed tags visibility checkWeb:Cross-site scripting via person rolesAuth parameters are encoded when creating API clientsThe login disclaimer only allows common link protocol schemesBooksBooks have often taken a backseat in favor of video playback in Jellyfin, but this should no longer be the case.We have started a concerted effort to improve book support across the API and our official clients.eBook and comic support is still maturing, but the ODPS plugin allows for direct access from a wide range of popular self-hosted programs.Correspondingly, contributions in any repository are extremely welcome from the wider community.That includes server improvements, documentation changes, and third-party clients for book playback.A combination of eBook, comic, and audiobook support is available on the following clients.Official: Web, iOS, Android, Desktop, Roku, Kodi, JMPCommunity: JellyBook, Symfonium, Jellium, PlappaOne notable omission from the server is book series as unique entities, which didn't make the cut for this release.If you would like to bridge the gap until they are added, feel free to use the Folio plugin to display them as collections.It functions very similar to the TMDb Box Sets plugin but only applies to eBooks.Another in-flight feature is audiobook chapters, which are only available from the API at present.Luckily, this means client support is now possible, so you should see them appear in your favorite audiobook client before our next server release.NOTE: The Bookshelf plugin has been deprecated and its features have been merged into server or extracted into the ComicVine and GoogleBooks providers.Server ChangesBookshelf has been split into separate GoogleBooks and ComicVine providersLocal book parsing has been improved and is available without pluginsBook metadata is extracted directly from OPF and ComicInfo files or ComicBookInfo commentsExternal covers are now supported for audiobook filesPosters are generated for EPUBs and all supported comic archivesName, index, year, and series are parsed from book filenamesBoth volume and chapter will be available in the API when present in comic filenamesPage counts are extracted from comic archives and PDFsCreator names from OPF data are normalized to a common formatA new OpenLibrary plugin has been created for metadata and imagesISBN external IDs and links are supportedChapters are now extracted from audiobooksWeb ChangesModern book library layout has been added with view types and pagingBooks display information about their authors and vice versaPlayback interface has been redesigned and standardized across all book typesProgress indicator is enabled again for supported eBooksSorting books by index number, release date, etc is now availableFont size selection has been improved for EPUB filesBackground audiobook playback is working on iOS devicesAuthors, collections, and folders tabs have been added to book libraries, and audiobooks appear under authorsFullscreen behavior is unified across all book players, and PDFs support swipe navigationDevelopersAPI ChangesThe API no longer allows the use of deprecated authorization mechanisms by default.Clients and tooling need to migrate if they haven't done so already. See #15559 for details.There have been a number of other changes to the SDK libraries and API as part of an ongoing effort to better document the API for client use.Please note the following with regards to API support.A full explanation of our policy for API changes will be added to the developer documentation in the coming months.If an endpoint isn't listed in the OpenAPI specification it should not be used by clients.There are certain endpoints that are still exposed for legacy reasons despite being excluded from the OpenAPI spec.These can be removed in any major release without warningIf an endpoint or parameter is marked as obsolete in the OpenAPI specification it should not be used by clients.Same explanation as above.As a general rule, any deprecations will be marked as such for an entire (major) release cycle before the deprecated endpoint or parameter is liable for removal.Behavior changes clients should be aware of:GetItems is now asynchronous and applies recursive when filters are requested, limited to requests that include includeItemTypes. The same query can return a different result set than it did on 10.11ItemByName responses are restricted and people are deduplicatedNewly obsolete but still functional, with replacements:GetTrailers -> use GetItems with includeItemTypes=TrailerGetArtists and GetAlbumArtists -> use GetPersonsGetArtistByName -> use GetPersonGetMusicGenre -> use GetGenreGetInstantMixFromMusicGenreById and GetInstantMixFromMusicGenreByName -> use GetInstantMixFromItemGetStartupConfiguration, UpdateInitialConfiguration, and SetRemoteAccess -> use the configuration endpointsGetRecordingsSeriesUserDto.HasPassword is marked obsolete and no longer provides useful informationThe HLS controllers are hidden from the specificationPlatformThe server now targets .NET 10. Plugins have to be retargeted and rebuiltSwashbuckle has been updated to v10, which changes the generated OpenAPI document, so SDKs need to be regeneratedjellyfin-web now builds with Node 24 LTS and npm 11Plugin changesISearchEngine has been replaced by ISearchManager, and SearchEngine has been replaced by SearchManager together with SqlSearchProviderRemoved: NowPlayingQueueFullItems, DtoExtensions.AddClientFields, Jellyfin.Extensions.AlphanumericComparator, the ISubtitleWriter family of subtitle writers, and SubtitleOptions with SubtitleConfigurationFactoryServerConfiguration.EncoderPreset is no longer nullableIAuthenticationProvider.HasPassword has been removedIPasswordResetProvider.StartForgotPasswordProcess takes the entered username and a nullable userIUserManager: the Users and UsersIds properties are now the GetUsers and GetUsersIds methods, and RenameUser, ResetPassword, and ChangePassword take a user id instead of a User. GetFirstUser has been addedSeveral IItemRepository members moved to the new services: item saving and deletion and UpdateInheritedValues to IItemPersistenceService, counts to IItemCountService, and Next Up series keys to INextUpServiceIPeopleRepository.GetPeople and ILibraryManager.GetPeopleItems return a QueryResult, and IDtoService.GetBaseItemDtos and ILibraryManager.DeleteItemsUnsafeFast have new signaturesIDirectoryService.GetFilePaths no longer takes a sort argument, and the IPathManager subtitle and attachment path getters are now nullableNew plugin APIsThis release adds several extension points that plugins could not hook into before.Search providers. Plugins can now take part in search itself rather than only in metadata lookup. ISearchProvider exposes Name, Type, Priority, and CanSearch(SearchProviderQuery), with IInternalSearchProvider for providers that search the local library and IExternalSearchProvider for providers that stream SearchResult items from a remote service. Providers are registered through ISearchManager.AddParts and are consulted in priority order, so a plugin can extend or take over from the built-in SqlSearchProviderSimilarity and recommendation providers. ISimilarItemsProvider is split inherited by ILocalSimilarItemsProvider, IRemoteSimilarItemsProvider, and IBatchLocalSimilarItemsProvider, each with a generic variant so a provider can declare the item type it handles. Providers are selected and ordered per library through LibraryOptions.SimilarItemProviders and SimilarItemProviderOrder, and ISimilarItemsManager also pulls movie recommendations. The bundled ListenBrainz provider is built on thisComic metadata providers. IComicProvider (ReadMetadata and HasItemChanged) lets a plugin supply comic metadata alongside the built-in ComicInfo and ComicBookInfo readersChapters for any item type. IChapterManager.SaveChapters now takes a BaseItem rather than a Video, and gained a Supports(BaseItem) check. This is what makes audiobook chapters possible, and it lets plugins save chapters for non-video itemsPassword resets for unknown users. IPasswordResetProvider.StartForgotPasswordProcess now receives the entered username along with a nullable user, so a provider can handle a request for a username the server does not know or hand the reset off to an external providerMedia segment cleanup. IMediaSegmentProvider.CleanupExtractedData is called when an item's data is pruned, so segment providers can remove their own extracted filesSchedules Direct. ISchedulesDirectService exposes available countries, service availability, and the image daily limit state, so Live TV plugins no longer need to reimplement them. ITunerHostManager.DeleteTunerHost allows removing a tunerAlternate versions and linked children. Now that linked children are relational, ILibraryManager exposes ResolveAlternateVersion, GetLocalAlternateVersionIds, GetLinkedAlternateVersions, GetItemIdsWithAlternateVersions, and UpsertLinkedChild. Plugins that manipulated version links through serialized item data need to move to theseBatch APIs for bulk work. IUserDataManager gained GetUserDataBatch, GetResumeUserData, GetResumeUserDataBatch, and ResetPlaybackStreamSelections. ILibraryManager gained GetPeopleByItems, GetPeopleNamesByItems, and GetNextUpEpisodesBatch. IItemCountService offers batched child and played/total countsLocalization. ILocalizationManager.GetServerLocalizedString and GetLanguageDisplayName let plugins localize against the server localeICollectionManager.GetCollectionsContainingItem backs the Included In feature, and IPlaylistManager.AddItemToPlaylistAsync takes a position so items can be inserted at the top of a playlistIHasEmbeddedImage is also new, but it is only for plugins compiled into the server; external plugins should keep declaring their image with imagePath in meta.json.TLS ConfigurationIn the previous release notes 10.11.0 we announced the deprecation of the built-in TLS certificate handling for this version. This change has been postponed to a future version.Discuss this release further on our forums.Changelog (460)๐ SecurityPotential FFmpeg argument injection via unescaped subtitle file path [GHSA-wwwm-px48-fpvq]๐ HighlightsImplement multiple versions for episodes. [PR #16828], by @ShadowghostDisable legacy authorization methods by default [PR #15559], by @nielsvanvelzen๐๏ธ EnhancementsFix movie recommendations [PR #16856], by @ShadowghostHave device deletion take list of ids [PR #12834], by @LePipsAllow tmdb as an alias for tmdbid provider id [PR #16433], by @theguymadmaxFix EPG issues [PR #16220], by @ShadowghostAdd CACHEDIR.tag support [PR #16478], by @ShadowghostRemove global subtitle configuration [PR #14957], by @KGT1Fix: normalize punctuation when computing CleanName so searches without punctuation match (closes #1674) [PR #14879], by @audrey-inglishrefactor(StreamInfo): reorganize subtitle URL logic and conditions [PR #13977], by @sususu98๐ General ChangesFix Blu-ray multi-angle concat generation [PR #17824], by @Raspberry-MonsterExpose optimized ItemCounts for byName items [PR #17821], by @ShadowghostOnly download missing plugin images [PR #17820], by @ShadowghostApply the resize sharpening kernel directly instead of via SKImageFilter [PR #17775], by @slevin-7Share played state across alternate versions [PR #17816], by @ShadowghostFix TMDb search result ranking [PR #17819], by @ShadowghostFix TMDb recommendations [PR #17810], by @ShadowghostBetter handle timeouts on plugin operations [PR #17794], by @ShadowghostDon't dispose application singletons after running a code migration [PR #17791], by @ShadowghostEnforce dolby vision transfer check [PR #17806], by @gnattuFix items being lost from the refresh queue and bound the directory service caches [PR #17763], by @ShadowghostFix handling of unordered multi-episode NFOs [PR #17805], by @ShadowghostOptimize database after migrations [PR #17786], by @ShadowghostBound change batches during a scan; keep ffprobe and image saves from failing [PR #17762], by @ShadowghostFix PGS subtitles for BDMV with TrueHD [PR #17674], by @Oggeb1Probe .idx instead of .sub for external VobSub subtitle language detection [PR #17746], by @kfarnungDrop SyncPlay requests from sessions that left the group [PR #17799], by @fmarcacFix Live TV HLS playback: bogus audio encoder and unplayable direct played manifests [PR #17768], by @ShadowghostFix crash when SyncPlay shuffle mode is set to sorted twice [PR #17796], by @fmarcacFix SyncPlay active session counter leaking on rejoin [PR #17800], by @fmarcacFix unit mismatch in the SyncPlay resume delay floor [PR #17798], by @fmarcacAdd comprehensive logging for post scan tasks [PR #17767], by @ShadowghostFix UI stalls caused by large tag and genre sets [PR #17757], by @felixfoertschBound the TMDb response cache so a library scan cannot fill it without limit [PR #17764], by @Shadowghostfix: return fallback gracefully when requested fallback font is missing [PR #17761], by @zerafachrisFix people and artist validator creation and deletion handling [PR #17756], by @ShadowghostAdd progress logging to data migrations [PR #17743], by @ShadowghostEnforce reliable processing order in PeopleValidationTask [PR #17750], by @ShadowghostFix recursive handling for LinkedChildren [PR #17752], by @ShadowghostFix ListenBrainz settings and similar item defaults [PR #17748], by @ShadowghostFix item counts on the by-name endpoints [PR #17724], by @ShadowghostEnforce permissions on similar items [PR #17729], by @ShadowghostFix formatting and test [PR #17744], by @ShadowghostFilter search candidates by user access in a single query [PR #17739], by @ShadowghostSupport anime provider ids on season folders [PR #17731], by @ShadowghostCount a season's episodes by the season they belong to [PR #17735], by @ShadowghostFix ParentId for episodes in virtual seasons [PR #17719], by @theguymadmaxPersist the refresh stamp so the people task stops redoing its work [PR #17709], by @ShadowghostFix children count on virtual items [PR #17718], by @ShadowghostDelete credits nothing maps to and bound item-by-name folder names [PR #17715], by @ShadowghostBuild a TMDb series cast from the aggregated credits [PR #17716], by @ShadowghostStop deriving user view ids from their localized name [PR #17714], by @ShadowghostFix IsPlayed and IsUnplayed sorting for shows and collections [PR #17713], by @LTeSay which image and item failed instead of logging a blank path [PR #17711], by @ShadowghostFix OMDB People handling [PR #17710], by @ShadowghostFix person metadata not being fetched on demand or by the people task [PR #17702], by @ShadowghostFix series merging leaking across libraries and under-counting merged children [PR #17693], by @ShadowghostFix English metadata blocking localized providers ranked below it [PR #17619], by @ShadowghostLook up people by item via the credit map instead of a full scan [PR #17700], by @ShadowghostMark breakOnNonKeyFrames as XMLIgnore [PR #17698], by @ShadowghostFall back to the ancestor filter when a view has no top parents [PR #17691], by @ShadowghostSafeguard against invalid provider ids [PR #17584], by @ShadowghostOptimize query helper memory [PR #17607], by @ShadowghostAllow direct play for HDHomeRun Live TV tuners [PR #17682], by @theguymadmaxFix latest items for mixed libraries [PR #17678], by @theguymadmaxStop user updates from orphaning permission and preference rows [PR #17645], by @ShadowghostMore resilient MusicBrainz lookup [PR #17670], by @ShadowghostUse client-reported position for idle playback cleanup [PR #17631], by @itsbFix GitHub URL typo in CONTRIBUTORS [PR #17659], by @FirmaSpringFix SQLite variable limit in child count batches [PR #17658], by @martin-77Prevent orphaned user permissions and preferences [PR #17643], by @m0g3rFix large playlist persistence with WhereOneOrMany [PR #17655], by @martin-77Fix other two unit test for localization of Artists in DE [PR #17637], by @IDisposableRecognize WEB-DL release tags in video names [PR #17636], by @st7105Fix unit test for localization of Artists in DE [PR #17633], by @IDisposableFix FindArtists [PR #17604], by @theguymadmaxFix EF core designer drifts [PR #17570], by @ShadowghostFix missing ItemRemoved events and search fallback after access filtering [PR #17579], by @ShadowghostFix PersonTypes not applied when filtering by person [PR #17597], by @theguymadmaxFix master build [PR #17599], by @ShadowghostFix assemblies [PR #17582], by @ShadowghostBugfix: #17547 | Batching MediaSourceCount into one call [PR #17576], by @obiwantobyfix: bound remote provider pagination [PR #17590], by @TOomaAhfix: correct IsAiring negation to exclude airing items [PR #17588], by @TOomaAhStop image endpoints from upscaling beyond the source resolution [PR #17569], by @vavalleeCleanup and simplify query helpers [PR #17563], by @ShadowghostAdd warning that PessimisticLockBehavior is unsafe [PR #17560], by @IDisposableBatch people lookups when building item DTOs [PR #17571], by @obiwantobyfix(images): disambiguate progress overlay cache keys [PR #17492], by @GOvEy1nwFix by-name endpoints reporting TotalRecordCount=0 next to a populated Items array [PR #17541], by @vdatanetClear metadata provider cache when provider parts are registered [PR #17525], by @rlauuzoDelete old related info in bulk as late as possible in UpdateOrInsertItems [PR #17555], by @IDisposableFix disabled plugins being re-enabled on restart [PR #17521], by @ShadowghostFix captured (and discarded) Execute exceptions [PR #17559], by @IDisposableSpeed up UpdateOrInsertItems for related information [PR #17554], by @IDisposableSwitch SQLite connection Cache to Private [PR #17558], by @IDisposableFix concurrent ffmpeg segment racing [PR #17536], by @gnattuParse ReplayGain album gain field [PR #17315], by @Florin-PopescuImprove People deduplication, fix search and restrict ItemByName responses [PR #17466], by @ShadowghostFix PCM audio transcoding to wav returning HTTP 500 and headerless output [PR #17537], by @vdatanetRevert "Refresh Live TV channel icons on every guide update." [PR #17549], by @theguymadmaxKeep folder extras with the item that owns the folder [PR #17524], by @ShadowghostOnly treat series and seasons as resumable folders [PR #17523], by @ShadowghostDegrade ForceKeepAlive logs to debug [PR #17528], by @ShadowghostFix extras naming and version assignment [PR #17456], by @ShadowghostAllow client-rendered graphical subtitles during remux [PR #17512], by @altqxUse CleanName when sorting by name [PR #17503], by @theguymadmaxFix AdjacentTo being ignored on non-recursive item queries [PR #17486], by @ShadowghostFix video version links being read from stale serialised item data instead of the LinkedChildren table [PR #17482], by @ShadowghostFix Live TV returning unreachable "server-local" streaming URLs to clients. [PR #17298], by @WizardOfYendor1Add Tmdb missing episode provider [PR #17147], by @ShadowghostFix storage info lookup for Windows [PR #17500], by @theguymadmaxSkip SIDX in fMP4 HLS segments [PR #17501], by @alchemyyyFix (Un)Played filter correctness and performance [PR #17463], by @ShadowghostQueue person metadata refresh instead of blocking the item request and fix ItemCounts [PR #17460], by @ShadowghostReevaluate pending migrations after each one instead of per stage [PR #17455], by @ShadowghostAllow duplicate LinkedChildren for Playlists [PR #17416], by @ShadowghostImplement AudioDb artist search [PR #17424], by @ShadowghostFix 3D format detection when the tag is the last token of the path [PR #17310], by @TowyTowyFix missing collection folder posters after initial scans. [PR #16409], by @elio42Fix series merging [PR #17417], by @ShadowghostReduce correlated subqueries to improve query performance [PR #17422], by @ShadowghostFix hyphenated numbers in episode titles parsed as multi-episodes [PR #17442], by @ShadowghostFix incorrect year on local trailers [PR #17399], by @Shadowghostremove ogg from video extensions since it should only be used for audio [PR #17437], by @dkanadaAvoid NRE when sorting by user-dependent keys without a user [PR #17395], by @paoloantinoriSkip ComicInfo parsing if none exists [PR #17423], by @ShadowghostFix play queue index handling in SyncPlay [PR #17234], by @Eneo-orgApply cleaning logic on ForcedSortName [PR #17402], by @ShadowghostCheck the "name" tag for audio/subtitle probe to fix MP4 not showing correctly - Fixes issue #17418 [PR #17419], by @rwebster85Drain stderr and stdout concurrently for encoder validation [PR #17430], by @gnattuperf: avoid unnecessary list allocation in CheckForIdlePlayback [PR #17411], by @mbastian77Match VobSub MKS subtitle profiles by container [PR #17227], by @altqxImprove language filters to only fetch language codes that match the requested items/libraries (follow up to #9787) [PR #16980], by @TheMelmacianfix: don't throw ArgumentNullException on partial UpdateItem payloads (#17366) [PR #17370], by @zerafachrisPrevent unauthenticated re-run of the startup wizard on misconfiguration [PR #17369], by @ShadowghostTruncate ISO-639-2 language display names at first delimiter [PR #17160], by @854562Fix subtitle encoding for local files [PR #17281], by @ShadowghostBackport and extend path traversal fixes [PR #17368], by @Shadowghostfix: skip corrupt KeyframeData rows during full system backup [PR #17367], by @zerafachrisAdd XML docs to small model enums and remove CS1591 suppressions [PR #17376], by @mbastian77Exempt people from the allowed tags visibility check [PR #17377], by @mbastian77extract page count from archives and PDFs [PR #17311], by @dkanadaFeat (fix) - Skip reprocessing program information when importing XMLTV EPG data [PR #16933], by @WizardOfYendor1Fix profile image being impossible to clear when its in-memory key is temporary [PR #17282], by @TowyTowyFix: Fetch the correct row matching the most up to date file [PR #17320], by @jordanmichaelrushingFix race condition in concurrent subtitle conversion [PR #17342], by @LTeMake RequestHelpers.GetOrderBy generic and reuse it in ActivityLogController [PR #17324], by @damienmeurAdd additional attribute aliases and improve attribute detection [PR #17254], by @sjakubFix SchedulesDirect image limit recognition [PR #17347], by @ShadowghostSort trailers for TV Shows [PR #17204], by @theguymadmaxAdd TVDB provider ID support for movies [PR #17255], by @theguymadmaxFix artists being displayed with albums [PR #17252], by @theguymadmaxRemove libpostproc check for ffmpeg version validation [PR #17384], by @gnattuFix linked whitespace after image badges in README.md [PR #17382], by @kaunkrishnanormalize common formats for creator names in OPF data [PR #17291], by @dkanadaKeep authenticated user entity in sync with persisted login timestamps [PR #17302], by @ElianCodesNormalize invalid PTS from containers for Trickplay generation [PR #17304], by @nyanmisakaFix Resume query performance [PR #17365], by @ShadowghostAdd XML docs to small entity interfaces and remove CS1591 suppressions [PR #17375], by @mbastian77Fix Swagger UI auth docs (#12990) [PR #16910], by @cha5u5Prevent ffmpeg from hanging extracting subtitles [PR #17297], by @IDisposableShow production companies under TV Shows' Studios [PR #17246], by @Rant423Fix potential garbled text in FFmpeg logs on Windows [PR #17288], by @nyanmisakaRemove PlaybackPositionTicks from MediaSourceInfo [PR #17327], by @ShadowghostFix format negotiation in hybrid SW decode and CUDA tonemap pipeline [PR #17334], by @nyanmisakaFix Identify returning wrong images [PR #17151], by @theguymadmaxUpdate season and episode SeriesName when renaming a series [PR #17326], by @theguymadmaxRemove episode image override hack [PR #17280], by @ShadowghostFix path transversal exposure in Plugins [PR #17191], by @IDisposableRevert setting default BaseItemKind for CollectionType [PR #17348], by @theguymadmaxAdd XML docs to small channel types and remove CS1591 suppressions [PR #17343], by @mbastian77Add XML docs to small session model types and remove CS1591 suppressions [PR #17344], by @mbastian77Add XML docs to small DLNA model types and remove CS1591 suppressions [PR #17340], by @mbastian77Add XML docs to provider lookup info types and remove CS1591 suppressions [PR #17339], by @mbastian77Add XML docs to DeviceId and remove CS1591 suppression [PR #17338], by @mbastian77Limit similar items to user accessible libraries [PR #17337], by @ShadowghostFix max login attempts [PR #17274], by @theguymadmaxAdd Novel job mapping to the Writing department [PR #17248], by @theguymadmaxAllow SeriesName to be editable from Item Metadata (books) [PR #17250], by @jordanmichaelrushingFix additional parts for non-admins [PR #17266], by @ShadowghostFix incorrect protocol used for subtitle charset detection [PR #17306], by @theguymadmaxCheck numeric rating value after splitting country code [PR #17273], by @theguymadmaxsupport external images for audiobooks [PR #17287], by @dkanadaFix Greece parental ratings [PR #17268], by @theguymadmaxFix actor images not displayed until clicked [PR #16668], by @johnpcDon't throw on logout if session does not exist [PR #17228], by @ShadowghostUse InvariantCulture when parsing machine-generated dates [PR #17238], by @iderexFixes for multi version handling [PR #17044], by @ShadowghostFix parental rating lookup for multi-rating entries [PR #17239], by @theguymadmaxFix ghost entries when deleting library paths [PR #17231], by @theguymadmaxAllow changing capitalization of usernames [PR #17229], by @Bond-009Fix folder view [PR #17222], by @theguymadmaxClose sessions for lost WebSockets to prevent zombie SyncPlay groups [PR #17079], by @Eneo-orgFix Swedish rating [PR #17209], by @theguymadmaxFix NullReferenceException in GetStreamingState for closed live streams [PR #17206], by @zachhideUse Enumerable.LeftJoin for activity log user query [PR #17175], by @obrenoalvimRework bitrate reporting [PR #17170], by @ShadowghostFix Book collections speed issues [PR #15954], by @IDisposableBatch duplicate-cleanup deletes in merge migrations [PR #17162], by @ShadowghostRemove orphaned people [PR #17140], by @theguymadmaxReject unsafe plugin package names in installer [PR #17013], by @dfedermUse Convert.ToHexStringLower for Schedules Direct password hash [PR #17174], by @obrenoalvimLive TV: re-fetch channel icons on guide refresh [PR #16914], by @danieltutuianuRevamp startup UI for visual style and usability [PR #17154], by @joshuabonifaceFix localization lookup [PR #17187], by @ShadowghostFix embedded lyrics not updating on replace all refresh [PR #17134], by @theguymadmaxFix Live TV tuner not releasing [PR #17178], by @theguymadmaxDon't run heavy DB tasks while scan is running [PR #17182], by @ShadowghostFix local Comic book plugin registration [PR #17188], by @ShadowghostFix too many SQL variables in DeleteItem for large batch deletes [PR #17153], by @joshuabonifaceFix Identify returning wrong results [PR #17146], by @theguymadmaxFix audio sample rate forced to 48 kHz for non-Opus codecs [PR #17090], by @moontwisterDeprecate the redundant /Trailers endpoint [PR #17094], by @moontwisterSkip parsing root-level folders in SeriesResolver [PR #17116], by @theguymadmaxFixed "Deleting media that is still being watched in SyncPlay results in errors" [PR #14935], by @pokreman06Fix series year lost during name parsing [PR #17112], by @theguymadmaxFix episode air date offset after initial scan [PR #17121], by @theguymadmaxFollow native interoperability best practices [PR #17099], by @Bond-009improve book resolution from filename [PR #17087], by @dkanadaExtend TranscodingReason reporting [PR #17106], by @ShadowghostAlways apply recursive when filters are requested [PR #17088], by @ShadowghostFetch TV Shows creators from TMDB [PR #17107], by @Rant423Replace usage of SharpCompress [PR #17089], by @Bond-009Fix AlbumIds filtering by Name instead of by Id [PR #17085], by @matt-teahanAdd support for background images and episode thumbnails from XMLTV [PR #17077], by @SheaSmithFix AudioDb album description not displayed for English (mirror of #16606) [PR #17081], by @GadniefFix duplicate key collision [PR #17083], by @theguymadmaxAssign correct season info to new episodes [PR #17051], by @ivanjxFix CleanName and CleanValue refresh [PR #17064], by @ShadowghostFix duplicate trickplay images for interlaced videos [PR #17058], by @nyanmisakamigrate local comic providers to server codebase [PR #16444], by @dkanadaAdd code assistance section to PR template [PR #17054], by @nielsvanvelzenPrefer local alternate versions when deduplicating linked children [PR #17042], by @ShadowghostMedia source handling fixes [PR #17041], by @ShadowghostRefresh live TV channel image when remapped (alt #7843) (fixes #7834) [PR #10841], by @Bond-009Implement search providers [PR #16121], by @Shadowghostfix(dto): prefer PlaylistsFolder primary image for playlists tiles [PR #16520], by @beateixeira04Fix xUnit1051 in UserManagerLockHelperTests [PR #17043], by @ShadowghostUpdate issue template version to 10.11.11 [PR #17035], by @theguymadmaxDiscover existing trickplay files on scan [PR #16945], by @ShadowghostFix external data pruning on item deletion [PR #16941], by @ShadowghostFix subtitle replacement not invalidating cache [PR #17028], by @ShadowghostFix playlist visibility [PR #17025], by @ShadowghostEnforce parental filtering on additional endpoints [PR #17019], by @ShadowghostPrefer subtitle extension over codec [PR #16998], by @Bond-009Improve Merge Conflict Labeler [PR #17018], by @Bond-009Fix season unknown for flat TV structures [PR #16995], by @theguymadmaxMake EncoderPreset non nullable [PR #17007], by @nyanmisakaOnly default recursive to true if we have includeItemTypes [PR #16999], by @ShadowghostExtract attachments in one ffmpeg command when dumping [PR #16915], by @ShadowghostFix incorrect list capacity [PR #16996], by @theguymadmaxTrim tags [PR #16994], by @theguymadmaxFix recently added episode links and posters [PR #16967], by @ShadowghostWrite subtitles using SubtitleEdit [PR #16805], by @Bond-009Re-disable legacy authorization methods by default [PR #16992], by @theguymadmaxOnly resolve symlinks on playback [PR #16965], by @ShadowghostFix folders being identified as seasons in mixed libraries [PR #16259], by @theguymadmaxFix Schedules Direct API Error Codes [PR #16920], by @arazilsongweaverFix similarity [PR #16942], by @ShadowghostFix inaccessible artist when they exist in multiple libraries [PR #16977], by @theguymadmaxAdd support for VobSub subtitle streams [PR #16552], by @altqxCompare old file byte-by-byte to new stream [PR #16936], by @IDisposableRemove NowPlayingQueueFullItems from session DTOs [PR #16976], by @PCEWLKRUse ConfigureAwait(false) in CollectionController [PR #16953], by @PCEWLKRFix CA2007 warnings in InstallationManager [PR #16946], by @jonesy827Add a collection API for Included In feature [PR #15516], by @XSAMAdd new viewtypes options [PR #16177], by @theguymadmaxFix Merge Conflict Labeler #2 [PR #16963], by @Bond-009Fix A/V desync when resuming HLS with video transcode + audio copy [PR #16580], by @LTeImprove OriginalLanguage normalization and inheritance [PR #16829], by @Lampan-gitUpdate issue template version to 10.11.10 [PR #16927], by @theguymadmaxFix inconsistent extradata generated by hevc_vaapi on AMD driver [PR #16913], by @nyanmisakaBackport: Fix/user manager collation [PR #16919], by @Bond-009fix: suppress repeated PriorityClass warning in MediaEncoder [PR #16872], by @psavarmattasUpdate issue template version to 10.11.9 [PR #16897], by @theguymadmaxAdd support for filtering playlists by parentId [PR #16893], by @ShadowghostFix Merge Conflict Labeler [PR #16892], by @Bond-009Add CI format check [PR #15250], by @jakobkuklaReorder Migrations and fix failing migration [PR #16861], by @JPVensonAdd support for filtering boxsets by parentId [PR #16882], by @ShadowghostModernize version display in UI [PR #16862], by @JPVensonFix integrated provider images [PR #16855], by @ShadowghostUse --batch --yes for installing jellyfin keyring in devcontainer [PR #16878], by @IDisposableEmbed external subtitles into MKV when transcoding [PR #16448], by @LTefix: write livetv recording NFO dateadded as UTC [PR #16863], by @tayfun-akgucMisc fixes [PR #16837], by @Shadowghostfix: add null check for non-existent program in GetProgram [PR #16858], by @BrunoSyncFix CA1819 warnings in ChannelFeatures by using IReadOnlyList [PR #16853], by @jtvhd6Set max rating for splashscreen to 13 [PR #16852], by @theguymadmaxNew filters for audio and subtitle languages [PR #9787], by @TheMelmacianImplement similarity providers [PR #15970], by @ShadowghostAdd Accept-Language header support and cleanup translations [PR #16488], by @ShadowghostUpdate log for user session related concurrency update fails [PR #16835], by @JPVensonreturn music artists from person endpoints [PR #16721], by @dkanadaReference correct .NET version in README [PR #16831], by @Bond-009consolidate OpenAPI categories and deprecate startup routes [PR #16757], by @dkanadaSafeguard against invalid GUIDs [PR #16813], by @ShadowghostUse SortName when sorting by name [PR #16804], by @ShadowghostSuppress CA2213 false positive on ApplicationHost._pluginManager (#2149) [PR #16792], by @CrystoraPrint warning on invalid Subnets in Network/Proxy configuration [PR #16793], by @ShadowghostAdd videoRotation profile condition [PR #16803], by @nyanmisakaFix artist duplicates [PR #16807], by @ShadowghostIOException with STRM HTTP URLs [PR #16290], by @benbenmossFix Segment Provider Configuration [PR #16798], by @ShadowghostFix CA1051 and CA1815 warnings, Change public fields to auto properties [PR #14847], by @tjwalkr3Add OriginalLanguage as option to PreferredAudioLanguage [PR #12579], by @Lampan-gitSwitch to new version scheme [PR #16758], by @Shadowghostfix person type exclusion in api response [PR #16784], by @dkanadaFix MusicBrainz test. [PR #16789], by @IDisposableParse provider IDs from season and episode folder/file names [PR #16472], by @IDisposableFix Canadian rating and fallback to unrated if we have a CountryCode but no matching rating [PR #16328], by @ShadowghostFix live stream consumer leak on negative PositionTicks [PR #16321], by @WizardOfYendor1Add startup mode to migrate or seed the database on cmd [PR #16319], by @JPVensonRemove DigitalOcean from sponsors section [PR #16788], by @theguymadmaxIgnore season directories with no video for TV Shows [PR #16611], by @LmanTWFix #16308: Community ratings not updating after changing .nfo file. [PR #16466], by @PERSONALPANCHIWIRISFix unique people response for query if no item ID is supplied [PR #16783], by @ShadowghostFix subtitle save path [PR #16779], by @ShadowghostMove MusicBrainz Query client to plugin instance [PR #16780], by @ShadowghostFix UserManager after EFcore refactor (backport #15368) [PR #16782], by @JPVensonAdd the filename to exceptions in DeserializeFromFile() [PR #16246], by @lcorbassonAdd different Slovak and Czech translation of Season for parsing [PR #16646], by @BiosiasRemove unnecessary ToList calls in TrickplayManager [PR #16322], by @poytiisFix rewatch query [PR #16778], by @ShadowghostSpeed-up LatestItems for Music [PR #16756], by @ShadowghostGuard against null-overwrite of saved audio/subtitle track selections [PR #16769], by @llaforestFix use of thread-unsafe List.Sort() [PR #16777], by @gabeluciKeep legacy authorization enabled [PR #16754], by @nielsvanvelzenFix dummy chapter handling for videos with a single chapter or short duration. [PR #16695], by @ExpctINGHonor episode NFO season during metadata merge [PR #16702], by @itz4blitzFix keyframe duration overshoot breaking playback [PR #16704], by @dyld-wImplement ignore rule caching [PR #16166], by @ShadowghostFix Playlist and Boxset query, save and count performance [PR #16761], by @Shadowghostfix person TotalRecordCount when limit is applied [PR #16616], by @dkanadaFix triple digit episode number handling [PR #16475], by @ShadowghostFix FFProbeVideoInfo downloading subtitles without considering internal streams [PR #16747], by @MBR-0001Query Performance Improvements [PR #16062], by @Shadowghostfeat/audiobook_chapters [PR #16518], by @sevenratsAvoid SSA to ASS conversion and loss of styles [PR #16744], by @nyanmisakafix: use symmetric 15s default for skip forward/backward lengths [PR #16739], by @tcsenpaihide HLS controllers and deprecate unused endpoints [PR #16715], by @dkanadaFix IPv6 prefixes not recognized as proxy [PR #16672], by @dwandwimprove openapi endpoint categorization [PR #16698], by @dkanadaFix watched status resetting on re-watch [PR #15762], by @MSalman5230Upgrade to xunit v3 [PR #16666], by @Shadowghostfix: add image/jpg to MIME type extension lookup [PR #16658], by @jskoetsierRemove all JF contributors from Emby list [PR #16694], by @Bond-009Skip libraries without enabled subtitle providers in SubtitleScheduledTask [PR #16649], by @MBR-0001Include item path in provider error log messages [PR #16667], by @johnpcEnable jellyfin.db customized path [PR #15355], by @twsouthwickUpdate to Jellyfin.XmlTv 10.12.0-pre1 [PR #16659], by @Bond-009Set XmlTvProgram.IsLive [PR #8890], by @SenorSmartyPantsMove rename command permission check to script [PR #11231], by @felix920506Added Tanzania countries.json [PR #14406], by @ewkonzoDon't allow library name with leading or trailing space [PR #13491], by @gnattufix: retain subtitles spanning HLS segment boundaries [PR #16594], by @LiHRaMchore(ci): Add permissions grant [PR #13443], by @jsorefFix artist metadata not being fetched on initial library scan [PR #16606], by @theguymadmaxFix in-process restart [PR #16482], by @Shadowghostadd NameStartsWith and NameLessThan filters to Person search [PR #16619], by @dkanadaRespect EnableSubtitleExtraction setting in subtitle delivery [PR #16380], by @LTeFix language display for ISO 639-2-only codes (e.g. mul, und, mis, zxx) [PR #16567], by @shocklateboy92Fix HDR tonemapping for BDMV content [PR #16609], by @ddemarco5Fix FolderStorageInfo to show parent filesystem [PR #16456], by @joshuabonifaceDon't spam debug log with items without rating [PR #16342], by @Bond-009Backport security fixes [PR #16577], by @Bond-009Update issue template version to 10.11.8 [PR #16573], by @theguymadmaxFix BoxSet parentId being ignored in item queries [PR #16490], by @theguymadmaxReverse check for track changed [PR #16501], by @bilbofrogginsAdd AlbumNormalizationGain field to BaseItemDto [PR #14745], by @HeroBrine1stadd StartIndex and ParentId to person search [PR #16397], by @dkanadaedit openapi files in place with sed [PR #16569], by @dkanadafix invalid workflow on openapi report job [PR #16561], by @dkanadaFix parental ratings not working on music albums [PR #16553], by @theguymadmaxFix UDP Auto-Discovery returning IPv6 for cross-subnet IPv4 requests [PR #15902], by @ZeusCraft10fix openapi report and publish workflows [PR #16556], by @dkanadaUpdate issue template version to 10.11.7 [PR #16530], by @theguymadmaxAdd callback for segment data pruning to IMediaSegmentProvider [PR #16419], by @Shadowghostremove nested directory for openapi workflows [PR #16524], by @dkanadaCleanup trickplay cache dir on failure [PR #16365], by @ShadowghostOnly set IsAvc for video streams [PR #16507], by @Bond-009split openapi workflows between pull request and merge [PR #16463], by @dkanadarecognize underscore and dot separators for multi-version grouping [PR #16465], by @upscaylmanfix: cap GetVideoBitrateParamValue at 400 Mbps [PR #16467], by @scheilchAdd ignore patterns for Hungarian sample files [PR #16238], by @furdiburdMore robust date handling in Library DB migration [PR #16474], by @ShadowghostFix attachment extraction of files without video or audio stream [PR #16312], by @ShadowghostAdd spec-compliant dvh1 HLS variant for Dolby Vision Profile 5 [PR #16362], by @NoFear0411Fix filename truncation when bracketed tags appear mid-filename [PR #16222], by @tyagefix crashes on devices that don't support ipv6 [PR #15841], by @JanzenJohnFix int32 overflow in QSV rate-control parameter computation [PR #16376], by @scheilchRecognize ".m4b", ".m4a", ".aac", ".flac", ".mp3", and ".opus" as an audio-book formats [PR #15377], by @lousandoinclude external IDs and URLs for book providers [PR #15593], by @dkanadaFix remote image language priority to prefer English over no-language [PR #16368], by @redinschRespect library country code for parental ratings [PR #16388], by @theguymadmaxUse generic Enum overloads to resolve CA2263 warnings [PR #16395], by @jaxx2104Return BadRequest when an invalid set of filters is given [PR #16398], by @Bond-009Fix ItemValues Type checks [PR #16160], by @ShadowghostAdd missing ProducesResponseType(401) to QuickConnectController.InitiateQuickConnect [PR #16331], by @JuanCalderon-17Fix near-1:1 SAR values falsely flagged as anamorphic [PR #16318], by @NoFear0411Use artist images for music library thumbnail [PR #16240], by @theguymadmaxAIFF support: add .aifc as audio file type, remove .aiff as image file type [PR #16274], by @ghostUpdate JetBrains logo link in README.md [PR #16323], by @anthonylavadoRevise note on hosting web client for development [PR #16281], by @JPVensonFix malformed query string in StreamInfo.ToUrl() causing 500 error via proxies [PR #16255], by @cosuUpgrade Swashbuckle to v10 [PR #16256], by @ShadowghostMitigate pull_request_target privilege escalation [PR #16263], by @andrewrabertFix episodes appearing in Season Unknown incorrectly and prevent unnecessary virtual season creation [PR #16236], by @theguymadmaxTmdbSeriesProvider: Set ProductionYear field [PR #16144], by @DerMaddisAdd moveToTop option to IPlaylistManager.AddItemToPlaylistAsync [PR #15138], by @kevgrigFix: Add 'Kairon; IRSE!' to artist whitelist [PR #14709], by @loop95Fix container and updated [PR #16202], by @JPVensonTrim names and roles for people [PR #16181], by @theguymadmaxSkip validation for empty landing preferences [PR #16178], by @theguymadmaxAdd curly brace and parentheses support for parsing attribute values [PR #14927], by @nileshp87Fix TMDB language handling: support full ISO 639-1 + ISO 3166-1 codes (e.g. zh-CN, zh-TW) [PR #16151], by @Daydreamer-ririFix: Resolve CA1849 synchronous IO in EpubImageProvider [PR #16124], by @GladtbamRemove some deprecated API members [PR #16110], by @nielsvanvelzenSessionManager: Log when playback is started [PR #15908], by @jpdsextract local metadata from OPF and EPUB files [PR #15604], by @dkanadafix: prevent premature disposal of HTTP subtitle streams [PR #14809], by @lostb1tUpdate issue template version to 10.11.6 [PR #16059], by @theguymadmaxFix typos in XML documentation comments [PR #15997], by @vignesh1507Fix zh-CN subtitle language display [PR #15947], by @ZeusCraft10Update to .NET 10.0 [PR #15475], by @Bond-009Refactor HLS transcode seeking [PR #15926], by @abitofevrythingfix: Handle unknown item types gracefully in DeserializeBaseItem [PR #15956], by @ZeusCraft10Add TrueHD and DTS codes string for HLS [PR #15959], by @nyanmisakaFix KeyNotFoundException in CryptographyProvider when iterations parameter is missing [PR #15958], by @ZeusCraft10Fix API diff workflow [PR #15888], by @ShadowghostOptimize StringHelper.FirstToUpper() [PR #15916], by @stevenawUpgrade Swashbuckle and fix OpenAPI spec [PR #15886], by @ShadowghostFixed issue with ABI Compatability - Difference not completing [PR #15924], by @PeachesMLGFix GET MetadataEditor ContentTypeOptions for mixed content [PR #15797], by @Smeagolworms4Add myself to CONTRIBUTORS.md [PR #15831], by @allmazzFixed Multi Sort in New ActivityManager [PR #15820], by @bjorntpUpdate issue template version to 10.11.5 [PR #15798], by @theguymadmaxLibrary: Async the SaveImages function [PR #15718], by @luigi311parse more information from book filenames [PR #15655], by @dkanadaOptimize GetUniqueFlags() [PR #15774], by @stevenawRemove legacy API route middleware [PR #15669], by @nielsvanvelzenProper pinning of SkiaSharp to prevent accidental updates [PR #15736], by @MarkCiliaVincentiavoid Take(0) when Limit == 0 [PR #14608], by @ghostFix typo in CheckOrCreateMarker exception [PR #15341], by @XinerkiAdd ability to sort and filter activity log entries [PR #15583], by @crobiberoLocking cleaning [PR #15713], by @MarkCiliaVincentiFix episodes showing up on recently added shows [PR #15433], by @theguymadmaxAdd subtitle extraction timeout configuration option [PR #15538], by @KarkaLTAdd CPU to issue template [PR #15704], by @theguymadmaxRemove special client behavior for API response fields [PR #15638], by @nielsvanvelzenAdd milliseconds to default console output format [PR #15227], by @kevgrigFix TV Series parsing containing only numbers. [PR #14824], by @CodyEngelAdd support for more embedded metadata tags [PR #15437], by @allmazzDeprecate HasPassword property on UserDto [PR #14950], by @nielsvanvelzenAdd version to StartupUI [PR #15246], by @JPVensonAdd all 10.11 versions to issue template [PR #15565], by @anthonylavadoUpdate Jellyfin Server version in issue template [PR #15398], by @dpieskiUpdate CODEOWNERS to capture bump_version [PR #15236], by @joshuaboniface