github ZL154/AchievementBadges_for_Jellyfin v1.5.4
v1.5.4 - Silent scan, SSR profile card, multi-quests, points display, fancy prestige

latest releases: v2.4.0, v2.3.1, v2.3.0...
5 months ago

Fixes from your 1.5.3 feedback

Toast spam during Scan Watch History

Backfill now runs silently. Each scanned playback sets Silent=true, which causes EvaluateBadges to skip the webhook + audit log AND use the item's original played date as UnlockedAt. The toast poller compares UnlockedAt > LAST_SEEN (always "now or later"), so historical unlocks never match — no more flood.

Profile card says "Failed to load"

Root cause: the profile card tab has no access to your X-Emby-Token, so its client-side fetches to /summary, /rank, /equipped all 401'd. Fix: server-side render. The controller now pre-fetches all the data and bakes it into the HTML template before sending it. No more client fetches, no more 401.

Achievement ribbon under each episode/movie

Disabled by default. You can re-enable it from Plugin Settings → UI features if you ever want it back.

Only 1 quest per period

Now 3 daily + 3 weekly concurrent quests. Rotated deterministically so everyone on the server gets the same 3 quests per day and per week. Completing any of them pays into your score bank.

No points shown per badge

Each badge card now has a +X pts chip in the header showing exactly how much score it's worth. Scaled by your prestige level — Prestige 1 = 1.5x, Prestige 2 = 2.0x, etc.

Prestige button was lackluster

Restyled with an animated gradient (purple → pink → orange), gold border, shine sweep on hover, and glow shadow. Disabled state has a muted look. Contextual text shows current progress: "Reach 12000 score" or "Reset to earn prestige 2 and unlock 2.0x multiplier".

Heatmap range too short

Added an inline dropdown: 30 / 90 / 180 / 365 days. Cell size auto-scales so larger ranges still fit.

README outdated

Full overhaul with:

  • Every feature listed (150+ badges, rank system, score economy, prestige, quests, stats, UI, admin)
  • All API endpoints documented
  • Prerequisites table matching each feature to its required metadata (TMDb scrape, library folders, etc.)
  • Changelog summary from 1.4.7 through 1.5.4

Scan all users explanation

The startup auto-evaluation runs 8 seconds after plugin load. If you update the plugin and Jellyfin restarts, new badges should automatically unlock against your existing counter data. You shouldn't need Scan All Users unless:

  1. You want to re-pull new metadata fields (People, genres, runtime) from freshly-scraped items
  2. Your server didn't fully restart after update (Docker hot-reload etc.)
  3. You want counters themselves re-derived from current IsPlayed flags

For everything else — a restart alone is enough.

Test checklist

  1. Update to 1.5.4 → restart Jellyfin
  2. Scan Watch History — should run silently. No toast spam, no badges popping up while you wait.
  3. Click "Open shareable profile card" — should load a styled HTML card with your rank, score, stats, equipped showcase. Not "Failed to load".
  4. Navigate to any episode/movie detail page — achievement ribbon should NOT appear (opt-in now).
  5. Quests tab — should show 3 daily quests and 3 weekly quests.
  6. My Badges tab — each card should show +X pts in the top-right.
  7. Stats tab → heatmap has a range selector, test 30/90/180/365 days.
  8. Stats tab → Prestige button — should look shiny with gradient + glow. Disabled (muted) if you're under 12000 score, fancy if you're over.
  9. Play a new item past 80% — only THAT unlock should trigger a toast (if any), not random old ones.
  10. GitHub repo — readme now shows the full feature set.

Don't miss a new AchievementBadges_for_Jellyfin release

NewReleases is sending notifications on new releases.