What's New?
Google Cast Source
Support for Google Cast devices as Sources. This is particularly exciting because music platforms that do not have an API for exposing user Now Playing info (Pandora, Tidal, MixCloud, Soundcloud) can now be monitored if you play them through a Google Cast device. Additionally, since the Cast platform exposes generic Now Playing information virtually any app that plays music through Casting can now be monitored by MS.
Application tooling restructure and frontend platform migration
This is no functional change for end-users. This is an internal/development refactor but brings with it many benefits:
- Refactored project from cjs to esm (new module standard)
- Moved away from dead frontend platform (CRA) to Vite
- Removed dependency on webpack
- Removed api proxy required by CRA
- Simplified app entry -- Vite is served through express middleware instead of having nodemon spawn separate processes for front/backend
- Refactored project to use tsx runtime wrapper -- no longer need to compile to js to run dev/prod
- Side-effect of this is stack traces reported in prod now point to actual source files with correct lines numbers
The only visible changes are:
- a slight increase in docker image size due to bundling typescript/source files
- developers do not need to use
API_PORT
anymore -- usePORT
for both dev/prod now.
Source init improvements
All sources have been refactored to have more granular init stages:
- build data -- any data that needs to be parsed (URLs for mopidy), built, or verified (credentials) happens here
- test connection -- if the source can be checked for reach-ability it is done here
- test auth -- if the source requires auth it is tested here
If any stage fails more descriptive errors are logged for the failure and the stage it failed at is also described, giving users more insight into why a source failed to start as well as improving debugging.
App Crash Logging
App-crashing errors should now be logged before the app crashes. The easiest way to capture these logs is to set file logging to warn
log level so they are stored to file. In your file-based config.json
`:
{
"logging": {
"level": "debug",
"file": "warn"
}
// ...
}
Deprecations and Future Changes
Maloja
- Support for Maloja versions below 3.0.0 is now deprecated
- Likely no one is using these versions as they are almost 2 years old but MS still supports them with additional logic that could (should) be simplified
- A warning is emitting if Maloja version is below 3.2.0 due to lack of support for scrobbling album information
Spotify Credentials
A future release will include a migration from the current spotify api library to the official spotify web sdk. The information stored for Spotify credentials in releases prior to 0.6.4 is insufficient and will require reauthentication by the user if, for example, the user upgrades directly from 0.6.2 -> 0.6.5+.
0.6.4 will store all required credential information needed for future releases. Simply upgrade to this version and wait a few hours for Spotify credentials to be refreshed.
Full Changelog
Features
- (chrome) Improve mdns discovery for docker
- (chrome) Implement user filtering media by type
- (chrome) Allow manual device connections
- (chrome) Refactor mdns discovery to run on source heartbeat as well as startup
- (chrome) Catch buffering media
- (deezer) Fix credentials check during build data stage
- (maloja) Improve error handling
- (spotify) Prepare for future spotify lib migration by writing completing credential data
- (subsonic) Improve error/response parsing and report errors correctly on startup #129
- (No Category) Improve discovery for network exceptions in error causes
- (No Category) Improve data init stage log wording
- (No Category) Log when heartbeat tasks start
Bug Fixes
- (No Category) Actually throw auth failure so initialization fails correctly
- (No Category) Fix isReady logic
- (No Category) Fix status indicator color based on status text
- (No Category) Fix status text based on initialization OK values
- (No Category) Fix return values for source init startup
- (No Category) Fix when to check connection
- (No Category) Fix where retries are checked
- (No Category) Better handling of uncaught exceptions and rejections
Documentation
- (No Category) Chromecast docs and schema
- (No Category) Add local source reference to flatpak manifest
Miscellaneous Tasks
- (chrome) Switch to scoped chromecast-client to fix flatpak source generation limitation
- (maloja) Deprecate support for versions below 3.0.0