peterdu1109/NotifySync

NotifySync transforme l'interface de Jellyfin en ajoutant une icône de notification (cloche) native. Il permet à vos utilisateurs de voir instantanément les derniers ajouts (Films, Séries, Musique) sans quitter leur page actuelle, le tout avec un design fluide inspiré des plateformes de streaming majeures.

C#

25

15 commits

updated Sep 28, 2026

See the code

README

🔔 NotifySync

Version .NET Framework Jellyfin License GitHub stars Downloads Last release

The modern notification center Jellyfin has been waiting for.
Le centre de notifications moderne que Jellyfin attendait.


🌐 Language / Langue
English | Français


English

NotifySync transforms the Jellyfin interface by adding a native notification bell, inspired by major streaming platforms. Your users see the latest additions — Movies, Series, Music — without ever leaving their current page, through a sleek glass-morphism dropdown that feels like it was always part of Jellyfin.

📖 Changelog & version history: see GitHub Releases for what's new in each version.

📑 Table of Contents

🚀 Quick Start

  1. Add the repository for your Jellyfin version, 10.11.x or 12.x — see Installation.
  2. Install NotifySync from the Catalog → restart Jellyfin.
  3. Install the File Transformation plugin to inject the bell automatically (see Enable the Bell).
  4. In Dashboard → Plugins → NotifySync, check the libraries to monitor, Save, then click Regenerate history — nothing is announced until at least one library is checked.

That's it. The bell appears in the top-right header with your latest additions, and keeps up as new content arrives.

✨ Key Features

  • Streaming-style bell — A sleek glass dropdown with the latest addition as a large hero spotlight. The red counter clears when you open the bell; each item keeps a NEW / UPD badge until you dismiss it or it's played.
  • Real-time — Notifications arrive on their own, about half a minute after Jellyfin registers the content. No page refresh, ever.
  • Organized by recency — The list is split into Today, This week, and Earlier sections, newest first.
  • Smart grouping — Episodes grouped by series and labeled with the exact range that landed (Season 4 • Ep. 1-12, or Ep. 1, 8 for a partial batch); tracks grouped by album.
  • Upgrade detection — Replace a media file and the notification comes back with a blue UPD badge telling you what changed: Quality, Codec, Audio, or a combination. Subtitle additions and metadata refreshes stay silent.
  • Moves are not news — Reorganising your libraries stays out of the bell. Jellyfin sees a move as a deletion followed by an unrelated add, which used to announce every relocated title as brand new; NotifySync recognises it and stays quiet.
  • Nothing half-drawn — A title only appears once Jellyfin has identified it. No cards named after their folder, no missing artwork, no episodes waiting to be grouped.
  • Favorites filter — Favorite a series in Jellyfin and filter the bell down to just the content you care about.
  • Filters & dismiss — Quick category pills, dismiss per item or per group, swipe-left on mobile. Clearing the list never marks anything as "Played".
  • Collections — Monitored Jellyfin collections (BoxSets) notify you on new additions.
  • Deletion history — Admins get a log of recently deleted media, with configurable retention.
  • Synced across devices — Read and cleared states live on the server: phone and desktop always agree.
  • Respects permissions — Every user only ever sees content from libraries they can access, with strict per-user isolation.
  • Bilingual & responsive — French / English following your Jellyfin language, on desktop, tablet, and mobile.

📦 Installation

[!IMPORTANT] Prerequisites:

  • Jellyfin 10.11.x or 12.x
  • A web client — browser on desktop, tablet or phone, or the mobile app. TV apps render natively and cannot display the bell.

Steps

  1. Open your Jellyfin dashboard > Plugins > Repositories.
  2. Add the repository for your Jellyfin version — one build cannot target both:
    • Jellyfin 10.11.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/main/repository.json
      
    • Jellyfin 12.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/jellyfin-12/repository-12.json
      
  3. Go to the Catalog and install NotifySync — the Jellyfin 12 channel lists it as NotifySync (Jellyfin 12).
  4. Restart your Jellyfin server.

🔔 Enable the Bell

Automatic injection, no file to edit, and it survives Jellyfin updates.

  1. In Dashboard → Plugins → Repositories, add:
    https://www.iamparadox.dev/jellyfin/plugins/manifest.json
    
  2. Install File Transformation from the catalog.
  3. Restart Jellyfin, then Ctrl+F5 in your browser.

Method 2: Manual Injection

[!WARNING] This method requires re-applying the patch after every Jellyfin update, because Jellyfin overwrites index.html. Method 1 is strongly preferred.

If you prefer not to install another plugin, manually add the script tag to your index.html:

Linux

sudo sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /usr/share/jellyfin/web/index.html

Docker

docker exec jellyfin sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /jellyfin/jellyfin-web/index.html

Windows — open the web client's index.html in a text editor started as administrator:

C:\Program Files\Jellyfin\Server\jellyfin-web\index.html

and paste this line just before the closing </body>:

<script src="/NotifySync/client.js"></script>

⚙️ Configuration

Go to Dashboard > Plugins > NotifySync.

SettingDefaultDescription
Quotas10Maximum number of entries per category (1–50). A whole series counts as one entry regardless of episode count (up to 500 episodes stored per series).
Monitored Libraries(none)Check the folders you want to appear in notifications.
Monitored Collections(none)Select Jellyfin collections (BoxSets) to track for new additions. Scanned every 15 minutes.
Category Mapping(empty)Rename or group your libraries in the bell (e.g. "My Movies" → "Movies"). A library without a mapping shows under its own name. The arrows set the order of the bell's filters.
Manual Library IDs(empty)Add library IDs or names manually for advanced setups (Channels, XFusion).
Deleted Items TrackingenabledEnable/disable the deletion history log. Required for full UPD detection on Sonarr/Radarr replacements (delete+re-import scenario). Replacements are correlated within a 7-day window.
Deletion Retention30 daysNumber of days to keep deleted item records (7–365). The lower bound is 7 days so the detection window always has data — retention only controls how long the deletions stay visible in the admin log.
Regenerate History—Force a full rescan after changing libraries or categories.
Scan Collections Now—Force an immediate scan of monitored Collections instead of waiting for the automatic interval.

❓ Troubleshooting

IssueSolution
Bell doesn't appearCheck File Transformation is installed. Restart Jellyfin. Clear browser cache (Ctrl+Shift+R).
Bell appeared then disappeared after Jellyfin updateYou're using Method 2 (manual injection) — re-apply the sed command. Switch to Method 1 (File Transformation) to avoid this.
Badge count is wrongClick "Regenerate history" in config. Clear browser localStorage.
Music not syncedUse "Regenerate history" to rescan audio tracks.
Content missingEnsure the library is checked in "Monitored Libraries".
New TV episode missingMake sure the Series-type library containing the episode is checked in "Monitored Libraries".
Replaced file shows NEW instead of UPDEnable Deleted Items Tracking in config — required for the delete+re-import detection path.
A renamed file shows a false UPD badgeRenaming alone is recognised and stays silent. A badge can still slip through if the rename changed the file itself — dismiss it, and it will not come back.
A moved series still shows as NEWMove detection needs Deleted Items Tracking enabled, and it only recognises a folder that kept its name — moving and renaming in one go is indistinguishable from a deletion followed by an addition.
Unauthorized content visiblePlugin respects Jellyfin permissions — check user restrictions in the dashboard.
429 ErrorWait 30 seconds between "Regenerate history" clicks (anti-spam).
IncompatibleUse the repository that matches your Jellyfin version, 10.11.x or 12.x — see Installation.

NotifySync integrates beautifully with the ElegantFin Cinema Edition theme — a streaming-inspired CSS theme for Jellyfin with a full suite of cinematic modules.

Both projects work flawlessly together on PC (browser) and mobile (Jellyfin app + browser).

⭐ Install once, get a complete cinematic Jellyfin experience with real-time notifications.

⚠️ TV note: NotifySync currently doesn't render on TV apps (Samsung Tizen, Android TV, LG webOS). The notification bell is a web client feature and TV apps use native rendering.

👥 Authors & Credits

NotifySync is maintained by:

Thanks to @muisje and @Wernouxe for their feature requests and bug reports that shaped this plugin.

Contributions, bug reports, and feature requests are welcome on GitHub.

Released under the MIT License.


Français

NotifySync transforme l'interface Jellyfin en y ajoutant une cloche de notifications native, inspirée des grandes plateformes de streaming. Vos utilisateurs voient les derniers ajouts — Films, Séries, Musique — sans jamais quitter leur page, via un menu déroulant en verre dépoli qui s'intègre naturellement dans Jellyfin.

📖 Changelog & historique des versions : voir les Releases GitHub pour les nouveautés de chaque version.

📑 Sommaire

🚀 Démarrage Rapide

  1. Ajoutez le dépôt correspondant à votre version de Jellyfin, 10.11.x ou 12.x — voir Installation.
  2. Installez NotifySync depuis le Catalogue → redémarrez Jellyfin.
  3. Installez le plugin File Transformation pour injecter la cloche automatiquement (voir Activer la Cloche).
  4. Dans Tableau de bord → Extensions → NotifySync, cochez les bibliothèques à surveiller, Sauvegardez, puis cliquez sur Régénérer l'historique — rien n'est annoncé tant qu'aucune bibliothèque n'est cochée.

C'est tout. La cloche apparaît en haut à droite de l'interface avec vos derniers ajouts, et suit les nouveautés au fil de l'eau.

✨ Fonctionnalités

  • Cloche style streaming — Un menu déroulant élégant en verre dépoli, avec le dernier ajout en grand en vedette. Le compteur rouge disparaît à l'ouverture ; chaque élément garde un badge NOUVEAU / MAJ jusqu'à ce que vous le retiriez ou qu'il soit marqué vu.
  • Temps réel — Les notifications arrivent seules, une trentaine de secondes après que Jellyfin a enregistré le contenu. Aucun rafraîchissement, jamais.
  • Organisé par fraîcheur — La liste est découpée en sections Aujourd'hui, Cette semaine et Plus ancien, du plus récent au plus ancien.
  • Regroupement intelligent — Épisodes groupés par série avec la plage exacte qui est arrivée (Saison 4 • Ép. 1-12, ou Ép. 1, 8 pour un lot partiel) ; pistes groupées par album.
  • Détection des mises à jour — Remplacez un fichier média et la notification revient avec un badge bleu MAJ qui indique ce qui a changé : Qualité, Codec, Audio, ou une combinaison. Les ajouts de sous-titres et rafraîchissements de métadonnées restent silencieux.
  • Un déplacement n'est pas une nouveauté — Réorganiser vos bibliothèques ne remplit plus la cloche. Jellyfin voit un déplacement comme une suppression suivie d'un ajout sans rapport, ce qui annonçait chaque titre déplacé comme neuf ; NotifySync le reconnaît et se tait.
  • Rien d'à moitié affiché — Un titre n'apparaît qu'une fois identifié par Jellyfin. Plus de carte portant le nom de son dossier, plus d'affiche manquante, plus d'épisodes en attente de regroupement.
  • Filtre Favoris — Mettez une série en favori dans Jellyfin et filtrez la cloche sur les seuls contenus qui vous intéressent.
  • Filtres & suppression — Pills de catégories, suppression à l'unité ou par groupe, swipe gauche sur mobile. Vider la liste ne marque jamais rien comme « Vu ».
  • Collections — Les collections Jellyfin surveillées (BoxSets) vous notifient des nouveaux ajouts.
  • Historique des suppressions — Les admins disposent d'un journal des médias récemment supprimés, avec rétention paramétrable.
  • Synchronisé entre appareils — États lu / vidé stockés côté serveur : téléphone et bureau toujours d'accord.
  • Respecte les permissions — Chaque utilisateur ne voit que le contenu des bibliothèques auxquelles il a accès, avec une isolation stricte par utilisateur.
  • Bilingue & responsive — Français / Anglais selon la langue de votre Jellyfin, sur bureau, tablette et mobile.

📦 Installation

[!IMPORTANT] Pré-requis :

  • Jellyfin 10.11.x ou 12.x
  • Un client web — navigateur sur ordinateur, tablette ou téléphone, ou l'application mobile. Les applications TV ont un rendu natif et ne peuvent pas afficher la cloche.

Étapes

  1. Tableau de bord Jellyfin > Extensions > Dépôts.
  2. Ajoutez le dépôt correspondant à votre version de Jellyfin — un même binaire ne peut pas viser les deux :
    • Jellyfin 10.11.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/main/repository.json
      
    • Jellyfin 12.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/jellyfin-12/repository-12.json
      
  3. Allez dans le Catalogue et installez NotifySync — sur le canal Jellyfin 12 il s'appelle NotifySync (Jellyfin 12).
  4. Redémarrez votre serveur Jellyfin.

🔔 Activer la Cloche

Méthode 1 : File Transformation — recommandée ✅

Injection automatique, aucun fichier à modifier, et ça survit aux mises à jour de Jellyfin.

  1. Dans Tableau de bord → Extensions → Dépôts, ajoutez :
    https://www.iamparadox.dev/jellyfin/plugins/manifest.json
    
  2. Installez File Transformation depuis le catalogue.
  3. Redémarrez Jellyfin, puis Ctrl+F5 dans votre navigateur.

Méthode 2 : Injection Manuelle

[!WARNING] Cette méthode nécessite de ré-appliquer le patch après chaque mise à jour Jellyfin, car Jellyfin écrase index.html. La Méthode 1 est fortement recommandée.

Si vous préférez ne pas installer d'extension tierce :

Linux

sudo sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /usr/share/jellyfin/web/index.html

Docker

docker exec jellyfin sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /jellyfin/jellyfin-web/index.html

Windows — ouvrez le index.html du client web dans un éditeur lancé en administrateur :

C:\Program Files\Jellyfin\Server\jellyfin-web\index.html

et collez cette ligne juste avant la balise </body> :

<script src="/NotifySync/client.js"></script>

⚙️ Configuration

Allez dans Tableau de bord > Extensions > NotifySync.

ParamètreDéfautDescription
Quotas10Nombre maximum d'entrées par catégorie (1–50). Une série entière compte pour une seule entrée, quel que soit le nombre d'épisodes (jusqu'à 500 épisodes stockés par série).
Bibliothèques Surveillées(aucune)Cochez les dossiers que vous souhaitez voir apparaître dans la cloche.
Collections Surveillées(aucune)Sélectionnez les collections Jellyfin (BoxSets) à surveiller pour les nouveaux ajouts. Scannées toutes les 15 minutes.
Mappage des Catégories(vide)Renommez ou regroupez vos bibliothèques dans la cloche (ex. "Mes Films" → "Films"). Une bibliothèque sans mappage garde son propre nom. Les flèches fixent l'ordre des filtres de la cloche.
IDs Manuels(vide)Ajoutez des IDs ou noms de bibliothèques manuellement pour les configurations avancées (Channels, XFusion).
Suivi des SuppressionsactivéActiver/désactiver le journal des suppressions. Requis pour la détection MAJ complète sur les remplacements Sonarr/Radarr (scénario delete+ré-import). Les remplacements sont corrélés dans une fenêtre de 7 jours.
Rétention des Suppressions30 joursNombre de jours de conservation des éléments supprimés (7–365). La borne basse est de 7 jours pour que la fenêtre de détection ait toujours des données — la rétention ne fait que prolonger l'affichage dans le journal admin.
Régénérer l'Historique—Force un scan complet après modification des bibliothèques ou des catégories.
Scanner les Collections—Force un scan immédiat des Collections surveillées au lieu d'attendre l'intervalle automatique.

❓ Dépannage

ProblèmeSolution
La cloche n'apparaît pasVérifiez que File Transformation est installé. Redémarrez Jellyfin. Videz le cache (Ctrl+Shift+R).
La cloche a disparu après mise à jour JellyfinVous utilisez la Méthode 2 (injection manuelle) — ré-appliquez la commande sed. Passez à la Méthode 1 (File Transformation) pour éviter ça.
Le badge est incorrectCliquez sur "Régénérer l'historique". Videz le localStorage du navigateur.
Musique non synchroniséeUtilisez "Régénérer l'historique" pour rescanner les pistes audio.
Contenu manquantVérifiez que la bibliothèque est cochée dans "Bibliothèques Surveillées".
Nouvel épisode TV manquantVérifiez que la bibliothèque de type Série contenant l'épisode est cochée dans "Bibliothèques Surveillées".
Fichier remplacé apparaît en NOUVEAU au lieu de MAJActivez le Suivi des Suppressions dans la config — nécessaire pour la détection du scénario delete+ré-import.
Un fichier renommé affiche un faux badge MAJUn simple renommage est reconnu et reste silencieux. Un badge ne peut subsister que si le renommage a aussi modifié le fichier — retirez la notification, elle ne reviendra pas.
Une série déplacée apparaît quand même en NOUVEAULa détection nécessite le Suivi des Suppressions activé, et elle ne reconnaît qu'un dossier ayant conservé son nom — déplacer et renommer en une fois est indistinguable d'une suppression suivie d'un ajout.
Contenu non autorisé visibleLe plugin respecte les permissions Jellyfin — vérifiez les restrictions utilisateur.
Erreur 429Attendez 30 secondes entre chaque clic sur "Régénérer l'historique" (anti-spam).
IncompatibleUtilisez le dépôt qui correspond à votre version de Jellyfin, 10.11.x ou 12.x — voir Installation.

🎨 Thème recommandé

NotifySync s'intègre parfaitement avec le thème ElegantFin Cinema Edition — un thème CSS inspiré des plateformes de streaming pour Jellyfin avec une suite complète de modules cinématographiques.

Les deux projets fonctionnent ensemble sur PC (navigateur) et mobile (app Jellyfin + navigateur).

⭐ Installation unique, expérience Jellyfin cinéma complète avec notifications temps réel.

⚠️ Note TV : NotifySync ne s'affiche actuellement pas sur les apps TV (Samsung Tizen, Android TV, LG webOS). La cloche est une fonctionnalité du client web et les apps TV utilisent un rendu natif.

👥 Auteurs & Crédits

NotifySync est maintenu par :

Merci à @muisje et @Wernouxe pour leurs demandes de fonctionnalités et rapports de bugs qui ont façonné ce plugin.

Contributions, rapports de bugs et demandes de fonctionnalités sont les bienvenus sur GitHub.

Distribué sous Licence MIT.

dotnet9
jellyfin
jellyfin-plugin
jellyfin-ui
notifications
selfhosted

peterdu1109/NotifySync

NotifySync transforme l'interface de Jellyfin en ajoutant une icône de notification (cloche) native. Il permet à vos utilisateurs de voir instantanément les derniers ajouts (Films, Séries, Musique) sans quitter leur page actuelle, le tout avec un design fluide inspiré des plateformes de streaming majeures.

C#

25

15 commits

updated Sep 28, 2026

See the code

README

🔔 NotifySync

Version .NET Framework Jellyfin License GitHub stars Downloads Last release

The modern notification center Jellyfin has been waiting for.
Le centre de notifications moderne que Jellyfin attendait.


🌐 Language / Langue
English | Français


English

NotifySync transforms the Jellyfin interface by adding a native notification bell, inspired by major streaming platforms. Your users see the latest additions — Movies, Series, Music — without ever leaving their current page, through a sleek glass-morphism dropdown that feels like it was always part of Jellyfin.

📖 Changelog & version history: see GitHub Releases for what's new in each version.

📑 Table of Contents

🚀 Quick Start

  1. Add the repository for your Jellyfin version, 10.11.x or 12.x — see Installation.
  2. Install NotifySync from the Catalog → restart Jellyfin.
  3. Install the File Transformation plugin to inject the bell automatically (see Enable the Bell).
  4. In Dashboard → Plugins → NotifySync, check the libraries to monitor, Save, then click Regenerate history — nothing is announced until at least one library is checked.

That's it. The bell appears in the top-right header with your latest additions, and keeps up as new content arrives.

✨ Key Features

  • Streaming-style bell — A sleek glass dropdown with the latest addition as a large hero spotlight. The red counter clears when you open the bell; each item keeps a NEW / UPD badge until you dismiss it or it's played.
  • Real-time — Notifications arrive on their own, about half a minute after Jellyfin registers the content. No page refresh, ever.
  • Organized by recency — The list is split into Today, This week, and Earlier sections, newest first.
  • Smart grouping — Episodes grouped by series and labeled with the exact range that landed (Season 4 • Ep. 1-12, or Ep. 1, 8 for a partial batch); tracks grouped by album.
  • Upgrade detection — Replace a media file and the notification comes back with a blue UPD badge telling you what changed: Quality, Codec, Audio, or a combination. Subtitle additions and metadata refreshes stay silent.
  • Moves are not news — Reorganising your libraries stays out of the bell. Jellyfin sees a move as a deletion followed by an unrelated add, which used to announce every relocated title as brand new; NotifySync recognises it and stays quiet.
  • Nothing half-drawn — A title only appears once Jellyfin has identified it. No cards named after their folder, no missing artwork, no episodes waiting to be grouped.
  • Favorites filter — Favorite a series in Jellyfin and filter the bell down to just the content you care about.
  • Filters & dismiss — Quick category pills, dismiss per item or per group, swipe-left on mobile. Clearing the list never marks anything as "Played".
  • Collections — Monitored Jellyfin collections (BoxSets) notify you on new additions.
  • Deletion history — Admins get a log of recently deleted media, with configurable retention.
  • Synced across devices — Read and cleared states live on the server: phone and desktop always agree.
  • Respects permissions — Every user only ever sees content from libraries they can access, with strict per-user isolation.
  • Bilingual & responsive — French / English following your Jellyfin language, on desktop, tablet, and mobile.

📦 Installation

[!IMPORTANT] Prerequisites:

  • Jellyfin 10.11.x or 12.x
  • A web client — browser on desktop, tablet or phone, or the mobile app. TV apps render natively and cannot display the bell.

Steps

  1. Open your Jellyfin dashboard > Plugins > Repositories.
  2. Add the repository for your Jellyfin version — one build cannot target both:
    • Jellyfin 10.11.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/main/repository.json
      
    • Jellyfin 12.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/jellyfin-12/repository-12.json
      
  3. Go to the Catalog and install NotifySync — the Jellyfin 12 channel lists it as NotifySync (Jellyfin 12).
  4. Restart your Jellyfin server.

🔔 Enable the Bell

Automatic injection, no file to edit, and it survives Jellyfin updates.

  1. In Dashboard → Plugins → Repositories, add:
    https://www.iamparadox.dev/jellyfin/plugins/manifest.json
    
  2. Install File Transformation from the catalog.
  3. Restart Jellyfin, then Ctrl+F5 in your browser.

Method 2: Manual Injection

[!WARNING] This method requires re-applying the patch after every Jellyfin update, because Jellyfin overwrites index.html. Method 1 is strongly preferred.

If you prefer not to install another plugin, manually add the script tag to your index.html:

Linux

sudo sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /usr/share/jellyfin/web/index.html

Docker

docker exec jellyfin sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /jellyfin/jellyfin-web/index.html

Windows — open the web client's index.html in a text editor started as administrator:

C:\Program Files\Jellyfin\Server\jellyfin-web\index.html

and paste this line just before the closing </body>:

<script src="/NotifySync/client.js"></script>

⚙️ Configuration

Go to Dashboard > Plugins > NotifySync.

SettingDefaultDescription
Quotas10Maximum number of entries per category (1–50). A whole series counts as one entry regardless of episode count (up to 500 episodes stored per series).
Monitored Libraries(none)Check the folders you want to appear in notifications.
Monitored Collections(none)Select Jellyfin collections (BoxSets) to track for new additions. Scanned every 15 minutes.
Category Mapping(empty)Rename or group your libraries in the bell (e.g. "My Movies" → "Movies"). A library without a mapping shows under its own name. The arrows set the order of the bell's filters.
Manual Library IDs(empty)Add library IDs or names manually for advanced setups (Channels, XFusion).
Deleted Items TrackingenabledEnable/disable the deletion history log. Required for full UPD detection on Sonarr/Radarr replacements (delete+re-import scenario). Replacements are correlated within a 7-day window.
Deletion Retention30 daysNumber of days to keep deleted item records (7–365). The lower bound is 7 days so the detection window always has data — retention only controls how long the deletions stay visible in the admin log.
Regenerate History—Force a full rescan after changing libraries or categories.
Scan Collections Now—Force an immediate scan of monitored Collections instead of waiting for the automatic interval.

❓ Troubleshooting

IssueSolution
Bell doesn't appearCheck File Transformation is installed. Restart Jellyfin. Clear browser cache (Ctrl+Shift+R).
Bell appeared then disappeared after Jellyfin updateYou're using Method 2 (manual injection) — re-apply the sed command. Switch to Method 1 (File Transformation) to avoid this.
Badge count is wrongClick "Regenerate history" in config. Clear browser localStorage.
Music not syncedUse "Regenerate history" to rescan audio tracks.
Content missingEnsure the library is checked in "Monitored Libraries".
New TV episode missingMake sure the Series-type library containing the episode is checked in "Monitored Libraries".
Replaced file shows NEW instead of UPDEnable Deleted Items Tracking in config — required for the delete+re-import detection path.
A renamed file shows a false UPD badgeRenaming alone is recognised and stays silent. A badge can still slip through if the rename changed the file itself — dismiss it, and it will not come back.
A moved series still shows as NEWMove detection needs Deleted Items Tracking enabled, and it only recognises a folder that kept its name — moving and renaming in one go is indistinguishable from a deletion followed by an addition.
Unauthorized content visiblePlugin respects Jellyfin permissions — check user restrictions in the dashboard.
429 ErrorWait 30 seconds between "Regenerate history" clicks (anti-spam).
IncompatibleUse the repository that matches your Jellyfin version, 10.11.x or 12.x — see Installation.

NotifySync integrates beautifully with the ElegantFin Cinema Edition theme — a streaming-inspired CSS theme for Jellyfin with a full suite of cinematic modules.

Both projects work flawlessly together on PC (browser) and mobile (Jellyfin app + browser).

⭐ Install once, get a complete cinematic Jellyfin experience with real-time notifications.

⚠️ TV note: NotifySync currently doesn't render on TV apps (Samsung Tizen, Android TV, LG webOS). The notification bell is a web client feature and TV apps use native rendering.

👥 Authors & Credits

NotifySync is maintained by:

Thanks to @muisje and @Wernouxe for their feature requests and bug reports that shaped this plugin.

Contributions, bug reports, and feature requests are welcome on GitHub.

Released under the MIT License.


Français

NotifySync transforme l'interface Jellyfin en y ajoutant une cloche de notifications native, inspirée des grandes plateformes de streaming. Vos utilisateurs voient les derniers ajouts — Films, Séries, Musique — sans jamais quitter leur page, via un menu déroulant en verre dépoli qui s'intègre naturellement dans Jellyfin.

📖 Changelog & historique des versions : voir les Releases GitHub pour les nouveautés de chaque version.

📑 Sommaire

🚀 Démarrage Rapide

  1. Ajoutez le dépôt correspondant à votre version de Jellyfin, 10.11.x ou 12.x — voir Installation.
  2. Installez NotifySync depuis le Catalogue → redémarrez Jellyfin.
  3. Installez le plugin File Transformation pour injecter la cloche automatiquement (voir Activer la Cloche).
  4. Dans Tableau de bord → Extensions → NotifySync, cochez les bibliothèques à surveiller, Sauvegardez, puis cliquez sur Régénérer l'historique — rien n'est annoncé tant qu'aucune bibliothèque n'est cochée.

C'est tout. La cloche apparaît en haut à droite de l'interface avec vos derniers ajouts, et suit les nouveautés au fil de l'eau.

✨ Fonctionnalités

  • Cloche style streaming — Un menu déroulant élégant en verre dépoli, avec le dernier ajout en grand en vedette. Le compteur rouge disparaît à l'ouverture ; chaque élément garde un badge NOUVEAU / MAJ jusqu'à ce que vous le retiriez ou qu'il soit marqué vu.
  • Temps réel — Les notifications arrivent seules, une trentaine de secondes après que Jellyfin a enregistré le contenu. Aucun rafraîchissement, jamais.
  • Organisé par fraîcheur — La liste est découpée en sections Aujourd'hui, Cette semaine et Plus ancien, du plus récent au plus ancien.
  • Regroupement intelligent — Épisodes groupés par série avec la plage exacte qui est arrivée (Saison 4 • Ép. 1-12, ou Ép. 1, 8 pour un lot partiel) ; pistes groupées par album.
  • Détection des mises à jour — Remplacez un fichier média et la notification revient avec un badge bleu MAJ qui indique ce qui a changé : Qualité, Codec, Audio, ou une combinaison. Les ajouts de sous-titres et rafraîchissements de métadonnées restent silencieux.
  • Un déplacement n'est pas une nouveauté — Réorganiser vos bibliothèques ne remplit plus la cloche. Jellyfin voit un déplacement comme une suppression suivie d'un ajout sans rapport, ce qui annonçait chaque titre déplacé comme neuf ; NotifySync le reconnaît et se tait.
  • Rien d'à moitié affiché — Un titre n'apparaît qu'une fois identifié par Jellyfin. Plus de carte portant le nom de son dossier, plus d'affiche manquante, plus d'épisodes en attente de regroupement.
  • Filtre Favoris — Mettez une série en favori dans Jellyfin et filtrez la cloche sur les seuls contenus qui vous intéressent.
  • Filtres & suppression — Pills de catégories, suppression à l'unité ou par groupe, swipe gauche sur mobile. Vider la liste ne marque jamais rien comme « Vu ».
  • Collections — Les collections Jellyfin surveillées (BoxSets) vous notifient des nouveaux ajouts.
  • Historique des suppressions — Les admins disposent d'un journal des médias récemment supprimés, avec rétention paramétrable.
  • Synchronisé entre appareils — États lu / vidé stockés côté serveur : téléphone et bureau toujours d'accord.
  • Respecte les permissions — Chaque utilisateur ne voit que le contenu des bibliothèques auxquelles il a accès, avec une isolation stricte par utilisateur.
  • Bilingue & responsive — Français / Anglais selon la langue de votre Jellyfin, sur bureau, tablette et mobile.

📦 Installation

[!IMPORTANT] Pré-requis :

  • Jellyfin 10.11.x ou 12.x
  • Un client web — navigateur sur ordinateur, tablette ou téléphone, ou l'application mobile. Les applications TV ont un rendu natif et ne peuvent pas afficher la cloche.

Étapes

  1. Tableau de bord Jellyfin > Extensions > Dépôts.
  2. Ajoutez le dépôt correspondant à votre version de Jellyfin — un même binaire ne peut pas viser les deux :
    • Jellyfin 10.11.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/main/repository.json
      
    • Jellyfin 12.x
      https://raw.githubusercontent.com/peterdu1109/NotifySync/refs/heads/jellyfin-12/repository-12.json
      
  3. Allez dans le Catalogue et installez NotifySync — sur le canal Jellyfin 12 il s'appelle NotifySync (Jellyfin 12).
  4. Redémarrez votre serveur Jellyfin.

🔔 Activer la Cloche

Méthode 1 : File Transformation — recommandée ✅

Injection automatique, aucun fichier à modifier, et ça survit aux mises à jour de Jellyfin.

  1. Dans Tableau de bord → Extensions → Dépôts, ajoutez :
    https://www.iamparadox.dev/jellyfin/plugins/manifest.json
    
  2. Installez File Transformation depuis le catalogue.
  3. Redémarrez Jellyfin, puis Ctrl+F5 dans votre navigateur.

Méthode 2 : Injection Manuelle

[!WARNING] Cette méthode nécessite de ré-appliquer le patch après chaque mise à jour Jellyfin, car Jellyfin écrase index.html. La Méthode 1 est fortement recommandée.

Si vous préférez ne pas installer d'extension tierce :

Linux

sudo sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /usr/share/jellyfin/web/index.html

Docker

docker exec jellyfin sed -i 's|</body>|    <script src="/NotifySync/client.js"></script>\n</body>|' /jellyfin/jellyfin-web/index.html

Windows — ouvrez le index.html du client web dans un éditeur lancé en administrateur :

C:\Program Files\Jellyfin\Server\jellyfin-web\index.html

et collez cette ligne juste avant la balise </body> :

<script src="/NotifySync/client.js"></script>

⚙️ Configuration

Allez dans Tableau de bord > Extensions > NotifySync.

ParamètreDéfautDescription
Quotas10Nombre maximum d'entrées par catégorie (1–50). Une série entière compte pour une seule entrée, quel que soit le nombre d'épisodes (jusqu'à 500 épisodes stockés par série).
Bibliothèques Surveillées(aucune)Cochez les dossiers que vous souhaitez voir apparaître dans la cloche.
Collections Surveillées(aucune)Sélectionnez les collections Jellyfin (BoxSets) à surveiller pour les nouveaux ajouts. Scannées toutes les 15 minutes.
Mappage des Catégories(vide)Renommez ou regroupez vos bibliothèques dans la cloche (ex. "Mes Films" → "Films"). Une bibliothèque sans mappage garde son propre nom. Les flèches fixent l'ordre des filtres de la cloche.
IDs Manuels(vide)Ajoutez des IDs ou noms de bibliothèques manuellement pour les configurations avancées (Channels, XFusion).
Suivi des SuppressionsactivéActiver/désactiver le journal des suppressions. Requis pour la détection MAJ complète sur les remplacements Sonarr/Radarr (scénario delete+ré-import). Les remplacements sont corrélés dans une fenêtre de 7 jours.
Rétention des Suppressions30 joursNombre de jours de conservation des éléments supprimés (7–365). La borne basse est de 7 jours pour que la fenêtre de détection ait toujours des données — la rétention ne fait que prolonger l'affichage dans le journal admin.
Régénérer l'Historique—Force un scan complet après modification des bibliothèques ou des catégories.
Scanner les Collections—Force un scan immédiat des Collections surveillées au lieu d'attendre l'intervalle automatique.

❓ Dépannage

ProblèmeSolution
La cloche n'apparaît pasVérifiez que File Transformation est installé. Redémarrez Jellyfin. Videz le cache (Ctrl+Shift+R).
La cloche a disparu après mise à jour JellyfinVous utilisez la Méthode 2 (injection manuelle) — ré-appliquez la commande sed. Passez à la Méthode 1 (File Transformation) pour éviter ça.
Le badge est incorrectCliquez sur "Régénérer l'historique". Videz le localStorage du navigateur.
Musique non synchroniséeUtilisez "Régénérer l'historique" pour rescanner les pistes audio.
Contenu manquantVérifiez que la bibliothèque est cochée dans "Bibliothèques Surveillées".
Nouvel épisode TV manquantVérifiez que la bibliothèque de type Série contenant l'épisode est cochée dans "Bibliothèques Surveillées".
Fichier remplacé apparaît en NOUVEAU au lieu de MAJActivez le Suivi des Suppressions dans la config — nécessaire pour la détection du scénario delete+ré-import.
Un fichier renommé affiche un faux badge MAJUn simple renommage est reconnu et reste silencieux. Un badge ne peut subsister que si le renommage a aussi modifié le fichier — retirez la notification, elle ne reviendra pas.
Une série déplacée apparaît quand même en NOUVEAULa détection nécessite le Suivi des Suppressions activé, et elle ne reconnaît qu'un dossier ayant conservé son nom — déplacer et renommer en une fois est indistinguable d'une suppression suivie d'un ajout.
Contenu non autorisé visibleLe plugin respecte les permissions Jellyfin — vérifiez les restrictions utilisateur.
Erreur 429Attendez 30 secondes entre chaque clic sur "Régénérer l'historique" (anti-spam).
IncompatibleUtilisez le dépôt qui correspond à votre version de Jellyfin, 10.11.x ou 12.x — voir Installation.

🎨 Thème recommandé

NotifySync s'intègre parfaitement avec le thème ElegantFin Cinema Edition — un thème CSS inspiré des plateformes de streaming pour Jellyfin avec une suite complète de modules cinématographiques.

Les deux projets fonctionnent ensemble sur PC (navigateur) et mobile (app Jellyfin + navigateur).

⭐ Installation unique, expérience Jellyfin cinéma complète avec notifications temps réel.

⚠️ Note TV : NotifySync ne s'affiche actuellement pas sur les apps TV (Samsung Tizen, Android TV, LG webOS). La cloche est une fonctionnalité du client web et les apps TV utilisent un rendu natif.

👥 Auteurs & Crédits

NotifySync est maintenu par :

Merci à @muisje et @Wernouxe pour leurs demandes de fonctionnalités et rapports de bugs qui ont façonné ce plugin.

Contributions, rapports de bugs et demandes de fonctionnalités sont les bienvenus sur GitHub.

Distribué sous Licence MIT.

dotnet9
jellyfin
jellyfin-plugin
jellyfin-ui
notifications
selfhosted

Languages

C#

60.7%

HTML

22.2%

JavaScript

17.1%