🚀 Veröffentlichungshinweise für 12.0
Hinweise zum Update
Vor einem Upgrade von einer früheren Version wird dringend empfohlen, ein vollständiges Backup des Datenverzeichnisses zu erstellen, da diese Version Datenbankänderungen enthält, die ein Zurückrollen ohne vollständige Wiederherstellung verhindern.
Direkte Upgrades von 10.10.7 und 10.11.x auf 12.0 werden unterstützt; Zwischenupgrades sind nicht erforderlich. Nutzer mit Versionen älter als 10.10.7 sollten zunächst auf 10.10.7 aktualisieren, bevor sie zu 12.0 migrieren.
Installierte Repository-Plugins (alles, was nicht eingebaut ist) sollten vor der Migration entfernt werden. Plugins benötigen wahrscheinlich Zeit, um sich an die neuen Datenbankänderungen anzupassen. Das erneute Hinzufügen nach der Migration ist der sicherste Ansatz für Tests.
Offizielle Plugins, die mit Jellyfin kompatibel sind, sind über das stabile Plugin-Repository verfügbar. Falls Sie das instabile Plugin-Repository verwenden, wechseln Sie bitte zurück.
- Gehen Sie zu Dashboard → Plugins → Repositories verwalten
- Ändern Sie die Plugin-Repository-URL zu: https://repo.jellyfin.org/files/plugin/manifest.json
Führen Sie nach der Migration folgende Schritte durch:
- Starten Sie einen vollständigen Bibliotheksscan, um alternative Versionen wiederherzustellen.
Wenn Sie auf Probleme stoßen, stellen Sie Fehlerberichten bitte „[12.0]“ voran.
Paketierung
- Debian-Bullseye- und Ubuntu-Focal-Pakete werden nicht mehr erstellt.
Server
Diese Version bringt erhebliche Leistungsverbesserungen mit sich. Es wird eine vollständige pfadbasierte Prüfung aller Bibliothekselemente durchgeführt, um Überbleibsel zu bereinigen – je nach Größe kann dies einige Zeit in Anspruch nehmen. Alternative Versionen von Medien, die automatisch aufgelöst (nicht manuell zusammengeführt) wurden, werden aufgrund von Datentypproblemen entfernt. Ein vollständiger Bibliotheksscan nach dem Upgrade ist daher erforderlich, um diese wiederherzustellen. Der erste Scan dauert deutlich länger als gewöhnlich, und einige Filme könnten als neu hinzugefügt erscheinen, da Typfehler beim Scan behoben werden.
Zu den weiteren Neuerungen gehören: Mehrere Versionen für Episoden, Ähnlichkeits- und Empfehlungsanbieter, Suchanbieter (Plugins können die Suchergebnisproduktion erweitern oder ersetzen), Verbesserungen bei SchedulesDirect und EPG-Aktualisierungen, Korrekturen im Altersfreigabesystem, ordnungsgemäße Datenbereinigung beim Ersetzen/Löschen von Dateien, Unterstützung für dreistellige Episodennummern, bibliotheksspezifische BoxSet- und Wiedergabelistenfilterung, Unterstützung für CACHEDIR.tag und den Accept-Language-Header, VideoRotation-Profilbedingung für Android-TVs, die keine Rotationsmetadaten unterstützen, Auslesen von Anbieter-IDs aus Staffel- und Episodenordner/-dateinamen, Aliasnamen tmdb, tvdb, imdb für die Provider-IDs, Unterstützung für geschweifte Klammern und Klammern beim Parsen von Attributwerten, neue Filter NameStartsWith und NameLessThan für die Personensuche, neue Filter für Audio- und Untertitelsprachen, OriginalLanguage als Option für PreferredAudioLanguage, eine Sammlungs-API für die „Enthalten in“-Funktion, Unterstützung für VobSub-Untertitelströme sowie einen Tmdb-Anbieter für fehlende Episoden.
Wichtige Änderungen und Verhaltensänderungen
Legacy-Routenpräfixe (/emby/* und /mediabrowser/*) wurden entfernt. Alte Drittanbieter-Clients, die darauf angewiesen sind, funktionieren nicht mehr. Die Legacy-Autorisierung ist standardmäßig deaktiviert, und eine Migration deaktiviert sie auch bei bestehenden Installationen. Veraltete API-Routen wurden entfernt, darunter POST /Users/{userId}/EasyPassword (die EasyPassword-Funktion entfällt), GET /Items/{itemId}/CriticReviews, GET /Environment/NetworkShares, POST /System/MediaEncoder/Path, GET /LiveTv/Recordings/Groups/{groupId} und GET /QuickConnect/Initiate. Die globale Untertitelkonfiguration wurde entfernt; Untertiteleinstellungen werden nun pro Bibliothek vorgenommen. .ogg wird nicht mehr als Videoerweiterung, sondern nur noch als Audio behandelt; .aifc wird als Audio erkannt, und .aiff wird nicht mehr als Bild betrachtet. Symlinks werden nur noch zur Wiedergabezeit aufgelöst. Die Sortierung nach Name verwendet jetzt SortName und CleanName; dieselbe Bereinigungslogik wird auf ForcedSortName angewendet. Die Bibliotheksreihenfolge kann sich im Vergleich zu 10.11 ändern. Bildendpunkte skalieren nicht mehr über die Quellauflösung hinaus; niedrig aufgelöste Artworks werden in ihrer tatsächlichen Größe gerendert. Die Groß-/Kleinschreibung von Benutzernamen kann nun geändert werden. Benutzernamen werden in einer normalisierten Spalte mit eindeutigem Index gespeichert; Installationen mit Benutzernamen, die sich nur durch Groß-/Kleinschreibung unterscheiden, müssen vor dem Upgrade korrigiert werden.
Datenbank und Leistung
Wiedergabelisten und Sammlungen sind jetzt ordnungsgemäß relational und verwenden eine neue LinkedChildren-Tabelle statt serialisierter Kinderlisten. OwnerId und PrimaryVersionId sind echte GUID-Fremdschlüssel; ExtraIds wurde entfernt. Zahlreiche Optimierungsmigrationen decken Elementanzahl, Elementnamen, Typ und bereinigten Namen, neueste Elemente, Bildinformationen und primäre Versions-ID ab. Migrationsroutinen bereinigen vorhandene Daten beim ersten Start: doppelte Musikinterpreten und Personen werden zusammengeführt, verwaiste Extras und externe Daten entfernt, falsche Besitzverhältnisse repariert und bereinigte Namen, erzwungene Sortiernamen und Serienpräsentationsschlüssel neu berechnet. Schwere Datenbankaufgaben werden nicht mehr während eines laufenden Bibliotheksscans ausgeführt. Schnellere Abfragen für Fortsetzen, Als Nächstes, erneutes Ansehen, neueste Elemente für Musik, Wiedergabelisten und Sammlungen, Künstlersuche und Elementanzahl. Das Löschen von Elementen wird gestapelt, wodurch Fehler „zu viele SQL-Variablen“ beim Löschen großer Mengen behoben werden. jellyfin.db kann nun an einem benutzerdefinierten Pfad gespeichert werden.
Betrieb
Neues Startflag --mode mit den Optionen MediaServer, MigrateSystem und SeedSystem, das Migrationen oder Datenbank-Seeding ohne Start des Servers ermöglicht – nützlich für containerisierte und orchestrierte Bereitstellungen sowie kontrollierte Upgrades. Die Startoberfläche wurde überarbeitet und zeigt nun Versions- und Aktivitätsinformationen an. Deaktivierte Plugins werden beim Neustart nicht mehr automatisch wieder aktiviert. Vollständige Systemsicherungen überspringen korrupte Keyframe-Zeilen statt fehlzuschlagen.
Medien und Untertitel
Die Untertitelerstellung läuft jetzt über SubtitleEdit, wodurch die SSA-zu-ASS-Konvertierung und der Verlust von Stilen vermieden werden. Externe Untertitel können beim Transkodieren in MKV eingebettet werden. Das Zeitlimit für die Untertitelextraktion ist konfigurierbar. Client-gerenderte grafische Untertitel sind während des Remux erlaubt. Korrekturen für Race Conditions bei gleichzeitiger Untertitelkonvertierung, Cache-Invalidierung beim Ersetzen eines Untertitels und Hängenbleiben von FFmpeg während der Extraktion. Neue Konfigurationsoption HlsAudioSeekStrategy. Trickplay: vorhandene Dateien werden beim Scan erkannt, Duplikate von Interlaced-Videos behoben, ungültige PTS-Werte aus Containern normalisiert und der Cache nach einem Fehler bereinigt.
Live-TV
Live-TV liefert keine unerreichbaren „server-lokalen“ Streaming-URLs mehr an Clients aus. XMLTV-Hintergrundbilder und Episoden-Thumbnails werden jetzt importiert. XMLTV-Guide-Importe überspringen Programme, deren Daten sich nicht geändert haben, anhand eines ETags, der aus den tatsächlich konsumierten Feldern berechnet wird – wiederholte Guide-Aktualisierungen werden dadurch erheblich günstiger. Andere Listungsanbieter bleiben beim bisherigen feldweisen Update-Pfad.
Metadaten und Anbieter
ListenBrainz ist jetzt im Server gebündelt und liefert ähnliche Künstlerdaten mit wählbarem Ähnlichkeitsalgorithmus. TVDB-Anbieter-IDs werden für Filme unterstützt. AudioDb-Künstlersuche. ReplayGain-Album-Gain wird ausgelesen. MusicBrainz-Lookups sind widerstandsfähiger. WEB-DL-Release-Tags werden in Dateinamen erkannt. Bindestrichzahlen in Episodentiteln werden nicht mehr als Multi-Episoden-Dateien geparst. Die 3D-Formaterkennung funktioniert, wenn das Tag das letzte Token des Pfads ist. Personen-Metadatenaktualisierungen werden in eine Warteschlange gestellt, statt die Anfrage zu blockieren.
Transcoder
Neue Upstream-Version von FFmpeg 8.1. Optimierte Leistung des CUDA-Transponierfilters, des OCL-Skalierungsfilters und des OCL-Tonemapping-Filters auf Mali-GPU. Verwendung von EOTF aus BT 2446 Methode B für HLG-Tonemapping. Behebung potenzieller Audio/Video-Desynchronisation in HLS beim Transkodieren von Video bei gleichzeitigem Remux von Audio. Vermeidung der SSA-zu-ASS-Konvertierung und des Stilverlusts. Hinzufügen einer spezifikationskonformen dvh1-HLS-Variante für DoVi P5 zur Kompatibilität.
Web
Das moderne Layout ist jetzt Standard; das vorherige Layout heißt jetzt Legacy. Aktualisierte Ansichten für Musikvideos, gemischte Medien, Sammlungen & Wiedergabelisten und Bücher. Hinzufügen einer „Weiterschauen“-Aufforderung. Verzögerungseinstellung für Diashows. Caching von Abfragen in der indexierten Datenbank für den TanStack-Query-Client zur Verbesserung der Ladeleistung. Watch-Funktion im Log-Viewer. , und . als Steuerung zum bildgenauen Vor-/Zurückspulen. Filter für Audio- und Untertitelsprachen (nur modernes Layout). Sammlungs- und Wiedergabelisten-Tab in allen Bibliotheken. Sammlungen auf der Artikeldetailseite. Ersetzung von libpgs durch libbitsub mit Unterstützung für VobSub-Rendering. Zusammenführung von Karten für Crewmitglieder mit mehreren Rollen.
Layout und Themen
Alle Themen basieren nun auf einer gemeinsamen Basis, die auf CSS-Variablen aufbaut, einschließlich Dark, Light, WMC, Blue Radiance, Apple TV und Purple Haze. Benutzerdefinierte Themen müssen möglicherweise angepasst werden. Die Bibliothekssymbolleiste wurde in die App-Leiste integriert, mit einem klebrigen Bibliothekskopf und Designpolitur in der gesamten Bibliothek. Benutzerdefinierte Links können zum modernen Layout hinzugefügt werden. Die Bildschirmschoner-Zeiteinstellung ist jetzt im modernen Layout verfügbar.
Bibliotheken und Durchsuchen
Sammlungs- und Ordner-Tabs für Buchbibliotheken sowie eine Ordneransicht im modernen Heimvideo-Layout. Standard-Tabs für Heimvideos- und Fotobibliotheken. Studiosuche und ein erweiterter Studios-Tab. „Alle abspielen“- und „Zufallswiedergabe“-Schaltflächen in der Serienbibliothek; beide sind deaktiviert statt ausgeblendet, wenn keine Elemente verfügbar sind. Verbesserte „Demnächst“-Ansicht. Sortieren und Filtern auf der Aktivitätsseite. Eine Schaltfläche „Filter zurücksetzen“ im Filter-Dropdown. Ordner können als abgespielt markiert werden. Serienersteller werden auf der Artikeldetailseite angezeigt. Ähnlichkeitsanbieter können pro Bibliothek konfiguriert werden. Seitensteuerung wird ausgeblendet, wenn die Seitenumbruchfunktion deaktiviert ist.
Wiedergabe
Das Wiedergabe-Info-Overlay ist kompakter und zeigt mehr Details. Kapitelnamen werden im OSD-Schieberegler-Bubble angezeigt. Biterkennung läuft jetzt im Web. Dolby Vision in MKV auf webOS 25 und neuer. AV1-fMP4-Stream-Kopie auf TV-Clients. Direkte Wiedergabe von anamorphotischem Video auf Tizen sowie gelockerte anamorphotische Einschränkungen für Browser-Geräteprofile. Auf iOS läuft die Hintergrundwiedergabe weiter, wenn der Bildschirm ausgeschaltet wird; die Audionormalisierung ist deaktiviert, um Tonhöhen- und Geschwindigkeitsprobleme zu beheben. libbitsub aktualisiert auf v1.11.0 mit HLS-Offset-Korrektur. Der Bildschirmschoner wird beim Betrachten von Fotos oder beim Lesen unterdrückt.
TV und Fernbedienung
Navigation mit Gamecontroller korrigiert; die Wiederholrate des Gamepads ist nicht mehr an die Bildrate gebunden. Tastatursteuerung funktioniert auf nicht-lateinischen Tastaturlayouts, mit zusätzlichen Korrekturen für ältere Browser. Befehle für Rücklauf und Vorspulen werden verarbeitet. SyncPlay-Menü aktualisiert; der SyncPlay-Ping wird jetzt an den Server gemeldet. Stilisierung von fokussierten und markierten Checkboxen im TV-Layout.
Unter der Haube
WebSockets wurden auf SDK-Abonnements migriert. Die React- und TypeScript-Migration wird bei den Seiten für Bibliotheken, Live-TV und Netzwerk fortgesetzt; die Dashboard-Benutzerseiten verwenden jetzt das TypeScript-SDK. TanStack Query unterstützt jetzt Benutzereinstellungen und Startbildschirmabschnitte; der Query-Cache wird beim Serverneustart geleert.
Bemerkenswerte Fehlerbehebungen
Unscharfe Kartenbilder auf hochauflösenden Displays; Kartengrößen werden aufgerundet. Doppelte /socket-Verbindungen. Login-Schleife, Verbindung zum falschen Server bei mehreren konfigurierten Servern und Auswahl des nativen Shell-Servers beim Abmelden. Ungültige Anfrage für alle Elemente beim Laden der Seite. Standard-Landing-Tab für Live-TV. Halten und Ziehen von Medien aktiviert nicht mehr die Mehrfachauswahl. Warnung vor Wiederherstellung einer Version, Warnung beim Starten eines Backups während eines laufenden Scans, und automatischer Bibliotheksscan, wenn Ordner zu einer Bibliothek hinzugefügt werden.
Sicherheit
Server:
- Pfadvalidierung wurde zu den Legacy-HLS-Segmentendpunkten und zum Plugin-Bildendpunkt hinzugefügt, sodass eine angeforderte Datei innerhalb des Transkodierungsverzeichnisses liegen muss.
- Pfaddurchquerungs-Härtung wurde auf Bild- und Plugin-Endpunkte sowie auf die Benutzernamen-Pfadbehandlung ausgeweitet und baut auf den in 10.11.x veröffentlichten Korrekturen auf.
- Der Startassistent kann bei einem fehlkonfigurierten Server nicht mehr ohne Authentifizierung erneut ausgeführt werden.
- Unsichere Plugin-Paketnamen werden vom Plugin-Installationsprogramm abgelehnt.
- Kindersicherungsfilterung wird auf zusätzliche Endpunkte angewendet; die Sichtbarkeit von Wiedergabelisten wurde korrigiert, der Nicht-Admin-Zugriff auf weitere Teile behoben, und Personen sind von der Sichtbarkeitsprüfung für erlaubte Tags ausgenommen.
Web:
- Cross-Site-Scripting über Personenrollen.
- Auth-Parameter werden beim Erstellen von API-Clients kodiert.
- Der Login-Haftungsausschluss erlaubt nur gängige Link-Protokollschemata.
Bücher
Bücher standen in Jellyfin oft im Hintergrund, aber das soll sich ändern. Wir haben eine konzertierte Anstrengung begonnen, um die Buchunterstützung in der API und den offiziellen Clients zu verbessern. eBook- und Comic-Unterstützung reift noch, aber das ODPS-Plugin ermöglicht den direkten Zugriff aus einer Vielzahl beliebter Selfhosted-Programme. Beiträge in allen Repositories sind daher äußerst willkommen – von Serververbesserungen über Dokumentationsänderungen bis hin zu Drittanbieter-Clients für die Buchwiedergabe. Eine Kombination aus eBook-, Comic- und Hörbuchunterstützung ist auf folgenden Clients verfügbar.
Offiziell: Web, iOS, Android, Desktop, Roku, Kodi, JMP
Community: JellyBook, Symfonium, Jellium, Plappa
Eine bemerkenswerte Auslassung im Server sind Buchserien als eigenständige Entitäten, die es nicht in diese Version geschafft haben. Bis sie hinzugefügt werden, können Sie das Folio-Plugin verwenden, um sie als Sammlungen anzuzeigen. Es funktioniert ähnlich wie das TMDb Box Sets-Plugin, gilt aber nur für eBooks.
Ein weiteres in Entwicklung befindliches Feature sind Hörbuchkapitel, die derzeit nur über die API verfügbar sind. Das bedeutet, dass die Client-Unterstützung jetzt möglich ist – Sie sollten sie also vor dem nächsten Server-Release in Ihrem bevorzugten Hörbuch-Client sehen.
HINWEIS: Das Bookshelf-Plugin wurde als veraltet markiert; seine Funktionen wurden in den Server integriert oder in die ComicVine- und GoogleBooks-Anbieter extrahiert.
Server-Änderungen
- Bookshelf wurde in separate GoogleBooks- und ComicVine-Anbieter aufgeteilt.
- Lokale Buchanalyse wurde verbessert und ist ohne Plugins verfügbar:
- Buchmetadaten werden direkt aus OPF- und ComicInfo-Dateien oder ComicBookInfo-Kommentaren extrahiert.
- Externe Cover werden jetzt für Hörbuchdateien unterstützt.
- Poster werden für EPUBs und alle unterstützten Comic-Archive generiert.
- Name, Index, Jahr und Serie werden aus Buchdateinamen geparst.
- Sowohl Band als auch Kapitel sind in der API verfügbar, wenn sie in Comic-Dateinamen vorkommen.
- Seitenzahlen werden aus Comic-Archiven und PDFs extrahiert.
- Erstellernamen aus OPF-Daten werden auf ein gemeinsames Format normalisiert.
- Ein neues OpenLibrary-Plugin wurde für Metadaten und Bilder erstellt.
- ISBN-Externe IDs und Links werden unterstützt.
- Kapitel werden jetzt aus Hörbüchern extrahiert.
Web-Änderungen
- Modernes Buchbibliothekslayout mit Ansichtstypen und Seitenumbruch.
- Bücher zeigen Informationen über ihre Autoren an und umgekehrt.
- Die Wiedergabeoberfläche wurde überarbeitet und für alle Buchtypen vereinheitlicht.
- Fortschrittsanzeige ist für unterstützte eBooks wieder aktiviert.
- Sortierung von Büchern nach Indexnummer, Erscheinungsdatum usw. ist jetzt möglich.
- Schriftgrößenauswahl für EPUB-Dateien wurde verbessert.
- Hintergrundwiedergabe von Hörbüchern funktioniert auf iOS-Geräten.
- Autoren-, Sammlungs- und Ordner-Tabs wurden zu Buchbibliotheken hinzugefügt; Hörbücher erscheinen unter Autoren.
- Vollbildverhalten ist über alle Buchplayer vereinheitlicht; PDFs unterstützen Wisch-Navigation.
Entwickler
API-Änderungen
Die API erlaubt standardmäßig keine veralteten Autorisierungsmechanismen mehr. Clients und Tools müssen migrieren, falls noch nicht geschehen. Weitere Details finden Sie unter der zugehörigen PR (nicht verlinkt).
Es gab eine Reihe weiterer Änderungen an den SDK-Bibliotheken und der API im Rahmen der laufenden Bemühungen, die API besser für die Client-Nutzung zu dokumentieren. Bitte beachten Sie Folgendes zur API-Unterstützung. Eine vollständige Erläuterung unserer Richtlinie für API-Änderungen wird in den kommenden Monaten zur Entwicklerdokumentation hinzugefügt.
- Wenn ein Endpunkt nicht in der OpenAPI-Spezifikation aufgeführt ist, sollte er von Clients nicht verwendet werden.
- Bestimmte Endpunkte sind aus Legacy-Gründen weiterhin verfügbar, obwohl sie aus der OpenAPI-Spezifikation ausgeschlossen sind.
- Diese können in jedem Major-Release ohne Vorwarnung entfernt werden.
- Wenn ein Endpunkt oder Parameter in der OpenAPI-Spezifikation als obsolet markiert ist, sollte er von Clients nicht verwendet werden.
- Gleiche Erklärung wie oben.
- Als allgemeine Regel gilt: Veraltungen werden für einen gesamten (Major-)Release-Zyklus als solche markiert, bevor der veraltete Endpunkt oder Parameter entfernt werden kann.
Verhaltensänderungen, die Clients beachten sollten:
GetItemsist jetzt asynchron und wendetrecursivean, wenn Filter angefordert werden, beschränkt auf Anfragen mitincludeItemTypes. Dieselbe Abfrage kann ein anderes Ergebnisset als in 10.11 liefern.ItemByName-Antworten sind eingeschränkt und Personen werden dedupliziert.- Neu als obsolet markiert, aber weiterhin funktionsfähig, mit Ersatz:
GetTrailers→GetItemsmitincludeItemTypes=TrailerGetArtistsundGetAlbumArtists→GetPersonsGetArtistByName→GetPersonGetMusicGenre→GetGenreGetInstantMixFromMusicGenreByIdundGetInstantMixFromMusicGenreByName→GetInstantMixFromItemGetStartupConfiguration,UpdateInitialConfigurationundSetRemoteAccess→ KonfigurationsendpunkteGetRecordingsSeriesUserDto.HasPasswordist als obsolet markiert und liefert keine nützlichen Informationen mehr.
- Die HLS-Controller sind aus der Spezifikation ausgeblendet.
Plattform
- Der Server zielt jetzt auf .NET 10. Plugins müssen neu ausgerichtet und neu erstellt werden.
- Swashbuckle wurde auf v10 aktualisiert, was das generierte OpenAPI-Dokument ändert; SDKs müssen neu generiert werden.
- jellyfin-web wird jetzt mit Node 24 LTS und npm 11 gebaut.
Plugin-Änderungen
ISearchEnginewurde durchISearchManagerersetzt, undSearchEnginedurchSearchManagerzusammen mitSqlSearchProvider.- Entfernt:
NowPlayingQueueFullItems,DtoExtensions.AddClientFields,Jellyfin.Extensions.AlphanumericComparator, dieISubtitleWriter-Familie von Untertitelschreibern sowieSubtitleOptionsmitSubtitleConfigurationFactory. ServerConfiguration.EncoderPresetist nicht mehr nullable.IAuthenticationProvider.HasPasswordwurde entfernt.IPasswordResetProvider.StartForgotPasswordProcessnimmt den eingegebenen Benutzernamen und einen nullable Benutzer entgegen.IUserManager: Die EigenschaftenUsersundUsersIdssind jetzt die MethodenGetUsersundGetUsersIds;RenameUser,ResetPasswordundChangePasswordnehmen eine Benutzer-ID statt einesUser-Objekts.GetFirstUserwurde hinzugefügt.- Mehrere
IItemRepository-Mitglieder wurden in neue Dienste verschoben: Elementspeicherung und -löschung sowieUpdateInheritedValueszuIItemPersistenceService, Zählungen zuIItemCountServiceund Next-Up-Serienschlüssel zuINextUpService. IPeopleRepository.GetPeopleundILibraryManager.GetPeopleItemsgeben einQueryResultzurück;IDtoService.GetBaseItemDtosundILibraryManager.DeleteItemsUnsafeFasthaben neue Signaturen.IDirectoryService.GetFilePathsnimmt keinsort-Argument mehr; dieIPathManager-Getter für Untertitel- und Anhangspfade sind jetzt nullable.
Neue Plugin-APIs
Diese Version fügt mehrere Erweiterungspunkte hinzu, in die Plugins zuvor nicht eingreifen konnten.
- Suchanbieter. Plugins können nun an der Suche selbst teilnehmen, nicht nur an der Metadatenauflösung.
ISearchProviderexponiertName,Type,PriorityundCanSearch(SearchProviderQuery), mitIInternalSearchProviderfür Anbieter, die die lokale Bibliothek durchsuchen, undIExternalSearchProviderfür Anbieter, dieSearchResult-Elemente von einem entfernten Dienst streamen. Anbieter werden überISearchManager.AddPartsregistriert und in Prioritätsreihenfolge konsultiert, sodass ein Plugin den eingebautenSqlSearchProvidererweitern oder übernehmen kann. - Ähnlichkeits- und Empfehlungsanbieter.
ISimilarItemsProviderwird vonILocalSimilarItemsProvider,IRemoteSimilarItemsProviderundIBatchLocalSimilarItemsProvidergeerbt, jeweils mit generischer Variante, sodass ein Anbieter den von ihm behandelten Elementtyp deklarieren kann. Anbieter werden pro Bibliothek überLibraryOptions.SimilarItemProvidersundSimilarItemProviderOrderausgewählt und geordnet;ISimilarItemsManagerruft auch Filmempfehlungen ab. Der gebündelte ListenBrainz-Anbieter basiert darauf. - Comic-Metadatenanbieter.
IComicProvider(ReadMetadataundHasItemChanged) ermöglicht es einem Plugin, Comic-Metadaten neben den eingebauten ComicInfo- und ComicBookInfo-Lesern bereitzustellen. - Kapitel für jeden Elementtyp.
IChapterManager.SaveChaptersnimmt jetzt einBaseItemstatt einesVideoentgegen und hat eineSupports(BaseItem)-Prüfung erhalten. Dies ermöglicht Hörbuchkapitel und erlaubt Plugins, Kapitel für Nicht-Video-Elemente zu speichern. - Passwort-Resets für unbekannte Benutzer.
IPasswordResetProvider.StartForgotPasswordProcesserhält jetzt den eingegebenen Benutzernamen zusammen mit einem nullable Benutzer, sodass ein Anbieter eine Anfrage für einen dem Server unbekannten Benutzernamen bearbeiten oder den Reset an einen externen Anbieter weitergeben kann. - Mediensegment-Bereinigung.
IMediaSegmentProvider.CleanupExtractedDatawird aufgerufen, wenn die Daten eines Elements entfernt werden, sodass Segmentanbieter ihre eigenen extrahierten Dateien löschen können. - Schedules Direct.
ISchedulesDirectServiceexponiert verfügbare Länder, Dienstverfügbarkeit und den Status des täglichen Bildlimits, sodass Live-TV-Plugins diese nicht mehr neu implementieren müssen.ITunerHostManager.DeleteTunerHostermöglicht das Entfernen eines Tuners. - Alternative Versionen und verknüpfte Kinder. Da verknüpfte Kinder jetzt relational sind, exponiert
ILibraryManagerResolveAlternateVersion,GetLocalAlternateVersionIds,GetLinkedAlternateVersions,GetItemIdsWithAlternateVersionsundUpsertLinkedChild. Plugins, die Versionsverknüpfungen über serialisierte Elementdaten manipuliert haben, müssen auf diese umsteigen. - Batch-APIs für Massenoperationen.
IUserDataManagererhieltGetUserDataBatch,GetResumeUserData,GetResumeUserDataBatchundResetPlaybackStreamSelections.ILibraryManagererhieltGetPeopleByItems,GetPeopleNamesByItemsundGetNextUpEpisodesBatch.IItemCountServicebietet gestapelte Kind- und Gespielt/Gesamt-Zählungen. - Lokalisierung.
ILocalizationManager.GetServerLocalizedStringundGetLanguageDisplayNameermöglichen Plugins die Lokalisierung gegen die Server-Locale. ICollectionManager.GetCollectionsContainingItemunterstützt die „Enthalten in“-Funktion, undIPlaylistManager.AddItemToPlaylistAsyncnimmt eine Position entgegen, sodass Elemente oben in einer Wiedergabeliste eingefügt werden können.
IHasEmbeddedImage ist ebenfalls neu, aber nur für Plugins gedacht, die in den Server kompiliert werden; externe Plugins sollten ihre Bilder weiterhin über imagePath in meta.json deklarieren.
TLS-Konfiguration
In den vorherigen Versionshinweisen 10.11.0 wurde die Abschaffung der integrierten TLS-Zertifikatsbehandlung für diese Version angekündigt. Diese Änderung wurde auf eine zukünftige Version verschoben.
Diskutieren Sie diese Version weiter in unseren Foren.
Änderungsprotokoll (Zusammenfassung)
Das vollständige Änderungsprotokoll umfasst 460 Einträge. Die wichtigsten Änderungen lassen sich wie folgt zusammenfassen:
Sicherheit: Behebung einer potenziellen FFmpeg-Argument-Injection über nicht maskierte Untertiteldateipfade. Zusätzlich wurden Pfadvalidierungen und Härtungen gegen Pfaddurchquerung in mehreren Endpunkten vorgenommen.
Server-Kern: Zahlreiche Leistungsverbesserungen durch optimierte Abfragen, Stapelverarbeitung und Datenbankmigrationen. Die Verwaltung von alternativen Versionen und verknüpften Kindern wurde grundlegend überarbeitet. Viele Fehlerbehebungen bei der Medienanalyse, Metadatenverarbeitung, Live-TV und SyncPlay. Neue Funktionen wie die Unterstützung dreistelliger Episodennummern, Tmdb-Anbieter für fehlende Episoden und VobSub-Untertitel.
Transkodierung: Aktualisierung auf FFmpeg 8.1, Optimierungen für CUDA/OCL, HLG-Tonemapping nach BT 2446 Methode B, Vermeidung von SSA/ASS-Konvertierung, dvh1-HLS-Variante für Dolby Vision P5 und verschiedene Fixes für HLS und Untertitel.
Web-Client: Modernes Layout als Standard, viele UI-Verbesserungen, neue Filter und Ansichten, Performance-Steigerungen durch Query-Caching, Unterstützung für VobSub-Rendering und zahlreiche Fehlerbehebungen bei Wiedergabe, Navigation und TV-Layout.
Bücher: Deutliche Verbesserung der Buchunterstützung, einschließlich lokaler Metadatenanalyse, OpenLibrary-Plugin, Hörbuchkapiteln und überarbeiteter Web-Oberfläche für Bücher.
Entwickler: Umfangreiche API-Änderungen, neue Plugin-APIs für Suche, Ähnlichkeit, Comics, Kapitel und mehr, sowie Umstellung auf .NET 10 und Node 24 LTS.



