What's New?
It's a big release! Happy 2025!
Youtube Music
Auth Fixes
Migrated YTM source communication from youtube-music-ts-api
to youtubei.js
which is actively developed and has fixed code for authenticating with cookies. Users using cookies are recommended to refresh their cookies using the newer guidance in the docs to help ensure they are not invalidated.
This new library also supports OAuth authentication which may be a more stable alternative for users experiencing constant authorization failures.
Scrobble Improvements
The code used for detecting YTM history has been overhauled with more sophisticated change detection which should prevent more false positive scrobbles. If you still experience scrobble issues please read through the updated FAQ section for YTM to enable detailed logging and guidance on how to report these issues in a useful way.
ENV Support
YTM source config now has full ENV support.
Plex and Jellyfin Improvements
A number of bugs related to the new Jellyfin and Plex API sources have been fixed which should incidentally improve scrobbling experiences for all polling-type sources.
DEPRECATION: The legacy (webhook-based) sources for Jellyfin, Plex, and Tautulli have all now been officially deprecated. These will be removed in an upcoming release. If you are still using these (from MS < 0.8.4) please consult the respective configuration docs for migration steps and migrate as soon as possible.
Improved Source/Client Start and Restart
Code related to initializing and restarting sources/clients has been overhauled to enable restart from basically any error state. You should no longer need to restart multi-scrobbler in the event a single component fails. The UI now includes a
Restart (Force)
button on each component. Using Force will cause the component to be initialized from scratch.
Incidentally, this overhaul paves the way for eventually reloading config changes into MS without restarting, in a future release. 👀
Debug Mode
A new, global Debug Mode option has been implemented to help with troubleshooting multi-scrobbler. Instead of needing a file configuration to enable optional, "debugging" options for logging on a specific component, etc... users can now simply use the ENV DEBUG_MODE=true
to enable all options at once. This can also be configured from the AIO config.json
. See the new Debug Mode docs.
Config Explorer and Validation Improvements
The new configuration migration from v0.8.7 has enabled improving the built-in configuration explorer found in the docs. The explorer is now always up to date with whatever docker tag or branch it is used on and is automatically generated on docs build. The explorer should also now have more friendly names and a simpler structure making it actually useful.
Changelog
Bug Fixes
- (jellyfin) Fix missing check for undefined play #239
- (plex) Use track artist from response data when album artist is present #241
- (source) Implement player cleanup with play discovery for stale platforms #223
- (spotify) Album artists no longer missing @Fratt
- (ui) Wording for non-polling sources start/restart
- (ytm) Implement bump-only list change detection #248 #227 #228 #226
- (ytm) Use diff type to restrict valid history changes #248 #227 #228 #226
- (ytm) Compare recent changed history to detect outdated responses #248 #227 #228 #226
- (No Category) Fix WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match @CodeWithMa
- Remove deprecated version from docker-compose.yml @CodeWithMa
- (No Category) Default positional listen range to 0 position if none is provided #245
Documentation
- (ytm) Add new auth docs and update FAQ
- (ytm) Clearer wording for troubleshooting content
- (No Category) Improve schema generation and compatibility #208 #202
- (No Category) Add lnav config
- (No Category) Add debug mode information #244
- (No Category) Add final deprecation notices for Plex/Tautull/Jellyfin legacy sources
- (No Category) Update kitchensink with newer jellyfin/plex examples
Features
- (jellyfin) Bump client major version
- (jellyfin) More robust connection check and logging
- (notifications) Make init more granular and always complete init #216 #215
- (source) Add experimental file logging
- (source) Ensure delay on close-interval for scrobbling is less than interval
- (ui) Disable minifiying frontend identifiers
- (ytm) BREAKING Use oauth-based api library for better stability #236 #195 #229
- (ytm) Add config option to always log diff
- (ytm) Re-implement auth with cookie and oauth #236 #195 #229
- (ytm) Implement ENV config
- (ytm) Conservative skip detection #248 #227 #228 #226
- (ytm) Use durations to generate play dates for interim tracks #248 #227 #228 #226
- (ytm) Debug mode enables log diffs
- (ytm) Add more innertube options to user configuration
- (ytm) Custom redirectUri checks
- (No Category) Add stage Error classes and cause chain for notification
- (No Category) Initialize usage refactored everywhere #221 #220 #231
- (No Category) Implement start/restart/force init from UI regardless of status #216 #215
- (No Category) Fully implement use of DEBUG_MODE #244
- (No Category) Reduce polling log noise
- (No Category) Log player state when using debug mode #244
- (No Category) Include comment in play diff when present
Miscellaneous Tasks
- (deps) Bump the npm_and_yarn group across 2 directories with 3 updates
- (No Category) Add docker-compose dev file and vscode task
- (No Category) Generate schema files during docker build for docsite #208 #202
- (No Category) Bump plexjs version
Refactor
- (ytm) Clean up tests and history parsing functions
- (ytm) Improve auth handling for reauthentication
Testing
- (spotify) Test album artist parsing
Ci
New Contributors
- @CodeWithMa made their first contribution in #235
- @Fratt made their first contribution in #240
Full Changelog: 0.8.8...0.9.0