What's new
👥 Friends (new)
One-sided follow model — follow other users on your Jellyfin server.
- See online / offline status pulled live from Jellyfin's
ISessionManager - See each friend's equipped badges (respects their privacy prefs)
- See what they're watching right now (series + episode title)
- Mutual indicator when you both follow each other
- Dedicated Friends tab on the achievements page
New endpoints: GET / POST / DELETE /Plugins/AchievementBadges/users/{userId}/friends[/{friendUserId}]
🌍 Translation fixes
- Language dropdown stays on user's selection. The
<select>re-render was passing the stale prefs object so picking French still highlighted "English" in the control itself. - Badge titles now actually localise after a language change. Root cause was a race: the UI dispatched the translation reload before the preference POST had landed on disk, so
BadgeLocalizersaw the old stored language. The change handler now awaits the pref save before re-fetching badges. - Badge categories localised —
Getting Started → Premiers pas,Binge → Marathon,Streaks → Séries consécutives, etc. Covers the Stats tab category rings, badge grid meta line, activity feed, and category filter dropdown. - Rarities localised —
Common → Commun,Legendary → Légendaire,Mythic → Mythique, etc. - 32 category + 6 rarity keys × 8 languages = 304 new translation entries (646 UI keys per file total), +13 friends-tab keys per file.
✨ Polish
saveSettingsPrefsnow returns a promise so callers can await it.- README updated with Friends + Languages sections + a credits block (thanks to xdnewlun1 for the v1.6.0 security disclosure, Uenify for the Xbox-CodePen animation, and the French community for fork contributions).
Open
- Merging the French user's hand-written translations from his fork is still pending — waiting on the files. Current French coverage is AI-generated but idiomatic; PRs welcome for native-speaker polish.
MD5: 66BFA7837B6E3ED23A55E5DB8A892384