Commits
#360
feat: Caching and persistent scrobble queues
Faster interval means less likely user will update queue and exit MS before cache is saved
Should be ~700kb, full up. This should be a generous upper limit for number of scrobbles queued/dead at the same time.
If cache files get large enough to cause noticeable delay it will be helpful to log progress
tmp dependency has been removed so previous buggy behavior(?) is gone
* Use typeson for stringified data marshalling
* Use clone for in-memory serializing to preserve dayjs
* Refactor cache backend init into indepedent, testable functions
* Add `false` as cache provider type to allow disabling secondary cache
* Update package to improve typing support/esm
* Remove dependency on sources/client/notifiers to prevent circular dependency
* Two-tier caching
* primary is always in-memory LRU
* secondary supports file and valkey
* Different caches for metadata and scrobbles
* no file support for metadata (too big)
feat: Add Access Token auth for Ntfy webhook
fix(lastfm): Full destructure recent response and log respon on error
Maybe recenttracks/track does not exist for totally new accounts, though it should.
Guard against this and log response if something unexpected happens so we can troubleshoot
#353
testing and improvements for artist string parsing
feat: Improve Player behavior for Sources only tracking Now Playing data
* show "Now Playing" instead of Unknown/Playing
* Don't show empty listened duration/percent
Not really needed since koito has its own docs
Don't want to break 3p libraries (dayjs)
* Don't split artist with joiner when only one joiner is present
* Override naive parsing if metabrainz mapped artists fit with provided joiners
* Use more context-aware list parsing with ampersands
* Ignore artists with slashes when wrapped by word-boundary
* Implement faker data generation for artist string
* Add test suite for parsing different styles of artist strings
#360
feat: Caching and persistent scrobble queues