What's New?
Music Assistant Source
Music Assistant 2.8.0 was released with support for custom Listenbrainz scrobbling URL which means the Multi-Scrobbler Listenbrainz Endpoint Source can now be used for scrobbling from Music Assistant! 🎉
See the Music Assistant setup instructions inside the LZ Endpoint docs to get started.
Notable Fixes and Improvements
- Fixed issues with transform re-use and caching #495 #510 #481
- Improved memory usage for caching and queued scrobbles #507 #484
- Everyone should consider setting up caching with valkey
- Fixed and improved dead scrobble retry behavior #488 #489
- Added Grafana dashboard for use with Prometheus metrics, thanks to @4rft5
Upcoming UI Overhaul
Many of the changes in this release are non-visible improvements/refactoring in preparation for a complete rewrite of the UI. If you would like see a preview of the UI or add feedback on what you'd like to see in a new UI, please check out Issue #500
Changelog
⛰️ Features
- (listenbrainz) Use upstream for backlogged
- (lzendpoint) Update json body parsing to support Music Assistant
- (scrobble) Increase default dead letter retries from 1 to 3
- (No Category) Implement play with lifecycle fixture
- (No Category) Add step and flow result to lifecycle
- (No Category) Add seenAt to source/client play meta
- (No Category) Skip fetching backlogged plays entirely if scrobbleBacklog=false
- (No Category) Add cache stats to prometheus metrics
🐛 Bug Fixes
- (musicbrainz) Catch recordings with no releases
- (scrobble) Improve dead scrobble iteration and logging
- (scrobble) Improve ui/api experience for dead scrobble processing
- (test) Fix expected plays for YTM interim plays
- (No Category) Remove schema-plugin types hint from docusaurus config
- (No Category) Fix type-erased meta property for json plays
- (No Category) Fix wrong operation for maxRandomStagger
- (No Category) Add stagger options as injected dependency to make tests faster
- (No Category) Better handling when stage fails but should continue
- (No Category) Refactor play tranforming to dogfood steps and fix caching #495
- (No Category) Fix sleep time between consecutive dead scrobble attempts
- (No Category) Only enable metrics collection for real runs
- (No Category) Use lifecycle invariant play for closest match
📚 Documentation
- (No Category) Add duplicate scrobble detection explanation
- (No Category) Add Music Assistant to lz endpoint docs
- (No Category) Add prometheus usage
- (No Category) Add netlify badge to footer on preview docs
- (No Category) Add more caching guidance
- (No Category) Fix discord link on jellyfin page
- (No Category) Add grafana dashboard
- (No Category) Simplify installation
- (No Category) Add music assistant to readme
🚜 Refactor
- (No Category) Move some utils into core folder
- (No Category) Fix JsonPlayObject to properly type dates
- (No Category) Separating functions so they are usuable by frontend storybook
- (No Category) Move stagger config responsibility to transformer
- (No Category) Refactor cache building to be able to specify both primary and secondary
- (No Category) Remove ttl from mb api to ensure primary/secondary ttl is used correctly