github peterdu1109/NotifySync v5.7.14.0
🔔 NotifySync v5.7.14.0

4 hours ago

🇬🇧 English

Fix — bell felt empty when opened too early

  • 🔔 If you clicked the bell before the page finished loading, the list could show "You're all caught up!" even though notifications were still loading — and sometimes you had to wait, restart Jellyfin, or clear the cache to see them.
  • Now the bell shows "Loading…" during that brief moment and fills in on its own. Clicking the bell tells it to load now (instead of pushing the next attempt further away), and items that arrive while it's open are marked read properly so the red counter clears.

Plus a few internal cleanups (no behavior change).


🇫🇷 Français

Correctif — cloche vide quand ouverte trop tôt

  • 🔔 Si vous cliquiez sur la cloche avant la fin du chargement de la page, la liste pouvait afficher « Vous êtes à jour ! » alors que les notifications chargeaient encore — et il fallait parfois attendre, redémarrer Jellyfin ou vider le cache pour les voir.
  • Désormais la cloche affiche « Chargement… » pendant ce court instant et se remplit toute seule. Cliquer sur la cloche lui dit de charger maintenant (au lieu de repousser la tentative suivante), et les éléments qui arrivent pendant qu'elle est ouverte sont bien marqués lus, donc le compteur rouge se vide.

Plus quelques nettoyages internes (sans changement de comportement).


🔧 Technical details
  • Loading state: a firstLoadDone flag distinguishes "still loading" from "genuinely empty", so the dropdown shows Loading… until the first successful fetch (200/304) instead of the misleading empty message.
  • Backoff reset: opening the dropdown resets retryDelay to 1000ms. Previously each early click (while Jellyfin wasn't authenticated yet) cleared the pending retry and grew the backoff ×1.5 (up to 60s), pushing the data further away the more you clicked.
  • Mark-read on late fill: markVisibleAsRead() now runs both on explicit open and when a fetch fills an already-open dropdown, so late-arriving items don't linger in the bell counter.
  • Cleanups: dropped a stale comment; TryGetOrdinal now catches Exception (Microsoft.Data.Sqlite throws ArgumentOutOfRangeException for a missing column, so the old IndexOutOfRangeException catch never fired); removed two unused JsonSerializable registrations.

No database migration — self-contained update.

Don't miss a new NotifySync release

NewReleases is sending notifications on new releases.