github peterdu1109/NotifySync v5.5.11.12
🔔 NotifySync v5.5.11.12

4 hours ago

🇬🇧 English

📝 In Short

Closes a metadata leak: notifications about deleted items no longer show up to users who didn't have access to the library the item came from.

🐛 What's Fixed

  • Privacy leak on orphan notifications — When a Jellyfin item was deleted but its NotifySync notification remained in the database, every user — including those who never had access to the library the item came from — could see the notification's metadata (title, year, series, image). They couldn't play the content (it's gone), but they could see that it existed. Fixed: orphans are now hidden from everyone.

🔧 Technical details for the curious

In NotifyController.GetData(), the per-item loop now skips entries where the underlying Jellyfin item is null (deleted or otherwise unresolvable), instead of falling through to filtered.Add(n) and bypassing the item.IsVisible(user) visibility check.

if (item == null)
{
    itemNotFound++;
-   filtered.Add(n);
    continue;
}

Orphans can still accumulate in the SQLite table (the change doesn't auto-delete them — keeping the fix surgical). They'll be cleared on the next quota sweep, manual "Regenerate history", or when the user dismisses them. They simply no longer surface in the bell or in API responses.

README cleanup: removed the roadmap sections (EN + FR) and their TOC entries. The plugin is at maturity and future work will be feedback-driven rather than wishlist-driven.


🇫🇷 Français

📝 En bref

Corrige une fuite de métadonnées : les notifications sur les items supprimés n'apparaissent plus chez les utilisateurs qui n'avaient pas accès à la bibliothèque d'origine.

🐛 Corrections

  • Fuite de confidentialité sur les notifications orphelines — Quand un item Jellyfin était supprimé mais que sa notification NotifySync restait en base, tous les utilisateurs — y compris ceux qui n'avaient jamais eu accès à la bibliothèque d'origine — pouvaient voir les métadonnées de la notification (titre, année, série, image). Ils ne pouvaient pas lire le contenu (il est effacé), mais ils pouvaient voir qu'il a existé. Corrigé : les orphelines sont maintenant masquées pour tout le monde.

🔧 Détails techniques pour les curieux

Dans NotifyController.GetData(), la boucle par-item skip maintenant les entrées où l'item Jellyfin sous-jacent est null (supprimé ou non-résolvable), au lieu de tomber sur filtered.Add(n) et de contourner le check de visibilité item.IsVisible(user).

if (item == null)
{
    itemNotFound++;
-   filtered.Add(n);
    continue;
}

Les orphelines peuvent encore s'accumuler dans la table SQLite (le changement ne les supprime pas automatiquement — fix volontairement chirurgical). Elles seront effacées au prochain passage de quota, "Régénérer l'historique" manuel, ou quand l'utilisateur les dismiss. Elles ne ressortent simplement plus dans la cloche ni dans les réponses API.

Nettoyage README : suppression des sections roadmap (EN + FR) et de leurs entrées TOC. Le plugin est à maturité et les futurs travaux seront orientés feedback utilisateur plutôt que wishlist.

Don't miss a new NotifySync release

NewReleases is sending notifications on new releases.