What's New?
Musikcube Source
Musikcube, a cross-platform terminal-based music player, is now supported as a Source.
Configuration Normalization
In previous versions many of the common, optional options for source/clients, such as maxRequestRetries
or maxPollRetries
, were mixed into the data
property for configs alongside properties that were specific to that source/client. Additionally, there was an existing options
property that already had some common properties, but not all...
jellyfin.json
[
{
"name": "default",
"enable": false,
"clients": [],
"data": {
"maxRequestRetries": 3,
"scrobbleThresholds": {
"percent": 30,
"duration": 30
},
"users": ["MyUser"]
},
"options": {
"logPayload": false
}
}
]
These common properties have been refactored into the options
object so that data
is now solely for data that is specific to the source/client. This should make configs easier to reason about as well as making programmatic config validity checks easier.
[
{
"name": "default",
"enable": false,
"clients": [],
"data": {
"users": ["MyUser"]
},
"options": {
"logPayload": false,
"maxRequestRetries": 3,
"scrobbleThresholds": {
"percent": 30,
"duration": 30
}
}
}
]
This is potentially a breaking change, behaviorally, but MS will continue to operate without any changes to your config. The options that have been moved are all optional, minor settings that help fine-tune your experience with MS but do not majorly affect how it works or functionally affect how your sources/clients behave.
If you use any of the properties that have been migrated but have not moved them then MS will simply ignore them until they are moved.
For a complete list of moved properties and how to migrate them see this comment.
Docker Image Change
Due to consistent issues with DNS in alpine-based images ( #160 #126 #134) the image base is being changed to Debian. The image size will increase relatively significantly ( 60MB -> 120MB ) but the benefit is a more stable experience for docker users. Thanks to @Ardakilic for helping diagnose docker image issues and extensive testing/usage of the debian image.
This is not a breaking change but is still a significant refactor. If you have issues with the new default image please open an issue. Alternatively, there will still be an alpine-based image published with a -alpine
suffix so you can continue to use the original image if you would prefer, though this may go away in the future.
TLDR
Previously...
latest
ordevelop
or0.7.1
-> alpine basedlatest-debian
ordevelop-debian
... -> debian-based
Now...
latest
ordevelop
or0.8.0
-> debian basedlatest-alpine
ordevelop-alpine
... -> alpine-based and may go away in the future
Youtube Music Improvements
The monitoring behavior for YTM has been improved to prevent duplicate scrobbling as well as provide insight into YTM history issues. #156
Additionally, the authentication method for YTM has been improved to save updated cookies from YTM if/when they are changed which may help with authentication issues in long-running MS instances.
Full Changelog
Bug Fixes
- (chromecast) Add missing avahi-utils package for debian image
- (spotify) Convert URL to string for redirectUri
- (vite) Use default base string if no other path detected
- (webscrobbler) Add preflight route #157
- (webscrobbler) Fix formatting of slug url in logs
- (youtube) Catch auth issues that occur during polling #158
- (No Category) Refactor Base URL normalization to cover more cases #155
Documentation
- (No Category) BREAKING: Update schema
- (No Category) Clarify BASE_URL usage and add more examples #155
- (No Category) Add scripting on deploy for plausible analytics
- (No Category) Update screenshot
Features
- (client) Implement initial refresh count and config control #153
- (docker) BREAKING: Use debian image as default
- (youtube) Surface library history playlist and raw recently played for debugging #156
- (youtube) Sync cookies with those returned from YTM responses #158
- (youtube) Use full-fat list diffing to watch for new plays #156
- (No Category) Update normalize-url to prevent port erasure #155
Miscellaneous Tasks
- (ci) Update setup-node to v4 to squash node deprecation warnings
- (No Category) Npm audit fixes
- (No Category) Update dependencies
Refactor
- (client) Use same init logic as source
- (config) BREAKING: Move scrobble thresholds to options
- (config) BREAKING: Move source retry config to options
- (config) BREAKING: Move remaining common options out of source data and into options
- (config) BREAKING: Move common options out of client config and into new option property
- (No Category) Move all init logic into common abstract base class
- (No Category) Use @foxxmd/get-version to render app version
Ci
- (No Category) Use checked out repo to get git info rather than GH variables
- (No Category) Implement gated automated PR building
- (No Category) Add package cleanup and manual triggers