A scalability fix for multi-user servers: marking something watched no longer makes every other user's bell recompute. No visible change on small servers.
Un correctif de scalabilité pour serveurs multi-utilisateurs : marquer un contenu comme vu ne force plus le recalcul de la cloche de tous les autres utilisateurs. Aucun changement visible sur les petits serveurs.
🇬🇧 English
⚡ Performance
- Per-user cache invalidation — When a user marked an item as watched (or favorited it), the plugin invalidated every user's cached bell view, forcing a server-wide recompute on each play event. That work scaled with your user count and was pure waste — a played/favorite change only affects the person who made it. It now invalidates just that user's view. Real library changes (a new item added/removed) still refresh everyone, as they should.
On a small server (a handful of users) you won't notice a thing. On a busy multi-user server (tens to hundreds of users), this removes the bulk of the redundant recompute load.
🛠️ Under the hood
OnUserDataSavednow bumps the affected user's per-user state version instead of the global version counter; the global counter is reserved for library add/remove/update events that genuinely affect every user's notifications.- No DB schema changes, no API contract changes, no client changes.
🇫🇷 Français
⚡ Performance
- Invalidation de cache par utilisateur — Quand un utilisateur marquait un contenu comme vu (ou le mettait en favori), le plugin invalidait la vue en cache de la cloche de tous les utilisateurs, forçant un recalcul à l'échelle du serveur à chaque évènement « vu ». Ce travail augmentait avec le nombre d'utilisateurs et était du pur gaspillage — un changement « vu »/favori ne concerne que la personne qui l'a fait. Il n'invalide désormais que la vue de cet utilisateur. Les vrais changements de bibliothèque (un ajout/suppression) rafraîchissent toujours tout le monde, comme il se doit.
Sur un petit serveur (quelques utilisateurs), vous ne remarquerez rien. Sur un serveur multi-utilisateurs chargé (dizaines à centaines d'utilisateurs), cela retire l'essentiel de la charge de recalcul redondante.
🛠️ Sous le capot
OnUserDataSavedincrémente maintenant la version d'état de l'utilisateur concerné au lieu du compteur de version global ; le compteur global est réservé aux évènements d'ajout/suppression/maj de bibliothèque qui concernent réellement les notifications de tous.- Aucun changement de schéma DB, aucun changement de contrat API, aucun changement côté client.
📦 Upgrading / Mise à jour
Auto-updates from the stable channel on your next Jellyfin restart. Nothing to reconfigure.
Mise à jour auto depuis le canal stable au prochain redémarrage Jellyfin. Rien à reconfigurer.