Rate limiting added to all previously unprotected API routes (AOTD, SOTD, leaderboard, badges, bug report, profile name) — protection against abuse and denial-of-service attacks
Security headers hardened — X-Frame-Options corrected to block all iframe embedding
Request body size validation on bug report endpoint — prevents large-payload injection attacks
Performance
Song of the Day: database calls are now parallel (Promise.all) — response time reduced by ~50% for logged-in users
1.0.6
What's new
10 new Artist of the Day & Song of the Day badges — earn streak badges from 1 to 100 consecutive days
Artist of the Day & Song of the Day daily picks are now persisted in the database at day start — guarantees the same artist/song for all players even without Redis
Improvements
Leaderboard — long names and PRO badges no longer get cut off on mobile in the podium
Bug fixes
Profile pictures: manually uploaded photos were showing gradient initials instead of the actual image
Leaderboard — crash when switching to AOTD/SOTD streak sort (TypeError: Cannot read properties of undefined)