Skip to content

Changelog

Version v0.13.0

What’s New?

Yandex Music Source

Thanks to @Druidblack for implementing a new source for the Yandex Music service! :tada:

Check the docs for setup and configuration.

Improved Source/Client Restart

An overhaul of the functionality responsible for Source polling and Client scrobble processing makes restarts from the dashboard cleaner and more dependable. There shouldn’t be any more instances of unable to restart due to waiting for signal... :tada:

New Docs Domain and Social Previews

Docs are now “officially” located at https://docs.multi-scrobbler.app

Docs have also been improved with nice social graph preview images (og:image) that will display when a page is shared on a social site. There are images generated for each page that include the page title and/or description.

image

Docker Log Colors

Logs viewed through docker logs now have ~f a n c y~ colors that mirror what is seen in the dashboard.

These are turned on by default but if you prefer plain logs they can be disabled by setting this environmental variable:

COLORED_STD=false

Image Cleanup Space Savings 🧹

Fixing how the frontend is served from the backend enabled almost all frontend packages to be removed from the production build. This, along with a node_modules cleanup script, results in a ~32% decrease in docker image size.

Breaking Changes

Changelog Highlights

⛰️ Features

  • (client) Make scrobble processing abortable
  • (client) Strict ENV types
  • (docker) Use prune-mod to remove unneeded files in image
  • (docker) Make colored console output the default
  • (docs) Update docusaurus to 3.9.2
  • (musicbrainz) Handle rate limiting within api calls
  • (source) Make discover abortable
  • (sources) Better type enforcement
  • (yandex) add yandex music by @Druidblack #523

🐛 Bug Fixes

  • (jellyfin) Fix typo on devicesBlock env assignment #522
  • (scrobbler) Fix stagger map generation variable usage
  • (No Category) Fix circular dependency in error utils
  • (No Category) Align dockefile and devcontainer node/npm versions to fix lockfile mismatch
  • (No Category) Initialize plays in correct scope
  • (No Category) Build vite-express config based on production env to avoid making vite fallback to development

⚙️ Miscellaneous Tasks

  • (No Category) Remove unused testing libraries and fix storybook version
  • (No Category) Update node/npm engine constraints in package.json
  • (No Category) Bump node to 24
    • BREAKING: Bump node to 24

📚 Documentation

  • (No Category) Add Yandex Music Source docs
  • (No Category) Replace instances of foxxmd.github.io
  • (No Category) Finalize a working social card strategy

🚜 Refactor

  • (No Category) Implement abortable source polling
  • (No Category) Reduce docker image by moving frontend packages to devDependencies
  • (No Category) Install expressjs@5
  • (No Category) Replace awaitjs/express with express usage

🧪 Testing

  • (No Category) Make loop stop wait time configurable so tests run faster/more stable