What's New?
teal.fm Scrobble Client/Source
teal.fm is a social discovery and web viewing service for scrobbles stored/available on the ATProto network/your repository in a PDS (Personal Data Server).
This release includes a Client and Source implementation for teal.fm. #378
The teal.fm website is still in development and does not have a public release yet but you can start scrobbling, now, and your data wil be ready to use when they launch publicly.
Rocksky Client Fixes and Source
A fix for the previously-released Rocksky client #391 is included, as well as a brand-new implementation for both the Client and a new Source.
Notable QoL Improvements
- Now Playing functionality is now more temporally-accurate for downstream scrobbler clients and in the UI #395
- Subsonic Sources now have repeat detection implemented so your tracks are scrobbled mutliple times when you play them over and over again #375
Documentation Overhaul
Some of you may have already noticed but the docs at foxxmd.github.io/multi-scrobbler have been reworked to improve readability and add more information:
- The monolithic configuration page has been split into separate pages/sections:
- Main, general configuration
- Scrobble Clients section with overview and separate pages for each Client
- Scrobble Sources section with overview and separate pages for each Source
- This should additionally make searching easier since clients/sources show up under their own header instead of as excerpts under a huge configuration section
- Scrobble Clients/Sources include a matrix of supported features and clearer breakdowns of what each feature means + configuration
- Components have been refactored into reusable snippets which will make future documentation easier
- The URL pattern for the entire site has been simplified by removing the
docs/prefix- All old pages should redirect to new pages, but if they don't please open an issue
Full Changelog
Bug Fixes
- (endpointlz) Return expected OK response body #380
- (listenbrainz) Use duration_ms if duration not provided
- (listenbrainz) Fix interfaces for submit/listen and consolidate
- (rocksky) Add scrobble to deadletter when ignored
- (tealfm) Fix scrobble play date context
- (No Category) Fix Source/Client data types
- (No Category) Improve timing and update frequency to match scrobbler behavior #395
Documentation
- (endpointlz) Add navidrome url setup instructions
- (tealfm) Add docs
- (No Category) Move landing page to docs to simply url structure
- (No Category) Add commonly used components to global scope
- (No Category) Move Source configs to own files
- (No Category) Add client own files
- (No Category) Reorganize doc contents
- (No Category) Improved linking on config/landing and configuration type refinement
- (No Category) Change installation to category doc link
- (No Category) Update kitchensink
- (No Category) Improve sources documentation
- (No Category) Add redirects for old pages
- (No Category) Add subsonic guidance for lz scrobbling
Features
- (endpointlz) Add more logging for invalid routes
- (jellyfin) Add frontend url override as env #374
- (listenbrainz) Use end-of-string token and wildcard route to better log malformed LZ endpoint routes
- (listenbrainz) Add request body to logging for debugging
- (rocksky) Implement Rocksky Source/Client
- (subsonic) Add basic repeat detection based on listened duration #375
- (tealfm) Implement app password auth
- (tealfm) Massage handle for users who don't read docs
- (No Category) Implement working tealfm client
- (No Category) Make ATProto handle transform usable by RockSky and teal.fm
Miscellaneous Tasks
- (frontend) Update sass package and vite config to remove deprecation warnings
- (No Category) Update schema
Refactor
- (frontend) Update tailwind and move generation into vite
- (frontend) Migrate tailwind config to v4
- (listenbrainz) Move parsing functions out of static
- (listenbrainz) Consolidate lz endpoint submit parsing into lz response parsing
- (tealfm) Move common functionality to api client
Testing
- (No Category) Use zizmor to fix and audit image publish action
- (No Category) Harden remaining workflows using zizmor