Jellyfin 12.0 réécrit ses playlists et donne enfin un vrai support aux livres
Jellyfin publie 12.0, une version majeure qui abandonne le préfixe « 10 » et réécrit le stockage des playlists et des collections pour accélérer les grandes bibliothèques. Sauvegardez, puis mettez à niveau depuis 10.11.x et relancez une analyse complète de la bibliothèque.
Mai 2026. L’équipe Jellyfin confirme que la numérotation « 10.x » ne reflète plus rien. Début septembre 2026. La version 12.0 sort, trois mois après 10.11, en sautant volontairement le 11. 2026. Le serveur de médias auto-hébergé le plus suivi de la communauté livre sa mise à jour la plus structurelle depuis la réécriture de sa base de données. Pourquoi c’est important : derrière un simple changement de numéro, c’est toute la façon dont une bibliothèque volumineuse est stockée et lue qui change.
Pourquoi 12.0 et pas 10.12
Le changement le plus visible de cette version est dans son nom. Ce qui aurait dû être 10.12.0 devient 12.0, et le serveur se présente désormais comme 12.0.0. 10.11.x est la dernière branche à utiliser l’ancien schéma.
La raison tient au retour des utilisateurs après 10.11.0. Cette sortie avait réécrit la base de données de la bibliothèque — une refonte majeure à tous égards — mais son numéro la présentait comme une mise à jour mineure. Le préfixe 10. ne changeait jamais et n’informait personne ; il ne faisait que pousser le chiffre qui compte vers le milieu du numéro, donnant l’impression qu’une version majeure était mineure. Le supprimer fait remonter le chiffre significatif en première position.
Pour quiconque maintient un outil qui parse les versions de Jellyfin — un client, une sonde de supervision, un script de déploiement, un pin de tag de conteneur — c’est le point à vérifier avant de mettre à niveau. Un contrôle qui attend 10. en tête va casser silencieusement.
La base de données réécrite
10.11.0 avait reconstruit le schéma de la bibliothèque. 12.0 en tire les bénéfices de performance. Le changement le plus structurant concerne la façon dont les playlists et les collections sont stockées.
Avant, tout le contenu d’une playlist tenait dans une unique liste encodée à l’intérieur de la playlist elle-même, illisible pour la base. Connaître le nombre d’éléments, calculer ce qui a été regardé ou afficher une page exigeait de charger la liste entière et de la décompresser. Ajouter ou retirer un élément imposait de réécrire toute la liste.
Désormais, chaque élément d’une playlist occupe sa propre ligne. La base peut compter les lignes, renvoyer une page, ajouter ou supprimer un élément sans toucher au reste. Sur de très grandes playlists, le gain est immédiat. Les collections et les coffrets, stockés de la même façon, reçoivent le même correctif.
Au passage, la suppression d’un grand nombre d’éléments ne s’interrompt plus à mi-chemin, les vues Continue Watching, Next Up, le re-visionnage, les Latest Media musicaux, la recherche d’artistes et les compteurs de lecture des dossiers sont plus rapides, et la maintenance lourde de la base ne tourne plus pendant une analyse de bibliothèque — les deux cessaient de se disputer les mêmes ressources. Concrètement, les pages qui figeaient ne figent plus.
Pour qui préfère déclencher la migration délibérément plutôt qu’au premier démarrage, le serveur accepte désormais --mode MigrateSystem, qui effectue la mise à niveau puis s’arrête sans lancer le reste.
Les livres, enfin
Les livres ont longtemps été le parent pauvre de Jellyfin, relégués derrière la lecture vidéo. Cette version amorce le rattrapage : l’essentiel de ce que faisait le plugin Bookshelf a été déplacé dans le serveur lui-même.
- Les métadonnées sont lues directement depuis les fichiers OPF et ComicInfo, ou depuis les commentaires ComicBookInfo, sans plugin.
- Les couvertures sont générées pour les EPUB et tous les formats d’archives de comics, et les couvertures externes fonctionnent pour les livres audio.
- Nom, index, année et série sont extraits des noms de fichiers ; volumes et chapitres le sont des noms de fichiers de comics.
- Le nombre de pages est extrait des archives de comics et des PDF, et les chapitres des livres audio.
- Bookshelf a été scindé en fournisseurs GoogleBooks et ComicVine, et un nouveau plugin OpenLibrary fournit métadonnées et images ; les identifiants ISBN sont pris en charge.
Côté client, une nouvelle mise en page Modern dédiée aux livres ajoute des onglets Auteurs, Collections et Dossiers, l’interface de lecture est unifiée entre tous les types de livres avec navigation par balayage pour les PDF, et la lecture audio en arrière-plan fonctionne sur iOS. Le plugin Bookshelf est déprécié : ses fonctions ont fusionné dans le serveur ou été extraites vers les fournisseurs.
Recommandations, recherche et mise en page Modern par défaut
La provenance des recommandations n’est plus figée : elle se choisit par bibliothèque, au même endroit que les fournisseurs de métadonnées. ListenBrainz est désormais embarqué avec le serveur — pointer sa bibliothèque musicale dessus fait remonter des artistes similaires fondés sur de vraies données d’écoute, pas sur de simples tags. La recherche suit la même logique : un plugin peut ajouter ses propres résultats à côté de ceux de Jellyfin, sans passer par un fork.
La mise en page livrée comme « expérimentale » devient simplement la mise en page Modern, désormais défaut sur ordinateur et mobile. L’ancienne reste disponible sous le nom Legacy. Les téléviseurs sont inchangés. Tous les thèmes — Dark, Light, WMC, Blue Radiance, Apple TV, Purple Haze — dérivent maintenant d’une base commune fondée sur des variables CSS, ce qui intéresse directement les mainteneurs de thèmes personnalisés.
Ce que l’opérateur doit savoir avant de mettre à niveau
12.0 change le schéma de base et réécrit des données au premier démarrage : une sauvegarde est le seul chemin de retour. La consigne est claire : arrêter le serveur, sauvegarder les répertoires de données et de configuration, puis mettre à niveau depuis 10.10.7 ou n’importe quelle 10.11.x. Depuis une version plus ancienne, passer d’abord par 10.10.7.
Quatre points méritent une attention particulière. Les noms d’utilisateur deviennent insensibles à la casse : deux comptes qui ne diffèrent que par des majuscules font échouer la migration. Une analyse complète de la bibliothèque est requise après la mise à niveau, et la première sera plus longue — certains films peuvent réapparaître comme nouvellement ajoutés. Les plugins tiers de la génération 10.11 ne se chargent pas : ils doivent être reconstruits, et les plugins officiels sont déjà à jour. Enfin, les anciennes adresses /emby/ et /mediabrowser/ sont supprimées, tout comme la méthode de connexion dépréciée : les clients qui n’ont pas été mis à jour depuis des années cessent de fonctionner.
La version cible aussi .NET 10 et FFmpeg 8.1, et intègre des correctifs de sécurité : plusieurs d’entre eux empêchent une requête forgée d’atteindre des fichiers hors des répertoires que Jellyfin est censé servir, et d’autres bloquent la ré-exécution de l’assistant de configuration sans connexion, rejettent les paquets de plugins aux noms dangereux et corrigent des XSS dans le client web. La dépréciation du TLS/SSL interne, annoncée pour cette version, est repoussée — mais la recommandation de passer derrière un reverse proxy demeure.
Verdict
Jellyfin 12.0 n’est pas une mise à jour cosmétique : c’est la consolidation de la refonte de 10.11, désormais visible dans la fluidité des grandes bibliothèques, et une vraie entrée sur le terrain des livres et des comics.
Si votre bibliothèque dépasse quelques dizaines de milliers d’éléments, mettez à niveau — le stockage des playlists en lignes individuelles est la correction qui fera le plus de différence sur votre usage quotidien. Si vous maintenez des plugins tiers, attendez qu’ils soient reconstruits pour 12.0 avant de basculer. Si vous exposez l’instance sur Internet, la mise à niveau est prioritaire pour ses correctifs de sécurité, mais conservez le reverse proxy : le TLS interne reste une impasse, pas un répit. Dans tous les cas, sauvegardez avant — c’est une migration à sens unique.