Important
This release contains breaking changes. Read the Upgrade Path docs before upgrading. The migration should be simple for the majority of users.
Summary:
- You should add ids to your Sources/Clients
- If you have queued scrobbled these will be automatically migrated
- If you have any Cache settings you will need to review the guide before upgrading
What's New?
I am excited to release Multi-Scrobbler 0.14.0 🎉 This is one of the largest releases for MS in years which significantly rewrites large portions of MS's architecture to allow it to scale in preparation for even more exciting, near-future functionality like the upcoming ui overhaul and eventual bulk scrobble transfer feature (move all your scrobbles from Client X to Client Y).
Stats for this release:
- 158 commits
- 243 files touched
- +15,400 additions
- -4,200 deletions
- No AI was used during development. This is organic, free-range coding.
I want to acknowledge and say a big thank you to all the users who helped test and give feedback during this release process. Your input, patience, and reporting was invaluable ❤️ :
@4rft5 @FestiveByteRider @gabeklavans @psyciknz @DigitalStarSys @owendaprile @timmyhbk @Sioeen @Ectalite @HStep20
Backend Overhaul
This release introduces a huge architectural upgrade for the backend: almost all data is now backed by a sqlite database powered by drizzle.
Some visible change highlights:
- Discovered plays (from sources) are persisted
- Backlogged, already discovered plays are not re-sent to clients on each startup (they are found in database and ignored)
- Scrobbled plays (successfully sent by clients) are persisted
- Reduces dupe scrobbles since identical scrobble data in MS can now be compared across restarts
- Database migrations are automatic and also automatically make a backup of your database before upgrading
- All queues and Plays are now managed in database instead of in-memory
- Reduced memory usage in all usecases
- Drastically reduced memory when there are many sources/client (5+) or many queued scrobbles (100+)
- Source and Client statistics are persisted
- (breaking) Simplified cache configuration to leverage database where feasible
To prepare for database usage in 0.14.0, please read the Upgrade Path docs.
The migration should be simple for the majority of users. For edge cases and power users, the docs cover how to migrate more advanced settings.
Documentation Improvements
The introduction of the database forced a good look at, and cleanup of, the existing docs. Application-wide config should now be easier to read and the kitchensink examples are now more straight-forward and relevant to common usecases.
Other Changes (Changelog Highlight)
⛰️ Features
- (database) Implement database structures needed for historical plays
- (database) Track component last ready and last active at
- (tealfm) Add now playing support with
fm.teal.alpha.actor.statusby @HiiJax 🎉 - (tealfm) Update lexicon defs with new mbid uri format teal-fm/teal#102
- (now playing) More robust handling of clients with real time status updates (teal, discord) #608
- (now playing) reduced logging noise
- (lastfm) bypass scrobble rejection for very short tracks (< 30 seconds) by omitting duration #596
- (No Category) refactor artists to directly map/associate MBIDs
⚙️ Miscellaneous Tasks
- (No Category) update all dependencies #594 by @philocalyst 🎉
📚 Documentation
- (lastfm) Document 2 week scrobble window
- (No Category) Overhaul kitchensink
- (No Category) Add
_IDand_NAMEexamples to all instances of ENV configs - (No Category) Add
idto all instances of file/aio configs - (No Category) Add more descriptive error logging for example config file parsing