Important
Release 0.14.0 contains breaking changes. Read the Upgrade Path docs and 0.14.0 Release Notes before upgrading from Multi-Scrobbler earlier than 0.14.0!
Warning
BREAKING CHANGE: This release fully enforces ID requirements that were strongly recommended in 0.14.0. If you already followed the upgrade guide, or started with MS 0.14.0+ then no interaction is needed. Otherwise, upgrade to 0.14.0 before upgrading to this release.
What's New?
Reduced Memory Usage
Moving to Zod in 0.15.0 provided a big reduction in memory footprint that has been further improved in this release by moving individual Source/Client validation to be dynamically loaded. This means MS will not load validation/types for Source/Clients you do not use.
Users with a minimal number of Sources/Clients should see the largest impact from this.
Startup
Stabilized (after 4 minutes of running)
Benchmarks for MS with no Sources/Clients
Version
Runtime
Validation Context
% Memory Usage Change
0.14.2
tsx
ts gen + ajv
-
0.15.0
node
zod + eager validation
-13%
0.16.0
node
zod + dynamic validation
-14%
Version
Runtime
Validation Context
% Memory Usage Change
0.14.2
tsx
ts gen + ajv
-
0.15.0
node
zod + eager validation
-22%
0.16.0
node
zod + dynamic validation
-27%
ENV Config UX Improvements
The move to Zod in 0.15.0 also opened the door for big improvements to ENV Config experience for the end-user:
Self-Documenting
ENV variables now share, or inherit, schema from file/aio config so ENV descriptions match those found elsewhere. The ENV config for Source/Clients in the docs is now self-documenting (generated from schema) to prevent typos and make common ENV easier to extend.
Improved Validation
ENV validation at startup is now more straightforward and useful. Instead of mapping variables to file (KOITO_TOKEN => data.token) and then printing an error
✖ Invalid input: expected string, received undefined
→ at data.token
Variables are now directly validated to give you a clearer idea of what is missing or wrong
✖ Invalid input: expected string, received undefined
→ at KOITO_TOKEN
Source/Client ID Enforcement
Warning
BREAKING CHANGE but only for users who have not completed ID migration from 0.14.0
To further improve DX/UX the ID requirements first introduced in 0.14.0 are now mandatory.
Tip
If you have already added an ID to all your Sources/Clients then no action is required.
Previously, MS would log a warning and use your Source/Client name as the ID, as noted in the 0.14.0 upgrade guide. Now, it reports a configuration error if no ID is present.
To migrate, fully complete the Configuring IDs section from the 0.14.0 migration guide.
Other Changelog Highlights
⛰️ Features
- (lfm endpoint) Implement better api emulation #656
- (source) Add Ingress SOT type
- (now playing) Buffer valid updates for endpoint sources #659
- (ui) Improve UX for theme switcher
- (ui) Implement basic settings page
- (No Category) Improve location wording for config errors
🐛 Bug Fixes
📚 Documentation
- (No Category) Use italicize-bold text style for required env properties instead of separate column
- (No Category) Update env descriptions for id, name, and enable
- (No Category) Update now playing for clients
- (No Category) Fix config.json example
- (No Category) Add lastfm endpoint alternative guidance
- (No Category) Update configuration types language