Changelog
what's new
updates, fixes, and improvements to scrobbler.
v1.4.2
latest
july 28, 2026
fixes & improvements
Fixed stale image issues in Discord by implementing cache busting for all canvas-generated images uploaded to Supabase Storage. All images now use a unique, timestamp-based filename.
v1.4.1
july 17, 2026
new commands
/loved
— view your paginated list of loved tracks from
last.fm, complete with cached pages and discord native
timestamps
v1.4.0
july 6, 2026
new commands
/era
— your current music era based on dominant genre, with
top 3 artists and most played track for the period.
supports all time periods, defaults to last month
/milestone
— canvas progress card showing how close you are to the
next milestone across scrobbles, artists, albums, and
tracks
/overlap
— find music shared across you and up to 9 other users
— shows artists, tracks, albums, and genres every single
person has in common
/bingo
— 3×3 music taste bingo card with 9 challenges checked
against your real listening history. each cell shows
your actual stat so you can see how close you are
v1.3.1
july 6, 2026
new commands
/timeline artists
— line chart of unique artists discovered per
month
/timeline albums
— line chart of unique albums listened to per
month
/timeline tracks
— line chart of total scrobbles per month
/timeline genres
— multi-line chart showing your top 3 genre trends over
time
/timeline server
— server-wide combined scrobble trend per month
improvements
all timeline commands support a
months option (3, 6, or 12 months) and an
optional user parameter
timeline images cached for 60 minutes via supabase
storage (
timeline-cache bucket)
internal
built custom line chart canvas renderer with smooth
bezier curves, area fill, grid lines, and multi-series
legend support
v1.3.0
may 6, 2026
new commands
/rec artists
— get personalized artist recommendations based on your
listening history
/rec tracks
— get personalized track recommendations based on your
listening history
/rec albums
— get personalized album recommendations based on your
listening history
improvements
All recommendation commands use Groq AI
(llama-3.1-8b-instant) with JSON mode for reliable,
contextual descriptions
Recommendations are cached for 6 hours per user per time
period
Each recommendation includes a personalized reason
referencing your actual top artists/tracks
Recommendations support all time periods: last 7 days,
last month, 3 months, 6 months, last year, and all
time
Recommendations can be generated for other users by using
the optional
user parameter
internal
Implemented generic caching system with
Cache model replacing all specific cache
tables
Removed deprecated cache models:
WrappedCache, RecentCache,
TasteUserCache,
TasteServerCache,
StatsScrobblesCache,
StatsArtistsCache,
StatsAlbumsCache,
StatsGenresCache, WkCache
All commands now use unified
getCache() and
setCache() utilities from
cache.ts
Supabase Storage buckets continue to store images, Cache
table stores URLs and metadata as JSON
Added cache invalidation on
/link and
/unlink to clear stale user data
v1.2.1
may 5, 2026
improvements
Status page degraded threshold changed from "any service
degraded" to "majority of services degraded", minor issues
no longer mark the entire status page as degraded
Database health check timeout increased from 1.2s to 2.0s
to better reflect acceptable response times and reduce
false degraded states
internal
Codebase-wide formatting pass across 65 files (no logic
changes)
v1.2.0
april 25, 2026
fixes & improvements
/stats, /wk,
/taste, and /recent now cache
all pages upfront on first run — page navigation is
instant with no API calls on button clicks
Canvas images are pre-rendered and stored in Supabase
Storage (
stats-cache, wk-cache,
taste-cache buckets) — same approach as
/wrapped
/stats artists, /stats albums,
/stats genres now show all linked members
with full pagination (was incorrectly capped at top
10)
/stats and /wk commands no
longer require a minimum of 2 linked members — works with
any number
/taste server footer now shows member count
(e.g.
Page 1 of 5 • 12 members • All time)
Page footer shows
Page 1 instead of
Page 1 of 1 when there's only a single
page
All command references in bot messages now use proper
Discord command mentions instead of plain text (e.g.
/link)
Added
RecentCache,
TasteUserCache,
TasteServerCache,
StatsScrobblesCache,
StatsArtistsCache,
StatsAlbumsCache,
StatsGenresCache, and
WkCache Prisma models
v1.1.0
april 18, 2026
new commands
/info artist
— artist info with bio, listeners, tags, similar
artists, and personal playcount
/info album
— album info with track list, duration, release year,
and personal playcount
/info track
— track info with duration, tags, wiki, loved status,
and personal playcount
/info genre
— genre info with reach, taggings, wiki, and top
artists
/taste user
— user's top 50 genres (refactored from /taste)
/taste server
— server's aggregated top 50 genres
/discovery
— underground vs mainstream score based on top 100
artists
/personality
— music personality type with 5 dimension bars
(loyalty, diversity, mainstream, intensity,
nostalgia)
/streak
— top listening streaks over the last 90 days across
artists, tracks, and albums
/wrapped
— personalized scrobbler wrapped with 5 navigable
canvas cards, cached via Supabase Storage
improvements
Autocomplete for
/wk and
/info now searches Last.fm globally when
typing, shows personal top 20 when empty
Image fetching switched to iTunes API for tracks/albums
(better K-pop coverage), Deezer for artists with exact
name matching
/stats genre/artist/album leaderboards fixed
to include all linked members (was incorrectly slicing to
10)
/chart server tracks now keys by
track|||artist to prevent wrong covers for
same-named tracks by different artists
All chart commands use consistent image sources: Deezer
picture_xl for artists, iTunes for
albums/tracks with Last.fm fallback
infrastructure
Added
WrappedCache Prisma model for Supabase
Storage URL caching
Added
SUPABASE_URL and
SUPABASE_SERVICE_KEY environment
variables
v1.0.0
april 16, 2026
initial release
/link
— Last.fm OAuth flow with background polling (no
redirect needed)
/unlink
— disconnect Last.fm account
/profile
— music profile with AI-generated bio via Groq
/np
— now playing with dynamic layout, genre tags, release
year, play count
/recent
— paginated recent tracks with hyperlinked song
names
/taste
— genre breakdown bar chart (up to 50 genres,
paginated)
/compat
— music compatibility score across artists, tracks,
albums, and genres with canvas bar chart
/chart artists
— top artists grid chart (3×3 / 4×4 / 5×5) via Deezer
images
/chart albums
— top albums grid chart using Last.fm album art
/chart tracks
— top tracks grid chart via Deezer
/chart server
— server-wide aggregated chart for artists, albums, or
tracks
/stats scrobbles
— server scrobble leaderboard with canvas image and
pagination
/stats artists
— unique artist count leaderboard
/stats albums
— unique album count leaderboard
/stats genres
— unique genre diversity leaderboard
/help
— interactive help with select menus per section
infrastructure
PostgreSQL via Prisma with
User,
Server, ServerMember,
Play, and
PendingLink models
Components V2 embeds throughout
Canvas-generated images for stats, taste, compat, and
chart commands
Custom emoji support via
E object
Guild commands in development, global commands in
production