FoxxMD
54159f9b9f
chore: Remove legacy backend api code
2026-08-31 15:54:04 +00:00
FoxxMD
9b9176ccf1
chore: Remove legacy ui code and dependencies
2026-08-31 15:39:55 +00:00
FoxxMD
4a974a83d9
fix(ui): Reduce new ui button footprint to make mobile less horrendous for legacy dashboard
2026-08-31 14:35:32 +00:00
FoxxMD
232c802b44
chore(release): Bump version for prerelease
2026-08-28 17:54:55 +00:00
FoxxMD
e335b44abd
feat(ui): Add welcome toast for new ui
2026-08-28 17:36:21 +00:00
FoxxMD
115911c63a
feat(ui): add link to new ui on old dashboard
2026-08-28 17:05:57 +00:00
FoxxMD
f45493d10e
fix(ui): don't hide bulk play actions menu button on mobile
2026-08-28 16:56:32 +00:00
FoxxMD
574b723fa4
fix(spotify): Patch in a hardcoded 5-9 sec timeout for requests
2026-08-28 16:31:23 +00:00
FoxxMD
02f1eca649
fix(ui): hydrate queue states for bulk scrobbling
2026-08-28 15:57:53 +00:00
Matt Foxx
212afaa5e5
Merge pull request #674 from FoxxMD/writeApi
...
Write api
2026-08-28 11:37:09 -04:00
Matt Foxx
006fbe1079
Merge pull request #685 from FoxxMD/catchConsoleDiff
...
fix(transform): Catch and log errors during console diff generation
2026-08-28 11:35:51 -04:00
FoxxMD
5cecac937b
feat(ui): Implement bulk play retries
2026-08-28 15:28:31 +00:00
FoxxMD
297c7dee95
fix(ui): Change component state values to be lowercase so they pass validation
2026-08-28 15:27:58 +00:00
FoxxMD
42a6887141
fix: fix method for getting last transformed data
2026-08-28 12:34:19 +00:00
FoxxMD
cbdb58b36e
fix(transform): fix method for getting last transformed play data
...
Instead of assuming the previous step had data, reverse search the history array for the most current data to use for patching
2026-08-28 00:48:13 +00:00
FoxxMD
ae20d46456
one more fix for queue filter state
2026-08-27 20:09:10 +00:00
FoxxMD
6b12bd2ef2
fix(ui): fix dead queue filtering
2026-08-27 19:55:38 +00:00
FoxxMD
dde19cfc83
fix stale error on requeue
2026-08-27 19:50:00 +00:00
FoxxMD
0938e95e1d
last fix for dead letter queue counts
2026-08-27 19:39:19 +00:00
FoxxMD
3a40478cb1
fix: fix queue status in requeued event
2026-08-27 19:31:19 +00:00
FoxxMD
935845a976
fix: further queue state cleanup before converting to event
2026-08-27 19:11:16 +00:00
FoxxMD
b494e8f93f
fix: don't need queue context after processing
2026-08-27 18:51:46 +00:00
FoxxMD
9e13ead40f
feat: Add more queue context and render context in timeline
2026-08-27 18:35:43 +00:00
FoxxMD
3b2f5ee1c8
fix: Fix queue event names
2026-08-27 17:25:51 +00:00
FoxxMD
51de79b92f
fix(ui): Fix missed statt text arrow color
2026-08-27 17:25:35 +00:00
FoxxMD
b6f7e0e586
refactor(ui): Simplify and make stats code reusable
2026-08-27 17:10:45 +00:00
FoxxMD
c69af47978
fix(transform): Catch and log errors during console diff generation
...
This functionality is not critical to transforms, just helpful for console debugging. It should not stop transforms from occuring so catch all errors and log.
#684
2026-08-27 15:05:35 +00:00
FoxxMD
edde8f9e74
try moving openapi generate into docs script
2026-08-27 00:27:46 +00:00
FoxxMD
72d702acf0
docs: Add stability disclaimer
2026-08-27 00:18:07 +00:00
FoxxMD
67b13ffe40
docs: Add npm scripts to build openapi and generate docs
2026-08-27 00:10:17 +00:00
FoxxMD
b464c7507f
add openapi.json to gitignore
2026-08-27 00:05:59 +00:00
FoxxMD
3cf5b82247
working poc for openapi doc generation
2026-08-27 00:05:35 +00:00
FoxxMD
1571f06662
docs: Update docusaurs to 3.10.2
2026-08-26 20:05:29 +00:00
FoxxMD
b3fb04a6ae
docs: generate openapi spec
2026-08-26 20:01:13 +00:00
FoxxMD
cb2a6168fd
Update openapi doc meta for friendly names, descriptions, and categories
2026-08-26 15:01:39 +00:00
FoxxMD
56fcbedff9
feat: Implement zod validation for endpointlz requests
2026-08-26 14:32:05 +00:00
FoxxMD
548c614b0a
test(lastfm): Add smoke tests for 2.0 endpoints
2026-08-26 13:28:10 +00:00
FoxxMD
d3469aee7a
fix(lastfm): Fix xml builder when fields are undefined
2026-08-26 12:57:35 +00:00
FoxxMD
0109cc6fcd
fix(lastfm): Fix urlencoded number string coercion in request validation
2026-08-26 12:57:08 +00:00
FoxxMD
1988fc5f54
mostly figured out lfm validation...
2026-08-26 01:48:50 +00:00
FoxxMD
aa93600166
chore: bump express-typed-router
2026-08-26 00:09:35 +00:00
FoxxMD
09e9d0f79a
feat: Use new InferSchemaHandler type to simplify route handlers
2026-08-26 00:07:37 +00:00
FoxxMD
9c84e2d8e3
fxi(webscrobbler): Fix test data generation
2026-08-25 23:26:11 +00:00
FoxxMD
4b8d4932aa
test: fix signal used to wait for queued played to finish processing before checking queue length
2026-08-25 23:06:47 +00:00
FoxxMD
970e200e76
fix types for matchRequest
2026-08-25 22:39:11 +00:00
FoxxMD
3e05b3f964
feat: Implement tests for listenbrainz and webscrobbler routes
2026-08-25 21:16:30 +00:00
Matt Foxx
86b8b4ad90
Merge pull request #681 from DirazCoder/master
...
confirm before removing all failed scrobbles
2026-08-25 14:15:08 -04:00
FoxxMD
64d160782b
replace webscrobbler types with zod
2026-08-25 17:28:35 +00:00
FoxxMD
39f8367392
fill in the majority of routes with new typed routes for regex
2026-08-25 17:02:52 +00:00
FoxxMD
62905e8010
feat(ui): Implement retry options and delete flow
2026-08-25 13:15:22 +00:00
FoxxMD
203f4c343e
feat(ui): Wire up non-form play actions
2026-08-25 13:15:22 +00:00
FoxxMD
3b93073694
chore: Bump express-typed-routes for type fixes
2026-08-25 13:15:22 +00:00
FoxxMD
649280582e
feat(ui): Implement play actions
2026-08-25 13:15:22 +00:00
FoxxMD
0ad86ad692
feat: Implement api endpoitns for requeuing, cancelling, and deleting dead states
2026-08-25 13:15:22 +00:00
FoxxMD
e80f35f1b1
feat: dead queue to ingress migration
2026-08-25 13:15:22 +00:00
FoxxMD
a885079a07
Finish queue implementation for source and various fixes
2026-08-25 13:15:22 +00:00
FoxxMD
ab994770ab
fix(deezer): Fix missing closest play for some fuzzy scenarios
2026-08-25 13:15:22 +00:00
FoxxMD
17d7882710
feat(client): Unify queue processing for regular and dead plays
2026-08-25 13:15:22 +00:00
FoxxMD
1dcbf92fed
fix(ui): Fallback to source for music service icon
2026-08-25 13:15:22 +00:00
FoxxMD
8686309993
fix(ui): Fix music service icon string variable assumption
2026-08-25 13:15:22 +00:00
FoxxMD
b83f8872c2
start simplifying queue scrobble for clients
2026-08-25 13:15:22 +00:00
FoxxMD
9f22c56e87
feat(source): Implement queue context option usage during play processing
2026-08-25 13:15:22 +00:00
FoxxMD
6b86ef8629
feat(transform): Implement path to control cache usage
2026-08-25 13:15:22 +00:00
FoxxMD
d0001d2f62
feat(source): Implement Play retry logic
2026-08-25 13:15:22 +00:00
FoxxMD
e381be2f7e
feat: Implement queue context with migration
2026-08-25 13:15:22 +00:00
FoxxMD
c1e9757aed
feat(ui): Optimize musicbrainz/external links layout in play data
2026-08-25 13:15:22 +00:00
FoxxMD
61fbc39a91
feat(ui): add play source to activity summary
2026-08-25 13:15:22 +00:00
FoxxMD
4c764879d7
more ignore behavior fixes
2026-08-25 13:15:22 +00:00
FoxxMD
692b2160bf
fix: Fix auth routes with new typed routing
2026-08-25 13:15:22 +00:00
FoxxMD
344c0a15ad
feat: Add now playing behavior for monitoring state
2026-08-25 13:15:22 +00:00
FoxxMD
f44835dfba
feat: Migrate to typed router
2026-08-25 13:15:22 +00:00
FoxxMD
204cc0bdb8
Improved monitoring behavior
...
* Discard plays early to avoid unnecessary transforms and existing checks
* Don't throw client scrobble processing, just set play as discarded
* Fix/improve source play processing on failure
2026-08-25 13:15:22 +00:00
FoxxMD
4b7542ddd9
fix: Add missing play update events
2026-08-25 13:15:22 +00:00
FoxxMD
1fc3ad1bd4
fix(source): Missing original data on play create
2026-08-25 13:15:22 +00:00
FoxxMD
9f34929140
create transform events with createdAt as now
2026-08-25 13:15:22 +00:00
FoxxMD
1178b0b6fb
fix: Queue event added in repo by explicit parameter
2026-08-25 13:15:22 +00:00
FoxxMD
cad42cba04
refactor play event data into factory functions
2026-08-25 13:15:22 +00:00
FoxxMD
68b7385f31
test: Fix useless polling wait slowing tests
2026-08-25 13:15:22 +00:00
FoxxMD
9a93f13a7d
fix: fix missing events in apifixtures
2026-08-25 13:15:22 +00:00
FoxxMD
649ccde43d
refactor: db retention cleanup for transform data
2026-08-25 13:15:22 +00:00
FoxxMD
fc06c6a8a9
feat(ui): Add state change timeline event
2026-08-25 13:15:22 +00:00
FoxxMD
d089b960f9
feat: Refactor activity timeline elements into proper event structure
...
* Implement new database playEvents table/entity
* Refactor usage of lifecycle,scrobbler,etc... with write-only play events
* Refactor/simplify activity timeline to use new event structure
2026-08-25 13:15:21 +00:00
FoxxMD
c210590c8f
fix: Add queue id to consumeQueue and implement queued id map to prevent processing an already processing play
2026-08-25 13:15:21 +00:00
FoxxMD
78aa418b7d
feat: Filter next queued by optional id
2026-08-25 13:15:21 +00:00
FoxxMD
48cc18d373
fix(source): Use playDate SOT when generating temporal range for sql query
2026-08-25 13:15:21 +00:00
FoxxMD
258cd61b4b
feat(source): Improved queue prunning for backlog and history sources
2026-08-25 13:15:21 +00:00
FoxxMD
185ccdf71c
fix(source): Refactor existing play list used for existing check to use *all* processed plays
...
Instead of just discovered, since we now dupe/discard plays that persist in db, change the cached existing list logic to include all processed plays
2026-08-25 13:15:21 +00:00
FoxxMD
b9dad6149b
feat(deezer): Improve documentation on fuzzyDiscovery option usage
2026-08-25 13:15:21 +00:00
FoxxMD
9ae74a193f
fix: using incorrect variable for existing
2026-08-25 13:15:21 +00:00
FoxxMD
99b30956ba
fix: check for undefined event payload
2026-08-25 13:15:21 +00:00
FoxxMD
93a5775363
feat: add parsed from meta
2026-08-25 13:15:21 +00:00
FoxxMD
e8a998ddda
finish source queue discovery migration
2026-08-25 13:15:21 +00:00
FoxxMD
1b02dc684e
test: Fix app migrations relative folder
2026-08-25 13:15:21 +00:00
FoxxMD
23813a65ef
feat(source): Implement discovery queue
2026-08-25 13:15:21 +00:00
FoxxMD
0583c66743
db: Add playHash to to play input
2026-08-25 13:15:21 +00:00
FoxxMD
cd4e88b232
refactor: rename queue constant to remove client
...
will be using for both source and client so name is less restrictive now
2026-08-25 13:15:21 +00:00
FoxxMD
8be739efb4
feat: Simplify component state updates for start/stop/restart and replace error usage
2026-08-25 13:15:21 +00:00
FoxxMD
3f2e29c5c8
feat: Implement convenience functions for replacing/clearning component errors
2026-08-25 13:15:21 +00:00
FoxxMD
b109157350
disable ignore actions for now (not yet implemented)
2026-08-25 13:15:21 +00:00
FoxxMD
ce15c4049c
fix: component start invocation runs heartbeat immediately
2026-08-25 13:15:21 +00:00
FoxxMD
5a7c01a6d9
feat(ui): Implement test auth action
2026-08-25 13:15:21 +00:00
FoxxMD
befd1ac043
feat(ui): Implement auth actions
2026-08-25 13:15:21 +00:00
FoxxMD
714678fdab
finish implementation of AuthError
2026-08-25 13:15:21 +00:00
FoxxMD
2a58edd9b2
refactor: Strongly type and simplify auth error logic
...
* Use separate errors for init auth check throws and root auth error throws (to be implemented in each component)
* Consolidate auth issue discovery to one reusable function
* rethrow on testAuth based on auth error type and unrecoverable flag
2026-08-25 13:15:21 +00:00
FoxxMD
abfceeb5f8
partial auth api
2026-08-25 13:15:21 +00:00
FoxxMD
d7c88d4191
feat: Implement multiple stateful errors/warnings on component
2026-08-25 13:15:21 +00:00
FoxxMD
a44fe48314
feat(ui): Implement basic component state change actions #500
...
Start/Stop/Restart client/sources from the ui
2026-08-25 13:15:21 +00:00
Matt Foxx
29ffc6b804
Merge pull request #680 from FoxxMD/listenbrainzUA
...
feat: Version and user-agent improvements
2026-08-24 18:10:39 -04:00
FoxxMD
3bdc9447b8
chore(release): Bump version for release
2026-08-24 21:38:46 +00:00
DirazCoder
4a27806825
Add confirmation for removing all dead scrobbles
...
Added confirmation dialog before removing all failed scrobbles.
2026-08-24 22:23:02 +01:00
FoxxMD
b8cd53f554
fix(listenbrainz): Add user-agent to requests #679
2026-08-24 21:05:30 +00:00
Matt Foxx
e7218074f8
Merge pull request #678 from halkeye/patch-1
...
fix(docsite): path.join doesn't really handle http links
2026-08-24 15:20:11 -04:00
Gavin Mogan
a48ada9ac3
fix(docsite): path.join doesn't really handle http links
2026-08-22 23:30:43 -07:00
Matt Foxx
bc28de66b1
Merge pull request #673 from mmattbtw/feature/teal-production-namespace
...
feat(teal): migrate play records to production namespace
2026-08-13 10:05:16 -04:00
FoxxMD
bc18993cd3
fix(tealfm): Fix AI mistakes
...
* Remove gitignore entries and remove json lexicon files, we don't redistribute the lexicon
* regenerate lexicon with full definitions so we get functionality non-alpha namespace and re-add alpha to barrel export
* fix type narrowing for musicservice/origin
* reuse isGenericUri instead of reinventing the regex wheel
* fix property assertions for renamed musicservice/origin(uri)
* use clientresponse type guard in a way typescript can actually understand it, fixes cursor type error
* reuse sortByNewestPlayDate instead of reinventing the sort wheel
2026-08-13 13:48:16 +00:00
mmattbtw
d280ca5dd2
feat(teal): migrate play records to production namespace
2026-08-12 20:47:00 -05:00
FoxxMD
155d8a3252
fix(docs): Add zockerId keyword to ajv options
2026-08-12 18:01:08 +00:00
FoxxMD
68d9417cf7
fix(docs): override sharp version to fix node-gyp on arm
...
An old version of libvips was failing(?) to downloading
causing sharp to use node-gyp rebuild which errors due
to missing python on the base image
This shouldn't happen since we can def use a prebuild binary
so update sharp which updates libvips version used.
2026-08-12 17:24:00 +00:00
FoxxMD
9b7483db91
chore(release): Bump version for release
2026-08-12 16:40:23 +00:00
FoxxMD
7c0797b496
feat: Better validatation for normalized config urls
2026-08-12 16:32:42 +00:00
FoxxMD
1b3cbe9ab3
feat: Normalize domain:port url input
2026-08-12 13:27:10 +00:00
FoxxMD
15e0332ac2
feat: Update json schema to draft-2020-12
2026-08-11 20:37:24 +00:00
FoxxMD
d532c85c2a
fix: Relax some config url schema requirements with normalization
2026-08-11 20:36:47 +00:00
FoxxMD
eecbea4cab
add missing error clear when building clients
2026-08-11 18:40:48 +00:00
FoxxMD
823dd5d011
fix: Hand-roll applemusic env fixture data
2026-08-11 18:32:42 +00:00
FoxxMD
0fa9a8df10
fix(discord): Fix discord ENV parsing validation
2026-08-11 18:21:58 +00:00
FoxxMD
a76213a7a0
docs: Hand-roll discord ENV updates
2026-08-11 15:56:54 +00:00
FoxxMD
a42ab3d8fd
fix: Hand-rolled env data fixtures for some edge cases
2026-08-11 15:46:19 +00:00
FoxxMD
475a3f1276
fix: narrow env config key collection to include prefix underscore
2026-08-11 15:14:08 +00:00
FoxxMD
6dcfd6028b
fix: Narrow url/IP config zod types from string to purpose-built regex types
2026-08-11 15:06:52 +00:00
FoxxMD
54247e89c2
feat: Add ENV config test suite
2026-08-11 14:53:38 +00:00
Matt Foxx
433ea532ae
Merge pull request #670 from FoxxMD/stronglyTypedEvents
...
feat: strongly type internal events
2026-08-11 08:56:24 -04:00
FoxxMD
b615172ed1
feat: strongly-type internal events
...
* refactor wildcard emitter for better "any" usage
* strongly type emitter with event map
* fix webhook payload accessor #666
2026-08-10 21:03:31 +00:00
FoxxMD
aa2beb5846
fix: Check for ENV prefix with startsWith instead of includes
...
#668
2026-08-10 20:53:53 +00:00
FoxxMD
06d3c6a3a8
docs: Add more guidance for File config example/editor
...
* Add configureAs callout for ambiguous sources
* Add editor validation limitation for ambiguous components
2026-08-10 18:15:49 +00:00
FoxxMD
c0cfc5fa9f
feat: relax configureAs requirements for AIO configs
...
* Do not require configureAs for AIO sources since we can determine from context
* Break out aio/file validation for better DX
2026-08-10 17:42:28 +00:00
FoxxMD
2195ac7057
chore(release): Bump for release
2026-08-10 16:36:23 +00:00
Matt Foxx
3fc67146c7
Merge pull request #669 from FoxxMD/envPrefixUsage
...
fix: Fix incorrect prefix not being used for env key collection
2026-08-10 12:35:34 -04:00
FoxxMD
fe4e625824
docs: Improve scenario guidance for lfm/lz endpoints
2026-08-10 16:21:39 +00:00
FoxxMD
b98756a262
fix: Fix incorrect prefix not being used for env key collection
...
#668
2026-08-10 14:21:59 +00:00
Matt Foxx
2b7521ebac
Merge pull request #667 from Exerra/master
...
fix(AppleMusicSource): include library-songs in recent tracks
2026-08-09 16:55:29 -04:00
Exerra
ecd48ca234
fix(AppleMusicSource): include library-songs in recent tracks
...
Updated the Apple Music recently played tracks query to include 'library-songs' types in addition to 'songs', ensuring a more comprehensive history retrieval.
2026-08-09 23:49:42 +03:00
FoxxMD
41aaaca530
docs: In 0.14.0 upgrade guide add note about ID requirement in 0.16.0+
2026-08-08 21:06:31 -04:00
FoxxMD
ed42da6843
chore(release): Bump version for release
2026-08-08 20:56:01 -04:00
Matt Foxx
34044401d4
Merge pull request #664 from FoxxMD/fixNewPlayRecent
...
fix(source): Fix missing id/uid on cached recent plays
2026-08-08 20:53:51 -04:00
FoxxMD
f61e50fd45
fix(source): Fix missing id/uid on cached recent plays
...
#662
2026-08-08 17:12:13 -04:00
FoxxMD
f5ad2ad29b
chore(release): Bump version for release
2026-08-08 19:29:38 +00:00
FoxxMD
2e4acd0f00
fix: Add missing configureAs for ENV parsed components
...
#661
2026-08-08 19:24:45 +00:00
FoxxMD
b9517bd066
docs: Add more type guidance for aio/file config
2026-08-07 17:22:20 +00:00
FoxxMD
335880249f
chore(release): Bump version for release
2026-08-07 16:49:36 +00:00
Matt Foxx
5c2917f906
Merge pull request #660 from FoxxMD/ingressSot
...
Ingress sot
2026-08-07 12:34:15 -04:00
FoxxMD
124e857d9f
fix: now playing playerUpdate event data
2026-08-07 14:53:02 +00:00
FoxxMD
5dee499381
test: fix failing tests from np data structure change
2026-08-07 14:53:02 +00:00
FoxxMD
10325fd4e6
refactor(now playing): Use more efficient solution for ingress now playing
...
Re-queue valid ingress NP update on client rather than spamming all clients with duplicate updates from memory source
This should have the same functional affect with way less log noise
2026-08-07 14:53:02 +00:00
FoxxMD
045890e243
feat(sourc): Add Ingress SOT type and force-push ingress player updates
...
#659
2026-08-07 14:53:02 +00:00
FoxxMD
685e48a7a6
fear(ui): Implement cache clearing mechanism #634
2026-08-06 20:20:11 +00:00
FoxxMD
7eb5104f0b
feat(ui): Implement basic settings page
2026-08-06 19:34:02 +00:00
FoxxMD
4272e8ea58
feat(ui): Improve UX for theme switcher
...
* Remove three-state toggle
* Revert to system theme only when *user* initiated toggle results in same theme as system
2026-08-06 18:24:57 +00:00
FoxxMD
8e6d35a85b
fix(lz endpoint): Fix missing early return when no sources for playing now response
2026-08-05 19:08:08 +00:00
FoxxMD
917d05f295
docs: Update configuration types language
2026-08-05 15:02:21 +00:00
FoxxMD
287c994643
docs: Some corrections and updated language
2026-08-05 14:15:25 +00:00
Matt Foxx
7980a0c856
Merge pull request #657 from FoxxMD/lastfmEndpointResponses
...
feat(lfm endpoint): Implement more api emulation
2026-08-05 09:28:43 -04:00
FoxxMD
9d2557cf6a
feat(lfm endpoint): Handle scrobble payload variants
2026-08-04 22:14:03 +00:00
FoxxMD
6f8debc304
docs: Add lastfm endpoint alternative guidance
2026-08-04 18:50:59 +00:00
FoxxMD
b53ae78d55
fix(lfm endpoint): Fix no response on no slug matched
2026-08-04 18:30:16 +00:00
FoxxMD
8723bc8890
fix(lfm endpoint): Improve regex slug matching to handle more variants
2026-08-04 18:29:41 +00:00
FoxxMD
eca8ad2ce1
fix(lfm endpoint): Fix slug regex match
2026-08-04 18:16:39 +00:00
FoxxMD
b6b8d3423f
fix(lfm endpoint): Detect desired json response from accept header
2026-08-04 18:06:45 +00:00
FoxxMD
fc027e8554
fix(lfm endpoint): remove duplicated method restrictions
2026-08-04 16:07:11 +00:00
FoxxMD
707da834bb
docs: regenerate tealfm source env
2026-08-04 15:10:17 +00:00
FoxxMD
002520cd8a
docs: Fix config.json example
2026-08-04 15:10:06 +00:00
FoxxMD
7ca84ce27f
feat(lfm endpoint): Implement more api emulation #656
...
* Add optional username/apiKey config fields
* Identify Source by optional username/sk/api_key
* Emulate auth.getMobileSession response with sk derived from Source uid
* Update docs with guidance for multiple sources and improved setup language
2026-08-04 14:59:05 +00:00
FoxxMD
8af56cb561
revert: rollback tealfm source optional app password for now
...
This needs to be part of a larger refactor to require app password/permissions only for specific operations in the api client
2026-08-03 18:29:03 +00:00
FoxxMD
0e249b13a9
fix(source): Fix player cleanup for ingress sources
...
This bool check was backward. The scheduled task should no-op for polling sources and run cleanup for ingress sources
#652
2026-08-03 18:25:12 +00:00
FoxxMD
591b5c6618
fix(tealfm): app password for source is optional
2026-08-03 16:55:16 +00:00
FoxxMD
3c5b9cc402
fix(teal): teal client app password is required
2026-08-03 16:52:32 +00:00
FoxxMD
420a053e25
docs: update now playing for clients
2026-08-03 16:06:23 +00:00
FoxxMD
72f64953f6
chore: remove unused ts-zod config
2026-08-03 15:55:00 +00:00
Matt Foxx
8b8c2765c7
Merge pull request #654 from FoxxMD/configBuildSimplify
...
Simplify config validation and building
2026-08-03 11:53:23 -04:00
FoxxMD
e1324921e9
fix: Fix missing name passed to component classes
2026-08-03 15:38:35 +00:00
FoxxMD
9f71fbef97
fix: prevent creating source/client with same id
2026-08-03 15:21:11 +00:00
FoxxMD
dd22418c41
fix(tests): Fix missing required id
2026-08-03 14:56:33 +00:00
FoxxMD
d296b825d6
Id logging and schema cleanup
...
* Guard against undefined name when logging component disabled
* Add id/name hint to config location
* inherit name/id field from common schema
2026-08-03 14:31:24 +00:00
FoxxMD
792ccc3c09
feat: Improve location wording for config errors
2026-08-03 13:39:14 +00:00
FoxxMD
6772e9934d
refactor!: Enforce mandatory id for file/aio
2026-08-03 13:38:49 +00:00
FoxxMD
4ce7219214
fix: Skip ambigious configs during source parsing if configureAs is not present
2026-08-02 20:21:55 +00:00
FoxxMD
b2ce42fecf
simplify jellyfin mediatype usage for now
2026-08-01 19:12:04 +00:00
FoxxMD
46a061a602
docs: Update comma-separated list zod types for envs
2026-08-01 19:07:49 +00:00
FoxxMD
ff7360fced
docs: More env row generation improvements
...
* Always use `out` of common envs
* Wrapper function for normalizing descriptions with comma-separate lists
2026-08-01 19:07:35 +00:00
FoxxMD
425a0b2807
Partial fix for flattening complex zod types for docs
2026-08-01 17:47:44 +00:00
FoxxMD
ad632f38d8
docs: regenerate env docs
2026-08-01 17:31:37 +00:00
FoxxMD
1d1b3b6f56
docs: Update env descriptions for id, name, and enable
2026-08-01 17:31:28 +00:00
FoxxMD
7575e8bff7
fix: Fix unhandled ZodTransform type generation
2026-08-01 17:31:03 +00:00
FoxxMD
31546ed4c1
fix: Early return on component add to prevent dynamic loading
2026-08-01 15:09:52 +00:00
FoxxMD
bf9cdc141c
re-add clients to aio json schema
2026-08-01 00:05:07 +00:00
FoxxMD
02ab1571b6
refactor: Convert validation client structures to dynamically import
2026-07-31 23:57:59 +00:00
FoxxMD
699bd02782
refactor: Convert validation structures to dynamically import
2026-07-31 23:41:56 +00:00
FoxxMD
0d45d06966
docs: Italicize required env properties
2026-07-31 23:41:12 +00:00
FoxxMD
a93d02e1b7
env doc generation fixes
2026-07-31 20:50:41 +00:00
FoxxMD
513e2dde15
feat: Use env config generated from schema
2026-07-31 16:37:59 -04:00
FoxxMD
2fc90dcfda
feat: Generate env markdown for components
2026-07-31 20:15:11 +00:00
FoxxMD
fd2a178808
feat: Add env prefix to schema interface
2026-07-31 20:08:00 +00:00
FoxxMD
9f54d45576
fix(source): Fix missing defaults
2026-07-31 19:43:00 +00:00
FoxxMD
78aff32334
refactor: Extract source/client building into a function to reduce verbosity
2026-07-31 15:33:34 -04:00
FoxxMD
0115ccb862
refactor: Simplify ScrobbleSources config builder
2026-07-31 19:01:10 +00:00
FoxxMD
8a71663c9f
Implement remaining source env schemas
2026-07-31 18:27:01 +00:00
FoxxMD
40eff0b901
refactor: Simplify ScrobbleClients config builder
2026-07-31 17:27:44 +00:00
FoxxMD
13acc56424
refactor client env schemas to reuse zod shape where possible
2026-07-31 10:39:14 -04:00
FoxxMD
09fc0ce15c
Implement majority of source env schemas
2026-07-31 10:32:21 -04:00
FoxxMD
4fbdd71588
add EnvSourceSchema interface
2026-07-31 14:03:04 +00:00
FoxxMD
7cf105935e
feat: Implement remaining env schemas for clients
2026-07-31 09:59:57 -04:00
FoxxMD
1bd10326eb
add generic client env data validation interface
2026-07-31 13:31:52 +00:00
FoxxMD
74605caf15
add interface for env schemas
2026-07-31 13:10:13 +00:00
FoxxMD
7dec9a39e6
chore(release): Bump version for release
2026-07-30 17:50:57 +00:00
FoxxMD
90a8426748
Proof of concept: generate ENV docs from zod schema
2026-07-30 17:19:32 +00:00
FoxxMD
8469d161e9
feat: Reduce db write frequency when idle by buffering date updates #653
2026-07-30 12:37:38 +00:00
Matt Foxx
941f50bff2
Merge pull request #651 from FoxxMD/mbTrackGuard
...
fix: Guard against tracks/track in mb recording medium
2026-07-30 00:09:59 -04:00
FoxxMD
f8d882cfcf
docs: Clarify when activity is scrobbled
2026-07-29 19:37:40 +00:00
FoxxMD
0704cebe72
fix(webscrobbler): Fix bad access of PlayerState #650
2026-07-29 15:49:54 +00:00
FoxxMD
e43a18bcbb
fix: Guard against tracks/track in mb recording medium
...
Fixes #649
2026-07-29 15:18:45 +00:00
FoxxMD
0baa399e9f
lint: Fix new error instantiation
2026-07-29 15:18:02 +00:00
FoxxMD
05b2e1c116
fix: Fix missing logPath base dir argument
...
NixOS/nixpkgs#519119
2026-07-28 21:22:56 +00:00
FoxxMD
a0cdaeb01f
docs: Add missing user type to user transform examples
2026-07-28 18:59:49 +00:00
FoxxMD
73c35751ed
chore(release): Bump version for RC1 release
2026-07-28 17:27:57 +00:00
FoxxMD
516a8d2178
chore: Cleanup development comments
2026-07-28 17:27:23 +00:00
FoxxMD
d595bf9961
chore: Remove zod development package and re-upgrade typescript to 6
2026-07-28 16:49:51 +00:00
FoxxMD
8345779030
refactor: cleaned up aio validation and client/source map
2026-07-28 16:43:51 +00:00
FoxxMD
b58d39c90e
feat(ui): Implement subsonic playback reporting indicators
2026-07-28 16:14:01 +00:00
FoxxMD
7074ece0a5
docs: Simplify subsonic playback reporting language
2026-07-28 16:13:49 +00:00
FoxxMD
bfb0d6b392
refactor: Move platform constants/types to prevent frontend bundling backend code
2026-07-28 16:10:21 +00:00
Matt Foxx
5c3f49fb2f
Merge pull request #647 from FoxxMD/zodExperimentRebase
...
feat: Replace ts-json-schema-generator + ajv with zod
2026-07-27 22:29:32 -04:00
Matt Foxx
f70e680d55
Merge branch 'master' into zodExperimentRebase
2026-07-27 22:22:32 -04:00
Matt Foxx
c2fda1e7d9
Merge pull request #640 from JannisPohle/feature/ignore-stale-subsonic-play-now-reports
...
fix: Ignore stale subsonic playing now reports
2026-07-27 22:18:44 -04:00
FoxxMD
70e4239e52
more cache config cleanup
2026-07-28 01:56:26 +00:00
FoxxMD
d96073282c
feat(cache): Remove deprecated cache configuration
...
Remove metadata/scrobble/auth config that was deprecated in 0.14.0
2026-07-28 01:56:26 +00:00
FoxxMD
2887600aa0
docs: Clarify language around id/name
2026-07-28 01:56:26 +00:00
FoxxMD
6f7aa6f567
remove unused interface names
2026-07-28 01:56:26 +00:00
FoxxMD
857f44fa14
docs: Add meta descriptions/titles for objects that become refs
2026-07-28 01:56:26 +00:00
FoxxMD
d764b0204e
fix(docs): Replace old json viewer links
2026-07-28 01:56:26 +00:00
FoxxMD
ee2f988357
fix(docs): add aio json with reused refs to reduce file size
2026-07-28 01:56:26 +00:00
FoxxMD
de69977d7e
fix cf-json-schema-viz package name type
2026-07-28 01:56:26 +00:00
FoxxMD
6eab629168
remove unused patch
2026-07-28 01:56:26 +00:00
FoxxMD
f21572bed0
chore: Remove ts-generator-schema rm from dockerfile layer
2026-07-28 01:56:26 +00:00
FoxxMD
98084665ba
chore: remove ts-schema-generator and ajv
2026-07-28 01:56:26 +00:00
FoxxMD
e8a91bb6de
feat: Replace ajv/ts-schema-generator validation with pure zod
2026-07-28 01:56:26 +00:00
FoxxMD
206d1571ac
feat(docs): Use zod for all doc schemas and simplify generation/usage
2026-07-28 01:56:26 +00:00
FoxxMD
ebf6ec6957
add postCompare description
2026-07-28 01:56:26 +00:00
FoxxMD
03fc3e3a09
feat(docs): Inline defintions to prevent deduplication erasing descriptions
2026-07-28 01:56:26 +00:00
FoxxMD
aa50842444
feat(docs): Don't hide top-level descriptions in json viewer
2026-07-28 01:56:26 +00:00
FoxxMD
03dbbdc2cf
feat(docs): Patch schema viewer to show more descriptions
2026-07-28 01:56:26 +00:00
FoxxMD
bf0b27924e
more config annotation
2026-07-28 01:56:26 +00:00
FoxxMD
e02a0cc6ae
refactor(transform): Simplify transform config by removing untyped stages
2026-07-28 01:56:26 +00:00
FoxxMD
ff4dd25a97
refactor(transform)!: Require user stage is typed
2026-07-28 01:56:26 +00:00
FoxxMD
28e0d03e6f
Schema generation cleanup and vscode launch config fix
2026-07-28 01:56:22 +00:00
FoxxMD
d7f2d6fa8e
use zod for client validation
2026-07-28 01:55:25 +00:00
FoxxMD
8f33dc9f28
POC scrobble source validation at runtime
2026-07-28 01:55:25 +00:00
FoxxMD
fe068a9216
refactor: Convert MonitorOptions to zod schema after rebase
2026-07-28 01:55:25 +00:00
FoxxMD
06b6e200f5
convert aioconfig
2026-07-28 01:55:25 +00:00
FoxxMD
afea13e681
convert barrel client and source configs
2026-07-28 01:55:25 +00:00
FoxxMD
f8401faf61
convert webhooks
2026-07-28 01:55:25 +00:00
FoxxMD
7c3590adf9
convert remaining source configs
2026-07-28 01:55:19 +00:00
FoxxMD
742025fecc
feat: Convert source and client configs to zod
2026-07-28 01:54:41 +00:00
Jannis Pohle
b983de1a58
docs: update subsonic source docs
2026-07-26 06:40:43 +00:00
Jannis Pohle
ea77ea435a
feat: add support for the playbackReport extension for OpenSubsonic
...
If the extension is provided by the server and playback data is reported by the client, make use of the new position and state fields when polling the current play entry from subsonic. If the new fields are not provided, fallback to the old timestamp based tracking listen progress.
2026-07-26 06:24:59 +00:00
FoxxMD
ecf3273eb9
add zod packages
2026-07-24 16:51:31 -04:00
Jannis Pohle
a79b697496
fix: add configuration key for disabling auto-detection of stale songs from subsonic servers via the minutesAgo field
2026-07-24 14:18:06 +00:00
Matt Foxx
79874c6c20
Merge pull request #645 from FoxxMD/ignoreRefactor
...
refactor: Expand monitoring behavior
2026-07-23 12:30:50 -04:00
FoxxMD
aa91d2cb92
fix: Fix missed autoMonitor variable name change
2026-07-23 16:24:17 +00:00
FoxxMD
c727445f76
fix: Fix api test fixtures for new api surface with monitoring
2026-07-23 15:32:57 +00:00
FoxxMD
c25ca5297c
docs: Replace should scrobble with monitoring behavior
2026-07-23 15:08:04 +00:00
FoxxMD
956054f387
refactor(ui): Update legacy ui to be compatible with new monitoring structure
2026-07-23 14:50:34 +00:00
FoxxMD
86ebd3d673
fix(ui): Only render component details when data is present
2026-07-23 14:36:08 +00:00
FoxxMD
0679937b54
feat!: Implement monitoring/ingore activity for all components
...
* Replace "manual listening behavior" for azuracast/icecast with monitoring functionality for all sources/clients
* Rename "systemScrobble" to "autoMonitor"
* Implement functionality for all sources/clients
2026-07-23 13:41:12 +00:00
Matt Foxx
61a2ff5180
Merge pull request #644 from FoxxMD/isrcNormalization
...
fix: Normalize ISRC values #643
2026-07-23 08:27:34 -04:00
Matt Foxx
26db80d8c7
Merge pull request #642 from FoxxMD/rockskyAlbumArtistFix
...
fix(rocksky): Fix missing albumArtist field #632
2026-07-22 15:23:42 -04:00
FoxxMD
fc85790df5
fix: Normalize ISRC values #643
...
Spotify does not gaurantee non-hyphenated ISRC and musicbrainz won't search for hyphenated, so normalize before ISRC values downstream
2026-07-22 17:19:52 +00:00
FoxxMD
212ac27dd3
fix(rocksky): Fix missing albumArtist field #632
2026-07-22 16:01:36 +00:00
FoxxMD
a30d1ae6a5
fix: Move project root dir constant location into backend-only scope
...
When in core its being pulled into vite bundler and causing build issues. It's only needed by backend anyways so move to backend-scope.
2026-07-22 15:40:44 +00:00
FoxxMD
5c586fb635
fix(storybook): Rename configure file causing ts to fail due to extension
2026-07-22 15:39:07 +00:00
FoxxMD
de0d336325
fix(rocksky): Remove undefined keys from payload before sending
2026-07-22 15:38:18 +00:00
Matt Foxx
65d0c7c16b
Merge pull request #641 from mattl/patch-1
...
Update librefm.mdx
2026-07-21 23:54:20 -04:00
Dr. Matt Lee
fc6cc68d59
Update librefm.mdx
2026-07-21 18:10:16 -04:00
Matt Foxx
8c83969e95
Merge pull request #638 from FoxxMD/dataDirStandardize
...
Separate and standardize config/data dirs
2026-07-21 12:53:19 -04:00
Jannis Pohle
084dca73c1
fix: Ignore stale subsonic playing now reports
...
Ignore playing now entries from subsonic sources when their indicated start time from minutesAgo suggests that playback has been paused or stopped.
2026-07-19 07:01:41 +00:00
FoxxMD
7ac57ca757
feat(ui): Add theme switcher to header
...
#500
2026-07-17 16:41:24 +00:00
FoxxMD
1dc8c21716
docs: Add preview UI callout to landing
2026-07-17 14:53:57 +00:00
FoxxMD
6f8e7d3862
docs: Update intallation instructions with config/data dir guidance
...
#616
2026-07-16 16:14:24 -04:00
FoxxMD
a6d33fc2ef
feat: Move config and data dir creation into app
...
* only use docker init for fixing permission
* don't rely on docker init for dir creation as other distros may need this functionality (nix)
* check for and create config/data dirs recursively on app start
#616
2026-07-16 16:14:24 -04:00
FoxxMD
26121ace10
feat: Separate config and data directories and use OS-standard paths, if present
...
* Break configDir into config and data directories so config and database/cache can be stored in different directories
* Use `env-paths` to fallback to OS-standard paths for config and data if CONFIG_DIR and DATA_DIR envs are not present
* Additionally fallback to process CWD/config if none of the above are present for some reason
#616
2026-07-16 16:14:24 -04:00
FoxxMD
27e5656a04
refactor: Replace projectDir with explicit path to project root, projectRootDir
2026-07-16 16:14:24 -04:00
Matt Foxx
f3d7d59af6
Merge pull request #636 from Exerra/feat/apple-music
...
feat: Apple Music source
2026-07-16 15:45:04 -04:00
FoxxMD
2a4afefe64
feat(applemusic): Make album normalization user configurable and add guidance on usage
2026-07-16 16:41:36 +00:00
FoxxMD
1dba73ccb2
feat(client)!: Overhaul source scrobble filtering
...
* Use id OR name for matching client to scrobble to, during transition period
* Deprecate using name-only and warn when this is detected
* Consolidate logging filtered clients to one statement to reduce log noise
* Improve filter matching by making strings case and whitepsace insensitive
* On startup log `clients` options for sources
2026-07-16 15:51:54 +00:00
FoxxMD
3e82e035ac
feat: Update string normalization with granular options
2026-07-16 15:49:01 +00:00
Exerra
b12153fba9
docs(applemusic): improve formatting of developer tools shortcut
...
Updated the Apple Music configuration documentation to use <kbd> tags for keyboard shortcuts, improving readability.
2026-07-16 18:12:33 +03:00
Exerra
8c82412de4
docs: add detailed Apple Music authorization token extraction guide
...
Updated Apple Music configuration documentation with step-by-step instructions and screenshots for extracting authorization tokens in Chrome, Edge, Firefox, and Safari.
2026-07-16 17:15:58 +03:00
FoxxMD
e804ce33ef
fix(listenbrainz): Fix play fetch more indicator
...
latest_listen_ts is *always* the latest of *all-time*, not for the current min/max_ts range requested.
Instead, use count < than desired (and non-zero) to indicate more results
2026-07-15 20:49:37 +00:00
FoxxMD
3907fa5474
fix: Fix play fetch options logging data for pageless functions
2026-07-15 20:48:32 +00:00
FoxxMD
a7b3593314
stage import rule from eslint-plugin-import-x
2026-07-15 19:08:48 +00:00
FoxxMD
76ef994067
fix: Implement unicorn eslint rules and fix them
2026-07-15 18:31:13 +00:00
FoxxMD
c3cb3cf3a1
fix(client): Correct SOT scrobble api requests to not have the same from/to value
2026-07-15 17:34:37 +00:00
FoxxMD
8096219526
fix(client): Correct create/update timestamps for queues and scrobbles
...
* Ensure ingress queue always has an updated timestamp before dead creation
* Don't re-assign createdAt for scrobble after dead queue has already been updated
2026-07-15 17:02:29 +00:00
FoxxMD
67c1823195
feat(ui): Clean up scrobble timeline items
...
* Use timeline summary formatting to fix spacing
* Provide client name from fetched component data, if present, so scrobble summary is explicit where it sent/response scrobble from
2026-07-15 16:22:04 +00:00
FoxxMD
2014e78ade
fix(ui): Stabilize play timeline item order
2026-07-15 14:51:42 +00:00
Exerra
b3c332deeb
refactor: replace Apple Music headers config with origin field
...
Replaces the generic `headers` configuration field with a specific `origin` field for Apple Music. Updates the config schema, environment variable handling, documentation, and source implementation to simplify origin header management.
2026-07-15 17:12:21 +03:00
Exerra
93a1042e03
test(applemusic): add tests for stripping EP/Single album suffixes
...
Added test cases to ensure that ' - EP' and ' - Single' suffixes are correctly stripped from Apple Music album names during the formatting process.
2026-07-15 16:21:10 +03:00
Exerra
ba010240c0
feat(AppleMusicSource): include track URL in metadata
...
Added the web URL to the track metadata in AppleMusicSource to provide a direct link to the track.
2026-07-15 16:20:54 +03:00
FoxxMD
7f491d6974
fix: Fix hash router type
2026-07-15 13:08:04 +00:00
Exerra
74e67e0e41
feat(AppleMusicSource): include ISRC in track metadata
...
Added the isrc field to the track object in AppleMusicSource to improve track identification accuracy.
2026-07-15 15:59:49 +03:00
FoxxMD
1853f9abba
fix(musicbrainz): Catch scenario where all search prereqs fail
...
#636
2026-07-15 12:58:40 +00:00
Exerra
c13e7ebeec
feat(applemusic): strip ' - EP' and ' - Single' from album names
...
Implemented album name normalization in AppleMusicSource to ensure consistency with other sources by removing standard suffixes from EPs and singles. Updated documentation to reflect this behavior.
2026-07-15 15:38:14 +03:00
Exerra
207354e799
docs(docsite): fix heading hierarchy in applemusic.mdx
...
Adjusted markdown heading levels to ensure proper document structure.
2026-07-15 15:36:51 +03:00
FoxxMD
d7f6b17308
update boundary element linting to be more lenient
...
* allow core-tests from backend
* downgrade linting to warn
2026-07-15 12:23:53 +00:00
Exerra
c069020aac
docs(README.md): add Apple Music to supported sources list
...
Updated the README to include Apple Music in the list of supported scrobbling sources with a link to its documentation.
2026-07-15 13:52:53 +03:00
Exerra
f84a0f190d
test(applemusic): add integration tests for Apple Music module
...
Add new test suite for Apple Music backend logic
2026-07-15 13:39:27 +03:00
FoxxMD
d0f43fbd2d
feat(ui): Increase virtual play list height
2026-07-15 01:29:12 +00:00
FoxxMD
b38168975e
feat(ui): Compact filters
...
* move refresh/loading indicator into list type header
* Remove filter card title to trim filter real estate
2026-07-15 01:22:40 +00:00
Exerra
a845ac10ce
feat(applemusic): implement top-rebound recovery for duplicate plays
...
Added logic to detect and recover 'top-rebound' history patterns where Apple Music deduplicates re-listened tracks by bumping them to the top. This ensures intermediate tracks are captured and re-listened top tracks are processed correctly. Includes a new configuration option `recoverUnchangedTopHistory` to toggle this behavior.
2026-07-15 02:44:41 +03:00
Exerra
56fdb12683
feat(sources): update Apple Music configuration and environment variables
...
Refactored Apple Music source configuration to support token-based authentication via key files and custom headers. Renamed environment variable prefixes from 'AM' to 'APPLEMUSIC' for consistency.
2026-07-15 00:04:14 +03:00
Exerra
1f40e1e414
docs(applemusic): update configuration guide and add APPLEMUSIC_HEADERS
...
Added documentation for the APPLEMUSIC_HEADERS environment variable and updated code blocks with titles for better clarity in the Apple Music source configuration.
2026-07-15 00:03:06 +03:00
Exerra
c1a260dc56
fix(AppleMusicSource): add authentication verification to connection checks
...
Implemented status code validation for Apple Music authentication and connection checks. The module now throws errors instead of failing silently when the API is unreachable or auth is invalid.
2026-07-14 21:56:59 +03:00
Exerra
5d34ea68af
docs: update Apple Music configuration guide
...
Reorganized the Apple Music documentation to prioritize the Browser Token (Free) authentication method and clarify requirements for the paid MusicKit Key approach.
2026-07-14 21:27:23 +03:00
FoxxMD
41ea9e0aa7
feat(ui): Make timeline items more compact
...
#500
2026-07-14 15:23:37 +00:00
FoxxMD
a9d91c2c8a
fix circular buffer
2026-07-14 14:04:19 +00:00
FoxxMD
a696436a75
fix: Fix missing early return for skipped stage
2026-07-14 13:47:57 +00:00
Exerra
4ae388676e
chore(package-lock.json): update dependencies
...
Bump node-musickit-api to 3.1.0-next.5
2026-07-14 14:12:42 +03:00
Exerra
89b698d48d
docs: add Apple Music source documentation
...
Add Apple Music to the sources overview table and the main documentation index.
2026-07-14 14:06:20 +03:00
Exerra
b71a4cbbd6
build(package.json): bump node-musickit-api to v3.1.0-next.5
...
Updated node-musickit-api dependency to the latest next version.
2026-07-14 13:08:36 +03:00
Exerra
a870cdc6f4
chore(package.json): update node-musickit-api to v3.1.0-next.4
...
Switched node-musickit-api dependency from a local path to version 3.1.0-next.4 from the registry.
2026-07-14 01:11:29 +03:00
Exerra
c404dd5396
feat(applemusic): add support for custom headers in API requests
...
Introduced a `headers` configuration option to allow setting custom request headers, such as 'Origin', for Apple Music API requests. Updated configuration schema and source implementation to apply these headers.
2026-07-14 01:03:26 +03:00
Exerra
cae845028d
refactor(AppleMusicSource): use HistoryConsistencyResult type alias
...
Update parseRecentAgainstResponse return type signature to use the HistoryConsistencyResult alias instead of an inline object definition.
2026-07-14 00:50:58 +03:00
Exerra
1698c5d71e
refactor(AppleMusicSource): clarify timestamp calculation logic
...
Updated comments in applyCalculatedTimestamps to reflect that Apple Music lacks track timestamps, necessitating a hacky estimation method.
2026-07-14 00:48:29 +03:00
Exerra
765d86e02b
refactor(AppleMusicSource): extract timestamp calculation to method
...
Moved the reduceRight logic for calculating play timestamps into a dedicated private method 'applyCalculatedTimestamps' to improve code readability and maintainability.
2026-07-14 00:46:58 +03:00
Exerra
f347b82d33
refactor(AppleMusicSource): remove redundant unknown type assertion
...
Cleaned up the type casting in the AppleMusicSource fetch logic by removing unnecessary unknown assertion.
2026-07-14 00:44:38 +03:00
Exerra
87aa9c461e
refactor(AppleMusicSource): replace magic numbers with class constants
...
Introduced constants for history limits and track polling constraints to improve maintainability and readability within AppleMusicSource.
2026-07-14 00:44:25 +03:00
Exerra
417ce85bc7
refactor(AppleMusicSource): improve type safety and code readability
...
Refactored AppleMusicSource to use defined types for history consistency, updated the getRecentlyPlayedTracks limit type, and renamed variable for clarity.
2026-07-14 00:42:01 +03:00
Exerra
c8d917cfe6
refactor(AppleMusicSource): replace AppleMusicTrack interface with Song type
...
Removed local AppleMusicTrack interface and updated formatPlayObj to utilize the shared Song type for improved type consistency.
2026-07-14 00:34:47 +03:00
Exerra
8c789123f9
refactor(AppleMusicSource): remove unused backlogged plays logic
...
Removed the unused `getBackloggedPlays` method and cleaned up the `getRecentlyDiscoveredPlays` logic in `AppleMusicSource` to streamline track processing.
2026-07-14 00:31:06 +03:00
Exerra
06ed3f4388
feat: add Apple Music source support
...
Implement Apple Music source, including configuration types, environment variable handling, and source initialization logic. Refactored SourceType definitions to improve maintainability.
2026-07-14 00:24:44 +03:00
FoxxMD
fab2e4938d
feat(ui): Persist log window state #500
...
Store opened state, and position/size, to local storage so logs stay where user wants them across refreshes/initial load.
Resets window to default position if any part of log window is outside viewport bounds on open.
2026-07-12 16:19:13 +00:00
FoxxMD
fbcd1e1b9a
refactor(ui): Fix conditional hook for SSE and add stories for header elements
2026-07-12 15:43:33 +00:00
FoxxMD
d48f2bd4ac
feat(ui): Replace now playing player with summary with reduced motion #500
2026-07-11 20:28:13 +00:00
FoxxMD
e2dad463f6
feat: reduce now playing animation #500
2026-07-11 20:05:20 +00:00
FoxxMD
642af13f3c
fix(ui): fix shiki instance creation
2026-07-10 21:26:51 +00:00
FoxxMD
4146b159bd
feat(ui): Component list container max width based on selected grid width
2026-07-10 21:11:13 +00:00
FoxxMD
3a3a97132d
fix jellyfin import?
2026-07-10 21:03:06 +00:00
FoxxMD
04a5b91694
feat(ui): Implement grid for desktop layout
...
Allow user-selected max grid width on non-mobile breakpoints
#500
2026-07-10 20:57:03 +00:00
FoxxMD
945f494a2e
fix: top-level type import syntax
...
see eslint.config.js comments
2026-07-10 16:47:38 +00:00
FoxxMD
4b09909b33
update cacheable for per-operation ttl
2026-07-10 15:17:01 +00:00
FoxxMD
a5a1365b72
chore: remove tsx from mocha extension
2026-07-10 15:16:42 +00:00
FoxxMD
6bc618c481
always cache mb url so we can log to transform input
2026-07-10 15:16:31 +00:00
FoxxMD
85d1a0e648
chore: fix code styling in musicbrainz transformer
2026-07-10 15:15:57 +00:00
FoxxMD
1ae45c6060
add npm script for generating esbuild bundle metadata
2026-07-10 13:34:15 +00:00
FoxxMD
7daa43a883
tree-shake shiki for chakra usage
2026-07-10 13:34:15 +00:00
FoxxMD
f8501b2a2e
chore: Remove tsx usage from vscode launch profiles
2026-07-10 13:34:15 +00:00
Matt Foxx
14c35edadf
Merge pull request #633 from FoxxMD/node-ts-native
...
feat: Migrate to native node runtime everywhere
2026-07-09 16:25:27 -04:00
FoxxMD
cbb9774a18
chore: remove tsx and usage in npm scripts
2026-07-09 20:24:16 +00:00
FoxxMD
7b1eb7c2c1
disable flaky test
2026-07-09 20:06:13 +00:00
FoxxMD
8c8d1e1673
chore: Configure no-unused-vars
2026-07-09 20:01:08 +00:00
FoxxMD
fbdd504453
fxi: Fix linting rules related to functions and error causes
2026-07-09 19:52:13 +00:00
FoxxMD
612a90d7e7
fix: Fix many useless or missed variable assignments
2026-07-09 19:43:11 +00:00
FoxxMD
de8ad60db8
allow no-empty-object-type with single extends interfaces
2026-07-09 19:34:24 +00:00
FoxxMD
43fd8ea807
refactor: autofix (eslint) prefer-const prefer-as-const and var rules
2026-07-09 19:33:54 +00:00
FoxxMD
ec3a7e2d20
fix: Fix case block declarations
2026-07-09 19:20:26 +00:00
FoxxMD
981a211e56
refactor: remove all unused imports
2026-07-09 19:04:40 +00:00
FoxxMD
c42b5cacaa
refactor: Move files/imports to implement folder import isolation
2026-07-09 18:31:18 +00:00
FoxxMD
919907f1cb
feat: Add eslint rules to enforce folder import boundaries
2026-07-09 18:14:31 +00:00
FoxxMD
9eac9fdfa1
chore: prevent vscode from reporting comments in config json are errors
2026-07-09 18:14:01 +00:00
FoxxMD
86cea49ed4
fix(ci): Use node for stanity run
2026-07-09 13:31:02 +00:00
FoxxMD
8fc892a738
test: Fix db error test using transient db
2026-07-09 13:27:55 +00:00
FoxxMD
fd591be3d6
remove tsx from mocha setup
2026-07-09 13:27:39 +00:00
FoxxMD
63b23689a4
remove debug file
2026-07-09 13:27:27 +00:00
FoxxMD
3035d4c5e8
feat(docker): Remove tsx and typescript dependency from build
2026-07-09 12:58:15 +00:00
FoxxMD
7891133002
fix remaining type imports preventing docker container from running with tsx
2026-07-09 12:26:56 +00:00
FoxxMD
66db4d017e
more fixes to get all tests passing
2026-07-09 12:17:03 +00:00
FoxxMD
15e55dc6c5
more refactoring to remove server packages from bundled vite build
2026-07-09 04:13:28 +00:00
FoxxMD
239fb5919e
fix(ui): Exclude discord.js from vite deps
2026-07-09 02:54:44 +00:00
FoxxMD
7e53553a8e
more fixes for file extensions
2026-07-09 02:36:51 +00:00
FoxxMD
4bd0345d1b
replace file extensions and more import type fixes
2026-07-09 02:27:41 +00:00
FoxxMD
b207109697
add allowImportingTsExtensions compiler option
2026-07-09 02:03:03 +00:00
FoxxMD
77de2a7526
fix remaining erasure issues
2026-07-09 01:59:58 +00:00
FoxxMD
69b19da6aa
fix(eslint): ignore no-undef
2026-07-09 01:59:46 +00:00
FoxxMD
f2e2d67668
initial work for using erasable types
2026-07-08 21:14:34 +00:00
FoxxMD
9c44ccb663
chore(release): bump version for release
2026-07-08 17:25:23 +00:00
FoxxMD
f431f4d5af
refactor(ui): Remove non-mobile sidebar and ad header links
...
* Remove non-mobile sidebar to free up some more screen real estate
* Add quick Links menu to header that hides on mobile breakpoint
2026-07-08 16:49:37 +00:00
FoxxMD
be872d5ce1
fix(ui): Fix double mobile menu icon
2026-07-08 16:09:04 +00:00
FoxxMD
0246f7dfa6
fix(now playing): Fix realtime NP state handling
...
* Revert removing state on "should clear" statuses, causing false positive updates
* Insteat, filter out NP state to api based on "should clear" statuses
2026-07-08 15:43:42 +00:00
FoxxMD
b57f325684
feat: Implement error persistence and live updated for components
2026-07-08 15:02:02 +00:00
FoxxMD
153f37e927
standardize props and components used in timeline
2026-07-08 14:01:11 +00:00
FoxxMD
de4cb8a5c2
fix(ui): Conditionally render queue timeline items based on timestamp sameness and context
2026-07-08 13:38:18 +00:00
FoxxMD
eb133e4f7e
fix(ui): Fallback datetime for scrobble timeline item
2026-07-08 13:32:52 +00:00
FoxxMD
a3e056e7c5
feat: Implement virtual states to make filtering play state easier
...
* Convert 'queued' and 'dead queued' play states to queue filters
* Fix relation filter sql generation for count query
2026-07-08 13:25:41 +00:00
FoxxMD
7d8b00ab22
fix(musicbrainz): Fix finding stage inputs in error causes
2026-07-07 20:33:15 +00:00
FoxxMD
8b633dd901
feat(musicbrainz): Store all queries to lifecycle inputs and persist even on errors
...
Should make MB debugging easier
2026-07-07 20:05:10 +00:00
FoxxMD
f055cf683f
feat: Add toJSON to custom errors so they serialize correctly automatically
2026-07-07 18:19:05 +00:00
FoxxMD
baaa954f31
chore: Add eslint plugin for mocha tests
2026-07-07 17:54:19 +00:00
FoxxMD
c727de9c40
refactor(ui): Refactor timeline items to be rendered independently and order by createdAt
2026-07-07 17:42:27 +00:00
FoxxMD
e6f4a1dbd2
feat(client): Implement createdAt dates for scrobble actions
2026-07-07 16:37:45 +00:00
FoxxMD
3d6e86f258
feat(ui): Add queue states to timeline
2026-07-07 15:21:29 +00:00
FoxxMD
e6130eb5eb
feat(ui): Better error/warning indicators for timeline
2026-07-07 14:23:06 +00:00
FoxxMD
97b6042768
feat(ui): Implement basic error summary detection
2026-07-07 03:07:29 +00:00
FoxxMD
b3c1ce6d8a
feat(ui): Indicate failed scrobble is dead queued
2026-07-07 02:32:35 +00:00
FoxxMD
5daba47ac7
fix(ui): Fix conditional hook rendering
2026-07-06 20:08:18 +00:00
FoxxMD
8d7760df6d
chore: Update eslint config to include react hooks rules
2026-07-06 20:07:51 +00:00
FoxxMD
75c95fdaa8
more error boundaries
2026-07-06 18:53:57 +00:00
FoxxMD
e874ccc2d3
Add some error boundaries around components
2026-07-06 18:34:32 +00:00
FoxxMD
17e97b3a6a
fix(ui): Fix now playing mode for player on client component details
2026-07-06 18:18:58 +00:00
FoxxMD
c6389590fe
fix api fixture typing for players
2026-07-06 18:05:52 +00:00
FoxxMD
7151d96b59
feat(ui): Implement log copy
2026-07-06 18:03:38 +00:00
FoxxMD
b2b2018764
feat(ui): Use custom hook for player queries and fix now-playing forced re-render
2026-07-06 17:07:46 +00:00
FoxxMD
655b97ce1c
feat(ui): Implement now playing ui element
...
* Reuse source player in always-nowplaying mode, reuse api structure
* Add expiration to player data to stop rendering player for non-realtime clients
2026-07-06 16:40:01 +00:00
FoxxMD
5c6edefc56
feat(ui): track virtual play key by uid rather than index
...
Should prevent pop-in and false update-indicator triggering
2026-07-02 21:32:48 +00:00
FoxxMD
bf7fb4f558
feat(storybook): More accurate play list api mocking
...
* Reusable function for generic behavior
* Append to list and create unique plays on every page request
2026-07-02 21:32:02 +00:00
FoxxMD
32b64ff384
fix update icons not expiring
2026-07-02 20:00:04 +00:00
FoxxMD
f6e0f4be4a
feat(ui): Use play updatedAt field for determining updated icon
2026-07-02 19:44:19 +00:00
FoxxMD
fb66f0ca84
feat(db): update updatedAt fields automatically
2026-07-02 19:43:48 +00:00
FoxxMD
c4b1d72f3f
feat(ui): Implement plays refresh
2026-07-02 15:55:37 +00:00
FoxxMD
fb452eb40b
feat(ui): try to constrain date picker size for mobile
2026-07-02 14:37:52 +00:00
FoxxMD
d3fd03a78c
feat(ui): Wrap all filters
2026-07-02 14:28:57 +00:00
FoxxMD
7b04e76c3b
fix(ui): Accessing target/children when no ref, yet
2026-07-02 14:13:54 +00:00
FoxxMD
9f34c45192
fix(ui): Fix n+1 insertion bug on new play and add logging
2026-07-02 14:07:46 +00:00
FoxxMD
7ab0f710ff
feat(ui): Better control over ephemeral updates to plays
...
* Use structuralSharing to add signal that play data was updated from invalidated query
* Make update badge more generic and fix timeout/re-render
* Play update story updates random play
2026-07-02 14:01:28 +00:00
FoxxMD
ea1fb54de1
fix(ui): Revert datepicker formatting for now
...
Causing end date to jump back one day after every change?
2026-07-02 12:29:31 +00:00
FoxxMD
35fd84a1d0
feat(ui): Improve date picker useability
...
* reduce preset options to make smaller viewports easier to use
* Add icon to mobile users can avoid keyboard popup
* Disable openOnClick to avoid popup annoyance when user is trying to directly type dates
2026-07-02 01:07:20 +00:00
FoxxMD
e498db8ad3
feat(ui): Implement flex wrapped hook
2026-07-01 22:44:17 +00:00
FoxxMD
145960ca04
feat(ui): Implement placeholder component state actions
2026-07-01 20:23:16 +00:00
FoxxMD
91ba24e165
feat(ui): Add placeholder primary actions from component state
2026-07-01 19:49:08 +00:00
FoxxMD
66fc7a2b09
feat(ui): Add back button on component details
2026-07-01 18:30:44 +00:00
FoxxMD
97a7c7044c
feat(ui): Implement play actions in summary
2026-07-01 17:57:07 +00:00
FoxxMD
53d7de7e8d
refactor(ui): Use custom hook for activity fetching
2026-07-01 17:12:55 +00:00
FoxxMD
32da14c08e
make entire component header a link to details
2026-07-01 00:33:45 +00:00
FoxxMD
c7f370f121
feat(ui): de-emphasize mode badge
2026-07-01 00:31:48 +00:00
FoxxMD
9d105173da
refactor(storybook): More re-organizing
2026-06-30 22:47:47 +00:00
FoxxMD
3e7bbab5b0
refactor(storybook): organize storybook file and loglical
2026-06-30 21:03:14 +00:00
FoxxMD
e04965eb35
fix(storybook): Fix router wiring for component list stories
2026-06-30 20:41:51 +00:00
FoxxMD
f2c5e82665
keep names and sourcemap on build?
2026-06-30 20:28:07 +00:00
FoxxMD
4c41f0976d
Add placeholder action buttons to play detail
2026-06-30 20:27:57 +00:00
FoxxMD
db333184cc
fix(ui): Fix text alignment in timeline titles
2026-06-30 20:27:38 +00:00
FoxxMD
a5963a2333
(bad) ignore weird type error on cause unknown
2026-06-25 15:38:38 +00:00
FoxxMD
0fe81d6164
fix(ui): Fix content wrapping in detailed component
2026-06-25 15:13:52 +00:00
FoxxMD
3ad9f5dcac
Add api fixture for generating fake errors
2026-06-25 15:13:27 +00:00
FoxxMD
d39abe40c6
feat(ui): Hide error stacks at sm and below
2026-06-25 15:12:46 +00:00
FoxxMD
6f8ca72ccf
fix(db): Fix accessing undefined lifecycle during retention cleanup
2026-06-24 19:29:35 +00:00
FoxxMD
2ae32ee19f
feat(ui): Polish error alert
2026-06-24 19:21:15 +00:00
FoxxMD
2ac89c5db3
fix: Serialize errors at api boundary and fix recursive cause bug in error alert render
2026-06-24 18:27:34 +00:00
FoxxMD
b0db1dd8bc
feat(ui): Add error boundaries and better error detection for rendering
2026-06-24 17:18:26 +00:00
FoxxMD
a603be6e22
fix(ui): Fix total stats count
2026-06-24 16:12:58 +00:00
FoxxMD
7ad23a76de
fix(ui): Fix component summary not rendering live updates when no initial players
2026-06-24 15:51:48 +00:00
FoxxMD
4481646153
refactor(ui): Move query functions into factory
2026-06-24 15:51:26 +00:00
FoxxMD
5d2c9b557f
refactor(ui): Move component player live add/delete into players container
2026-06-24 15:17:54 +00:00
FoxxMD
eb69ae48f1
fix(ui): Ok to ignore empty error when rendering error alert
2026-06-24 14:19:54 +00:00
FoxxMD
c7479b2f00
fix(ui): Fix player keys and use of floats
2026-06-24 14:18:46 +00:00
FoxxMD
8ae7a8d338
feat(ui): Implement live play insert
2026-06-24 14:14:17 +00:00
FoxxMD
7573c762c0
fix(db): Include input in created play data since some systems depend on this existing
2026-06-24 14:14:03 +00:00
FoxxMD
6d503a1a15
fix(storybook): Fix duplicate msw workers due to vite hot reload
2026-06-24 14:13:19 +00:00
FoxxMD
94d3ea5da8
fix: Fix typing for play update events
2026-06-24 01:10:05 +00:00
FoxxMD
e998006e6c
feat(ui): Implement live updates to activity summary and details
2026-06-24 00:52:01 +00:00
FoxxMD
234fc67ab2
refactor(client): Remove unnecessary notifier dependency
2026-06-23 20:05:33 +00:00
FoxxMD
37bb507359
feat(ui): Global sse status indicator
2026-06-23 19:51:14 +00:00
FoxxMD
1237056d59
feat(ui): Implement statuses for clients
2026-06-23 19:50:54 +00:00
FoxxMD
7174702f7b
feat(ui): Implement status and state updates for sources
2026-06-23 18:44:19 +00:00
FoxxMD
3b721673c8
refactor(ui): Replace native links with react-router links
2026-06-23 16:10:52 +00:00
FoxxMD
b64f0d2dd5
fix(ui): Fix color contrast for log lines
2026-06-23 16:03:20 +00:00
FoxxMD
7738dc004a
feat(ui): Animate sleep indicator
2026-06-23 15:54:34 +00:00
FoxxMD
5c5563a917
Fix layout of state badge and status in component details
2026-06-23 15:48:32 +00:00
FoxxMD
7d08939a18
feat(ui): Implement sleeping indicator
2026-06-23 15:38:53 +00:00
FoxxMD
fabc50aa62
switch back to directdomupdates for virtuallist
2026-06-23 13:40:42 +00:00
FoxxMD
4c0615d427
finally working infinite query loading
2026-06-23 13:31:16 +00:00
FoxxMD
b4dd729150
refactor: Replace hardcoded queryopts
...
* Convert to json with deepreplacevalue
* hydrate dayjs at api boundary with generic object walker
2026-06-23 12:33:18 +00:00
FoxxMD
f336089755
fix(ui): Fix header icon
2026-06-22 20:38:28 +00:00
FoxxMD
4fc6285081
fix: remove import that not longer exists
2026-06-22 20:26:04 +00:00
FoxxMD
0cf3e33fe6
fix artist alignment
2026-06-22 20:24:39 +00:00
FoxxMD
ab424aee0d
feat(ui): Implement track/artist/album text search
2026-06-22 20:21:54 +00:00
FoxxMD
9fb55d479d
feat(ui): Add play count total and per day
2026-06-22 19:14:22 +00:00
FoxxMD
c8fb01bbab
Improvements to infinite querying
2026-06-22 18:00:00 +00:00
FoxxMD
f008c4074d
feat(ui): Implement infinite queries
2026-06-22 16:54:47 +00:00
FoxxMD
d66922c99a
Improve layout for activity summary
2026-06-22 16:16:05 +00:00
FoxxMD
c7689199cc
fix styling for filters
2026-06-22 15:21:49 +00:00
FoxxMD
9a8b6bfa09
feat(ui): wire up play filters to api
2026-06-22 14:47:44 +00:00
FoxxMD
45c8141137
with card
2026-06-20 02:34:52 +00:00
FoxxMD
4e7b3e9ceb
better styling
2026-06-20 02:30:51 +00:00
FoxxMD
dfcc9c32a8
partially working layout for filters
2026-06-20 02:17:00 +00:00
FoxxMD
a3d891aa2f
Add activity list heading
2026-06-19 20:52:46 +00:00
FoxxMD
088ae4a26a
default to virtual list
2026-06-19 20:32:16 +00:00
FoxxMD
f425b5a906
disable wdyr
...
causing issues with storybook
2026-06-19 20:11:15 +00:00
FoxxMD
a4ddaeff61
install react-compiler
2026-06-19 20:10:55 +00:00
FoxxMD
8932224b57
add why-did-you-render for debugging
2026-06-19 20:00:48 +00:00
FoxxMD
ffe2203ba5
implement virtual list with tanstack/virtual
2026-06-19 19:30:08 +00:00
FoxxMD
987819cc7c
fix missing key warnings on react nodes
2026-06-19 15:50:39 +00:00
FoxxMD
974a017e5a
feat(ui): Implement query-key-factory and activity summary fetchable
2026-06-19 15:39:58 +00:00
FoxxMD
594a59347e
refactor activity summary into own component
2026-06-19 14:09:36 +00:00
FoxxMD
b0970c6653
chore: standardize component type
2026-06-19 13:47:54 +00:00
FoxxMD
d8017dda62
fix: fix typing on api fixture for queues
2026-06-18 20:33:20 +00:00
FoxxMD
a8c3e88ec9
fix(ui): Fix progress background when in a container
2026-06-18 20:31:39 +00:00
FoxxMD
7bf31a7fc7
add chevron left button
2026-06-18 20:26:11 +00:00
FoxxMD
deb3310e3f
fix: Fix preserving play original data until it is persisted
2026-06-18 20:18:15 +00:00
FoxxMD
5450b48eb3
fix(ui): correct query args for showing plays by seen/desc
2026-06-18 20:17:50 +00:00
FoxxMD
70a94cff9b
fix(ui): Fix showing error indicator when error is null
2026-06-18 20:17:32 +00:00
FoxxMD
ff31259092
feat(ui): Implement fetchable play lists and detailed components
2026-06-18 19:41:02 +00:00
FoxxMD
8b4f1849f6
feat: Implement api endpoints for individual components, plays, and individual plays
2026-06-18 19:40:29 +00:00
FoxxMD
110ffad7d7
docs: Update atproto descriptions
2026-06-18 16:49:35 +00:00
FoxxMD
62a0670b4d
Add players to detailed source component
2026-06-18 15:54:00 +00:00
FoxxMD
7a1142fdd5
actions placeholder
2026-06-18 15:20:58 +00:00
FoxxMD
5def3cde99
fix(ui): Fix accordion context
2026-06-18 14:54:27 +00:00
FoxxMD
075fa877ed
Move player tooltip to bottom right position
2026-06-18 14:36:22 +00:00
FoxxMD
6ffb46a65a
chore: Fix storybook theming, again
2026-06-18 14:12:21 +00:00
FoxxMD
ac5f34ea5f
fix(ui): Fix width of tooltip popover
2026-06-18 14:09:48 +00:00
FoxxMD
9975f377d0
fix(ui): Fix colors in player buffer tooltip to match system colors with contrast
2026-06-18 14:05:55 +00:00
FoxxMD
76b4606d17
chore: Use system theme for storybook
2026-06-18 14:05:36 +00:00
FoxxMD
1244e0ee3e
fix(ui): Use more lenient css selectors for progress bar
2026-06-18 13:53:15 +00:00
FoxxMD
c56b16e2e6
fix: Fix auth cache validation and fallback
2026-06-18 13:43:10 +00:00
FoxxMD
831fd420ff
feat(ui): Add player buffer tooltip
2026-06-18 13:27:16 +00:00
FoxxMD
2125f92bd8
feat(ui): Implement player buffering real time positiono
2026-06-18 12:42:26 +00:00
FoxxMD
42c9383dda
partial buffered player updates working
2026-06-18 03:06:53 +00:00
FoxxMD
f5eab006f5
feat(ui): Implement buffering player progress with mui
2026-06-18 02:19:08 +00:00
FoxxMD
5a2c664fe1
fix(atproto): Fix rate limit expiration and display
2026-06-18 00:56:30 +00:00
FoxxMD
d7cbb7c9bd
fix: Fix missing implementation on test component
2026-06-17 21:22:20 +00:00
FoxxMD
8afe30bfd4
feat(ui): Implement stats, stat change indicator, and iniitial component detail
2026-06-17 21:19:18 +00:00
FoxxMD
24b67fc430
feat(ui): Implement better live stat indicators
2026-06-17 19:59:06 +00:00
FoxxMD
d01a00ad13
feat(atproto): Implement rate limit checks
2026-06-17 17:02:19 +00:00
FoxxMD
ac250eba39
feat(ui): Implement real state reporting for components
2026-06-17 14:56:47 +00:00
FoxxMD
778a2d6565
feat(ui): add activity indicator to logs panel
2026-06-17 13:57:19 +00:00
FoxxMD
0b9a7b78df
feat(ui): Live player add/remove based on sse updates
2026-06-17 13:24:23 +00:00
FoxxMD
6b93e839fa
fix(atproto): fix not throwing applogin exception
2026-06-17 01:56:55 +00:00
FoxxMD
7e6040ce7b
fix(ui): Fix accessing components before db is ready
2026-06-17 01:46:45 +00:00
FoxxMD
d4b2057c41
fix: fix nullish access of dbcomponent during testing
2026-06-17 01:44:26 +00:00
FoxxMD
bc04603fb4
fix: closest match needs id to update updatedAt
2026-06-17 01:42:37 +00:00
FoxxMD
ba2a23e039
fix: Fix app migrations table name inconsistency
2026-06-17 01:24:06 +00:00
FoxxMD
6bfe203a34
fix(atproto): Fix not throwing on applogin error
2026-06-17 01:08:40 +00:00
FoxxMD
8c6f34ebc7
fix: Guard against undefined synced reason
2026-06-17 01:05:48 +00:00
FoxxMD
18e20123c2
fix(ui): fix z-index on logs panel
2026-06-16 22:07:54 +00:00
FoxxMD
dc44f6c921
feat(ui): Implement fetchable logs with filtering
2026-06-16 20:46:51 +00:00
FoxxMD
a19fd42a5b
feat(ui): Implement float logs
2026-06-16 20:15:17 +00:00
FoxxMD
206fd62f70
feat(ui): Splitter logs
2026-06-16 19:30:12 +00:00
FoxxMD
6123503ee8
feat(ui): Implement logs component
2026-06-16 18:12:54 +00:00
FoxxMD
b751c6f5f9
feat(ui): Implement side nav
2026-06-16 15:33:55 +00:00
FoxxMD
d1ef09ba0d
feat(ui): Implement header
2026-06-15 21:08:29 +00:00
FoxxMD
d073642203
feat(ui): Implement live updates with sse
2026-06-15 19:17:50 +00:00
FoxxMD
9bb48fbf13
POC player live update
2026-06-15 17:17:08 +00:00
FoxxMD
bf8f1175ce
feat(ui): Implement static component list in app entrypoint
2026-06-15 14:43:13 +00:00
FoxxMD
4bfcc40571
poc multi page
2026-06-12 17:57:54 +00:00
FoxxMD
892d035d7a
feat(ui): Implement component summary list
2026-06-12 16:03:07 +00:00
FoxxMD
d4019e6dea
feat(ui): Implement Player and api fixtures
2026-06-11 20:48:10 +00:00
FoxxMD
3ce94f443a
feat(ui): Implement component overview and api fixtures
2026-06-11 18:55:11 +00:00
FoxxMD
b863a9773a
better optimization of activity details
2026-06-11 00:18:46 +00:00
FoxxMD
489d7d12cb
improvements to play list and story
2026-06-11 00:18:36 +00:00
FoxxMD
63c7ea7809
fea(ui): Implement tanstack-query for ActivityDetails and mock in storybook
2026-06-10 20:44:51 +00:00
FoxxMD
a6a019e9fd
activity ui improvements
2026-06-10 19:45:13 +00:00
FoxxMD
dbd1c81c90
update timelline component
...
* make activity optional with fallback loading render
* fix storybook default args with constant
2026-06-10 19:06:13 +00:00
FoxxMD
2b42b40c0a
update storybook
2026-06-10 19:05:01 +00:00
FoxxMD
4230674c2c
some ui fixes
2026-06-10 17:36:53 +00:00
FoxxMD
b0955270ba
refactor: Remove indexed prop from PlayMeta
...
* Remove indexed any prop so meta is stricter (better catching bugs)
* Implement mergeable generic with meta where we do need extra prop
* Fix bad usage of meta now that indexed prop is gone
2026-06-10 01:54:35 +00:00
FoxxMD
a194f752bb
refactor: Remove lifecycleless types
2026-06-10 01:54:35 +00:00
FoxxMD
4180ae0c6b
feat(migrations): Implement play lifecycle location migration
2026-06-10 01:54:35 +00:00
FoxxMD
3227541f34
feat(db): Add unix timestamp to database bakup file and fix test for detecting it
2026-06-10 01:54:35 +00:00
FoxxMD
e949da3830
refactor: Move all lifecycle properties to top-level Play
...
And remove lifecycle from meta
2026-06-10 01:54:35 +00:00
FoxxMD
e13d86b1d0
feat: Add more identying data to lifecycle step
2026-06-10 01:54:35 +00:00
FoxxMD
f7577c43e0
refactor: Move scrobble to top level of play object
2026-06-10 01:54:35 +00:00
FoxxMD
f3531f41ec
feat: Add creation timestamps to lifecycle data
2026-06-10 01:54:35 +00:00
FoxxMD
d9d37c68fc
Implement api fixtures
2026-06-10 01:54:35 +00:00
FoxxMD
3bb887763f
refactor: Move original play data to top-level property in play
...
* Simplifies lifecycle
* Simplifies play generation for testing
2026-06-10 01:54:35 +00:00
FoxxMD
c65504ee9f
feat(ui): Define initial API contract
2026-06-10 01:54:35 +00:00
FoxxMD
373fdb0dc2
fix(ui): Gaurd against undefined code prop
2026-06-10 01:54:35 +00:00
FoxxMD
825d0da532
fix(ui): Gaurd againast missing duration
2026-06-10 01:54:35 +00:00
FoxxMD
2efdada4c0
fix(musicbrainz): Fix default assignment of weights in stage config
...
Should not assign a default value so that stage defaults are not overriden in stage config when no explicit config is given.
Fixes #627
2026-06-10 01:41:41 +00:00
Matt Foxx
01afe9006a
Merge pull request #626 from FoxxMD/lzImport
...
fix(listenbrainz endpoint): `import` handling and error responses
2026-06-09 11:48:24 -04:00
FoxxMD
da9edb2116
feat(lzendpoint): Improved error handling
...
* Return error response when no sources found by request, or none configured
* try-catch and return well-formatted error response if source handling fails
2026-06-09 13:42:54 +00:00
FoxxMD
d5c886d718
fix(listenbrainz): Handle 'import' listen_type with multiple scrobbles
...
#625
2026-06-09 13:28:44 +00:00
FoxxMD
e99351407e
fix(musicbrainz): Fix order of release priority list
...
Should be reversed since we use index as score, so "first" in the list should have the highest index/score
#624
2026-06-08 15:38:55 +00:00
Matt Foxx
d9184fa350
Merge pull request #623 from FoxxMD/mpdArtistAssignment
...
fix(mpd): Assign empty array if artists not defined
2026-06-07 22:22:38 -04:00
Matt Foxx
e4af1e3f18
Merge pull request #619 from FoxxMD/atprotoHistory
...
feat: Implement historical scrobble querying for atproto clients
2026-06-07 11:51:33 -04:00
FoxxMD
9ca4f3fa62
fix(mpd): Assign empty array if artists not defined
...
#621
2026-06-07 15:47:43 +00:00
FoxxMD
20e3f22f3f
docs(azuracast): Add clearer guidance on station configuration and access
2026-06-05 19:55:14 +00:00
FoxxMD
bca9e195c9
feat(scrobblers): Detect sync gap and resolve sync status if filled
2026-06-05 19:10:29 +00:00
FoxxMD
8b1765cb03
fix: Fix missing type in prometheus stats
2026-06-05 15:21:34 +00:00
FoxxMD
0605cf1fd5
feat: Implement compaction prometheus statistics
2026-06-05 15:05:53 +00:00
FoxxMD
07d6487875
feat: Implement database play prometheus stats
...
* Total plays by component/state
* Total historical plays by client
2026-06-05 14:54:29 +00:00
FoxxMD
6222aa5899
fix(rocksky): Do not persist scrobble payloads as historical plays
2026-06-05 13:33:04 +00:00
FoxxMD
47f61b491e
fix: Fix tables used in historical play repository
2026-06-05 13:23:59 +00:00
FoxxMD
42818c51c1
feat(rocksky): Update configuration and document new token
2026-06-04 20:44:24 +00:00
FoxxMD
a0fee4184e
chore(rocksky): Bump version to get new exports
2026-06-04 20:23:26 +00:00
FoxxMD
470a70f951
feat(rocksky): Implement historical scrobbles
2026-06-04 20:07:08 +00:00
FoxxMD
2d2b3a6d48
feat(rocksky): Implement native sdk
2026-06-04 19:18:14 +00:00
FoxxMD
6f40dd387e
chore(atproto): Remove unused @atproto packages
2026-06-04 17:58:12 +00:00
FoxxMD
2445336ec0
refactor(atproto): Remove unused oauth implementation
...
Oauth will need a larger, ground-up rewrite if/when its eventually done. Remove the old, unusued implementation for now to reduce complexity.
2026-06-04 17:54:41 +00:00
FoxxMD
41d181e02f
refactor: Replace @atproto with @atcute for abstract/app api implementation
2026-06-04 17:50:40 +00:00
FoxxMD
ff158c99cd
refactor: Move some stateless functions out of atproto class
2026-06-04 16:05:58 +00:00
FoxxMD
c1cdcd016a
refactor: Move more atproto-generic function into abstract api base
2026-06-04 15:37:01 +00:00
FoxxMD
fcb9092f8a
refactor: Rename bluesky to atproto, classes
2026-06-04 15:14:45 +00:00
FoxxMD
ba2bd0cc8a
refactor(teal): Refactor atproto api implementation out of tight teal coupling
2026-06-04 15:12:37 +00:00
FoxxMD
f224ce6b6a
refactor: Rename bluesky to atproto
2026-06-04 14:51:49 +00:00
FoxxMD
c74678e9ef
feat(scrobbler): Improve historical scrobbler hydration
...
* Refactor post init behavior into promise so we can fallback to recent sync if full hydration fails
* This way user can still compare real time scrobble activity without full hydration
* Simplify sync status usage
* Log reason based on presence of sync error
* Always try to do full hydration if not synced
* Fix missing logging for hydration error
* Add MS-scrobbled scrobbles to historical database
2026-06-04 13:53:08 +00:00
FoxxMD
1b1770ff29
chore(release): Bump version for release
2026-06-03 19:20:22 +00:00
Matt Foxx
41d3a63c42
Merge pull request #615 from FoxxMD/artistCreditCleanup
...
fix: Add missing artist credit transforms
2026-06-03 15:07:46 -04:00
FoxxMD
52240aa13b
feat(teal): Implement historical scrobble searching for existing scrobbles and auto hydrate, or sync recent, on init
2026-06-03 19:06:26 +00:00
FoxxMD
95d7d276d7
refactor(teal): Generate and use real lexicon definitions for tealfm implementation
...
Removes hand-rolled interfaces and generates interfaces+validation for official lexicon definitions
2026-06-03 18:14:20 +00:00
FoxxMD
18c520ce2f
feat(tealfm): Stream repo CAR to monitor download progress
2026-06-03 16:33:40 +00:00
FoxxMD
fb65cb222a
fix: fix rebase conflicts
2026-06-03 16:33:33 +00:00
FoxxMD
c4f028fd2c
feat(tealfm): Implement historical scrobble hydration
2026-06-03 16:33:24 +00:00
FoxxMD
b85452f5c6
feat: Implement historical scrobble client abstract class
2026-06-03 16:32:16 +00:00
FoxxMD
6546ee3db2
Add package for atproto repo car handling
2026-06-03 16:29:57 +00:00
FoxxMD
f0e798c052
fix: Add missing artist credit transforms
...
Fixes #613
2026-06-03 13:24:32 +00:00
FoxxMD
44424f2570
fix: more logging and arg fixes after re-generating lock file
2026-06-03 13:24:10 +00:00
FoxxMD
72df520300
chore: re-generate lock file
...
* Caused by npm/cli#6301
* will make packaging for nix easier NixOS/nixpkgs#519119
2026-06-03 12:54:31 +00:00
FoxxMD
25c783051d
fix: Fix argument order for logger labels
2026-06-03 12:50:16 +00:00
FoxxMD
264bc31af6
Merge branch 'storybookRefresh'
2026-06-02 14:11:04 +00:00
FoxxMD
e0bdb8fe3c
docs: Fix typo in jriver docs
2026-06-02 12:52:09 +00:00
FoxxMD
4d7c93f7dc
fix(maloja): Fix source maloja envs
...
#610
2026-06-01 22:32:15 +00:00
FoxxMD
dd54075c52
docs: Fix bad config example for id on aio in 0.14.0 upgrade
2026-06-01 19:37:02 +00:00
FoxxMD
ff08b6327d
docs: Comment out required upgrade callout, for now
...
Unnessary information since there is nothing > 0.14.0. May confuse some users. Can uncomment after 0.14.1 or later.
2026-06-01 19:27:09 +00:00
FoxxMD
76392a9668
chore(release): Bump version for release
2026-06-01 18:45:20 +00:00
FoxxMD
f47faabf7c
docs: Remove example of caching for transform best practices
...
Example is already in the main cache configuration docs. Consolidate/remove the transform example so there is only one authorative example in the docs.
2026-06-01 17:30:56 +00:00
FoxxMD
120e280fc8
docs: More upgrade guidance for 0.14.0
2026-06-01 15:22:38 +00:00
FoxxMD
6ae80fd881
feat(docs): Update colors for regular important admonition
2026-06-01 14:51:11 +00:00
FoxxMD
be70e7074a
fix(docs): Fix css for important admonition details important type
2026-06-01 14:35:02 +00:00
Matt Foxx
65841a8c6b
Merge pull request #609 from HiiJax/fixMbIdCaps
...
fix(tealfm): trackMbid -> trackMbId
2026-06-01 08:40:14 -04:00
Jax
82374fc806
fix(tealfm): trackMbid -> trackMbId
2026-05-31 20:02:09 -04:00
FoxxMD
004400d7ea
refactor: Replace jsondiffpatch-react with @pierre/diffs
...
Good ridance.
2026-05-30 20:02:20 +00:00
FoxxMD
d54e169a14
fix for transformstep date
2026-05-30 19:05:36 +00:00
FoxxMD
31c35647dd
feat(ui): Update artist rendering to use credits
2026-05-30 19:05:36 +00:00
FoxxMD
204ee159d6
fix(ui): Update JSX namespace to fix missing ambient in react 19
2026-05-30 19:05:36 +00:00
FoxxMD
4fe1f8ced9
chore(release): Bump for beta release
2026-05-30 15:12:25 +00:00
Matt Foxx
c26e6f77f5
Merge pull request #608 from FoxxMD/nowPlayingGranular
...
refactor: Now Playing rewrite to handle realtime client updates
2026-05-30 10:59:40 -04:00
FoxxMD
e2b59900e5
fix(listenbrainz): Fix artist credit mapping for minimum track data
2026-05-30 14:59:18 +00:00
FoxxMD
c9cde11871
fix(tealfm): Missing function call to statusExpiresSoon
2026-05-29 14:45:42 +00:00
FoxxMD
ea0c75ccf3
chore: Simplify gitignore pattern for db files
2026-05-29 14:40:57 +00:00
FoxxMD
13a64bd63a
refactor(now playing): Improve now playing to generically handle clients that have real-time updates
...
* Break out player status checks and thresholds into separate functions
* Consolidate all should update functionality into shouldUpdatePlayingNow for easier testing
* Introduce realtime flag for teal/discord and check if clearing is possible/desired
* Remove equivalent functionality in individual clients
* (tealfm): Correctly set max threshold using track duration
* (tealfm): Skip clearing update if close to/after expiration time
* (tealfm): Increase min threshold to avoid spamming pds updates for pauses/skip track
2026-05-29 14:40:45 +00:00
FoxxMD
c3b23271d4
fix(now playing): Fix acessing undefined play when source player state is reported but without any data
...
598#issuecomment-4566553387
2026-05-28 17:48:05 +00:00
FoxxMD
d047c600c2
feat(tealfm): Update lexicon defs with new mbid uri format
...
teal-fm/teal#102
2026-05-28 16:13:06 +00:00
FoxxMD
b6cae4a538
fix(jellyfin): Handle string or object data for album props when parsing to play
...
#598#issuecomment-4564522030
2026-05-28 15:08:14 +00:00
FoxxMD
1eed48456c
feat: Make artist name to credit function more robust
...
* artistNameToCredit can now handle partial ArtistCredit object
* Re-use artistNameToCredit for mapping in artistNameToCredits
2026-05-28 15:07:19 +00:00
FoxxMD
20834e812e
feat: case-insensitive proxy handles spread/rest
2026-05-28 14:44:02 +00:00
FoxxMD
d1e5b11598
chore(release): Bump version for release
2026-05-28 13:05:12 +00:00
FoxxMD
c7af346daf
docs(lastfm): Document 2 week scrobble window
...
#606
2026-05-28 12:31:28 +00:00
Matt Foxx
3975edeaf3
Merge pull request #603 from HiiJax/tealfmStatus
...
feat(tealfm): Add now playing support with fm.teal.alpha.actor.status
2026-05-27 20:43:01 -04:00
Jax
119c8d7fd7
fix(tealfm): avoid nested ternary operators in status expiry
2026-05-27 20:30:25 -04:00
Jax
3a96c28b2d
fix(tealfm): status clearing, expiry, and state detection per review
2026-05-27 18:04:29 -04:00
Matt Foxx
6905853aa3
Merge pull request #604 from FoxxMD/listenRangeGuard
...
fix: Guard against old/bad cached listen range data
2026-05-27 15:52:17 -04:00
FoxxMD
3f1a952e44
fix: Guard against old/bad cached listen range data
...
#601
2026-05-27 19:25:17 +00:00
FoxxMD
405ee4f6d7
fix(scrobbler): Fix try-catch block so queued scrobble is always added, even if existing queued check fails
2026-05-27 19:24:21 +00:00
FoxxMD
34e0eaefd8
fix(scrobbler): Add migrated play to queue
...
* Utilize existing methods for added queued/dead scrobbled when migrating from cache
* Using queueScrobble fixes migration not creating queued state
* Using addDeadLetterScrobble reduces duplicated code in migration
* Drop listenranges to avoid bad cache data issue (potentially)
2026-05-27 19:19:24 +00:00
FoxxMD
6d4b617409
fix: Add missing sort order to failed/scrobbled api calls
...
#598#issuecomment-4490136917
2026-05-27 18:19:45 +00:00
Matt Foxx
4195bde081
Merge pull request #600 from nabijaczleweli/master
...
docs: u{p => t}most typo
2026-05-27 08:28:41 -04:00
Jax
925f3b916d
feat(tealfm): Add now playing support with fm.teal.alpha.actor.status
2026-05-26 05:20:31 -04:00
наб
770621ba41
docs: u{p => t}most typo
2026-05-22 20:10:45 +02:00
FoxxMD
a00e5d0dbc
feat(database): Track component last ready and last active at
2026-05-15 17:21:22 +00:00
FoxxMD
0d6d803df3
feat(database): Implement database structures needed for historical plays
2026-05-15 17:03:48 +00:00
FoxxMD
396e4b922e
docs: Overhaul kitchensink
2026-05-15 15:14:29 +00:00
FoxxMD
14ecb57210
fix(docs): Fix missing comma in discord config example
2026-05-15 15:14:12 +00:00
FoxxMD
14369836f6
feat(docs): Add more descriptive error logging for config file parsing
2026-05-15 15:13:52 +00:00
FoxxMD
70e5aaaad5
docs: update kitchensink with ids
2026-05-15 13:09:42 +00:00
FoxxMD
366e668c13
fix(docs): Fix json syntax in sample configs
2026-05-14 20:38:12 +00:00
FoxxMD
d0e842ede3
docs: Update ENV configs with ID and name
2026-05-14 20:33:34 +00:00
FoxxMD
a0c1f71162
docs: Update examples with id
2026-05-14 20:05:29 +00:00
FoxxMD
7ef159448e
feat: Improved retention policy
...
* Add ENVs for compacting
* Default compacting all data types
* Add rention guidance to docs
2026-05-14 19:48:04 +00:00
FoxxMD
b4e6ce6e78
chore(release): Bump the version beta 1 release
2026-05-14 17:40:37 +00:00
Matt Foxx
abe75869b1
Merge pull request #588 from FoxxMD/database
...
0.14.0
2026-05-14 13:35:16 -04:00
FoxxMD
38d7a9cfce
feat: Improve error type guards and ui rendering
...
* Use ErrorLike or ErrorIsh for error utilities, rather than requiring object be an Error instance
* Render error summary on dead scrobble page and have copy action include all error data
* serialize errors when sending through api
* fix error assignment for new dead scrobbles
2026-05-14 16:33:30 +00:00
FoxxMD
83a425a3d4
feat(database): Serialize errors with custom data type
2026-05-14 12:58:50 +00:00
FoxxMD
7ae727a8fe
feat(cache): Improve scrobble migration
...
* Granular persistence of successfully migrated scrobbles
* Don't delete cache after processing
* reduce logging noise and improve wording
* update upgrade wording wrt cache migration
2026-05-14 12:54:29 +00:00
FoxxMD
fe4b947d26
fix(koito): Use same now playing threshold as listenrbainz
2026-05-14 01:34:26 +00:00
FoxxMD
c5cdc465f3
fix(lastfm): Remove scrobble duration when less than 30 seconds to bypass ignored response
...
Fixes #596
2026-05-14 00:21:04 +00:00
FoxxMD
c86819b0b3
feat(database): Implement cached scrobble migration per-component
2026-05-13 21:00:33 +00:00
FoxxMD
5228d4894c
refactor: Simplify init process by using abort controller to detect if init is occurring
2026-05-13 19:55:47 +00:00
FoxxMD
e6709c442f
feat(database): Implement (with patch) migration context
...
sandrinodimattia/sqlite-up#3
2026-05-13 15:10:48 -04:00
FoxxMD
0a594d5f83
test: Tighter integration with act
2026-05-13 11:41:29 -04:00
FoxxMD
49be95a4d1
fix(database): Add gitkeep for app migrations empty folder
2026-05-13 11:33:40 -04:00
FoxxMD
fbf3af8474
feat(database): Implement app migrations
2026-05-13 14:48:57 +00:00
FoxxMD
146916bc6d
feat: Enrich artist and albumartist mbids
2026-05-12 19:01:57 +00:00
FoxxMD
a410721acf
fix(now playing): Don't update now playing if minimum play information is not met
2026-05-12 18:10:41 +00:00
FoxxMD
af5aec2ed3
port changes from pgllite branch
...
Lots of cleaned up methods and better framing if db backend ever becomes async again
2026-05-12 16:28:36 +00:00
FoxxMD
51b7b3fd40
test(database): Add 10k size stats
2026-05-12 14:52:15 +00:00
Matt Foxx
c22867a9b1
Merge pull request #594 from philocalyst/database-latest
...
Updating everything to latest
2026-05-12 10:51:14 -04:00
FoxxMD
f93c1fa4db
revert: Remove vite optimize for ansi-to-react
...
Issue was instead solved by 1f199e28ef
2026-05-12 14:46:54 +00:00
FoxxMD
1f199e28ef
fix(ui): Correct for bad ansi export
2026-05-12 14:44:11 +00:00
FoxxMD
811615dd06
fix(docs): Remove skipLibCheck and address React 19 namespace issues per package
...
* Update hast-util-to-jsx-runtime with npm override
* Re-export JSX as namespace for remaining packages with issues
May be addressed by future package updates or upgrading to docusaurus 3.10.x
2026-05-12 14:23:09 +00:00
𝑷𝒉𝒊𝒍𝒐𝒄𝒂𝒍𝒚𝒔𝒕
fc6ec840da
vite: include ansi-to-react
...
for correct ESM module export
2026-05-12 09:35:27 -04:00
𝑷𝒉𝒊𝒍𝒐𝒄𝒂𝒍𝒚𝒔𝒕
eb2159de27
docsite: added skip lib check
...
to avoid the react 19 moving errors, until these packages update.
2026-05-12 09:34:13 -04:00
𝑷𝒉𝒊𝒍𝒐𝒄𝒂𝒍𝒚𝒔𝒕
d0a490b200
deps: fix the last conflict
2026-05-11 20:49:18 -04:00
𝑷𝒉𝒊𝒍𝒐𝒄𝒂𝒍𝒚𝒔𝒕
53870ac1f2
core: migrated code to new api surface
2026-05-11 20:40:52 -04:00
𝑷𝒉𝒊𝒍𝒐𝒄𝒂𝒍𝒚𝒔𝒕
d2f8717555
client: migrated code to new api surface
2026-05-11 20:40:42 -04:00
𝑷𝒉𝒊𝒍𝒐𝒄𝒂𝒍𝒚𝒔𝒕
756d9b84e1
deps: updated to latest across the board
2026-05-11 20:40:25 -04:00
FoxxMD
a1ad250dcc
feat: Improve cache testing and cleanup cache serialization
...
* Remove ListenProgress specific serialization tests and function since its not needed anymore
* postfix tmp dirs with test name hints for easier debugging
* try to prevent filecache from leaving files behind
2026-05-08 17:30:12 +00:00
FoxxMD
f36fd16517
chore: Bump with-local-tmp-dir version
2026-05-08 17:28:47 +00:00
FoxxMD
28ade6ac28
fix: More improvements to dead scrobbler handling and rendering
...
* re-use dead scrobble removal method for clearing all
* temp fix for rendering queue errors in frontend
* properly decrement queue based on dead scrobble queue status
* display total dead on status card
2026-05-08 15:27:12 +00:00
FoxxMD
fa1051b29a
feat(client): Allow processing any dead scrobble that is not completed successfully
2026-05-08 15:22:45 +00:00
FoxxMD
3cdbfc337e
feat: Implement generic play identifier repo method
2026-05-08 15:21:56 +00:00
FoxxMD
80474a96fe
feat: Add dead scrobble delay configurable through debug env
2026-05-08 13:45:11 +00:00
FoxxMD
957db35c30
fix(ui): Gaurd against undefined Source in on failed scrobbled page
...
#588
2026-05-08 13:44:50 +00:00
FoxxMD
90f0bdb5ef
fix(client): Fix dead to queued queueName constraint in the wrong part of the query
...
Was setting all failed states to dead queue when it should have been a where condition ON dead queue name
#588
2026-05-08 13:30:30 +00:00
FoxxMD
640d944b4c
test: Add listenbrainz submit listens example requests for reference
2026-05-08 13:28:55 +00:00
FoxxMD
c7fce06480
fix(listenbrainz): Maybe fix null artist_name
...
#588
2026-05-08 03:01:45 +00:00
FoxxMD
8cffd0d068
fix: Fix resolving config globally
...
#588
2026-05-08 02:57:22 +00:00
FoxxMD
b8a9623def
fix: Add neotraverse as production dependency
2026-05-07 20:48:23 +00:00
FoxxMD
d922f37359
fix(client): Implement artistcredit conversion during cached scrobble migration
2026-05-07 20:40:44 +00:00
FoxxMD
dcc53d1656
docs: Fix links and paths
2026-05-07 20:38:21 +00:00
FoxxMD
0cb20b83b4
feat: Add ID and name envs for all sources/clients
2026-05-07 20:08:29 +00:00
FoxxMD
e814cf58fd
docs: Add upgrade path for 0.14.0
2026-05-07 18:57:08 +00:00
FoxxMD
f211a4a4c4
refactor(cache)!: Simplify cache config
...
* Reduce storage backend to valkey only (or inferred file for auth)
* Remove metadata and scrobble config options
* Simplify cache init with new config
* Add deprecation/warnings for cache ENVs
* Rewrite/simplify cache docs
2026-05-07 16:38:04 +00:00
FoxxMD
4d7162a1a4
docs: Add admonition 'important' type
2026-05-07 14:50:04 +00:00
FoxxMD
a5926d71c1
chore: Bump drizzle to lastest beta
2026-05-07 12:47:16 +00:00
FoxxMD
d95f323dc0
feat: Enrich listenbrainz and jellyfin source plays with artist mbids
2026-05-07 02:42:53 +00:00
FoxxMD
1b53d22e00
feat: Refactor artists as an object
...
Refactor from string to artist so we can support adding mbids etc. directly to artists
#425
2026-05-07 01:15:05 +00:00
FoxxMD
75c0230dae
refactor(source): Move heartbeat responsibility into source class
...
* Will allow more flexibility in startup and stopping/silencing component by user (in the future)
* Remove unused tasks
2026-05-06 20:21:26 +00:00
FoxxMD
630edd7b3f
feat(client): Make playing now scheduling part of heartbeat
2026-05-06 20:06:31 +00:00
FoxxMD
092cf907a2
refactor(client): Move heartbeat responsibility into client class
...
Will allow more flexibility in startup and stopping/silencing component by user (in the future)
2026-05-06 19:42:58 +00:00
FoxxMD
562b388e3e
feat(now playing): Reduce logging noise
...
* Refactor should play methods to return result and reason, rather than always logging reason
* Combine reasons when logging to reduce log statements
* Demote "no update" logging to TRACE, promot "update" logging to VERBOSE
2026-05-06 18:16:42 +00:00
FoxxMD
f788894494
fix(source): Remove superfluous interval logging
2026-05-06 18:15:35 +00:00
FoxxMD
d0379e1bd6
fix: Simplify and fix getting next dead scrobble
...
* Use same kind of function behavior as scrobble queue to reduce cognitive load
* Pass retries to repo method to actually get queued dead scrobbles
2026-05-06 18:14:55 +00:00
FoxxMD
5eb967f61c
test(database): Fix play fixture assignment of updatedAt
2026-05-06 16:12:28 +00:00
FoxxMD
0bf9d5e786
refactor(database): Replace relation select type with simpler built type
2026-05-06 16:04:54 +00:00
FoxxMD
102f9795f8
chore: Bump ts-essentials version
2026-05-06 16:03:50 +00:00
FoxxMD
7a7d7bb975
feat(database): Stub out jobs for later use
...
Creating the majority of it now, esp with jobId in plays table, will make later migrations/usage easier
2026-05-06 14:42:40 +00:00
FoxxMD
246e9ad7c5
chore(release): Bump version for release
2026-05-06 12:12:52 +00:00
FoxxMD
d772c8c8cd
test(database): Implement db size stats
2026-05-06 02:56:35 +00:00
FoxxMD
48b6b555c1
feat(source): Replace discovered function with existingPlay function
...
Normalizes the logic used for detected dupes/existing by using it for both sources and clients
2026-05-06 02:56:35 +00:00
FoxxMD
8be56457e2
remove debugging statement
2026-05-06 02:56:35 +00:00
FoxxMD
d9a5aa1ce0
fix: Improved retention behavior
...
* Use new updatedAt column to determine if plays should be deleted
* Update plays on already discovered to keep them from being delted
* Fix various bugs and missed awaits in retention cleanup function
2026-05-06 02:56:35 +00:00
FoxxMD
f6799955a0
fix: Fix parsing duration value from string
2026-05-06 02:56:35 +00:00
FoxxMD
077c3d33b5
fix(database): regenerate migrations with platformId removed
2026-05-06 02:56:35 +00:00
FoxxMD
524afb60a9
refactor: Remove platform-awareness for play discovery and database
...
multiplatform is still useful for memory players but is not useful for discovery and just complicates code paths.
there is no reason to discover based on platform as the Source is the smallest UoW anyway. If a play should be discovered (or not) it shouldn't matter what platform is was played on, it's all the same Source
2026-05-06 02:56:35 +00:00
FoxxMD
12ba99437c
fix: Add discovered plays with platform based on multiplatform source prop
2026-05-06 02:56:35 +00:00
FoxxMD
8882e7ab87
chore: Update to drizzle rc1
2026-05-06 02:56:35 +00:00
FoxxMD
8de382f581
feat(database): Optimize queries for scrobble range ops
2026-05-06 02:56:35 +00:00
FoxxMD
691db9215c
remove unused variable
2026-05-06 02:56:35 +00:00
FoxxMD
22c0916544
Fix counts for scrobbles/dead
2026-05-06 02:56:34 +00:00
FoxxMD
cbe996db95
feat(database): Add query params for finding plays by queue
2026-05-06 02:56:34 +00:00
FoxxMD
8fd870b9ef
Fix failed queueu updates
2026-05-06 02:56:34 +00:00
FoxxMD
272c3cc8be
feat(database): Add migration path for cached queued scrobbles
2026-05-06 02:56:34 +00:00
FoxxMD
54da8b0add
remove unused queue package
2026-05-06 02:56:34 +00:00
FoxxMD
cfb4131d5d
remove scrobbledPlays and prepare queue next query
2026-05-06 02:56:34 +00:00
FoxxMD
b8494986d5
chore: Add sqlite browser vscode extension to devcontainer
2026-05-06 02:56:34 +00:00
FoxxMD
f9f923041f
the implementation continues
2026-05-06 02:56:34 +00:00
FoxxMD
5774be1d22
Implement api response transform to old structure
2026-05-06 02:56:34 +00:00
FoxxMD
4bc460f598
feat(database): Add relational model inferred type
2026-05-06 02:56:34 +00:00
FoxxMD
0f6aa56fe5
add repository api endpoint POC
2026-05-06 02:56:34 +00:00
FoxxMD
439f0e05aa
fixes based on testing for client db impl
2026-05-06 02:56:34 +00:00
FoxxMD
952ddbdcc3
more client db impl
2026-05-06 02:56:34 +00:00
FoxxMD
765b13f910
test: Comment out scrobble caching tests
...
Not used any more with db
2026-05-06 02:56:34 +00:00
FoxxMD
47caf8de8c
more scrobble db implementation
2026-05-06 02:56:34 +00:00
FoxxMD
3c3faf22fc
more implementation for clients
2026-05-06 02:56:34 +00:00
FoxxMD
f94538ea1f
first pass on client database implementation
...
only refactored queue, need to do dead letter
2026-05-06 02:56:34 +00:00
FoxxMD
e9b2990e15
partial scrobble queue database implementation
2026-05-06 02:56:34 +00:00
FoxxMD
3ef48547a7
feat(database): Add id awareness to plays and implement basic api GET for sources
2026-05-06 02:56:34 +00:00
FoxxMD
047de49ee6
feat(database): Initial Souce database usage implementation
2026-05-06 02:56:34 +00:00
FoxxMD
2a52d1e050
fix(spotify): Fix device id default should be only device constant, not platform
2026-05-06 02:56:34 +00:00
FoxxMD
8f049a089b
feat(database): Implement discovered/scrobble count tracking
2026-05-06 02:56:34 +00:00
FoxxMD
adf6b9ed58
feat(database): Implement basic repository
2026-05-06 02:56:34 +00:00
FoxxMD
59d1050b2b
feat(database): Implement retention cleanup scheduled task
2026-05-06 02:56:34 +00:00
FoxxMD
561c62b426
fix(database): Unique constraint on uid + mode + type, not just uid
2026-05-06 02:56:34 +00:00
FoxxMD
f38f10d2a0
feat(database): Implement retention cleanup
2026-05-06 02:56:34 +00:00
FoxxMD
7aa5595cc9
feat(database): Implement component hydration as component init stage
2026-05-06 02:56:34 +00:00
FoxxMD
46389fd81d
feat(database): Add compacting config
2026-05-06 02:56:34 +00:00
FoxxMD
c0384317b1
feat(database): Implement retention options and configuration parsing
2026-05-06 02:56:34 +00:00
FoxxMD
6e66cb06a9
refactor: Remove duplicated regex functions
2026-05-06 02:56:34 +00:00
FoxxMD
cb1ff7d030
feat(database): Init and migrate database on startup
2026-05-06 02:56:34 +00:00
FoxxMD
3b5468499a
feat(database): Use asyncstorage for query logging
2026-05-06 02:56:34 +00:00
FoxxMD
c7361a8976
feat(database): Add full backup-and-migrate logic
2026-05-06 02:56:34 +00:00
FoxxMD
60a6ddbc41
feat(database): Implement drizzle logger
2026-05-06 02:56:34 +00:00
FoxxMD
92e027bfc4
feat(database): Implement finding purgable play ids
2026-05-06 02:56:34 +00:00
FoxxMD
b388ca6106
feat(database): Cascade parent id to null on play deletes
2026-05-06 02:56:34 +00:00
FoxxMD
84b43d7c39
feat(database): Implement play deletes
...
* Implement repository method
* Test that deletes cascade to relations
2026-05-06 02:56:34 +00:00
FoxxMD
99ebb53fc6
chore: Remove unusued patch for kysely
2026-05-06 02:56:34 +00:00
FoxxMD
cda33ba04f
test(database): Add component query test
2026-05-06 02:56:34 +00:00
FoxxMD
dda73cd96a
feat(database): Implement query plays by date range
2026-05-06 02:56:34 +00:00
FoxxMD
5771fbf496
feat(database): Implement repository querying
2026-05-06 02:56:34 +00:00
FoxxMD
e9d1c81380
chore: Add ts pretty errors to devcontainer extensions
2026-05-06 02:56:34 +00:00
FoxxMD
d59cb2668d
feat(database): Add basic repository and transaction support
2026-05-06 02:56:34 +00:00
FoxxMD
3c51149d9a
feat(database): More database implementation
...
* add components table
* improve typing for json columns
* fix non-nullable columns
* implement basic entity generation functions
2026-05-06 02:56:34 +00:00
FoxxMD
40234e64b3
refactor(database): Use integer for primary key and make string id as vanity id
2026-05-06 02:56:34 +00:00
FoxxMD
2df8bfe6aa
test(database): More migration tests
2026-05-06 02:56:34 +00:00
FoxxMD
fec39b2e2e
test(database): Craete pending migration and no-db test cases
2026-05-06 02:56:34 +00:00
FoxxMD
83f501df0d
add FK For parent play
2026-05-06 02:56:34 +00:00
FoxxMD
c40add7d70
feat(database): Initial database POC implementation
...
Using drizzle
2026-05-06 02:56:34 +00:00
FoxxMD
569c5a8690
fix(spotify): Fix stale state updated at timestamp
2026-05-06 02:56:21 +00:00
FoxxMD
11f7299c0e
fix(transform): Fix using cache to return transformed play
...
Should be caching transformed data instead of play so that "old" plays aren't returned for repeated tracks
2026-05-06 02:40:58 +00:00
Matt Foxx
8a6ae698a1
Merge pull request #587 from FoxxMD/lastfmConnectTimeout
...
fix(lastfm): Increase connection test timeout for slow networks
2026-05-05 17:49:39 -04:00
FoxxMD
d6ed03028d
fix(lastfm): Increase connection test timeout for slow networks
2026-05-05 20:59:05 +00:00
FoxxMD
2818d1d275
chore: add lib folder and future db files to gitignore
2026-05-05 16:54:33 +00:00
FoxxMD
8127e4b6ce
fix: Use correct gh pages link for replacement
2026-05-05 14:44:00 +00:00
FoxxMD
8e829a53b5
ci: Replace canonical bash command with js script that is more readable and maintainable
2026-05-05 14:39:09 +00:00
FoxxMD
1562f8bffc
chore: Fix contributing link in PR template
2026-05-05 12:19:57 +00:00
FoxxMD
e04514f6a1
chore(release): Bump version for release
2026-05-05 11:46:16 +00:00
FoxxMD
00e9755fb1
chore: Override rate-limit-threshold to use new version with reduced dependencies
...
Borewit/rate-limit-threshold#110
2026-05-05 11:46:16 +00:00
Matt Foxx
5ba4729f83
Merge pull request #585 from FoxxMD/webscrobblerPathFix
...
fix(webscrobbler): Convert express wildcard path to regex
2026-05-04 16:54:13 -04:00
FoxxMD
e5df4f2752
docs: Remove extra dupe detection section from client overview
...
Direct to new dupe guidance page instead
2026-05-04 18:28:08 +00:00
FoxxMD
d11db4cb8d
docs: Add duplicate scrobble guidance
...
#582
2026-05-04 18:18:09 +00:00
FoxxMD
14f5f60c11
ci: add canonical search-replace reference comment
2026-05-04 18:15:49 +00:00
FoxxMD
4d7eadbd38
fix(webscrobbler): Convert express wildcard path to regex
...
New path wildcard from expressjs 5 doesn't seem to work. Use tried and try regex instead
Fixes #583
2026-05-04 14:01:02 +00:00
Matt Foxx
747b62289a
Merge pull request #577 from FoxxMD/stalePlayerImprovement
...
feat: Improve stale player behavior
2026-05-04 09:05:54 -04:00
Matt Foxx
1eeb5e6b08
Merge pull request #580 from FoxxMD/lzEndpointRouteImprovements
...
Lz endpoint route improvements
2026-05-02 16:24:21 -04:00
FoxxMD
ac01348266
docs: try to replace canonical urls for github.io with new site
2026-05-02 04:08:03 +00:00
FoxxMD
3028f83d47
fix(discord): Workaround activity minimum character limit
...
#578
2026-05-01 18:56:36 +00:00
FoxxMD
a02d43acea
feat(discord): Implement fallback to release group art if present
...
#578
2026-05-01 18:43:09 +00:00
FoxxMD
c7679a0a62
docs: Fix missing backticks causing template errors on version equality
2026-05-01 16:56:01 +00:00
Gabe Farrell
d11ac3d6ed
chore: Remove references to KOITO_ALLOWED_HOSTS ( #581 )
...
* chore: update and correct references to KOITO_ALLOWED_HOSTS
* remove protocol from host
* make it clear env belongs to koito
2026-05-01 12:47:17 -04:00
Matt Foxx
8a09c91713
Merge pull request #565 from FoxxMD/lastfmCleanup
...
Lastfm cleanup
2026-05-01 12:39:19 -04:00
FoxxMD
81d24f1753
fix(transformer): try-catch cached steps and fallback to non-cache generation
...
#578
2026-05-01 15:14:35 +00:00
FoxxMD
5be12aab15
fix(cache): Explicitly define auth/metadata as memory when testing file caching
2026-05-01 15:14:11 +00:00
FoxxMD
47c600ed8d
feat(endpointlz): Implement proper username handling for validate and now-playing routes
2026-05-01 14:07:43 +00:00
FoxxMD
5f84fefd5d
feat(endpointlz): Add stubbed playing-now route to make some clients happy(er)
...
#579
2026-05-01 13:11:39 +00:00
FoxxMD
a143aa4193
fix(endpointlz): Fix fallback route not returning a response
...
#579
2026-05-01 13:10:41 +00:00
FoxxMD
23a3dfa5d1
fix: Workaround for old play structure
2026-05-01 00:01:50 +00:00
Matt Foxx
3005d36db0
Merge pull request #575 from FoxxMD/mpdPosition
...
fix(mpd): Improve position tracking
2026-04-30 18:58:45 -04:00
FoxxMD
ada9d70be9
docs(mpd): Add permission guidance
2026-04-30 22:54:57 +00:00
FoxxMD
9d839db2e1
feat(mpd): Rewrite with newer MPD client for better payload parsing #574
...
mpd-api was missing fields and had inconsistent data.
mpd-js is actually typed and returns better parsed data.
2026-04-30 22:50:09 +00:00
FoxxMD
ca20b23fbc
fix(now playing): Prefer fresher players
...
* Don't keep sticky now playing if the player has gone stale/orphaned
* When multiple players are present, prefer those that are not stale/orphaned
#480
2026-04-30 17:39:31 +00:00
FoxxMD
577cff3abf
test(player): Fix incorrect variable used for advanced timestamp
2026-04-30 17:20:27 +00:00
FoxxMD
c4786bdfe2
fix(player): Initialize player state in the past to prevent false positive on stale update check if update happens at the same time player is initialized
2026-04-30 17:19:48 +00:00
FoxxMD
df0da7054c
feat(player): Skip stale updates based on state timestamp and prevent dead players from being created from stale updates
...
#480
2026-04-30 16:39:03 +00:00
FoxxMD
272a336a22
feat(source): Add timestamps to play state to track player and play last updated, if present
2026-04-30 16:38:04 +00:00
Matt Foxx
ec4a51074e
Merge pull request #570 from FoxxMD/fixListenRange
...
Fix listen range
2026-04-22 13:27:32 -04:00
FoxxMD
5a4bcb2949
fix(discord): Include known spotify cdn for media providers #569
2026-04-22 13:46:38 +00:00
FoxxMD
77387c292b
refactor: Replace fast-deep-equal with fast-equals
...
fast-deep-equal is abandoned and has bugs that are fixed in fast-equals
Potentially fixes #569
2026-04-22 13:43:14 +00:00
FoxxMD
4caf1c8cdb
fix: Fix missing await on stagger mapper initial sleep
2026-04-22 13:40:29 +00:00
FoxxMD
981805aa96
fix: Simplify listenrange usage
...
* Use and return only plain PlayProgress on player state finish
* Removes the need to serialize/deserialize ListenProgress class and compare/persist toad scheduler or timeout functions
* Potentially fixes timeout comparison stack error #569
2026-04-22 13:40:00 +00:00
FoxxMD
60e3242c44
fix: Check undefined on correct property
...
#567
2026-04-19 21:34:42 +00:00
FoxxMD
e7e1417b0b
ci: Add Cloudflare Pages hook trigger to docs deployment
2026-04-17 18:56:47 +00:00
FoxxMD
bf765be174
docs: order BASE_SITE first to allow overriding other envs
2026-04-17 18:30:22 +00:00
FoxxMD
e27c301932
docs: Add base site env detection for cloudflare pages
2026-04-17 18:22:45 +00:00
FoxxMD
fc4606585d
fix(lastfm): Fix total results reporting for librefm
2026-04-17 16:14:30 +00:00
FoxxMD
fd80101a7a
feat(lastfm): Add more logging to auth process and clean up host detection
2026-04-17 16:05:39 +00:00
FoxxMD
2cbc5542d1
chore(release): Bump version for release
2026-04-17 13:24:45 +00:00
Matt Foxx
6f15f15722
Merge pull request #563 from FoxxMD/middlewareFix
...
fix: Web endpoint fix
2026-04-17 09:22:25 -04:00
FoxxMD
ff1d9248c6
fix: Add missing next() invocation
...
#561
2026-04-17 12:52:48 +00:00
FoxxMD
218ece8f5c
fix(vite): Allow requests from anywhere during dev
2026-04-17 12:49:55 +00:00
FoxxMD
3adac7c6e0
docs: Improve updating guidance
2026-04-16 13:29:34 +00:00
FoxxMD
1c78da7985
chore(release): Bump verion for release
2026-04-16 12:26:39 +00:00
FoxxMD
457279465c
ci: Add build date to image build workflow
2026-04-16 02:05:53 +00:00
FoxxMD
d551c8563f
feat(docker): Add proper opencontainer labels
2026-04-16 02:05:38 +00:00
FoxxMD
75bd4a04d6
fix(transform): Fix uninitialized logger
2026-04-15 20:34:40 +00:00
FoxxMD
339232c368
perf(transform): Defer logger creation until after it is determined a hook will be used
2026-04-15 18:40:21 +00:00
Matt Foxx
8741ff25ea
Merge pull request #557 from Druidblack/master
...
update for Yandex music
2026-04-11 00:04:24 -04:00
Druidblack
8a952cb576
error correction at startup.
2026-04-09 22:32:19 +03:00
Druidblack
eeb55aa02e
added multiPlatform
...
added multiPlatform and support for receiving data from Yandex smart speakers
2026-04-09 22:31:18 +03:00
Druidblack
6a81fc1be2
Update ymbridge.json.example
2026-04-09 22:28:32 +03:00
FoxxMD
a47e2a6242
docs: Update editUrl
2026-04-09 15:45:29 +00:00
FoxxMD
dadaa6df35
ci: reduce dependabot npm updates to security only
...
Version updates are too big and unhelpful
2026-04-09 14:35:51 +00:00
FoxxMD
fb19191209
ci: Update node version for sanity test
2026-04-09 14:08:58 +00:00
Matt Foxx
2f53a60da1
Merge pull request #548 from FoxxMD/express5
...
chore: Update to expressjs 5
2026-04-09 09:34:29 -04:00
FoxxMD
ab2f397fab
refactor: update express types related packages
2026-04-09 13:21:50 +00:00
FoxxMD
db2dd8fb8b
refactor: Refactor wildcard path usage for express5
2026-04-09 13:16:56 +00:00
FoxxMD
135439f509
fix(scrobbler): Fix stagger map generation variable usage
2026-04-09 13:16:33 +00:00
FoxxMD
d743b849fe
refactor: replace awaitjs/express with express usage
2026-04-09 13:04:47 +00:00
FoxxMD
9885768cad
refactor: Install expressjs@5
2026-04-09 12:58:09 +00:00
FoxxMD
c6e6bbb87b
chore: Override awaitjs/express types to fix peer dependency conflict
2026-04-09 12:53:53 +00:00
FoxxMD
bbc2351ebc
ci: Fix npm groups to apply only by version/security
...
Some @types dev packages are tied to prod packages, cant really spearate them.
2026-04-09 12:30:52 +00:00
FoxxMD
b547db9045
ci: group gha version updates
2026-04-09 12:25:09 +00:00
Matt Foxx
28c2e9873a
Merge pull request #537 from FoxxMD/dependabot/github_actions/actions/download-artifact-8.0.1
...
chore(deps): bump actions/download-artifact from 4.3.0 to 8.0.1
2026-04-09 08:20:39 -04:00
Matt Foxx
6bcd3f9516
Merge pull request #536 from FoxxMD/dependabot/github_actions/actions/upload-artifact-7.0.0
...
chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.0
2026-04-09 08:16:49 -04:00
Matt Foxx
11b2632d02
Merge pull request #538 from FoxxMD/dependabot/github_actions/docker/metadata-action-6.0.0
...
chore(deps): bump docker/metadata-action from 5.9.0 to 6.0.0
2026-04-08 23:51:10 -04:00
Matt Foxx
fb6dbe307d
Merge pull request #539 from FoxxMD/dependabot/github_actions/marocchino/sticky-pull-request-comment-3.0.3
...
chore(deps): bump marocchino/sticky-pull-request-comment from 2.9.4 to 3.0.3
2026-04-08 23:50:13 -04:00
FoxxMD
2474b792c3
ci: try wildcard on github actions
2026-04-09 03:39:12 +00:00
FoxxMD
3007c949a0
ci: Group github action dependabot updates
2026-04-09 03:35:21 +00:00
dependabot[bot]
63533534df
chore(deps): bump marocchino/sticky-pull-request-comment
...
Bumps [marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment ) from 2.9.4 to 3.0.3.
- [Release notes](https://github.com/marocchino/sticky-pull-request-comment/releases )
- [Commits](https://github.com/marocchino/sticky-pull-request-comment/compare/773744901bac0e8cbb5a0dc842800d45e9b2b405...d4d6b0936434b21bc8345ad45a440c5f7d2c40ff )
---
updated-dependencies:
- dependency-name: marocchino/sticky-pull-request-comment
dependency-version: 3.0.3
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-09 03:32:57 +00:00
dependabot[bot]
5c03062976
chore(deps): bump docker/metadata-action from 5.9.0 to 6.0.0
...
Bumps [docker/metadata-action](https://github.com/docker/metadata-action ) from 5.9.0 to 6.0.0.
- [Release notes](https://github.com/docker/metadata-action/releases )
- [Commits](https://github.com/docker/metadata-action/compare/318604b99e75e41977312d83839a89be02ca4893...030e881283bb7a6894de51c315a6bfe6a94e05cf )
---
updated-dependencies:
- dependency-name: docker/metadata-action
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-09 03:32:53 +00:00
dependabot[bot]
dbe41fa5ab
chore(deps): bump actions/download-artifact from 4.3.0 to 8.0.1
...
Bumps [actions/download-artifact](https://github.com/actions/download-artifact ) from 4.3.0 to 8.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases )
- [Commits](https://github.com/actions/download-artifact/compare/d3f86a106a0bac45b974a628896c90dbdf5c8093...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c )
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: 8.0.1
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-09 03:32:49 +00:00
dependabot[bot]
5454f817e5
chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.0
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 4.6.2 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/ea165f8d65b6e75b540449e92b4886f43607fa02...bbbca2ddaa5d8feaa63e36b76fdaad77386f024f )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-09 03:32:44 +00:00
FoxxMD
8d8f8260b5
ci: Back to one object with multiple directories
2026-04-09 03:31:53 +00:00
FoxxMD
62bb00571f
ci: Group dependabot updates
2026-04-09 03:12:32 +00:00
FoxxMD
c10537d658
sync package-lock.json
2026-04-09 02:55:47 +00:00
FoxxMD
e9ccc319e9
try to get dependabot to use a specific npm version
2026-04-09 02:55:02 +00:00
FoxxMD
54803c6ef9
feat(docker): Make colored console output the default
...
Can be turned off by setting COLORED_STD=false in any environment
2026-04-09 02:35:40 +00:00
FoxxMD
a3d37a864a
chore: Update tsx dependency
2026-04-09 02:34:48 +00:00
Matt Foxx
394570e5a3
Merge pull request #529 from FoxxMD/fontendDevPackages
...
refactor: Reduce docker image size by moving frontend packages to devDependencies
2026-04-08 22:33:37 -04:00
FoxxMD
2bbfdf424f
refactor: further removal of frontend package to devDependencies
2026-04-09 02:20:01 +00:00
FoxxMD
9785ad6ba7
refactor: Remove unused react-dom imports
2026-04-09 02:19:20 +00:00
FoxxMD
fe7d77c03d
fix(docker): Ignore dist folder
2026-04-09 02:19:00 +00:00
FoxxMD
0e7aa92f5b
refactor: Reduce docker image by moving frontend packages to devDependencies
...
They are bundled by vite/esbuild into /dist folder, shouldn't need to keep them in node_modules
2026-04-09 01:48:08 +00:00
FoxxMD
2ff80283b9
fix: Build vite-express config based on production env to avoid making vite fallback to development (somehow)
2026-04-09 01:27:22 +00:00
FoxxMD
4f34b1a055
feat(docker): use prune-mod to remove unneeded files in image
2026-04-08 20:58:18 +00:00
FoxxMD
4effdd6df5
refactor(docker): Improve image size by removing some icon folders
2026-04-08 20:39:56 +00:00
FoxxMD
af3ce9dea7
fix(docker): Fix missing patches/tsconfig for docs on docker build
2026-04-08 20:39:56 +00:00
Matt Foxx
f0c5cb524f
Merge pull request #527 from FoxxMD/docusaurusSocialCardNew
...
docs: Generate social cards per page
2026-04-08 15:48:04 -04:00
FoxxMD
46883384b6
docs: Use netlify deploy url if present
2026-04-08 19:46:00 +00:00
FoxxMD
7bc5ab3d0f
docs: Specify source for ambiguous components
2026-04-08 19:31:50 +00:00
FoxxMD
fd15d15124
dcs: First pass at more descriptive social card text
2026-04-08 19:30:02 +00:00
FoxxMD
14da0795f1
docs: Finalize a working social card strategy
...
* Helper script to build a static font
* Move all image rendering code into own folder
* Simplify generated text to description OR title
* Use text-wrap balance to make it look prettier
* Add tagline and increase font sizes to fill card dimensions
2026-04-08 19:14:43 +00:00
FoxxMD
3faf0ee7f9
social cards working but need descriptions in each front matter
2026-04-07 15:13:23 +00:00
FoxxMD
78ddb15dcf
almost working
...
svg still doesn't render
2026-04-07 14:14:25 +00:00
FoxxMD
760373c227
docs: Replace instances of foxxmd.github.io
2026-04-07 12:44:41 +00:00
FoxxMD
6bb7b17e97
docs: Update readme with new doc site base url
2026-04-07 12:39:41 +00:00
FoxxMD
231156d452
docs: fix base site env usage
2026-04-07 12:32:31 +00:00
FoxxMD
d85628b4c9
docs: Add BASE_SITE env
2026-04-07 12:27:33 +00:00
FoxxMD
db0e74aec3
feat(client): Strict ENV types
2026-04-06 20:10:25 +00:00
FoxxMD
a918a96d34
feat(sources): Better type enforcement
2026-04-06 20:07:30 +00:00
FoxxMD
bb51915085
feat: Increase transform play concurrency
...
Since MB rate limiting is done by api calient we can safely increase number of plays transformed without risking MB errors from rate limits
2026-04-06 19:12:19 +00:00
Matt Foxx
7c177dfe03
Merge pull request #521 from FoxxMD/processingOverhaul
...
refactor: Overhaul long-running processes
2026-04-06 15:11:11 -04:00
Matt Foxx
cf5e7ca1fe
Merge pull request #523 from Druidblack/master
...
feat: Add Yandex Music source
2026-04-06 14:58:11 -04:00
Druidblack
fd43ff86c8
added NO_DEVICE and NO_USER
2026-04-06 21:36:21 +03:00
FoxxMD
194a0e78ff
ci: Update checkout and setup-node versions due to node deprecation
2026-04-06 18:28:00 +00:00
FoxxMD
04027e87e7
ci: fix step if statement
2026-04-06 18:04:22 +00:00
FoxxMD
a998060bca
ci: Add docs repo dispatch
2026-04-06 18:01:10 +00:00
Druidblack
5b16e8857e
Removed optional settings
2026-04-06 20:57:36 +03:00
FoxxMD
c53ce7c517
docs: Update analytics
2026-04-06 17:03:43 +00:00
FoxxMD
7897dc9503
docs: Add Yandex Music Source docs
2026-04-06 15:04:56 +00:00
Matt Foxx
160ddac3e4
Merge pull request #524 from FoxxMD/docusaursUpdateAndFix
...
Docusaurs update and fix
2026-04-06 10:35:58 -04:00
FoxxMD
59b4f27294
fix dep changes in wrong file
2026-04-06 14:34:33 +00:00
FoxxMD
21f42bf45b
try to trigger netlify
2026-04-06 14:28:08 +00:00
FoxxMD
3e8f170f9a
chore(docs): Move markdown link warn into non-deprecated setting
2026-04-06 14:24:27 +00:00
FoxxMD
15fbed09a5
fix(docs): Override lodash to fix assignWith error
...
https://github.com/lodash/lodash/issues/6167#issuecomment-4172977775
2026-04-06 14:24:10 +00:00
FoxxMD
52b301e729
feat(docs): Update docusaurus to 3.9.2
2026-04-06 14:23:40 +00:00
FoxxMD
0bef197521
feat(yandex): Add env source config
2026-04-06 14:06:05 +00:00
FoxxMD
f16750609a
feat(yandex): Handle bridge errors as upstream with some response context
2026-04-06 13:58:43 +00:00
FoxxMD
c39ef29597
fix: Add missing type to sourcestatusdata
2026-04-06 13:48:49 +00:00
FoxxMD
72639616b7
fix(jellyfin): Fix typo on devicesBlock env assignment #522
2026-04-06 12:53:04 +00:00
Druidblack
effe870104
fix time track
...
fixed the calculation of the track playback if it has ended and the new ones have not started.
2026-04-05 20:56:18 +03:00
Druidblack
ee753389f7
Add files via upload
2026-04-05 19:36:13 +03:00
Druidblack
5f4a5cb815
add yandex music
2026-04-05 19:35:00 +03:00
FoxxMD
0607aedf04
feat(musicbrainz): Handle rate limiting within api calls
...
Instead of using staggerMap with MB transformer settings, handle at api call level for each host
2026-04-02 21:23:26 +00:00
FoxxMD
1f165096b3
feat(client): make scrobble processing abortable
2026-04-02 19:42:59 +00:00
FoxxMD
fb6f6a18c8
feat(source): Make discover abortable
2026-04-02 18:41:45 +00:00
FoxxMD
03f8b20704
refactor: Implement abortable source polling
...
Use abort-controller-x with signals to interrupt polling process
#483
2026-04-02 18:36:20 +00:00
FoxxMD
c49cdba718
fix: Initialize plays in correct scope
2026-04-02 01:29:56 +00:00
FoxxMD
de67879af5
test: Make loop stop wait time configurable so tests run faster/more stable
2026-04-01 17:10:59 +00:00
FoxxMD
9d0cf8f845
feat: Implement dispose methods for classes with schedulers and long running async tasks
2026-04-01 17:10:25 +00:00
Matt Foxx
8d9fd11c79
Merge pull request #519 from FoxxMD/nodeVersionBump
...
chore!: Bump node to 24
2026-04-01 11:30:57 -04:00
FoxxMD
745343c589
chore!: Bump node to 24
...
No breaking changes for MS but local installs will need to update node version
2026-04-01 15:23:40 +00:00
FoxxMD
e5935c38da
ci: try to force dependabot to use npm 11.12.1
2026-04-01 14:30:44 +00:00
FoxxMD
cac13fa3da
fix: Align dockefile and devcontainer node/npm versions to fix lockfile mismatch
...
Mismatch causes npm ci in docker build to error
2026-04-01 13:57:04 +00:00
FoxxMD
ca4803713e
chore: Update node/npm engine constraints in package.json
2026-04-01 13:16:49 +00:00
FoxxMD
e53dd55ad8
chore: Remove unused testing libraries and fix storybook version
...
* Unusued libraries adding a ton of dependencies for functionality that is not used (yet)
* Need to fix storybook version because 10.3 is unstable
2026-04-01 12:59:08 +00:00
FoxxMD
1f2772353a
fix: Fix circular dependency in error utils
2026-04-01 12:59:08 +00:00
Matt Foxx
78b48107a0
Merge pull request #517 from FoxxMD/dependabot/npm_and_yarn/npm_and_yarn-369bcfe21d
...
chore(deps): bump the npm_and_yarn group across 2 directories with 25 updates
2026-04-01 08:22:07 -04:00
dependabot[bot]
bd00055ae5
chore(deps): bump the npm_and_yarn group across 2 directories with 25 updates
...
Bumps the npm_and_yarn group with 21 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ajv](https://github.com/ajv-validator/ajv ) | `8.17.1` | `8.18.0` |
| [ajv](https://github.com/ajv-validator/ajv ) | `6.12.6` | `6.14.0` |
| [formidable](https://github.com/node-formidable/formidable ) | `3.5.2` | `3.5.4` |
| [formidable](https://github.com/node-formidable/formidable ) | `2.1.2` | `2.1.5` |
| [glob](https://github.com/isaacs/node-glob ) | `11.0.0` | `11.1.0` |
| [glob](https://github.com/isaacs/node-glob ) | `10.4.5` | `10.5.0` |
| [undici](https://github.com/nodejs/undici ) | `6.22.0` | `6.24.1` |
| [undici](https://github.com/nodejs/undici ) | `7.10.0` | `7.24.6` |
| [undici](https://github.com/nodejs/undici ) | `6.21.3` | `6.24.1` |
| [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core ) | `10.2.0` | `10.3.3` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) | `5.4.10` | `5.4.21` |
| [brace-expansion](https://github.com/juliangruber/brace-expansion ) | `1.1.11` | `1.1.13` |
| [minimatch](https://github.com/isaacs/minimatch ) | `3.1.2` | `3.1.5` |
| [picomatch](https://github.com/micromatch/picomatch ) | `2.3.1` | `2.3.2` |
| [axios](https://github.com/axios/axios ) | `1.11.0` | `1.14.0` |
| [qs](https://github.com/ljharb/qs ) | `6.13.0` | `6.15.0` |
| [yaml](https://github.com/eemeli/yaml ) | `1.10.2` | `1.10.3` |
| [flatted](https://github.com/WebReflection/flatted ) | `3.3.3` | `3.4.2` |
| [immutable](https://github.com/immutable-js/immutable-js ) | `5.1.4` | `5.1.5` |
| [js-yaml](https://github.com/nodeca/js-yaml ) | `4.1.0` | `4.1.1` |
| [jws](https://github.com/brianloveswords/node-jws ) | `4.0.0` | `4.0.1` |
| [lodash](https://github.com/lodash/lodash ) | `4.17.21` | `4.18.0` |
| [on-headers](https://github.com/jshttp/on-headers ) | `1.0.2` | `1.1.0` |
| [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router ) | `6.27.0` | `6.30.3` |
| [rollup](https://github.com/rollup/rollup ) | `4.24.3` | `4.60.1` |
| [tmp](https://github.com/raszi/node-tmp ) | `0.0.33` | `0.2.5` |
Bumps the npm_and_yarn group with 13 updates in the /docsite directory:
| Package | From | To |
| --- | --- | --- |
| [undici](https://github.com/nodejs/undici ) | `6.21.1` | `6.24.1` |
| [brace-expansion](https://github.com/juliangruber/brace-expansion ) | `1.1.11` | `1.1.13` |
| [minimatch](https://github.com/isaacs/minimatch ) | `3.1.2` | `3.1.5` |
| [picomatch](https://github.com/micromatch/picomatch ) | `2.3.1` | `2.3.2` |
| [yaml](https://github.com/eemeli/yaml ) | `2.8.2` | `2.8.3` |
| [immutable](https://github.com/immutable-js/immutable-js ) | `5.1.4` | `5.1.5` |
| [js-yaml](https://github.com/nodeca/js-yaml ) | `3.14.1` | `3.14.2` |
| [lodash](https://github.com/lodash/lodash ) | `4.17.21` | `4.18.0` |
| [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast ) | `13.2.0` | `13.2.1` |
| [on-headers](https://github.com/jshttp/on-headers ) | `1.0.2` | `1.1.0` |
| [node-forge](https://github.com/digitalbazaar/forge ) | `1.3.1` | `1.4.0` |
| [svgo](https://github.com/svg/svgo ) | `3.3.2` | `3.3.3` |
| [webpack](https://github.com/webpack/webpack ) | `5.97.1` | `5.105.4` |
Updates `ajv` from 8.17.1 to 8.18.0
- [Release notes](https://github.com/ajv-validator/ajv/releases )
- [Commits](https://github.com/ajv-validator/ajv/compare/v8.17.1...v8.18.0 )
Updates `ajv` from 6.12.6 to 6.14.0
- [Release notes](https://github.com/ajv-validator/ajv/releases )
- [Commits](https://github.com/ajv-validator/ajv/compare/v8.17.1...v8.18.0 )
Updates `formidable` from 3.5.2 to 3.5.4
- [Release notes](https://github.com/node-formidable/formidable/releases )
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md )
- [Commits](https://github.com/node-formidable/formidable/commits )
Updates `formidable` from 2.1.2 to 2.1.5
- [Release notes](https://github.com/node-formidable/formidable/releases )
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md )
- [Commits](https://github.com/node-formidable/formidable/commits )
Updates `glob` from 11.0.0 to 11.1.0
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md )
- [Commits](https://github.com/isaacs/node-glob/compare/v11.0.0...v11.1.0 )
Updates `glob` from 10.4.5 to 10.5.0
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md )
- [Commits](https://github.com/isaacs/node-glob/compare/v11.0.0...v11.1.0 )
Updates `undici` from 6.22.0 to 6.24.1
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v6.22.0...v6.24.1 )
Updates `undici` from 7.10.0 to 7.24.6
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v6.22.0...v6.24.1 )
Updates `undici` from 6.21.3 to 6.24.1
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v6.22.0...v6.24.1 )
Updates `storybook` from 10.2.0 to 10.3.3
- [Release notes](https://github.com/storybookjs/storybook/releases )
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md )
- [Commits](https://github.com/storybookjs/storybook/commits/v10.3.3/code/core )
Updates `vite` from 5.4.10 to 5.4.21
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v5.4.21/packages/vite )
Updates `brace-expansion` from 1.1.11 to 1.1.13
- [Release notes](https://github.com/juliangruber/brace-expansion/releases )
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.13 )
Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md )
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5 )
Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases )
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md )
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2 )
Updates `axios` from 1.11.0 to 1.14.0
- [Release notes](https://github.com/axios/axios/releases )
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md )
- [Commits](https://github.com/axios/axios/compare/v1.11.0...v1.14.0 )
Updates `qs` from 6.13.0 to 6.15.0
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/ljharb/qs/compare/v6.13.0...v6.15.0 )
Updates `yaml` from 1.10.2 to 1.10.3
- [Release notes](https://github.com/eemeli/yaml/releases )
- [Commits](https://github.com/eemeli/yaml/compare/v1.10.2...v1.10.3 )
Updates `flatted` from 3.3.3 to 3.4.2
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2 )
Updates `immutable` from 5.1.4 to 5.1.5
- [Release notes](https://github.com/immutable-js/immutable-js/releases )
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md )
- [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.4...v5.1.5 )
Updates `js-yaml` from 4.1.0 to 4.1.1
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1 )
Updates `jws` from 4.0.0 to 4.0.1
- [Release notes](https://github.com/brianloveswords/node-jws/releases )
- [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md )
- [Commits](https://github.com/brianloveswords/node-jws/compare/v4.0.0...v4.0.1 )
Updates `lodash` from 4.17.21 to 4.18.0
- [Release notes](https://github.com/lodash/lodash/releases )
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.18.0 )
Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases )
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md )
- [Commits](https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0 )
Updates `react-router` from 6.27.0 to 6.30.3
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/react-router@6.30.3/packages/react-router/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/react-router@6.30.3/packages/react-router )
Updates `rollup` from 4.24.3 to 4.60.1
- [Release notes](https://github.com/rollup/rollup/releases )
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rollup/rollup/compare/v4.24.3...v4.60.1 )
Updates `tmp` from 0.0.33 to 0.2.5
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md )
- [Commits](https://github.com/raszi/node-tmp/compare/v0.0.33...v0.2.5 )
Updates `undici` from 6.21.1 to 6.24.1
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v6.22.0...v6.24.1 )
Updates `brace-expansion` from 1.1.11 to 1.1.13
- [Release notes](https://github.com/juliangruber/brace-expansion/releases )
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.13 )
Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md )
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5 )
Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases )
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md )
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2 )
Updates `yaml` from 2.8.2 to 2.8.3
- [Release notes](https://github.com/eemeli/yaml/releases )
- [Commits](https://github.com/eemeli/yaml/compare/v1.10.2...v1.10.3 )
Updates `immutable` from 5.1.4 to 5.1.5
- [Release notes](https://github.com/immutable-js/immutable-js/releases )
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md )
- [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.4...v5.1.5 )
Updates `js-yaml` from 3.14.1 to 3.14.2
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1 )
Updates `lodash` from 4.17.21 to 4.18.0
- [Release notes](https://github.com/lodash/lodash/releases )
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.18.0 )
Updates `mdast-util-to-hast` from 13.2.0 to 13.2.1
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases )
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1 )
Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases )
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md )
- [Commits](https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0 )
Updates `node-forge` from 1.3.1 to 1.4.0
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md )
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.1...v1.4.0 )
Updates `svgo` from 3.3.2 to 3.3.3
- [Release notes](https://github.com/svg/svgo/releases )
- [Commits](https://github.com/svg/svgo/compare/v3.3.2...v3.3.3 )
Updates `webpack` from 5.97.1 to 5.105.4
- [Release notes](https://github.com/webpack/webpack/releases )
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md )
- [Commits](https://github.com/webpack/webpack/compare/v5.97.1...v5.105.4 )
---
updated-dependencies:
- dependency-name: ajv
dependency-version: 8.18.0
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: ajv
dependency-version: 6.14.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: formidable
dependency-version: 3.5.4
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: formidable
dependency-version: 2.1.5
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: glob
dependency-version: 11.1.0
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: glob
dependency-version: 10.5.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: undici
dependency-version: 6.24.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: undici
dependency-version: 7.24.6
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: undici
dependency-version: 6.24.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: storybook
dependency-version: 10.3.3
dependency-type: direct:development
dependency-group: npm_and_yarn
- dependency-name: vite
dependency-version: 5.4.21
dependency-type: direct:development
dependency-group: npm_and_yarn
- dependency-name: brace-expansion
dependency-version: 1.1.13
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: minimatch
dependency-version: 3.1.5
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: axios
dependency-version: 1.14.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: qs
dependency-version: 6.15.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: yaml
dependency-version: 1.10.3
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: flatted
dependency-version: 3.4.2
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: immutable
dependency-version: 5.1.5
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: js-yaml
dependency-version: 4.1.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: jws
dependency-version: 4.0.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: lodash
dependency-version: 4.18.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: on-headers
dependency-version: 1.1.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: react-router
dependency-version: 6.30.3
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: rollup
dependency-version: 4.60.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: tmp
dependency-version: 0.2.5
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: undici
dependency-version: 6.24.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: brace-expansion
dependency-version: 1.1.13
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: minimatch
dependency-version: 3.1.5
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: picomatch
dependency-version: 2.3.2
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: yaml
dependency-version: 2.8.3
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: immutable
dependency-version: 5.1.5
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: js-yaml
dependency-version: 3.14.2
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: lodash
dependency-version: 4.18.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: mdast-util-to-hast
dependency-version: 13.2.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: on-headers
dependency-version: 1.1.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: node-forge
dependency-version: 1.4.0
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: svgo
dependency-version: 3.3.3
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: webpack
dependency-version: 5.105.4
dependency-type: indirect
dependency-group: npm_and_yarn
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-31 20:31:04 +00:00
FoxxMD
b174b23b3b
fix: re-install missing dependencies introduced by dependabot
2026-03-31 20:07:34 +00:00
Matt Foxx
9e6319ee73
Configure Dependabot for npm and docker updates
...
Updated package ecosystems for Dependabot to include npm and docker.
2026-03-31 15:59:51 -04:00
Matt Foxx
6b5b3990cd
Merge pull request #511 from FoxxMD/dependabot/npm_and_yarn/npm_and_yarn-6582722f31
...
chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates
2026-03-31 15:53:42 -04:00
dependabot[bot]
f2465f0f88
chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates
...
Bumps the npm_and_yarn group with 1 update in the / directory: [express](https://github.com/expressjs/express ).
Bumps the npm_and_yarn group with 2 updates in the /docsite directory: [express](https://github.com/expressjs/express ) and [path-to-regexp](https://github.com/pillarjs/path-to-regexp ).
Updates `express` from 4.21.1 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases )
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md )
- [Commits](https://github.com/expressjs/express/compare/4.21.1...v4.22.1 )
Updates `path-to-regexp` from 0.1.10 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases )
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md )
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13 )
Updates `express` from 4.21.1 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases )
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md )
- [Commits](https://github.com/expressjs/express/compare/4.21.1...v4.22.1 )
Updates `path-to-regexp` from 0.1.10 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases )
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md )
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13 )
Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases )
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md )
- [Commits](https://github.com/expressjs/express/compare/4.21.1...v4.22.1 )
Updates `path-to-regexp` from 0.1.12 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases )
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md )
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13 )
Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases )
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md )
- [Commits](https://github.com/expressjs/express/compare/4.21.1...v4.22.1 )
Updates `path-to-regexp` from 0.1.12 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases )
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md )
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13 )
---
updated-dependencies:
- dependency-name: express
dependency-version: 4.22.1
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: path-to-regexp
dependency-version: 0.1.13
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: express
dependency-version: 4.22.1
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: path-to-regexp
dependency-version: 0.1.13
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: express
dependency-version: 4.22.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: path-to-regexp
dependency-version: 0.1.13
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: express
dependency-version: 4.22.1
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: path-to-regexp
dependency-version: 0.1.13
dependency-type: indirect
dependency-group: npm_and_yarn
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-31 19:50:21 +00:00
FoxxMD
c68ec8dbf6
chore: Remove unused nyc dependency
2026-03-31 19:46:03 +00:00
FoxxMD
6e1cdba58c
chore(release): Bump version for release
2026-03-31 14:45:29 +00:00
FoxxMD
df4bb27d3a
docs: Add music assistant to readme
2026-03-31 14:44:43 +00:00
FoxxMD
de7707b45a
docs: Simplify installation
...
* Remove docker run
* Condense docker settings into tabs
2026-03-31 14:43:42 +00:00
FoxxMD
c884b4776c
docs: Add grafana dashboard
2026-03-31 14:06:19 +00:00
FoxxMD
0893b62f3b
docs: Fix discord link on jellyfin page
2026-03-31 14:06:19 +00:00
FoxxMD
7d071c763d
docs: Add more caching guidance
2026-03-31 14:06:19 +00:00
Matt Foxx
664395a0ee
Merge pull request #508 from FoxxMD/cacheAusterity
...
feat: Reduce cache memory usage
2026-03-31 09:01:46 -04:00
FoxxMD
007d553d59
fix missed ttl for mb tests
2026-03-30 19:24:57 +00:00
FoxxMD
7c8c185c4c
refactor: Remove ttl from mb api to ensure primary/secondary ttl is used correctly
2026-03-30 18:59:37 +00:00
FoxxMD
972eccd0bf
cache init cleanup
2026-03-30 18:50:54 +00:00
Matt Foxx
034cfe7a8e
Merge pull request #509 from FoxxMD/netlifyPreview
...
Netlify preview
2026-03-30 11:25:10 -04:00
FoxxMD
7a8cf7c004
feat: Skip fetching backlogged plays entirely if scrobbleBacklog=false
2026-03-29 23:50:55 +00:00
FoxxMD
30cdc9f553
docs: Add prometheus usage
2026-03-29 23:50:55 +00:00
Matt Foxx
3f19abb899
Merge pull request #506 from FoxxMD/musicAssistant
...
Music assistant
2026-03-29 19:30:50 -04:00
FoxxMD
a601757759
docs: Add netlify badge to footer on preview docs
2026-03-28 22:16:02 +00:00
FoxxMD
fe03bcd651
refactor: Refactor cache building to be able to specify both primary and secondary
2026-03-28 21:36:18 +00:00
FoxxMD
1f319cb9f6
fix: Use lifecycle invariant play for closest match
2026-03-28 02:01:14 +00:00
FoxxMD
a0ac0f8e46
reduce step ttl to 2 minutes
2026-03-27 20:30:48 +00:00
FoxxMD
06945fda52
feat: Improve cache stats
...
* Remove vsize since its very inaccurate
* Use memory store `size` for count, if present
2026-03-27 20:30:32 +00:00
FoxxMD
306c4c858e
fix: Only enable metrics collection for real runs
2026-03-27 18:51:00 +00:00
FoxxMD
81885632a0
feat: Add cache stats to prometheus metrics
2026-03-27 18:45:30 +00:00
FoxxMD
23467481c1
docs: Add prometheus usage
2026-03-27 17:47:15 +00:00
Matt Foxx
e716de2160
Add Contributor Covenant Code of Conduct
...
This document outlines the Contributor Covenant Code of Conduct, including our pledge, standards, enforcement responsibilities, and guidelines for community behavior.
2026-03-27 13:15:33 -04:00
FoxxMD
dda06a0873
add chunk array function
2026-03-27 16:08:47 +00:00
FoxxMD
eca64d68e7
fix(musicbrainz): Catch recordings with no releases
2026-03-27 16:06:43 +00:00
Matt Foxx
1065643b23
Merge pull request #493 from FoxxMD/deadScrobbleImprovements
...
feat: Dead scrobble improvements
2026-03-26 08:58:31 -04:00
FoxxMD
d92153f85f
fix: Fix sleep time between consecutive dead scrobble attempts
2026-03-26 08:40:16 -04:00
FoxxMD
22d76c459a
fix(scrobble): Improve ui/api experience for dead scrobble processing
...
* Return 200 when processing all, don't wait to finish to prevent response timeout
* Use event stream to update/remove/add dead scrobbles in ui
#489
2026-03-26 08:40:16 -04:00
FoxxMD
ec87ab96d6
fix(scrobble): Improve dead scrobble iteration and logging
...
* Use filtered, processable scrobbles in for-loop to avoid any weird in-place array splice issues when iterating
* Add more logging with labels/ids to make logging more readable
* Move dead scrobble removal function closer blocks where it should happen
2026-03-26 08:40:13 -04:00
FoxxMD
f62fe270fb
feat(scrobble): Increase default dead letter retries from 1 to 3
...
#488
2026-03-26 08:36:54 -04:00
Matt Foxx
677474beed
Merge pull request #504 from FoxxMD/transformStepCachingFix
...
fix: transform step usage and caching fix
2026-03-25 23:27:23 -04:00
FoxxMD
cb9dd0fbc5
docs: Add Music Assistant to lz endpoint docs
2026-03-25 20:20:50 +00:00
FoxxMD
0685d4b06d
feat(lzendpoint): Update json body parsing to support Music Assistant
2026-03-25 20:19:29 +00:00
FoxxMD
82c0a4faec
fix: Refactor play tranforming to dogfood steps and fix caching #495
...
* Re-use lifecycle steps/patch to build diffs
* Break out step generation into own function to simplify logic
* Cache steps instead of play to avoid returning a cached play when data is the same #495
* Replace patch object/patching logic with json-diff-ts as its more robust and actually maintained
* Reduces need to stringify everywhere due to lack of cloning in jsonpatchdiff
2026-03-25 18:48:47 +00:00
FoxxMD
ccbd5e304a
fix: Better handling when stage fails but should continue
2026-03-25 10:13:06 -04:00
FoxxMD
4f81a192fa
Merge branch 'storybook'
2026-03-24 21:39:22 -04:00
FoxxMD
22cf95e58c
feat(listenbrainz): Use upstream for backlogged
2026-03-25 01:37:54 +00:00
FoxxMD
358355c612
refactor: Move stagger config responsibility to transformer
2026-03-25 00:41:10 +00:00
FoxxMD
c5f9600047
docs: Add duplicate scrobble detection explanation
2026-03-24 23:54:55 +00:00
Matt Foxx
703731e654
Merge pull request #501 from FoxxMD/storybook
...
More UI
2026-03-24 16:39:38 -04:00
FoxxMD
0dfa4c7aad
fix(test): Fix expected plays for YTM interim plays
2026-03-24 20:23:47 +00:00
FoxxMD
68e473ec02
fix: Add stagger options as injected dependency to make tests faster
2026-03-24 20:21:14 +00:00
FoxxMD
a8d20734aa
fix: Fix wrong operation for maxRandomStagger
2026-03-24 20:20:37 +00:00
FoxxMD
ebdb76cf6c
fix: Fix type-erased meta property for json plays
2026-03-24 20:19:27 +00:00
FoxxMD
e62e1ac2dd
feat: Add seenAt to source/client play meta
2026-03-24 19:38:05 +00:00
FoxxMD
e68b46f647
feat(ui): Implement play activity sortby seen/played
2026-03-24 19:15:54 +00:00
FoxxMD
7605cd3f1d
virtualization is messy and plain accordian works better
2026-03-24 18:56:07 +00:00
FoxxMD
2735c283ce
virtualized activity log
2026-03-24 17:47:51 +00:00
FoxxMD
0daaec81ca
feat(ui): Add more info to play data
2026-03-24 01:22:39 +00:00
FoxxMD
2085df4406
feat(ui): Dynamic expand/collapse all
2026-03-24 00:16:57 +00:00
FoxxMD
9b8664d3a3
feat(ui): Condense timeline items into title using collapsible
2026-03-24 00:02:42 +00:00
FoxxMD
e027a33e8d
feat(ui): Play Data rows for better use of wide viewports
2026-03-23 18:56:50 +00:00
FoxxMD
f04a19d34d
feat(ui): Add flow and step state to timeline
2026-03-23 18:32:28 +00:00
FoxxMD
4b27671a91
feat: Add step and flow result to lifecycle
2026-03-23 18:32:12 +00:00
FoxxMD
5f4943e025
fix(ui): Fix keys
2026-03-20 20:47:38 +00:00
FoxxMD
66cdb94d57
feat(ui): Add lifecycle step story and fix diff rendering
2026-03-20 20:39:35 +00:00
FoxxMD
5ebb0e6a9c
refactor: Separating functions so they are usuable by frontend storybook
2026-03-20 19:33:09 +00:00
FoxxMD
dfb7f43c00
feat: Implement play with lifecycle fixture
2026-03-20 18:24:04 +00:00
FoxxMD
ed85d35117
feat: Implement random object generator
2026-03-20 16:31:19 +00:00
FoxxMD
7d69e77ac6
Implement proper play conversion for frontend/backend testing
...
Convert to json-equivalent object, and back, without needing json stringify/parse
2026-03-20 15:22:53 +00:00
FoxxMD
03973d215b
refactor: Fix JsonPlayObject to properly type dates
2026-03-20 14:00:17 +00:00
Matt Foxx
1b182d89cd
Merge pull request #498 from FoxxMD/storybook
...
feat: Add storybook and initial ui design POC
2026-03-20 09:40:48 -04:00
FoxxMD
3d5c2c7450
fix: Remove schema-plugin types hint from docusaurus config
2026-03-20 13:31:51 +00:00
FoxxMD
d6264dd994
chore: ignore storybook folders for docker image
2026-03-20 13:31:33 +00:00
FoxxMD
4c18123207
refactor: Move some utils into core folder
2026-03-20 13:29:23 +00:00
FoxxMD
71e7f41ea5
more ui improvements
2026-03-20 01:02:25 +00:00
FoxxMD
60cf5d1019
feat(ui): Hide text-heavy elements for small mobile
2026-03-19 21:11:11 +00:00
FoxxMD
3977057dfa
more tweaks
2026-03-19 20:36:48 +00:00
FoxxMD
943bdc3e88
feat(ui): Improve play data
2026-03-19 20:23:15 +00:00
FoxxMD
44710048f4
feat(ui): Integrate timeline into activity detail
2026-03-19 19:48:22 +00:00
FoxxMD
9f9f5655b1
feat(ui): Implement scrobble action
2026-03-19 18:38:39 +00:00
FoxxMD
e621811364
feat(ui): Implement duplicate match check
2026-03-19 18:10:26 +00:00
FoxxMD
685bc846e8
feat(ui): Implement transform steps
2026-03-19 17:36:02 +00:00
FoxxMD
3a9d58fae9
feat(ui): Implement error stack and more things
2026-03-19 02:07:09 +00:00
FoxxMD
33639c6e4c
more improvements
2026-03-18 20:59:53 +00:00
FoxxMD
7c235e3179
feat(ui): Add PlayInfo to list
2026-03-18 20:29:39 +00:00
FoxxMD
559d749207
feat(ui): More activity log improvements
2026-03-18 20:12:01 +00:00
FoxxMD
53feae0f8c
more imrovements
2026-03-18 19:04:51 +00:00
FoxxMD
0941ccc0ac
improved list layout
2026-03-18 18:33:16 +00:00
FoxxMD
82ecd96ba4
Containerized playinfo
2026-03-18 18:19:38 +00:00
FoxxMD
e118dc5db1
Better args default for stories
2026-03-18 18:19:27 +00:00
FoxxMD
1a23491ac2
feat(ui): Set max height for code block with scrolling
2026-03-18 17:56:38 +00:00
FoxxMD
d916f167a5
feat(ui): Implement code block toggle for play info
2026-03-18 17:35:43 +00:00
FoxxMD
0102249549
feat(ui): Implement PlayInfo component
2026-03-18 16:44:17 +00:00
FoxxMD
2ca96dab42
Init storybook with chakra-ui
2026-03-18 10:25:20 -04:00
FoxxMD
345e60b7a3
chore(release): Bump version for release
2026-03-16 13:33:06 +00:00
Matt Foxx
b9fb6c9d35
Merge pull request #487 from FoxxMD/jsonView
...
feat(docs): Implement rich config exploration and interaction
2026-03-13 15:00:29 -04:00
FoxxMD
5d0ccd8867
docs: re-nable AIO config display as read-only on mobile
2026-03-13 14:52:29 -04:00
FoxxMD
b36f484f3b
chore: Add netlify-specific build command
2026-03-13 14:52:29 -04:00
FoxxMD
d2f7f986c7
Add gitkeep for schema folder
2026-03-13 14:52:29 -04:00
FoxxMD
9137d03b9f
use genericonfiguration component for remaining client/sources
2026-03-13 14:52:29 -04:00
FoxxMD
f6c0d13a8b
feat(docs): Implement config example/structure guidance
2026-03-13 14:52:17 -04:00
FoxxMD
c472b4e33a
refactor: reorganized and consolidate source/client types
2026-03-13 14:52:17 -04:00
FoxxMD
f6c3fc6b50
refactor(docs): replace docusaurus json-schema-plugin
...
* Use cf-json-schema-viz for schema viewer
* Use modern-react-json-editor for editing
2026-03-13 14:50:39 -04:00
FoxxMD
8ba146495e
feat(jellyin): Add external URL guidance
...
#486
2026-03-12 14:00:59 +00:00
Matt Foxx
68c46fefb2
Merge pull request #471 from FoxxMD/componentPagination
...
feat: Implement pagination fetching for component listen data
2026-03-12 08:46:36 -04:00
Matt Foxx
eddda41559
Merge pull request #473 from owendaprile/push-ovmumqzwvmqx
...
fix(plex): Also read MBIDs from `guid` field
2026-03-11 14:08:36 -04:00
FoxxMD
5945fdc2ef
docs(spotify): Add premium account guidance
...
#485
2026-03-11 17:59:27 +00:00
FoxxMD
d110dcbdcf
fix(sources): Add a confidence signal to plays generated from authoratiative sources to avoid fuzzy matching repeats
...
https://github.com/FoxxMD/multi-scrobbler/issues/430#issuecomment-4035670777
2026-03-11 13:54:24 +00:00
Owen D'Aprile
ebc0aa8a4e
fix(plex): Also read MBIDs from guid field
...
Some items on Plex store the MBID in the `guid` field in the `Metadata`
response, not in the `Guid` field. This change checks the `guid` field
as a fallback if the `Guid` field is not set.
2026-03-10 20:24:25 -04:00
FoxxMD
d4113b464a
feat(scrobbler): Improved dupe detection
...
* Check queue before adding so that previously cached or re-discovered plays from a source are not added multiple times to the queue (should only be unique plays)
* Add timestamp heuristic to dupe matching -- if score is *close* to matching and timestamp is *exact* then nudge it into a match
2026-03-10 20:37:14 +00:00
FoxxMD
753dfe1fb3
feat: Implement better request retry logic
...
* Use p-retry to standard retry behavior
* Simplify/remove other own-rolled retry logic
* Fix superagent request instantiation
* Requests are mutable, cannot be retried once executed. Need to make a new request for each retry
2026-03-10 19:47:42 +00:00
FoxxMD
013cccaac5
add more logging for discord now playing update logic
2026-03-10 16:43:49 +00:00
FoxxMD
504f8ffbeb
refactor(source): Reduce logging noise for activity checks
...
Move most activity checks to TRACE log level to reduce noise at DEBUG level
2026-03-10 16:06:55 +00:00
FoxxMD
81d1eb2553
feat(ui): Default logs to trace
2026-03-10 15:33:54 +00:00
FoxxMD
c9327b0e92
fix(lastfm): Default to not including now playing in history response
...
Scrobbler getScrobblesForTimeRange function isn't aware of the context and we only want now playing for the Source impl anyway.
Fixes not scrobbling play because it is also now playing which mathced existing scrobble logic.
https://github.com/FoxxMD/multi-scrobbler/issues/430#issuecomment-4031615361
2026-03-10 15:00:13 +00:00
FoxxMD
36aa236d82
use TRACE for cache file loading chunk logging
2026-03-09 19:44:58 +00:00
FoxxMD
3c37aa4449
fix(lastfm): Fix not returning nowPlaying scrobble
2026-03-09 18:39:33 +00:00
FoxxMD
f1bf3cbe64
fix(nowPlaying): Scrobbler should report now playing if player state is known nowPlayingMode source
...
#477#issuecomment-4022857648
2026-03-09 18:39:11 +00:00
FoxxMD
17a9356040
fix: Handle historical scrobble fetch failure
...
* Don't cache error
* Handle error with logging and put scrobble into dead queue (or increment retries on dead)
2026-03-09 16:47:11 +00:00
FoxxMD
97c799bf2c
refactor: Re-implement retry logic for LZ with fixed request init
2026-03-09 16:46:10 +00:00
FoxxMD
99c02daec7
fix(koito): Assign cursor to page param
2026-03-09 16:45:30 +00:00
FoxxMD
4cb792641d
fix(pagination): Assign cursor on initial request and properly catch errors to add request parameter logging
2026-03-09 16:45:13 +00:00
FoxxMD
fbc2950854
fix upstream scrobble tests
2026-03-06 20:47:04 +00:00
FoxxMD
08e0bdb437
feat(scrobbler): re-implement scrobble preload
...
Use a limit/maxFetch upper limit to return a bulk of scrobbles by count, rather than timerange, so that backlogged scrobbles are less likely to cause many fetches on first startup
2026-03-06 20:28:22 +00:00
FoxxMD
73dcab4de1
fix(scrobbler): Fix ttl for timerange cahe and missing awaits
2026-03-06 19:42:15 +00:00
FoxxMD
00594a14ed
feat: Implement timerange consolidation
2026-03-06 19:41:54 +00:00
FoxxMD
52d5bab0f5
Implement noop logger
2026-03-06 19:40:50 +00:00
FoxxMD
a41f4c56f7
feat(scrobbler): Implement play-dependent, arbitrary timerange fetching for duplicate checks
...
* Remove design bias towards "recent" scrobbles with limited timerange and complex shouldRefresh logic
* Replace with logic to fetch scrobbles from timeranges that are relevant to queued/dead scrobbles
* timeranges are grouped by closely timestamped queued scrobbles
* timeranges are cached based on staleAfter
2026-03-06 16:57:09 +00:00
Matt Foxx
8ea83962d6
Merge pull request #482 from FoxxMD/namedTransformFix
...
fix(transform): Fixes for user transform and transform selection
2026-03-06 08:15:34 -05:00
FoxxMD
9d97cc6e4c
fix(transform): Fix transform for stage not using name for selection #481
2026-03-05 15:49:51 +00:00
FoxxMD
023579de9a
refactor(atproto): Replace naive TID impl with @ewanc26/tid
2026-03-04 21:00:35 +00:00
FoxxMD
214d99f1c3
fix(lastfm): Check for singular scrobble response
2026-03-04 21:00:35 +00:00
FoxxMD
d6fc6b9b10
debug for lastfm list type
2026-03-04 21:00:35 +00:00
FoxxMD
cbdab93f92
refactor(tealfm): Replace TID package to avoid node-gyp dependency
2026-03-04 21:00:35 +00:00
FoxxMD
abf37f0687
refactor(spotify): use listen timerange fetcher
2026-03-04 21:00:35 +00:00
FoxxMD
e993a43399
refactor: Implement generic cursor iteration
2026-03-04 21:00:35 +00:00
FoxxMD
bc79969fd0
refactor(maloja): use listen timerange fetcher
2026-03-04 21:00:35 +00:00
FoxxMD
801f9ed403
refactor(koito): Use listen timerange fetcher
2026-03-04 21:00:34 +00:00
FoxxMD
3d9f6f8f58
refactor(lastfm): Use listen timerange fetcher
2026-03-04 21:00:34 +00:00
FoxxMD
c2676fb620
refactor(listenbrainz): Use listen timerange fetcher
2026-03-04 21:00:34 +00:00
FoxxMD
cdb4ab23e9
refactor(listenbrainz)!: Remove Koito support
...
Koito functionality has diverged enough that it doesn't make sense to provide partial support via LZ components.
This also makes timerange pagination easier.
2026-03-04 21:00:33 +00:00
FoxxMD
b3217f2d9c
mostly implemented time range fetch utility
2026-03-04 20:59:52 +00:00
FoxxMD
7b61385ad5
implement time range scrobbles for teal
2026-03-04 20:59:52 +00:00
FoxxMD
b5c86e74ad
more pagination implementation
2026-03-04 20:59:51 +00:00
FoxxMD
a3031a7eb9
Somewhat working
...
Stole pagination from FoxxMD/multi-scrobbler#390
2026-03-04 20:59:32 +00:00
FoxxMD
7c49a0535f
fix typings
2026-03-04 20:36:35 +00:00
FoxxMD
797e5b0794
feat(scrobbler): Add dupe match debug information to lifecycle
2026-03-04 20:30:03 +00:00
FoxxMD
bc6cd78c86
refactor: Implement alreadyScrobbled in base class
...
None of the child classes use a different implementation. DRY
2026-03-04 18:40:27 +00:00
FoxxMD
98a5b40be5
refactor: Use trace logging for defaults
...
* All logger use trace as minimum level
* Force app log stream to trace minimum so we always show all possible logs in dashboard
* Add trace level to dashboard
* Make dashboard start in debug logs for readability
2026-03-04 18:22:41 +00:00
FoxxMD
87c174fe0f
chore: exclude schema folder from search
2026-03-04 15:52:49 +00:00
Matt Foxx
0cbb45e4ad
Merge pull request #478 from FoxxMD/discordHangingStatus
...
fix(discord): Add hidden activity type
2026-03-04 10:41:11 -05:00
FoxxMD
b11226af94
fix(discord): Don't throw on unknown activity type
...
This isn't used for filtering anymore so its not necessary to validate to a known activity
2026-03-04 15:40:14 +00:00
Matt Foxx
27dc5b5e19
Merge pull request #479 from FoxxMD/userTransformDefaults
...
fix(transform): Fix missing defaults assignment for stage config parsing
2026-03-04 08:12:58 -05:00
FoxxMD
d892b83110
fix(transform): Fix user transform default value
2026-03-03 22:00:42 +00:00
FoxxMD
c28984524a
fix(transform): Fix missing defaults assignment for stage config parsing
2026-03-03 21:04:40 +00:00
FoxxMD
5d4fb63baa
fix(discord): Add hidden activity type
...
Fixes #477
2026-03-03 13:50:14 +00:00
FoxxMD
ca2574d1e5
Add comment pointing to JF source on MB ids
2026-03-02 15:45:43 +00:00
FoxxMD
758038e278
fix: Missed dependency bump
2026-02-27 16:57:24 +00:00
FoxxMD
cb803b1a24
feat: Use lower minimum log level to prepare for logging cleanup
2026-02-27 16:51:30 +00:00
FoxxMD
c985af5722
docs: Add discord to readme
2026-02-27 14:19:41 +00:00
FoxxMD
1ede54acbb
docs: Fix broken links and anchors
2026-02-27 14:18:50 +00:00
FoxxMD
a73ca6a95d
feat(ui): Add service status page link to dashboard
2026-02-27 02:45:12 +00:00
FoxxMD
25f4095276
chore(release): Bump version
2026-02-26 20:37:22 +00:00
FoxxMD
d242c133dd
docs(faq): Add connection/dns guidance
2026-02-26 19:39:51 +00:00
FoxxMD
da3e8044b7
docs: Add status page to monitoring section
2026-02-26 19:23:58 +00:00
FoxxMD
b6d5939fbf
chore: Add kasm service as extenable compose file for dev
2026-02-26 19:12:21 +00:00
FoxxMD
d23ef88647
docs(discord): Clearer wording on user token usage
2026-02-26 17:21:48 +00:00
FoxxMD
f374f130de
fix(discord): Kasm improvements
...
* Fix permissions in compose example
* Better wording in advantages/disadvantages
2026-02-26 17:21:30 +00:00
FoxxMD
b0c2c8611b
docs(discord): Use named volume for kasmcord
2026-02-26 02:16:43 +00:00
FoxxMD
6f6f56ce64
docs(discord): Reorganize discord app container instructions and improve art examples
2026-02-26 02:06:21 +00:00
FoxxMD
4b28ec4b3a
fix(discord): wrong protocol comparison
2026-02-25 21:14:12 +00:00
FoxxMD
d189084c15
feat(discord): Implement retry for cover art api
2026-02-25 20:56:19 +00:00
FoxxMD
975d9540bc
docs(discord): Update kasmcord with persistent config volume
2026-02-25 20:18:41 +00:00
FoxxMD
212bfba950
docs(discord): Add discord container instructions
2026-02-25 19:19:31 +00:00
FoxxMD
619e32cd83
feat(discord): Add more logging for cover art acquistion
2026-02-25 19:17:09 +00:00
FoxxMD
ce9ff53ae1
feat(discord): Add debug log when no cover art found
2026-02-25 19:07:39 +00:00
FoxxMD
d13fb33884
docs(discord): Improved discord app docs
2026-02-25 16:31:55 +00:00
FoxxMD
253e91250f
fix(discord): Patch IPC client to catch socket error
2026-02-25 02:54:18 +00:00
FoxxMD
b23668372b
feat(discord): Correct position timestamp based on player last update time #468
2026-02-24 20:07:31 +00:00
FoxxMD
5b847c136e
fix(discord): Don't queue scrobbles
2026-02-24 19:03:25 +00:00
FoxxMD
0d304a793d
fix(scrobblers): Don't queue now playing data if scrobbler is not ready
2026-02-24 18:46:02 +00:00
FoxxMD
906e1a1a19
fix(discord): Stop scrobbler and set as auth failure on invalid client from IPC
2026-02-24 18:45:43 +00:00
FoxxMD
87f46f1e02
Improve failure mode handling for IPC discord
...
* Set auth failure on 4000 from server (invalid client id)
* Better logging for connection issues
* Don't fail on connect so we can keep retrying on MS activity
2026-02-24 18:31:46 +00:00
FoxxMD
56b4be1fe1
QoL features for discord-rpc library
...
* Add keepAlive to so close events actually happen
* DEBUG log human readable payload rather than hex
2026-02-24 18:28:37 +00:00
FoxxMD
a08dcf05f1
refactor(discord): Remove activity filtering
...
https://github.com/FoxxMD/multi-scrobbler/issues/468#issuecomment-3952116123
2026-02-24 15:13:28 +00:00
FoxxMD
460882f6c1
fix(discord): wrong eqaulity for token check
2026-02-24 13:31:41 +00:00
FoxxMD
71fc94ba63
Missing category
2026-02-23 22:32:24 +00:00
FoxxMD
b587d834bc
docs: Add discord local/headless docs
2026-02-23 22:31:33 +00:00
FoxxMD
9b63e022ed
Don't require media proxy for IPC
2026-02-23 21:15:37 +00:00
FoxxMD
324cbd76ee
refator(discord): Move client init to build stage with more logging
2026-02-23 21:03:58 +00:00
FoxxMD
ceab13f672
refactor(discord): Consolidate shared functionality
2026-02-23 20:47:22 +00:00
FoxxMD
10e17ed239
Initial IPC implementation
2026-02-23 20:15:21 +00:00
FoxxMD
4f84479513
fix: Fix labels for MS heartbeat task
2026-02-23 16:42:18 +00:00
FoxxMD
216ad4ed32
fix(discord): Stabalize heartbeat interval and logging
...
* Refactor sequence and gateway receive logging as labels
* Use timeout instead of interval for heartbeat to try to fix weird speedup
2026-02-23 16:42:18 +00:00
FoxxMD
85e4555322
fix(discord): Even more reconnect handling improvements
...
* Fix reconnect logic and ready state clearing
* Clearer and less noisy logging
* Delay clearing activities for convience on quick reconnect
2026-02-20 16:59:03 +00:00
FoxxMD
a90e443a88
faster heartbeat for safety
2026-02-19 17:25:24 +00:00
FoxxMD
a9c54b5f91
refactor(discord): More connection logic improvements
...
* Handle connect and auth separately so it can be restarted by scrobble heartbeat
* make ms-initiated reconnect use manual close/open since isosockets won't
* better error handling for auth/connection init stages
* send heartbeats even if not authed
2026-02-19 17:23:38 +00:00
FoxxMD
6d21435aab
fix(discord): Use iso-websockets reconnect and workaround initial connection issues
2026-02-19 16:32:59 +00:00
FoxxMD
9c3bb11a66
more discord ws logging
2026-02-19 14:28:16 +00:00
FoxxMD
d983080584
fix(discord): Fix config logging for artwork
2026-02-18 19:40:46 +00:00
FoxxMD
852b96009c
docs cleanup
2026-02-18 18:13:54 +00:00
FoxxMD
c82617d857
docs(discord): Update artwork guidance for cover art archive
2026-02-18 17:19:08 +00:00
FoxxMD
6f19256187
feat(discord): Use release mbid to get coverart if fallback would otherwise be used
2026-02-18 16:16:46 +00:00
FoxxMD
479ede334b
fix(transform): Use temporally-invariant hash comparison
...
Fixes not using transform hashes due to user listening data on discover or for playing now data
2026-02-18 16:16:05 +00:00
FoxxMD
e1349255de
feat(scrobblers): Run preCompare transform hook on playing now data
2026-02-18 16:15:10 +00:00
FoxxMD
4a600dc01d
Make art its own type
2026-02-18 15:27:09 +00:00
FoxxMD
315256ce96
feat(musicbrainz): Implement CoverArtArchive API
2026-02-18 15:25:14 +00:00
Matt Foxx
bbead20723
Merge pull request #472 from FoxxMD/discordPresence
...
feat: Discord rich presence
2026-02-17 16:35:30 -05:00
FoxxMD
bb77c1c0bb
feat(discord): Use artwork url if its from a known domain
2026-02-17 21:28:53 +00:00
FoxxMD
2a2fb9ad55
refactor(discord): Update links and art
...
* Use pocike icon for placeholder art
* Use MS logo for small art with link to docs
* Use web link as track url, if available
* Use MB link as track or artist url
2026-02-17 21:05:26 +00:00
FoxxMD
ea5b66cdae
fix(discord): Fix ajv not liking defaultUrl string | false
2026-02-17 20:16:50 +00:00
FoxxMD
1a978c7ee3
fix: Fix config validation error source
2026-02-17 20:13:11 +00:00
FoxxMD
cfd458f463
docs(discord): Improve artwork url guidance and application id
2026-02-17 20:12:49 +00:00
FoxxMD
61b8277822
feat(discord): Add actionable links for public URLs and musicbrainz
...
Add links to album art and/or small image if application id enabled
2026-02-17 19:05:17 +00:00
FoxxMD
53c8036e34
feat(discord): Add more presence configuration options
2026-02-16 21:08:23 +00:00
FoxxMD
f5c8ce5109
more now playing fixes and improvements
2026-02-16 21:08:06 +00:00
FoxxMD
17b11f19a3
feat(nowplaying): Update now playing based on play presence AND player status
2026-02-16 17:26:34 +00:00
FoxxMD
2993279d78
feat(discord): Add platform specific now playing should update check
2026-02-15 18:36:27 +00:00
FoxxMD
b95b7e3781
fix(discord): Add missing applicationId env and docs
2026-02-14 00:12:16 +00:00
FoxxMD
c57200132e
use discord.js deps in production build
2026-02-13 23:04:38 +00:00
FoxxMD
f6d9921581
type fixes
2026-02-13 22:08:46 +00:00
FoxxMD
3aada673d5
feat(discord): Add album art functionality
2026-02-13 22:00:40 +00:00
FoxxMD
1456070044
fix(discord): Better error handling and reconnect logic
2026-02-13 20:42:23 +00:00
FoxxMD
883797a51d
docs(discord): Add discord docs
2026-02-13 19:47:18 +00:00
FoxxMD
1b93512b0a
feat(discord): artwork fallback and ENV config
2026-02-13 19:47:05 +00:00
FoxxMD
7c99262a79
feat(discord): Initial implementation #468
2026-02-13 18:39:33 +00:00
FoxxMD
d10ecb88bb
chore(release): Bump version
2026-02-12 13:31:36 +00:00
FoxxMD
bb0f8e1a9a
fix(spotify): Destructure external_ids from default object #470
2026-02-12 13:18:49 +00:00
FoxxMD
8be1ace9a1
chore(release): Bump version
2026-02-11 15:26:20 +00:00
FoxxMD
80d6879d2a
chore: Update git-cliff workflow
...
* Add as dev dependency with npm script so it can be run anywhere project is installed
* Update config with newer template based on scopesorted
* Add more scopes and give them pretty emojis
2026-02-11 15:24:54 +00:00
Matt Foxx
0b8dfaa5b5
Merge pull request #466 from FoxxMD/deezerImprovements
...
feat: Deezer family account and other improvements
2026-02-11 08:17:55 -05:00
Matt Foxx
3e25be1e9d
Merge pull request #467 from FoxxMD/jellyfinUnknownLax
...
feat(jellyfin): More granular media type filtering
2026-02-11 08:17:35 -05:00
FoxxMD
4e550d14af
fix(jellyfin): Fix options being required
...
The old jellyfin config had optional options which kept the new jf options required from *always* being required. Removing the old config revealed this bug.
Fixes #469
2026-02-10 20:06:06 +00:00
FoxxMD
eab33559ca
fix: allow musicvideo media type and use allowedMediaTypes for NowPlayingItem check
2026-02-10 19:39:35 +00:00
FoxxMD
83076a0770
docs: Update screenshot
2026-02-05 17:21:47 +00:00
FoxxMD
db65b3140a
docs: Remove erroneous ENV restriction
2026-02-05 00:43:17 +00:00
FoxxMD
70b703df8b
docs: Wording and client order
...
* Make landing description more generalized.
* Put Koito as first client. Maloja is unmaintained and shouldn't be showcased.
2026-02-04 14:15:35 +00:00
FoxxMD
00070a1bd2
docs: Make compose default tab for installation
2026-02-04 13:44:13 +00:00
FoxxMD
c7bf419ac4
chore: Remove unused dockerfile
...
alpine hasn't been used in awhile due to dns problems
2026-02-04 13:41:33 +00:00
FoxxMD
850f9f081a
fix(jellyfin): Allow all media types when allowUnknown is true
...
Fixes #445
2026-02-03 18:51:28 +00:00
FoxxMD
1110b6b047
docs(deezer): Use config tabs
2026-02-03 17:41:18 +00:00
FoxxMD
3c99adc01c
feat(deezer): Add family account monitoring #344
2026-02-03 17:26:05 +00:00
FoxxMD
55cec9a16f
fix(deezer): Fix error list access #344
2026-02-03 16:04:30 +00:00
FoxxMD
c36c7c6440
docs(plex): Add Musicbrainz stage guidance
...
#447
2026-02-03 15:48:39 +00:00
FoxxMD
7a4e0ea213
fix: Normalize state param for auth redirect URLs
...
Fixes #443
2026-02-03 15:07:34 +00:00
FoxxMD
5a7e1c0ae5
choer: Bump lastfm-ts-api version
...
scriptex/lastfm-ts-api#52
2026-02-03 13:40:22 +00:00
Matt Foxx
9c3b079620
Merge pull request #463 from Kernald/oci-source-label
...
chore(docker): Add source OCI labels
2026-01-31 11:43:26 -05:00
FoxxMD
c75fff6833
fix: compatibility for old scrobbles #462
2026-01-31 11:40:14 -05:00
Marc Plano-Lesay
6adf2851ba
chore(docker): Add source OCI labels
...
These labels are used, among other things, by Renovate to pull
changelogs/link to the upstream repository automatically
(https://docs.renovatebot.com/modules/datasource/docker/ ).
2026-01-31 11:06:08 +11:00
FoxxMD
c6e1b9c629
chore: Fix links in issue templates
2026-01-30 10:17:08 -05:00
FoxxMD
09d7bad4a6
chore: Bump version for release
2026-01-30 15:01:47 +00:00
FoxxMD
4e0bc1552a
fix(librefm): Relax response content-type
...
Patch package to fix response content type change from librefm until scriptex/lastfm-ts-api#52 is merged
2026-01-30 14:40:48 +00:00
Matt Foxx
205d626cd6
Merge pull request #460 from FoxxMD/playDiff
...
feat: Implement play diffing with inputs for debugging
2026-01-29 17:43:49 -05:00
FoxxMD
dee2e5ecf8
docs: Add help docs and update github issue template with play debug data
2026-01-29 21:19:36 +00:00
FoxxMD
995f857b08
fix(plex): Do not use album artist MBID when existing artist or is VA #450
2026-01-29 18:58:22 +00:00
FoxxMD
073af2d3b4
fix(plex): Add missing brainz data to lifecycle original
2026-01-29 18:37:13 +00:00
FoxxMD
4b0eaff99c
Add missing error capture to dead letter retry failures
2026-01-29 18:18:56 +00:00
FoxxMD
2aac56c97a
feat(scrobblers): Serialize error correctly and add debug info to dead letter ui
2026-01-29 17:13:16 +00:00
FoxxMD
67f6880d32
feat(scrobblers): Refactor scrobbling functions to capture transactional data
...
Capture payload, response/body, errors, and warnings so we can store them in play lifecycle for future debugging
2026-01-29 16:34:25 +00:00
FoxxMD
1f2816e6fb
Move debug icon to left side
2026-01-27 17:48:12 +00:00
FoxxMD
50565fe312
fix: Deep clone discovered plays
...
Fixes shared scrobble object overwriting lifecycle data for each scrobble client
2026-01-27 17:42:23 +00:00
FoxxMD
6332da52e6
Use ms play with scrobble payload for api response
2026-01-27 17:10:18 +00:00
FoxxMD
fa06d65046
fix(maloja): Fix logging objects
2026-01-27 17:06:20 +00:00
FoxxMD
1ce27a2543
docs: Comment why compilations don't work for maloja
2026-01-27 17:05:01 +00:00
FoxxMD
406a4b3448
fix: add missing bug icon for copy action in scrobbled page
2026-01-26 20:23:48 +00:00
FoxxMD
c0259ac409
feat: Add debug copy action to ui
2026-01-26 20:05:17 +00:00
FoxxMD
d474ae24d3
feat: Use json diff to track play changes
...
* Store Source input and original play
* Store transformer hook results as diff patches alongside stage-specific arbitrary input data
* Use jsondiffpatch console format to log stage diffs
* Store scrobble payload data
2026-01-26 19:13:03 +00:00
FoxxMD
62b06c0f56
refactor(sonos): Move device/group filters before track type checks to enable easier user workarounds
...
Device Name/GroupName is more likely to exist and less likely to cause issues than upnpclass and other things we are looking for to verify its a valid track.
User can block the erroring device to "fix" bad behavior.
2026-01-26 13:46:21 +00:00
FoxxMD
af6851562c
fix(sonos): Check for UpnpClass existing #398
2026-01-26 13:38:19 +00:00
FoxxMD
cb62a6a659
fix(musicbrainz): Check for undefined status #458
2026-01-24 19:24:48 +00:00
Matt Foxx
7411f7324a
Merge pull request #456 from FoxxMD/sonosStateHandle
...
fix(sonos): Gracefully handle failure when fetching device state #455
2026-01-23 13:33:54 -05:00
FoxxMD
b3467e97b7
fix(sonos): Gracefully handle failure when fetching device state #455
2026-01-23 17:43:03 +00:00
FoxxMD
5b83e774e6
fix: TS typings for brainz meta and missed recording-track rename
2026-01-23 17:09:25 +00:00
FoxxMD
9cc2ca1010
docs: Refactor lastfm source instructions in quickstart guide to use ENV
2026-01-22 21:43:50 +00:00
FoxxMD
77aaefa3c3
docs: Update readme
2026-01-22 16:25:13 -05:00
FoxxMD
7a09950312
chore: Bump version for release
2026-01-22 20:17:07 +00:00
FoxxMD
2244eb4bf0
docs(sonos): Update admonitions
2026-01-22 20:10:23 +00:00
FoxxMD
5f9907adf7
chore: Cleanup dynamic import refactor
2026-01-22 14:49:57 +00:00
Matt Foxx
64eeae78a8
Merge pull request #448 from FoxxMD/mbTrack
...
feat(musicbrainz): Search by track MBID
2026-01-22 09:36:30 -05:00
Matt Foxx
a053104b13
Merge pull request #451 from FoxxMD/lastfmDebug
...
feat(lastfm): Add response content logging
2026-01-22 09:34:26 -05:00
FoxxMD
d2ea1adcb0
chore(lastfm): Use updated lastfm package
...
* Support timeout scriptex/lastfm-ts-api#50
* Error response debugging scriptex/lastfm-ts-api#51
2026-01-22 14:28:08 +00:00
Matt Foxx
20d86905c0
Merge pull request #439 from FoxxMD/sonos
...
Implement Sonos Source
2026-01-22 09:23:49 -05:00
FoxxMD
5fba6436ab
refactor(sonos): Add missing sonos source dynamic usage
2026-01-22 13:51:54 +00:00
FoxxMD
dea6d68228
feat(sonos): Better cleanup for for devices
2026-01-22 13:48:44 +00:00
FoxxMD
2ac9547f6a
Use device invariant data for iterating devices
...
* Use invariant hash for seen state logging
* Removes dependence on individual properties being available
* Drop player state if an existing existing player has the same play, rather than dropping by existing group
* Enable logging empty player for more debugging info
try to get device summary with for loop
2026-01-22 13:48:42 +00:00
FoxxMD
49529af813
feat(sonos): Add group/device filtering
2026-01-22 13:48:42 +00:00
FoxxMD
54eabf49f0
feat(sonos): Fix first media seen logging and add debug guidance to docs
...
add env gate to sonos test playground
2026-01-22 13:48:39 +00:00
FoxxMD
16ad50ca4d
feat: Implement Sonos Source
...
disable debug test
Add mising type to source status data
2026-01-22 13:48:37 +00:00
Matt Foxx
49d09d0420
Merge pull request #453 from FoxxMD/memoryFix
...
refactor: Optimize production for memory usage
2026-01-22 08:31:14 -05:00
FoxxMD
50e613748f
reactor: try dynamic import for components
2026-01-21 16:51:51 +00:00
FoxxMD
69d76d2d44
refactor: Use compiled json for schema in production
...
* Use dynamic import for schema based on environment
* If production use pre-generated json to avoid loading vega generator -- big memory footprint reduction
* If not production use vega so schema is always up to date
2026-01-21 16:24:58 +00:00
FoxxMD
65d9026f01
docs(tealfm): Update tealfm links
2026-01-21 13:16:21 +00:00
FoxxMD
5b6ad26b2e
feat(lastfm): Add response content logging #449
2026-01-20 15:53:25 +00:00
FoxxMD
59a132e536
chore: Add config types to issue template
2026-01-19 21:35:08 +00:00
FoxxMD
9ec9de519e
fix(musicbrainz): find correct release when release or track mbid is present
2026-01-19 21:08:10 +00:00
FoxxMD
54c631eb40
Fix missed track to recording rename
2026-01-19 18:24:59 +00:00
FoxxMD
ef96241743
feat(musicbrainz): Search by track MBID using basicorids #447
2026-01-19 18:18:13 +00:00
FoxxMD
0b51c3a5fa
refactor(musicbrainz): Rename recording mbid property to recording
...
So that introducing trackId isn't confusing
2026-01-19 18:09:29 +00:00
FoxxMD
9ccdd53bd8
feat: Implement ENV config for clients as sources
...
Source that are also clients did not have ENV config due to early design choices that are now irrelevant.
Implement ENV config for these source to make config easier for everyone.
2026-01-19 15:45:25 +00:00
Matt Foxx
8e6730a5ce
Merge pull request #444 from FoxxMD/prometheus
...
feat: Add prometheus metrics #438
2026-01-18 18:02:24 -05:00
FoxxMD
a2f4c3088a
fix(prometheus): Set content type to plain text #438
2026-01-18 16:39:01 +00:00
FoxxMD
ecb65a29c1
docs: Add prometheus usage
2026-01-16 21:16:55 +00:00
FoxxMD
b4d8b9ad37
refactor: Add type label for prometheus metrics
2026-01-16 21:16:47 +00:00
FoxxMD
d3cde0e373
feat: Add prometheus metrics #438
2026-01-16 21:03:23 +00:00
FoxxMD
28667067ca
docs: Add missing default preset to quickstart MB instructions
2026-01-15 21:04:20 +00:00
FoxxMD
c469ef02dd
docs: Add librefm to repo readme
2026-01-15 15:50:20 +00:00
FoxxMD
f48990e31f
chore: Bump version for release
2026-01-15 15:39:55 +00:00
FoxxMD
2a0733968e
fix: Fix koito spelling
2026-01-14 20:05:59 -05:00
FoxxMD
cc7c90c012
docs: Fix styling on default details
2026-01-14 14:19:58 +00:00
FoxxMD
02a54ce8bc
fix(librefm): Log warning for empty account rather than throwing
...
#401
2026-01-14 13:29:56 +00:00
Matt Foxx
25256321b2
Merge pull request #440 from FoxxMD/docComponents
...
Doc components
2026-01-13 15:42:43 -05:00
FoxxMD
370e3e90b0
docs: Details Admonotions for main configuration
2026-01-13 20:40:04 +00:00
FoxxMD
c0c449ecc2
docs: Use AdmonitionDetails
2026-01-13 20:35:11 +00:00
FoxxMD
4f9cfcf46d
docs: Re-style details and add custom admonition details component
2026-01-13 20:05:23 +00:00
Matt Foxx
b05ff9814e
feat: Librefm Source/Client ( #436 )
...
* feat(librefm): Implement librefm
* feat(librefm): Make api key/secret optional
* feat(librefm): Add LIBREFM_ENABLE env to allow enabling librefm with no other options
* feat(ui): Show client/source hint for all ambiguous components
2026-01-13 08:24:31 -05:00
Matt Foxx
fa34e83474
Merge pull request #437 from jackwilsdon/add-undici
...
fix: add missing undici dependency
2026-01-12 11:07:00 -05:00
Jack Wilsdon
1c73dd5efa
fix: add missing undici dependency
2026-01-11 22:22:28 +00:00
FoxxMD
8f66914dfb
chore!: Remove deprecated Plex/Tautulli Sources
2026-01-08 19:00:56 +00:00
FoxxMD
424a764a9c
chore!: Remove deprecated Jellyfin Source
2026-01-08 18:45:09 +00:00
FoxxMD
53ef315f50
feat(musicbrainz)!: Improve ENV presets
...
* Adds `fields` and `id` presets to give ENV users more flexibility
* BREAKING: Removes searchOrder from `sensible` so users must now use `default` with presets (other than `sensible`) to get default searchOrder methods added
2026-01-08 15:18:23 +00:00
FoxxMD
9e3c15c9e8
Improve logging for artist search method
2026-01-08 13:55:33 +00:00
FoxxMD
240fb2ca7d
docs: Add read-only install instructions
...
Closes #429 thanks @drake7707
2026-01-08 13:33:42 +00:00
Matt Foxx
4657df2900
Merge pull request #433 from FoxxMD/musicbrainzSearchAgnostic
...
feat(musicbrainz)!: Add more control, and types, to api search execution
2026-01-08 08:14:53 -05:00
FoxxMD
a3aa0b9988
docs: Improve MB docs
2026-01-07 22:50:01 +00:00
FoxxMD
c33ed61220
fix(musicbrainz): Fix default assignment for searchOrder
...
Prevent undefined so in component transform options from causing defaults to override stage defaults
2026-01-07 22:50:01 +00:00
FoxxMD
d7cf3f82ee
fix(musicbrainz): Check for release data type before logging #434
2026-01-07 22:50:01 +00:00
FoxxMD
1ec492725c
feat(musicbrainz): Implement field scoring
2026-01-07 22:49:57 +00:00
FoxxMD
03d9dc36ec
fix: Remove cache assignment in child class
2026-01-07 22:47:22 +00:00
FoxxMD
f0ffa1ad8a
feat(transformer): Improved caching
...
* Cache full transform hooks and omit logging when cache hit
* Big logging reduction for sources that return all plays (teal, lastfm, etc.)
* Implement new error type for stages to discriminate between expected prerequisite failures and true exceptions
* Used to determine logging level and if hook should be cached
2026-01-07 22:47:22 +00:00
FoxxMD
528d269dde
fix: Don't mutate original error when merging cause stack for logging
2026-01-07 22:47:22 +00:00
FoxxMD
5a642c4c06
fix some wording
2026-01-07 22:47:22 +00:00
FoxxMD
867f382cc0
fix type for env preset
2026-01-07 22:47:22 +00:00
FoxxMD
203411a875
docs(musicbrainz): Update search methods
2026-01-07 22:47:22 +00:00
FoxxMD
9833c6c7bb
feat(musicbrainz): Implement basic-or-ids search
2026-01-07 22:47:22 +00:00
FoxxMD and gabe
4af0200161
feat(musicbrainz): add exclusive search by recording MBID
...
* adds mbidrecord search type
Co-authored-by: gabe <gabeklav@fastmail.com >
2026-01-07 22:47:22 +00:00
FoxxMD
d27ec5f031
feat(musicbrainz)!: Replace fallback search with searchOrder for more search control
...
* search order and type of searches now determined by `searchOrder` instead of multiple `fallback*` options with hardcoded order
* Deprecate `fallback*` options
* Deprecate `fallbackArtistSearch` for `searchArtistMethod`
* Refactor ENV presets to use new options
2026-01-07 22:47:22 +00:00
Matt Foxx
9482b66846
Merge pull request #435 from FoxxMD/fixPreTransformClient
...
fix: Move preCompare transform hook for clients to the correct place …
2026-01-07 17:45:52 -05:00
FoxxMD
dcf35a6930
more test fixes
2026-01-07 14:07:03 +00:00
FoxxMD
e526fe79eb
fix tests
2026-01-07 13:58:03 +00:00
FoxxMD
ad61d29f08
fix: Move preCompare transform hook for clients to the correct place in lifecycle
2026-01-07 13:45:43 +00:00
Matt Foxx
2485267666
Merge pull request #426 from owendaprile/push-ursmqpqmrwns
...
feat(plex): Retrieve MusicBrainz IDs
2026-01-05 15:47:17 -05:00
FoxxMD
46f4fbe585
fix(endpointlz): Mark play as new from source
...
May fix scrobble clients not refreshing when scrobbling old/offline plays #430
2026-01-05 18:40:51 +00:00
FoxxMD
a7a99eec05
feat(plex): Add reasonable timeout to cache calls
2026-01-05 18:15:26 +00:00
FoxxMD
bad960d786
refactor(plex): Use existing cache and simplify failure result
...
* Use Keyv memory cache
* Return undefined instead of null to simplify assignment
* Throw error with cause for clearer logging
2026-01-05 18:10:32 +00:00
FoxxMD
a3110dbddc
fix(mpd): Add missing MPD envs to source building #432
2026-01-05 17:29:14 +00:00
FoxxMD
01c95d79c1
fix(musicbrainz): Simplify config parsing and log original ids
...
* simplify config building so new properties aren't accidentally not assigned
* add logPreMbid to defaults to make id search troubleshooting easier
2026-01-05 17:16:01 +00:00
FoxxMD
2b7cbc41f3
feat(musicbrainz): Improved missing mbid parsing and tests
2026-01-05 16:54:48 +00:00
FoxxMD
8bf1bffd70
fix(tealfm): Don't define brainz artist array if empty
2026-01-05 16:21:31 +00:00
FoxxMD
df163a26de
test(lastfm): Improve artist and mbid parsing
...
* Update scrobble types to more accurate represent what lastfm returns
* Add tests to check mbids and artists are parsed correctly
2026-01-05 15:29:48 +00:00
FoxxMD
a98f8448d6
chore: Bump version for release
2025-12-31 20:47:17 +00:00
FoxxMD
541892a59e
fix(musicbrainz): Don't assume duration is missing
2025-12-30 19:28:39 +00:00
FoxxMD
8dcb6528ac
fix: Convert MB length to seconds
...
#423 #427
2025-12-28 16:03:01 +00:00
Owen D'Aprile
210f9a75ed
feat(plex): Cache MusicBrainz IDs
2025-12-23 17:23:55 -05:00
Owen D'Aprile
50e3a3bbfe
feat(plex): Retrieve MusicBrainz IDs
2025-12-23 17:23:49 -05:00
Matt Foxx
7dd238a48a
Merge pull request #424 from SilverKnightKMA/patch-1
...
Rename 'unnamed-koito' to 'unnamed-rocksky'
2025-12-21 23:25:23 -05:00
Vũ Thanh Tùng
8a157947a6
Rename 'unnamed-koito' to 'unnamed-rocksky'
2025-12-22 10:54:51 +07:00
FoxxMD
5e309250f5
docs: Add valkey docker compose connection example
2025-12-18 16:48:19 +00:00
FoxxMD
0875aefacf
feat(tealfm): Implement service filtering and parse isrc/music service from records
2025-12-17 16:34:48 +00:00
FoxxMD
083dcc494e
refactor: Move ISRC to main play data
...
It's not a brainz-specific identifier
2025-12-17 16:09:45 +00:00
FoxxMD
e5105b1bb2
chore: Bump version for release
2025-12-17 14:01:19 +00:00
FoxxMD
e998a6d95a
docs: Add debug mode logging hint
2025-12-17 14:00:16 +00:00
FoxxMD
98f045a70f
docs: Improve general transform docs
2025-12-17 13:57:56 +00:00
FoxxMD
419f7cf657
docs(musicbrainz): Highlight ENV config
2025-12-17 13:45:49 +00:00
Matt Foxx
9bef0791c4
Merge pull request #421 from FoxxMD/secretsInterpolation
...
Secrets interpolation
2025-12-16 21:00:53 -05:00
FoxxMD
15d667f653
docs: Better warnings for ENV interpolation
2025-12-17 01:59:05 +00:00
FoxxMD
939ae6f892
docs: Add config interpolation docs
2025-12-17 01:52:07 +00:00
FoxxMD
0cd36e57d6
feat: Log as WARN if there are unmatched interpolation keys
...
#420
2025-12-17 01:30:52 +00:00
FoxxMD
5acb92e696
feat(musicbrainz): Search by ISRC before anything else
...
If ISRC is presents then it should be a guaranteed hit and match. Do a "pre" search using only ISRC before doing the normal field search.
2025-12-17 00:31:22 +00:00
FoxxMD
10a90c7d48
fix(musicbrainz): Add missing duration logic
2025-12-16 23:59:31 +00:00
FoxxMD
f0c5686b4a
fix: Parse non-interpolated json data as data
2025-12-16 23:53:38 +00:00
FoxxMD
cae914b21b
docs: Better language for mb quickstart section
2025-12-16 21:19:26 +00:00
Matt Foxx
344083a3a9
Merge pull request #419 from FoxxMD/spotifyBrainzMeta
...
feat: Add additional metadata from spotify and for listenbrainz submissions
2025-12-16 15:54:18 -05:00
FoxxMD
36ed40f628
feat: Implement secret interpolation from ENV
...
#420
2025-12-16 20:53:00 +00:00
FoxxMD
c650c4a1e0
feat: Implement string interpolation from object values
2025-12-16 20:32:04 +00:00
FoxxMD
f50c3b40d5
docs: Add musicbrainz step to quickstart
2025-12-16 19:29:06 +00:00
FoxxMD
c1318f7efc
feat: Add additional metadata from spotify and for listenbrainz submissions
...
* Parse irsc and track number from spotify data
* Add isrc and track number to listenbrainz submission
* Correct spotify ids for listenbrainz submission
#418
2025-12-16 18:18:30 +00:00
FoxxMD
615947b4d2
fix(transforms): Update types to allow json validation without type for user
...
#267
2025-12-16 16:36:47 +00:00
Matt Foxx
7c0a9fcd9a
Merge pull request #417 from FoxxMD/improvedStageFlowControl
...
Improved stage flow control
2025-12-16 09:57:16 -05:00
FoxxMD
72572c9397
docs(transformers): Add Flow Control
2025-12-16 14:54:02 +00:00
FoxxMD
0e3874f35f
chore: Update wording for disable web
2025-12-16 13:33:53 +00:00
FoxxMD
db8a289517
feat(transformers): Log more transform stage detail for components
2025-12-16 13:33:53 +00:00
FoxxMD
698f0b91fc
feat(transformers): Add onSkip flow control
...
* Don't use newtransform when nothing has been assigned
* Remove nanoid accidental commit
2025-12-16 13:33:23 +00:00
FoxxMD
fb08a63e6f
fix(musicbrainz): Throw errors on pre/post fetch so onFailure works as expected
...
#414
2025-12-15 18:37:26 +00:00
FoxxMD
a320aba4da
fix(transformer): Improve stage error logging
...
* Merge causes if a simple error exists in the stack, reduces stack logging noise
* Log top level message and print error instead of duplicating message in another error
* Fix adding transform history for failed-continue stage
2025-12-15 18:36:41 +00:00
FoxxMD
088e26ce4f
feat(musicbrainz): Make fallback album search configurable #414
2025-12-13 22:23:41 +00:00
Matt Foxx
e273159ecb
Merge pull request #413 from FoxxMD/spotifyNonItem
...
fix(spotify): Don't report player state if spotify api doesn't return an item
2025-12-12 16:33:38 -05:00
FoxxMD
f0ac53ffff
fix(spotify): Don't report player state if spotify api doesn't return an item
...
It's not useful to the stateful player to return a player state without an item
#412
2025-12-12 21:14:09 +00:00
FoxxMD
4a364ce766
chore: Bump version for release
2025-12-12 13:59:33 +00:00
FoxxMD
6c4cd27aa0
fix(transformer): Don't try to build env transformer when no ENV exists
2025-12-12 13:36:51 +00:00
FoxxMD
861578a417
fix(musicbrainz): Wrong default argument for preRequest
2025-12-12 13:30:46 +00:00
FoxxMD
7f62aa79d0
docs(transforms): Add ENV Config quick example
2025-12-11 18:32:49 +00:00
FoxxMD
7223d51690
chore: Bump version for release
2025-12-11 16:52:28 +00:00
FoxxMD
7eabd7f4df
fix(tealfm): Allow DID identifier
2025-12-11 16:51:47 +00:00
FoxxMD
88b81dcd12
docs(tranforms): Add default stage
2025-12-11 16:27:23 +00:00
FoxxMD
5d6b3d55cc
feat(musicbrainz): Add configurable timeout
2025-12-11 16:00:10 +00:00
FoxxMD
a5f4f1be6e
docs: Add transform snippets to landing page
2025-12-11 15:35:48 +00:00
FoxxMD
ac329cf538
docs(musicbrainz): Additional servers
2025-12-11 15:26:10 +00:00
FoxxMD
fafd6a09a0
docs: Improve caching guidance
2025-12-11 15:16:28 +00:00
FoxxMD
759029107a
fix(musicbrainz): Fix artist grouping
...
Remove parenthesis around AND making clause required
2025-12-11 14:08:34 +00:00
FoxxMD
802484c1bb
feat(musicbrainz): Implement apikey header
2025-12-11 01:31:11 +00:00
FoxxMD
4dfb485c87
chore: Bump logging for bug fix
2025-12-11 01:21:18 +00:00
FoxxMD
57c1812547
fix(transformer): Fix missing else block when no transform history has occurred
2025-12-11 01:16:59 +00:00
FoxxMD
c261699f3e
feat(musicbrainz): Reduce retry limit with patched package
2025-12-11 01:16:39 +00:00
FoxxMD
039deca865
feat(musicbrainz): Implement host fallback if multiple are available
2025-12-10 16:20:31 +00:00
FoxxMD
f8a18dd1ee
test(musicbrainz): Add basic sanity test
2025-12-10 15:07:21 +00:00
FoxxMD
de93fe166b
refactor(musicbrainz): Move api init and caching closer to api client
...
* Move client init into MS api client for more control over options used
* Move caching into api call
* Cache URL using async storage
2025-12-10 14:43:29 +00:00
FoxxMD
1956484295
docs: More musicbrainz info
2025-12-09 17:10:56 +00:00
FoxxMD
f76604aca5
docs: Add more musicbrainz stage info
2025-12-09 16:56:02 +00:00
FoxxMD
1f01d3e7be
docs: Add more sources in quickstart
2025-12-09 16:49:29 +00:00
Matt Foxx
eae1a84832
Merge pull request #406 from FoxxMD/musicbrainzTransform
...
Musicbrainz transformer
2025-12-08 14:09:30 -05:00
FoxxMD
17baebdbf2
feat(transformers): Implement applyng limited transform configs via ENV
2025-12-08 19:02:54 +00:00
FoxxMD
023bd74f12
docs(transformer): Add freetext search
2025-12-08 17:30:24 +00:00
FoxxMD
021ce4d03d
test: freetext fallback
2025-12-08 17:08:56 +00:00
FoxxMD
761c0f79fb
feat(transformer): Add freetext fallback search for musicbrainz api
2025-12-08 17:04:30 +00:00
FoxxMD
5e63936dda
fix: if
2025-12-08 13:11:03 +00:00
FoxxMD
a7134e2dae
fix(transformer): Missing fallbacksearch assignment
2025-12-07 20:10:12 +00:00
FoxxMD
1289c53941
docs: Update musicbrainz and add additional parts to general transform docs
2025-12-05 20:54:52 +00:00
FoxxMD
b4a36a42cd
feat(transform): Always log transform diff if in debug mode
2025-12-05 20:48:37 +00:00
FoxxMD
ea4d9b3764
fix(transformers): Add missing parts parsing
2025-12-05 19:25:38 +00:00
FoxxMD
5c2819a70c
test(tranformer): Add longer timeout and fix logger used in musicbrainz suite
2025-12-05 19:20:31 +00:00
FoxxMD
83eb7a1b65
fix(transformer): Fix optional option object
2025-12-05 19:20:05 +00:00
FoxxMD
8976bb99f5
fix(transformer): Return stage name for proper diff logging
2025-12-05 19:19:50 +00:00
FoxxMD
40b5ef594a
fix: revert lastfm debug code
2025-12-05 19:18:39 +00:00
FoxxMD
5c6e2b8cad
feat(transformer): Add musicbrainz api url logging
2025-12-05 19:10:08 +00:00
FoxxMD
8083696469
feat(transform): Add proper support for meta and duration transform parts
2025-12-05 18:47:57 +00:00
FoxxMD
c07b572abb
feat(transformer): Allow fallback musicbrainz search to use aggressive native parsing
2025-12-05 18:30:11 +00:00
FoxxMD
0972a41962
feat(transformer): Try naive split on artist for additional search
2025-12-05 17:51:05 +00:00
FoxxMD
aeae449abf
test(transformer): Add working non-ascii example
2025-12-05 17:26:04 +00:00
FoxxMD
fa6cc13c86
tests: Add edge case musicbrainz tests
...
Need to have MB_TEST=true in environment to run them
2025-12-05 17:09:24 +00:00
FoxxMD
3e57b006d2
fix(transformer): Escape lucene specia characters when searching musicbrainz
...
https://github.com/FoxxMD/multi-scrobbler/pull/406#issuecomment-3615254005
2025-12-05 16:32:41 +00:00
FoxxMD
949c1f9176
revert for netlify test
2025-12-04 20:42:58 +00:00
FoxxMD
2bcd0aa858
test commit for netlify
2025-12-04 20:38:57 +00:00
FoxxMD
8ba8a054a6
docs: Add musicbrainz stage
2025-12-04 20:03:02 +00:00
FoxxMD
08301d8664
mysteriously deleted interface?
2025-12-04 18:00:15 +00:00
FoxxMD
c36ffa5ffd
more bug fixes
2025-12-04 17:52:48 +00:00
FoxxMD
0d02215f71
More forgiving filter/comparison for maybe values
2025-12-04 17:42:58 +00:00
FoxxMD
dadea4b90c
feat(transformer): Implement country filter/priority for musicbrainz
2025-12-04 17:22:25 +00:00
FoxxMD
9c89142c47
feat: Improve album artist parsing for musicbrainz data
...
* Change meta to string array
* Compare artist ids
* Add transformer option to ignore various artists
2025-12-04 17:12:22 +00:00
FoxxMD
e055e0bd53
feat(transform): Implement more exhaustive, human-readable transform diff
2025-12-04 17:11:15 +00:00
FoxxMD
14c8730435
Handle album artists
2025-12-04 02:54:34 +00:00
FoxxMD
1410e3a952
fix leftover method from refactor
2025-12-03 21:47:34 +00:00
FoxxMD
1e558de5e1
feat(transformer): Implement filtering and sorting of fetched musicbrainz recordings
2025-12-03 20:49:57 +00:00
FoxxMD
dab2414a92
chore: Update musicbrainz-api to use ratelimit
...
Borewit/musicbrainz-api#1115
2025-12-03 19:12:07 +00:00
FoxxMD
03bb1e0552
fix: Use pmap for all bulk transformer
2025-12-03 17:04:58 +00:00
FoxxMD
1eab06c51d
recfactor(transform): Use async hooks for logging to identify transform
...
Reduces logging noise
2025-12-03 17:04:42 +00:00
FoxxMD
d217c91a30
Add musicbrainz-api patch for rate limit
2025-12-03 14:49:49 +00:00
FoxxMD
b09cbb4bb5
feat(transformer): Implement staggered api calls to respect rate limit
2025-12-02 21:20:34 +00:00
FoxxMD
d6d0ce515f
fix score usage
2025-12-02 18:59:50 +00:00
FoxxMD
db34c33c42
Fix name usage
2025-12-02 18:59:44 +00:00
FoxxMD
2024454f5b
feat(transformers): More improvement to musicbrainz
...
* Implement multiple endpoints for API client with round robin load balancing
* Implement caching responses
* Add transformer options for search triggers
* Implement transformer checks based on search triggers and score
2025-12-02 18:32:50 +00:00
FoxxMD
3718def8b4
fix(transformer): Fix logging for delimiters
2025-12-01 21:59:38 +00:00
FoxxMD
094071b0ba
feat: Implement initial musicbrainz api client
2025-12-01 21:58:32 +00:00
Matt Foxx
ca8d397653
Merge pull request #404 from FoxxMD/transformProvider
...
feat: Implement transform pipeline providers
2025-12-01 13:10:44 -05:00
FoxxMD
6ac44397d0
docs: Refactor transformer docs with stages
2025-12-01 18:04:42 +00:00
FoxxMD
d6c4d7cf25
refactor(transforms): Implement per-stage defaults with override
2025-12-01 15:16:24 +00:00
FoxxMD
04ae651b15
fix(plex): Fix library filter when media has no library
2025-11-29 21:06:00 +00:00
FoxxMD
ef6e2b0f88
refactor(transformer): Add monolithic artist option and make artist string parsing optional
2025-11-29 05:06:26 +00:00
FoxxMD
b7271ea4c2
feat(transformer): Allow configuring artist parsing string sources
2025-11-29 04:51:06 +00:00
FoxxMD
b5e835a0c6
fix: Don't throw on nonimplemented notify for transformers
2025-11-29 04:36:17 +00:00
FoxxMD
a7df5a8d30
feat: Add flow control to transforms and fix bugs
2025-11-28 23:18:09 +00:00
FoxxMD
883050e0b4
feat: Add native transformer options for delimiters and artist exceptions
...
#364
2025-11-28 23:18:09 +00:00
FoxxMD
b6417ed780
Implement initial native transformer #364
2025-11-28 23:18:09 +00:00
FoxxMD
affb16fc0e
feat: Implement user transformer and refactor components to use async
2025-11-28 23:17:13 +00:00
FoxxMD
56409dd1d7
feat(transformer): Implement User Transformer class
2025-11-28 23:17:13 +00:00
FoxxMD
1af0193636
feat(transform): Implement abstract transformer
...
#365 #363 #364
2025-11-28 23:17:13 +00:00
FoxxMD
53e766318c
refactor: Move abstract init into own abstract class
...
So that it can be used for transformer. Component (client/source) inherit from init class
2025-11-28 23:17:13 +00:00
FoxxMD
c5269791af
docs: Fix kitchensink links
2025-11-23 19:22:21 +00:00
FoxxMD
fb5ffd053d
fix(lastfm): Fix network error default value
2025-11-21 16:16:05 +00:00
Matt Foxx
0c04e7b79f
Merge pull request #366 from FoxxMD/transformPipeline
...
feat: transform pipeline
2025-11-20 14:35:56 -05:00
FoxxMD
dc5fab6f9a
Refactor metadata stage so atomic parts are objects or booleans
2025-11-20 18:34:23 +00:00
FoxxMD
128c48947e
feat(transforms): Allow for config with stage type
...
As long as it conforms to user stage type. Preserve backwards compatibility
2025-11-20 17:36:03 +00:00
FoxxMD
4cab02e88d
fixed tests and isArray arg
2025-11-20 15:26:45 +00:00
FoxxMD
a360687264
first attempt at folding in stages
...
Not working. Tests fail and compiler has errors.
2025-11-20 15:11:46 +00:00
FoxxMD
6a677b6fe1
refactor: Move transform typings to own file
2025-11-20 15:11:46 +00:00
FoxxMD
5c418d5618
chore(tealfm): Round duration for good measure
2025-11-19 17:25:51 +00:00
FoxxMD
e6e782dec8
fix(rocksky): Round duration so value is an integer instead of float
...
#400
2025-11-19 14:44:04 +00:00
FoxxMD
ab7d20d7d3
docs(rocksky): Add scrobbling guarantee disclaimer
2025-11-18 15:15:29 +00:00
FoxxMD
ec4c2cdd56
fix(rocksky): Increase scrobble delay to respect PDS operation limits
2025-11-18 14:45:11 +00:00
FoxxMD
88d3e13b52
feat(rocksky): Use duration_ms instead of duation
2025-11-17 15:49:27 +00:00
FoxxMD
7bf70d1973
fix(rocksky): Use correct URL for auth validation
2025-11-17 15:48:16 +00:00
FoxxMD
8eae2dc69d
chore: Bump version for release
2025-11-17 15:23:15 +00:00
FoxxMD
aa44a08e9e
fix(rocksky): Fix wrong property used for api auth header
2025-11-17 15:22:46 +00:00
FoxxMD
6071abca49
docs: Update rocksky link to main page rather than docs
2025-11-13 12:56:22 -05:00
FoxxMD
86a719ba4a
docs: Add new clients to repo readme
2025-11-13 17:18:20 +00:00
FoxxMD
39b6f6e602
docs: Fix kitchensink link
2025-11-13 17:16:17 +00:00
FoxxMD
bfce5dcc54
chore: Bump version for release
2025-11-13 17:14:36 +00:00
FoxxMD
18537e4e08
docs: Add subsonic guidance for lz scrobbling
2025-11-13 17:13:45 +00:00
FoxxMD
30db8712fc
docs: Add redirects for old pages
2025-11-13 17:08:30 +00:00
Matt Foxx
1701a5e5f1
Merge pull request #397 from FoxxMD/lzParsingCleanup
...
refactor: Cleanup and consolidate listenbrainz listen parsing
2025-11-13 11:46:18 -05:00
FoxxMD
406c39b6b2
fix(tealfm): Fix scrobble play date context
2025-11-13 16:44:56 +00:00
FoxxMD
ce7ad36db4
refactor(listenbrainz): Consolidate lz endpoint submit parsing into lz response parsing
...
Consolidtes logic for parsing lz listen data structure
2025-11-13 16:25:06 +00:00
FoxxMD
fa4bf5ab10
refactor(listenbrainz): Move parsing functions out of static
2025-11-13 15:43:44 +00:00
FoxxMD
83d9af2aea
fix(listenbrainz): Fix interfaces for submit/listen and consolidate
2025-11-13 15:36:17 +00:00
FoxxMD
433761525c
fix(rocksky): Add scrobble to deadletter when ignored
2025-11-13 14:00:30 +00:00
FoxxMD
f7a7a36d8b
docs: Add robots
2025-11-12 16:59:36 +00:00
Matt Foxx
7e375f1531
Merge pull request #392 from FoxxMD/rocksky
...
feat(rocksky): Implement Rocksky Source/Client
2025-11-12 10:42:02 -05:00
FoxxMD
357397f225
chore: Add markdown extension to devcontainer
2025-11-12 15:36:14 +00:00
FoxxMD
78bf507226
docs: Update docs to include Rocksky Source and updated config
2025-11-12 15:35:39 +00:00
Matt Foxx
f892851b60
Merge pull request #396 from FoxxMD/nowPlayingAccuracyImprovement
...
Now playing accuracy improvement
2025-11-12 10:10:16 -05:00
FoxxMD
4244ddb8c2
fix(listenbrainz): Use duration_ms if duration not provided
2025-11-11 19:54:34 +00:00
FoxxMD
3e67e9189f
feat(listenbrainz): Add request body to logging for debugging
2025-11-11 19:50:14 +00:00
FoxxMD
de1cbb2aae
fix: Improve timing and update frequency to match scrobbler behavior
...
* Aggressively start Now Playing update (based on reported) but aggressibely end, based on stale/orphaned, so updates are early but not often
* Refactor update thresholds to use scrobble client behavior
* LFM and LZ use track duration as "time visible" for Now Playing, don't re-update during that time period
* Add thresholds to logging for easier troubleshooting
#395
2025-11-11 19:49:58 +00:00
FoxxMD
db17455b2e
fix: Revert accidental debug commit
2025-11-11 15:18:21 +00:00
FoxxMD
a7729fbfa6
feat: Make ATProto handle transform usable by RockSky and teal.fm
2025-11-11 15:10:39 +00:00
FoxxMD
771fdc0686
chore: Regenerate schema with rebased results
2025-11-11 14:48:58 +00:00
FoxxMD
8cad2d4efd
feat(rocksky): Implement Rocksky Source/Client
2025-11-11 14:47:59 +00:00
Matt Foxx
a094a1aa65
Merge pull request #389 from FoxxMD/tealfm
...
feat: Implement teal.fm as source/client
2025-11-11 09:37:10 -05:00
Matt Foxx
f2d45c5622
Merge pull request #386 from FoxxMD/GH-375/subsonicLoop
...
feat(subsonic): Add repeat detection
2025-11-10 13:15:50 -05:00
FoxxMD
a429bccf07
fix(teal): Adding pds with env when it no longer exists
2025-11-07 22:44:02 +00:00
FoxxMD
04d950980d
feat(tealfm): Massage handle for users who don't read docs
2025-11-07 22:41:30 +00:00
FoxxMD
7ec90b97d6
docs: Add tealfm to landing page
2025-11-07 22:30:38 +00:00
FoxxMD
a4f989c5e4
feat(tealfm): Resolve pds from handle
2025-11-07 22:29:54 +00:00
FoxxMD
da4fbd2f27
docs: Fix tealfm source link
2025-11-07 18:56:22 +00:00
FoxxMD
b9e6f32500
chore: Update schema
2025-11-07 18:55:40 +00:00
FoxxMD
5c5c653c3b
fix: Fix Source/Client data types
2025-11-07 18:55:27 +00:00
FoxxMD
a9e7a4bf16
docs(tealfm): Add docs
2025-11-07 18:46:57 +00:00
FoxxMD
1b4baafa67
feat(teal): Change pds viewer web url
2025-11-07 17:35:00 +00:00
FoxxMD
794ef08aa2
feat(tealfm): Api improvements
...
* Implement PDS check for App auth clients
* Fix error logging for app loging
2025-11-07 17:31:16 +00:00
FoxxMD
fa6ed323ff
feat(tealfm): Add tealfm Source
2025-11-07 17:17:50 +00:00
FoxxMD
8110e8e9fa
refactor(tealfm): Move common functionality to api client
2025-11-07 16:44:41 +00:00
FoxxMD
12a6eec740
test(tealfm): Add example config to pass config tests
2025-11-07 16:40:27 +00:00
FoxxMD
472021dd2c
feat(tealfm): Add ENV config
2025-11-07 16:35:39 +00:00
FoxxMD
ebb74d1b5c
feat: Implement working tealfm client
...
* Add pds option
2025-11-07 16:31:41 +00:00
FoxxMD
ea23a89101
refactor(tealfm): Implement abstract api client with concrete classes for different auth methods
2025-11-07 15:02:56 +00:00
FoxxMD
9062619d38
feat(tealfm): Implement app password auth
2025-11-07 14:51:31 +00:00
FoxxMD
3fb64be54f
feat(tealfm): Initial oauth attempt
2025-11-06 17:22:06 +00:00
Matt Foxx
3e083b19f7
Merge pull request #382 from FoxxMD/GH-380/lzEndpoint
...
fix(endpointlz): Return expected OK response body
2025-11-05 13:22:47 -05:00
Matt Foxx
e197c71bbb
Merge pull request #388 from FoxxMD/ghWorkflowHarden
...
ci: Harden workflows using zizmor
2025-11-05 12:35:11 -05:00
FoxxMD
7b36d95dfc
ci: Harden remaining workflows using zizmor
...
* Pin action digests
* Remove template injection where possible
2025-11-05 12:08:46 -05:00
FoxxMD
0427b6e945
try with double quotes
2025-11-05 11:48:00 -05:00
FoxxMD
326d9e58d7
ci: Use zizmor to fix and audit image publish action
...
* Pin actions to digest
* Replace template substitution with envs
2025-11-05 11:26:41 -05:00
FoxxMD
63c079f08e
docs: Improve sources documentation
2025-11-04 19:18:46 +00:00
FoxxMD
ff74fd7e4c
docs: Update kitchensink
2025-11-04 19:04:17 +00:00
FoxxMD
680f862ee8
docs: Change installation to category doc link
2025-11-04 18:52:42 +00:00
FoxxMD
abdd7f0b55
docs: Improved linking on config/landing and configuration type refinement
2025-11-04 18:49:16 +00:00
FoxxMD
c017dd734b
feat(subsonic): Add basic repeat detection based on listened duration
...
#375
2025-11-04 16:31:36 +00:00
Matt Foxx
ad478adefd
Merge pull request #385 from FoxxMD/depCleanup
...
refactor: frontend dependency cleanup
2025-11-04 10:40:35 -05:00
FoxxMD
b11bd52963
chore(frontend): Update sass package and vite config to remove deprecation warnings
2025-11-04 14:36:22 +00:00
FoxxMD
538df6b6d0
refactor(frontend): Migrate tailwind config to v4
2025-11-04 14:17:51 +00:00
FoxxMD
819afcdb8a
refactor(frontend): Update tailwind and move generation into vite
...
* Use vite tailwind plugin instead of postcss
* Update tailwind so it actually works with plugin
* Remove postcss
* Merge vite config into inline vite-express config
2025-11-04 13:55:31 +00:00
FoxxMD
a5693f7c03
chore: Remove unused typedoc config
2025-11-04 13:35:02 +00:00
FoxxMD
22eb5b1168
docs: Add missing client flag for example json usage for clients
...
Fixes #383
2025-11-03 21:54:44 +00:00
FoxxMD
9402caa4ae
docs(endpointlz): Add navidrome url setup instructions
2025-11-03 16:56:32 +00:00
FoxxMD
0aff56e891
feat(endpointlz): Add more logging for invalid routes
2025-11-03 16:10:44 +00:00
FoxxMD
a5f6aaa7c0
feat(listenbrainz): Use end-of-string token and wildcard route to better log malformed LZ endpoint routes
2025-11-03 16:08:17 +00:00
FoxxMD
4ee503655c
fix(endpointlz): Return expected OK response body
...
Fixes #380
2025-11-03 15:47:24 +00:00
FoxxMD
e53a82782c
docs: fix lastfm aio name
2025-11-01 03:50:20 +00:00
FoxxMD
020c6815ba
docs: Fix readme links
2025-10-31 17:58:46 +00:00
FoxxMD
5281a92e81
docs: A word
2025-10-31 15:56:05 +00:00
Matt Foxx
8577eb44af
Merge pull request #381 from tsirysndr/master
...
Fix typos in Rocksky documentation
2025-10-31 11:46:08 -04:00
Tsiry Sandratraina
edd3cf25b5
Fix typos in Rocksky documentation
2025-10-31 17:24:29 +03:00
FoxxMD
b17719c868
docs: Fix missing search index
2025-10-31 13:02:30 +00:00
FoxxMD
971ec9d4db
feat(jellyfin): Add frontend url override as env #374
2025-10-30 20:20:10 +00:00
Matt Foxx
6607654e8a
Merge pull request #379 from FoxxMD/docsRevamp
...
Docs revamp
2025-10-30 16:16:52 -04:00
FoxxMD
891e591ceb
docs: Reorganize doc contents
2025-10-30 19:56:07 +00:00
FoxxMD
2540ed3945
docs: Add client own files
2025-10-30 18:52:59 +00:00
FoxxMD
7ac3f33cd4
docs: Move Source configs to own files
2025-10-30 18:35:58 +00:00
FoxxMD
9b91f6897e
Add new Source overview using category
2025-10-30 17:06:39 +00:00
FoxxMD
bc62b99401
docs: Add commonly used components to global scope
2025-10-30 17:06:22 +00:00
FoxxMD
a5d1cea910
Add some snippers
2025-10-30 15:21:08 +00:00
FoxxMD
3e3473f6a8
chore: Ignore docusaurus build folders when searching
2025-10-30 15:19:14 +00:00
FoxxMD
a0bdd15d15
docs: Move landing page to docs to simply url structure
...
Set docs as base for router so there isn't an additional docs in url
2025-10-30 15:19:01 +00:00
FoxxMD
920eb10c05
docs: Fix rocksky name/link typo
2025-10-30 09:30:14 -04:00
FoxxMD
ae7a436758
chore: Bump version for release
2025-10-30 13:18:49 +00:00
FoxxMD
92d246b45a
docs: Add rocksky to repo readme
2025-10-30 13:18:36 +00:00
Matt Foxx
0af480ac1a
Merge pull request #377 from FoxxMD/GH-376/plexUrlParseFix
...
fix(plex): Use better url parsing method
2025-10-30 08:47:48 -04:00
Matt Foxx
9f52c2ec67
Merge pull request #369 from gabeklavans/fix/apprise-tags
...
fix: parse and use the tags in Apprise config
2025-10-29 11:33:05 -04:00
FoxxMD
cfb278087e
docs: Update listenbrainz json example to include url
2025-10-29 14:50:21 +00:00
FoxxMD
402b0d2cc7
docs: Add Rockysky setup instructions
2025-10-29 14:47:59 +00:00
FoxxMD
67c79f2eb7
fix(plex): Use better url parsing method
...
Fixes #376
2025-10-29 13:48:47 +00:00
FoxxMD
d759b00c7e
test: Add more tests for url parsing
2025-10-29 13:43:34 +00:00
Matt Foxx
cac8163e58
Merge pull request #374 from wolffshots/feature/optionally-redirect-image-paths
...
feat(JellyfinApiSource): add option to override the Jellyfin base url
2025-10-24 09:16:21 -04:00
wolffshots
11dbdaf6cc
chore(JellyfinApiSource): extract URL replacement to func and add tests
2025-10-23 17:53:51 +02:00
wolffshots
ac6b04f492
feat(JellyfinApiSource): add option to override the Jellyfin base url used in the frontend
2025-10-23 17:22:57 +02:00
Matt Foxx
0790da2e0d
feat(plex): Enable accepting self-signed certs #372 ( #373 )
...
* feat(plex): Enable accepting self-signed certs #372
* docs(plex): Add invalidcert param to plex example config
2025-10-21 09:10:38 -04:00
Matt Foxx
dffb1c79ec
Merge pull request #370 from h-wb/feat/add-source-as-lb-ms-name
...
feat(listenbrainz): add source as music service name
2025-10-08 08:27:01 -04:00
h-wb
46cc9f0b6e
feat(listenbrainz): add source as music service name
2025-10-07 23:01:59 -04:00
gabe
140e9f0b20
fix(notification): parse and use the tags in Apprise config
2025-09-26 14:51:04 -04:00
FoxxMD
0fe5779c4b
chore: Bump for release
2025-09-23 15:48:46 +00:00
FoxxMD
06b1475b63
chore: remove unused object-hash package
2025-09-23 15:48:21 +00:00
Matt Foxx
6bc415120d
Merge pull request #359 from FoxxMD/objectHashReplace
...
fix: Update object hashing function
2025-09-23 11:43:13 -04:00
FoxxMD
e061540e6b
fix(jellyfin): Guard against undefined NowPlaying Path
...
#355
2025-09-18 14:15:20 +00:00
FoxxMD
38bf31a67f
feat(lzendpoint): Accept artist and release artist names in submit payload
...
#360
2025-09-18 13:45:29 +00:00
Matt Foxx
c8c3b4888f
Merge pull request #343 from FoxxMD/caching
...
feat: Caching and persistent scrobble queues
2025-09-17 08:54:44 -04:00
FoxxMD
70bb30406a
test: fix/workaround tests for new transformrule assumptions
2025-09-16 15:27:47 +00:00
FoxxMD
d9e71f6770
fix: Do not use transform until after client is ready
...
Fixes #356
2025-09-16 15:16:27 +00:00
FoxxMD
7cee9f04cf
fix: Update object hashing function
...
Might be a solution for #358
2025-09-15 17:37:30 +00:00
FoxxMD
0a673fd333
refactor: Decrease persist interval to 10 seconds
...
Faster interval means less likely user will update queue and exit MS before cache is saved
2025-09-11 19:14:01 +00:00
FoxxMD
fd316a8e84
fix: Add full coverage for cached queue updating during client lifecycle
2025-09-11 19:14:01 +00:00
FoxxMD
c1e1de2255
Increase file cache size to 2000
...
Should be ~700kb, full up. This should be a generous upper limit for number of scrobbles queued/dead at the same time.
2025-09-11 19:14:01 +00:00
FoxxMD
9bea31e1b2
docs: Add caching docs
2025-09-11 19:14:01 +00:00
FoxxMD
351edd8102
fix: Fix cache test missing awaits
2025-09-11 19:14:01 +00:00
FoxxMD
10dcb7f30d
feat: Implement cache file streaming with progress logging
...
If cache files get large enough to cause noticeable delay it will be helpful to log progress
2025-09-11 19:14:01 +00:00
FoxxMD
ffb41b4e30
test: Add scrobble client caching test
2025-09-11 19:14:01 +00:00
FoxxMD
d78bc48e6f
feat: Allow passing file cache options other than connection
2025-09-11 19:14:01 +00:00
FoxxMD
b4154bb0d5
refactor: Move transient cache to exportable function
2025-09-11 19:14:01 +00:00
FoxxMD
48467b08d3
chore: Bump with-local-tmp-dir version
...
tmp dependency has been removed so previous buggy behavior(?) is gone
2025-09-11 19:14:01 +00:00
FoxxMD
682d507683
build: move net-interceptor to dev packages
2025-09-11 19:14:01 +00:00
FoxxMD
814e609efc
fix: Add clone as runtime dependency
2025-09-11 19:14:01 +00:00
FoxxMD
652fa5a14c
feat(cache): Improve data marshalling and cache init
...
* 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
2025-09-11 19:14:01 +00:00
FoxxMD
39bc9cd410
build(vscode): Update devcontainer to use compose stack with valkey for caching integration
2025-09-11 19:14:01 +00:00
FoxxMD
63b6012488
feat(cache): Rehydrate dayjs data on cached scrobble parsing
2025-09-11 19:14:01 +00:00
FoxxMD
32e2aa6974
test: Setup transient di cache
2025-09-11 19:14:01 +00:00
FoxxMD
78f4767dd2
refactor: Refactor di cache to allow singleton or transient
2025-09-11 19:14:01 +00:00
FoxxMD
05a9ca15a9
refactor(cache): Update file cache name and gitignore
2025-09-11 19:14:01 +00:00
FoxxMD
e2c8158aec
feat: Log file cache save
2025-09-11 19:14:01 +00:00
FoxxMD
4eee6d4322
somewhat working scrobble caching
2025-09-11 19:14:01 +00:00
FoxxMD
56f5431dd9
chore: Update iti usage
...
* Update package to improve typing support/esm
* Remove dependency on sources/client/notifiers to prevent circular dependency
2025-09-11 19:14:01 +00:00
FoxxMD
a00f94f9b1
feat: Implement caching backend
...
* 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)
2025-09-11 19:14:01 +00:00
Matt Foxx
df4fe87178
Merge pull request #351 from FoxxMD/ntfyToken
...
feat: Add Access Token auth for Ntfy webhook
2025-09-11 15:07:11 -04:00
Matt Foxx
89c39d2d25
Merge pull request #354 from FoxxMD/lastfmRecent
...
fix(lastfm): Full destructure recent response and log respon on error
2025-09-11 15:01:41 -04:00
FoxxMD
b60422c26c
fix: Try auth prefixed with Bearer
2025-09-11 18:57:30 +00:00
FoxxMD
59fce8271e
feat: Add Access Token auth for Ntfy webhook
2025-09-11 18:57:30 +00:00
FoxxMD
506faf39dc
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
2025-09-11 18:27:56 +00:00
Matt Foxx
adf5401fff
Merge pull request #347 from FoxxMD/ytm400
...
Youtube Music updates
2025-09-10 10:15:55 -04:00
FoxxMD
dbf5cba7cb
chore: Bump logging version
...
Fixes LOG_LEVEL non-output issue
2025-09-10 13:04:34 +00:00
FoxxMD
b3a6beb8f4
docs(ytm): Add oauth warning
2025-09-10 12:57:42 +00:00
Matt Foxx
1291f60e62
Merge pull request #260 from FoxxMD/improvedArtistStringParsing
...
testing and improvements for artist string parsing
2025-09-10 08:47:50 -04:00
FoxxMD
e86945355c
fix: Add additional logging for ytm history request
2025-09-05 18:56:16 +00:00
FoxxMD
8dd9958b30
Use default scopes
2025-09-05 18:55:53 +00:00
FoxxMD
869c7dcfe1
fea(ytm): Allow user-defined oauth scopes
2025-09-02 13:07:46 +00:00
FoxxMD
7068da5fc2
test(ytm): Fix failing type assertion
2025-09-02 12:24:33 +00:00
FoxxMD
3704fba1f8
feat(ytm): Add debug logging #345
2025-09-02 12:18:21 +00:00
FoxxMD
6d99790f7d
chore: Update ytm #345
2025-09-02 12:15:49 +00:00
Matt Foxx
3e7f1965e7
Merge pull request #341 from FoxxMD/nowPlayingPlayerUpdates
...
feat: Improve Player behavior for Sources only tracking Now Playing data
2025-08-27 11:23:24 -04:00
FoxxMD
87d05b7c75
fix(listenbrainz): Fix missing album/release_name for listenbrainz endpoint #342
2025-08-27 12:26:46 +00:00
FoxxMD
aca23ed90d
test: Update lz expected config count
2025-08-26 20:26:32 +00:00
FoxxMD
a01c8e3f17
feat(ui): Add Now Playing behavior for ui Player
...
* show "Now Playing" instead of Unknown/Playing
* Don't show empty listened duration/percent
2025-08-26 20:22:12 +00:00
FoxxMD
eba9bc1b6b
feat(webscrobbler): Use Now Playing Player
2025-08-26 20:01:03 +00:00
FoxxMD
34be8add14
docs: Remove koito from listenbrainz example
...
Not really needed since koito has its own docs
2025-08-26 19:45:48 +00:00
FoxxMD
bd44fa5609
feat: Change stale/orphan interval to match current play duration for Players that only track Now Playing data
...
#338
2025-08-26 19:40:18 +00:00
FoxxMD
c81bdf608f
fix(lastfm): Remove VA from album artist #340
2025-08-25 17:00:19 +00:00
FoxxMD
e9e5987330
chore: Bump version for release
2025-08-20 13:23:16 +00:00
FoxxMD
ce4b0f7aa7
docs: Add Maloja source to readme
2025-08-20 13:23:00 +00:00
Matt Foxx
eb6e469dc9
Merge pull request #336 from FoxxMD/GH-295/malojaSource
...
feat: Add Maloja Source
2025-08-19 23:19:26 -04:00
FoxxMD
4f6fb4ffea
fix(maloja): Remove null duration/length
2025-08-18 14:24:43 +00:00
FoxxMD
24df22781f
fix: Don't removed undefined keys from nested objects
...
Don't want to break 3p libraries (dayjs)
2025-08-18 14:23:35 +00:00
FoxxMD
33fda80d0a
feat: Improve artist string parsing
...
* Don't split artist with joiner when only one joiner is present
* Override naive parsing if metabrainz mapped artists fit with provided joiners
2025-08-07 19:32:51 +00:00
FoxxMD
a3d8372f48
feat: More artist parsing improvements
...
* Use more context-aware list parsing with ampersands
* Ignore artists with slashes when wrapped by word-boundary
2025-08-07 13:23:10 +00:00
FoxxMD
b5dbde66c4
WIP testing and improvements for artist astring parsing
...
* Implement faker data generation for artist string
* Add test suite for parsing different styles of artist strings
2025-08-07 13:23:10 +00:00
FoxxMD
abf532c6bb
feat(maloja): Add Maloja Source #295
2025-08-06 16:48:39 +00:00
FoxxMD
976c7c0e82
refactor(maloja)!: Modernize Maloja API usage
...
* Move API code into own class for reusability with future Source
* Remove Maloja V2 compatibility
* Throw on connection if server version is too old or unknown
2025-08-06 15:44:59 +00:00
FoxxMD
06b23d6287
docs: Update Spotify docs and usage due to Redirect URI changes
...
As of April 2025 Spotify no longer allows insecure redirect URIs which complicates initial Spotify setup.
* Improve spotify App creation instructions
* Add several approaches to creating a valid redirect URI
* Remove Spotify as the default Source example in docs due to complexity of Redirect URI requirements
Closes #330
2025-08-01 17:28:16 +00:00
FoxxMD
38a15d6426
chore: Bump version for release
2025-08-01 12:50:29 +00:00
FoxxMD
c2c86033cb
feat(listenbrainz): Add recording_mbid to submit payload for Koito compatibility
...
Koito should accept track_mbid but it only uses recording_mbid, so include that in payload.
#333
2025-07-31 16:40:21 +00:00
FoxxMD
72c94ca1e3
feat(listenbrainz): Include additional_info from LZ source Play if none parsed for MS play
2025-07-31 16:32:16 +00:00
FoxxMD
bf6bd4be55
fix(listenbrainz): Parse MB metadata from LZ Source listens and set in Play
...
Had not updated LZ source to parse metadata into Play since adding brainz metadata to Play object
#333
2025-07-31 15:53:43 +00:00
FoxxMD
53f78b02fb
chore: Bump for release
2025-07-28 13:59:17 +00:00
FoxxMD
6f5a8a7bc7
docs: Improve wording around Now Playing state
2025-07-28 13:46:46 +00:00
FoxxMD
0d5dd34597
docs: Remove koito mentions from LZ docs
...
Full Koito integration should be used! Removing mentions reduces ambiguity for new users.
2025-07-24 17:51:16 +00:00
FoxxMD
a93ec8dd7e
docs: Add clarifying callout for multi-use components
2025-07-24 17:51:16 +00:00
Matt Foxx
1e488b576c
Merge pull request #317 from FoxxMD/GH-314/plexjsVersion
...
fix(Plex): Temporary plex validation fix
2025-07-21 08:50:40 -04:00
Matt Foxx
d3d8eb40b5
Merge pull request #329 from FoxxMD/repeatPlayPersistence
...
Repeat play detection improvements
2025-07-21 08:50:17 -04:00
FoxxMD
db54761422
fix: Add last played data and check for repeat on new Play #318
2025-07-17 15:45:18 +00:00
FoxxMD
aa9f20f544
Fix formatting for hints
2025-07-17 15:44:35 +00:00
FoxxMD
60371f52f8
refactor: Move Play position closeness and duration comparisons to own functions
...
* Hint for logs returns for all conditions
* Add tests
2025-07-17 15:08:09 +00:00
FoxxMD
87394fbce7
Remove patch
...
Didn't work anyways
2025-07-17 13:24:30 +00:00
FoxxMD
72341ff1de
fix(plex): Temporary fix for library response validation #314
...
Catches and ignores outdated validation from @lukehagar/plexjs if we can verify raw value contains the required objects
https://github.com/LukeHagar/plexjs/issues/35
2025-07-17 13:24:30 +00:00
FoxxMD
63cebf3784
fix(plex): Ignore library response validation
...
As temporary fix for #314
2025-07-17 13:24:30 +00:00
FoxxMD
60f3f05f67
fix(Plex): Bump plexjs version to fix response validation
...
#314
2025-07-17 13:24:30 +00:00
FoxxMD
ce39065c80
docs: Fix social card image
2025-07-16 13:33:10 +00:00
FoxxMD
3f39e9efa1
docs: Update docusaurus to 3.8
2025-07-16 13:19:04 +00:00
Matt Foxx
f37dbd75c6
Merge pull request #328 from FoxxMD/GH-318/repeatDetection
...
feat: Track if play is a repeat and use in duplicate scrobble detecti…
2025-07-15 15:40:39 -04:00
FoxxMD
47ad7a3b74
feat: Track if play is a repeat and use in duplicate scrobble detection #318
...
* Use MS Player to mark Play as a repeat if session repeat is detected
* Remove FUZZY temporal accuracy as acceptable for detecting duplicate if candidate play is marked as repeat
2025-07-15 19:23:49 +00:00
FoxxMD
91747c0682
docs: Add Source client config guidance #325
2025-07-15 15:48:13 +00:00
FoxxMD
80f8495f8e
fix(plex): Fix regression with allowing non-music when using librariesAllow
2025-07-14 20:19:13 +00:00
Matt Foxx
c6bb258bf4
Merge pull request #324 from FoxxMD/lzAlbumField
...
Lz album field
2025-07-14 12:48:14 -04:00
FoxxMD
e70abc593c
chore: Update readme Koito entries
2025-07-14 14:55:29 +00:00
FoxxMD
22d73c6a7f
fix(lastfm): Fix lastfm providing empty string for non-defined album #323
2025-07-14 14:48:50 +00:00
FoxxMD
82afe4195c
chore: Bump version for release
2025-07-14 14:12:23 +00:00
FoxxMD
5e9409ab66
feat(plex): Add libraries allow/block warning
2025-07-14 13:49:40 +00:00
FoxxMD
e64854eb14
fix(plex): Strict comparison of libnrary names #326
...
* Fixes libraries containing partial allow/disallow names from being able to pass filter
* Fix not checking valid library types
2025-07-14 13:43:22 +00:00
FoxxMD
333f70bd7e
docs: hide navbar on scroll
2025-07-11 17:58:50 +00:00
FoxxMD
ace7d5efc9
docs: Fix anchor scrolling by specifying logo height
2025-07-11 17:56:13 +00:00
FoxxMD
cd14f82753
docs: Move updating instructions to own page
2025-07-11 17:27:22 +00:00
FoxxMD
aba718aef1
docs: Move docker install instructions before local
2025-07-11 17:05:24 +00:00
FoxxMD
c87497071d
docs: Add updating instructions
2025-07-11 17:04:02 +00:00
FoxxMD
2a35e7cf5c
fix(listenbrainz): Fix sending undefined release_name in scrobble #323
2025-07-10 19:39:08 +00:00
FoxxMD
3b98036687
docs: Remove old FAQ entries
2025-07-10 16:37:56 +00:00
FoxxMD
3fc935b96d
feat(listenbrainz): Add additional player/service meta info for LZ scrobbles #224
2025-07-10 15:52:51 +00:00
FoxxMD
7586f226ba
feat(listenbrainz): Add submission_client #224
2025-07-10 14:34:01 +00:00
FoxxMD
1a0e600db5
docs: Sort Source/Clients alphabetically
...
* Sort on readme/landing page and in configuration docs
* Makes skimming docs easier
2025-07-10 14:22:19 +00:00
FoxxMD
1dba5a6c6f
docs: Add Koito to overview summary
2025-07-10 13:15:45 +00:00
FoxxMD
3ec0652fbb
docs: Update docker installation wording
2025-07-10 13:11:17 +00:00
Matt Foxx
e71d5983a4
Merge pull request #322 from FoxxMD/koito
...
Implement Koito Client/Source
2025-07-10 07:50:50 -04:00
FoxxMD
bb9b5fc5cd
fix: superagent type error false positive
2025-07-09 16:30:15 +00:00
FoxxMD
89fde5a6fe
chore(listenbrainz): Add guidance in logging to switch to Koito source/client
2025-07-09 16:19:47 +00:00
FoxxMD
24ff8f2b0f
docs: Add Koito client/source docs
2025-07-09 16:17:47 +00:00
FoxxMD
f103563cb7
feat(koito): Implement Koito Source
2025-07-09 15:40:13 +00:00
FoxxMD
1767268a48
fix: Only return interpolated album value if not undefined
2025-07-09 15:39:22 +00:00
FoxxMD
8ab2d61742
feat(koito): Implement Koito client
2025-07-09 15:04:19 +00:00
FoxxMD
132580af6f
chore: Update superagent types
2025-07-09 15:04:01 +00:00
FoxxMD
375c0123c6
feat(koito): Add koito types/config
2025-07-09 13:12:15 +00:00
FoxxMD
769002412d
docs: Remove flatpak install guidance
2025-07-08 20:34:16 +00:00
FoxxMD
7fa567c1e4
docs(mpris): Add remote socket guidance
2025-07-08 20:13:10 +00:00
FoxxMD
8dfc9a6d55
refactor(mpris): Remove socat service in favor of simplified dbus connection
...
Can connect to dbus over TCP socket using ENV which is much simpler.
2025-07-08 19:53:55 +00:00
FoxxMD
0efc85c516
feat(mpris): Better handling of socket error on connection check
...
Prevents a low-level emitted error from completely crashing MS
2025-07-08 19:51:57 +00:00
FoxxMD
dbb8e3c5e0
feat(mpris): Add s6 finish script to prevent restart of socat
2025-07-08 19:36:08 +00:00
FoxxMD
f4f1eed645
feat: Add socat service
2025-07-08 14:38:22 -04:00
FoxxMD
0a31f51567
docs: Update MPRIS instructions for docker
2025-07-08 17:25:28 +00:00
FoxxMD
c255138a6e
docs: Add Koito quickstart instructions
2025-07-08 14:36:10 +00:00
Matt Foxx
856a05a357
Merge pull request #320 from FoxxMD/symfoniumPlex
...
Fix symfonium reporting issues for plex
2025-07-08 08:27:53 -04:00
FoxxMD
18915167f4
feat: Add more logging to apprise errors #158
2025-07-07 17:44:17 +00:00
FoxxMD
34b0995d6b
fix(plex): Increase max drift to 35 seconds to account for symfonium lag #271
...
Symfonium only reports position every 30 seconds vs. plex/plexamp 15 seconds. Increase max drift so MS doesn't falsely seek and reset play state.
2025-07-07 15:04:43 +00:00
FoxxMD
4e5f38378e
feat: Add RT Player metrics to player logging
2025-07-07 15:03:30 +00:00
FoxxMD
5d2c9261ae
chore: Bump version for release
2025-07-07 12:22:23 +00:00
FoxxMD
e039d4512c
ci: Add optional rybbit analytics to docs build
2025-07-07 12:20:16 +00:00
FoxxMD
51509a3531
ci: Add rybbit variables for gh actions
2025-07-03 17:51:38 +00:00
FoxxMD
8f032f2379
feat(listenbrainz): Allow now playing reporting for koito
...
Doesn't affect scrobbling and means if/when NP is actually supported it'll work automatically
2025-07-03 13:10:52 +00:00
FoxxMD
ff11e26219
Clean up logging for Now Playing
2025-07-03 13:10:13 +00:00
FoxxMD
f004aa4cfd
feat(listenbrainz): Implement Now Playing functionality
2025-07-03 12:50:40 +00:00
FoxxMD
2104f2a99d
fix(now playing): Catch update errors but only log
...
We don't need to stop the scrobbler for now playing issues since its not a critical function. Just log as warning.
2025-07-03 12:19:34 +00:00
Matt Foxx
389129aadf
Merge pull request #316 from msparkles/feat/lastfm-nowplaying
...
feat: lastfm nowplaying
2025-07-02 16:59:21 -04:00
FoxxMD
f885726ed1
docs: Add Now Playing and configuration
2025-07-02 20:50:03 +00:00
FoxxMD
3cc452323d
feat: Allow Now Playing to be globally toggled by ENV
2025-07-02 20:42:12 +00:00
FoxxMD
780acb32d7
fix(scrobbler): Fix duplicate map keys causing delay in Now Playing update
2025-07-02 17:03:48 +00:00
FoxxMD
bf5fdb95f4
test: Add Now Playing updating and scheduler tests
2025-07-02 17:03:26 +00:00
FoxxMD
7d7ccf53bb
test: Add Now Playing filter/sorting tests
2025-07-02 16:03:09 +00:00
Matt Foxx
94837b7e03
feat(subsonic): Implement filtering plays by user ( #319 )
...
* feat(subsonic): Implement filtering plays by user #301
2025-07-02 08:15:44 -04:00
FoxxMD
a9c1c7083d
feat: Add config source to startup logging #309
2025-07-01 19:33:10 +00:00
FoxxMD
8dd6fc15cc
docs: Improve example config rendering for ambiguous configs
...
* Filter examples based on client/source configuration
* Add `type` to all configs in AIO examples
Fixes #310
2025-07-01 18:30:24 +00:00
FoxxMD
32ca57fc65
feat: Implement Now Playing queue, scheduler, and source sorting
...
* Add queue for aggregating Now Playing updates
* Filter play based on 1. source priority and 2. player stickiness or deterministic order
* Use toad scheduler to processing NP queue
2025-07-01 16:18:15 +00:00
FoxxMD
9d748f26c0
feat: Pass source type-name to playingNow
2025-07-01 14:55:38 +00:00
FoxxMD
5af1454f36
feat: Add Now Playing user config
...
* Enable/disable now playing reporting
* WIP source filters for now playing
2025-06-30 16:12:11 +00:00
FoxxMD
bf7a660633
feat: Add Now Playing as class configuration and implement rate limit intervals
...
* Define if scrobble client can update Now Playing based on class property, use this to filter now playing update
* Use thresholds to determine when/if Now Playing should be updated
* Set LastfmScrobbler as supported for Now Playing
2025-06-30 15:29:51 +00:00
Madeline Sparkles
f0723f23e8
feat: lastfm now-playing scrobbling
2025-06-30 00:14:02 +02:00
Madeline Sparkles
36357135cb
fix(docs): remove archaic JSDocs on ScrobbleClients.scrobble
2025-06-29 23:17:28 +02:00
FoxxMD
8be08a5c29
chore: Bump for release
2025-06-20 20:09:21 +00:00
Matt Foxx
9fe5b9b671
Merge pull request #312 from FoxxMD/lzEnrich
...
feat: Enrich Listenbrainz submit payload
2025-06-20 16:07:43 -04:00
FoxxMD
720c07b008
feat(listenbrainz): Include more ids/fields in submit additional_info #311
2025-06-20 16:43:01 +00:00
FoxxMD
7fdf93c5d3
feat(spotify): Add spotify meta ids to play
2025-06-20 16:42:04 +00:00
FoxxMD
a0fd466bcf
dev: Add ENV only launch config
2025-06-19 18:15:45 +00:00
FoxxMD
35d62c913a
fix: Guard against undefined type in config.json #310
2025-06-19 18:12:57 +00:00
FoxxMD
ede2d9f71a
chore: Bump version for release
2025-06-19 16:22:39 +00:00
Matt Foxx
acccc32813
Merge pull request #296 from FoxxMD/deezer-internal
...
feat: Implement Deezer Internal (ARL) Source
2025-06-17 20:41:08 -04:00
FoxxMD
69f73ff09f
docs(deezer): Rewrite Deezer Source with ARL implementation
...
* Add ARL implementation docs and warnings
* Update json examples to include both types of deezer configs
2025-06-17 15:16:13 +00:00
FoxxMD
305f3c42ae
fix(deezer): options are optional
2025-06-17 15:14:01 +00:00
FoxxMD
d6ac4c34c5
feat: Implement better during/range temporal comparisons
...
* Refactor temporal comparisons to provide granular "during" thresholds
* Use duration for ignoring discovery with aggressive mode in Deezer #296
2025-06-17 10:10:34 -04:00
FoxxMD
9c6eeaafdb
feat: Fuzzy diff threshold configurable
...
* Refactor fuzzy diff theshold to be configurable
* Configure aggressive fuzzy discovery for Deezer to be 40 seconds #296
2025-06-17 10:10:34 -04:00
FoxxMD
6bd841fea2
feat(deezer internal): Add fuzzy discovery ignore option
...
Allows user-configurable decision on whether to ignore fuzzy-matched discovered plays
2025-06-17 10:10:34 -04:00
FoxxMD
e05c46e9ce
fix(deezer official): Fix missing interval interface property
2025-06-17 10:10:34 -04:00
FoxxMD
e94109dc75
feat: Implement Deezer Internal (ARL) Source
2025-06-17 10:10:34 -04:00
FoxxMD
a68dea5193
chore: Bump version for release
2025-06-16 19:22:43 +00:00
FoxxMD
b5d56b75d7
test(listenbrainz): Fix expected client count
2025-06-16 16:06:57 +00:00
FoxxMD
c8daffb935
docs(listenbrainz): Add Koito compatibility and config example #300
2025-06-16 16:02:13 +00:00
FoxxMD
18a7f26c54
feat(listenbrainz): Implement limited support for Koito as Listenbrainz Source/Client #300
...
* Support Koito server detection via public route
* Warns users of limited support on detection
* Implement play history retrival for Koito server
2025-06-16 15:49:39 +00:00
FoxxMD
e7395e79a5
feat(listenbrainz): Detect /1/ version prefix on base URL
...
Remove /1/ from base URL to further normalize user URL and make config easier #300
2025-06-16 14:15:48 +00:00
FoxxMD
08ee6d379f
fix(listenbrainz): Normalize URL and join parts correctly
...
* Normalize base URL to make user URL configuration easier/more robust
* Use joinPath for concetenating URL to avoid missing slashes #300
2025-06-16 14:04:15 +00:00
Matt Foxx
9c692539ce
Merge pull request #298 from FoxxMD/jellyfin-musicbrainz
...
feat(jellyfin): Add musicbrainz metadata #297
2025-06-04 14:15:09 -04:00
FoxxMD
5cd5061f20
feat(jellyfin): Add musicbrainz metadata #297
2025-06-04 13:44:15 +00:00
FoxxMD
46bcf6d6a6
chore: Bump version for release
2025-05-29 13:20:34 +00:00
FoxxMD
4da931269c
fix(plex): On Plex webhook routes filter plex sources to get webhook source only
...
#291
2025-05-27 17:31:34 +00:00
FoxxMD
d19d40d479
test: Fix real time player not triggered during event loop
...
Running tests synchronously preventing rt player from advancing which cause each player update to be considered an overdrift
2025-05-27 17:07:30 +00:00
FoxxMD
b3e1c7f660
chore: Update devcontainer to node 20 to match docker image
2025-05-27 17:05:50 +00:00
FoxxMD
1242a710df
fix: Fix NaN and undefined initial states for rt player #292
2025-05-27 15:29:06 +00:00
FoxxMD
b724eca9be
docs: Add missing var for docs deploy
2025-04-23 15:04:20 +00:00
FoxxMD
376d4936cc
docs: Add google site verification
2025-04-23 15:01:42 +00:00
FoxxMD
a5da0573c5
docs: Remove flatpak installation method
...
See #287
2025-03-31 18:31:46 +00:00
FoxxMD
4694ce45a7
chore: Update flatpak description
2025-03-31 12:12:28 -04:00
FoxxMD
7c7d710cd3
fix(ui): Guard against null listenedDuration
...
Fixes #285
2025-03-28 08:21:04 -04:00
FoxxMD
e2cd7e2991
chore: Bump version for release
2025-03-25 01:15:40 +00:00
FoxxMD
92d8eb8d6f
chore: Update static config schema
2025-03-25 01:15:26 +00:00
FoxxMD
d14e7d9b2e
fix(lastfm): Remove duration for scrobble if value is 0
2025-03-25 01:09:31 +00:00
FoxxMD
e4befae55a
fix(lastfm): Fix endpoint regex to exclude auth callback url
2025-03-20 19:14:34 +00:00
FoxxMD
0e00b425b4
fix(icecast): rename old scrobble behavior variable
2025-03-20 16:27:30 +00:00
FoxxMD
fcf6c8eb4c
docs: Add some common source options
2025-03-20 16:23:01 +00:00
FoxxMD
242bacc1be
feat(source): Optional position for non-positional sources
...
* Allow non-positional Sources to still report position (for display only)
* Refactor Azuracast to be non-positional due to reported position not always being accurate (azuracast approximates track length)
2025-03-20 15:40:31 +00:00
FoxxMD
cbe28f97a0
feat(source): Improve "Should Scrobble" functionality
...
* Rename from manualListening to Should Scrobble to better describe functionality
* Move check to Source scrobble function to avoid short circuting Source player for no reason
* Add to Azuracast and make functionality more generic
2025-03-20 15:12:00 +00:00
FoxxMD
336972f586
fix(ui): Update status indicator for ingress sources
2025-03-20 14:13:48 +00:00
Matt Foxx
81edb31e7b
Merge pull request #283 from FoxxMD/icecast
...
Icecast
2025-03-19 12:57:38 -04:00
FoxxMD
dbde66ad77
docs: Add Icecast docs
2025-03-19 16:50:57 +00:00
FoxxMD
efbf2da816
feat(icecast): Switch to metadata-only parsing
2025-03-19 16:34:19 +00:00
FoxxMD
38d1db2f3f
feat: Implement Icecast Source MVP
2025-03-19 15:20:44 +00:00
Matt Foxx
265ae82663
Merge pull request #278 from FoxxMD/GH-263/azuracast
...
feat: Add Azuracast Source
2025-03-19 09:28:27 -04:00
FoxxMD
2bd2972af6
docs: Fix bad merge of azuracast/musiccast config
2025-03-19 13:22:52 +00:00
Matt Foxx
1bdf083e28
Merge branch 'master' into GH-263/azuracast
2025-03-19 09:17:44 -04:00
Matt Foxx
4c233fdded
Merge pull request #279 from FoxxMD/GH-274/musiccast
...
feat(musiccast): Implement MusicCast Source
2025-03-19 08:42:40 -04:00
FoxxMD
e0060fe3e5
feat: Add ENVs for default scrobble threshold for duration/percent
...
* SOURCE_SCROBBLE_DURATION env sets default duration
* SOURCE_SCROBBLE_PERCENT env sets default percent
2025-03-18 17:28:14 +00:00
FoxxMD
2adb3bd052
docs(musiccast): Add docs for Yahama MusicCast
2025-03-17 21:02:26 +00:00
FoxxMD
0dca49ab43
fix(player): Check for 0 duration before finalizing listen session with duration-based calculation
2025-03-17 20:40:06 +00:00
FoxxMD
6a71d4a495
fix(musiccast): Treat 0 total_total as undefined
...
Prevents some positional player logic from running on a functionally-useless value
2025-03-17 20:40:06 +00:00
FoxxMD
230ddf4a48
fix(source): Do not calculate polling interval decrease if duration does not exist
2025-03-17 20:40:06 +00:00
FoxxMD
e4e1797ac5
fix(musiccast): Remove hardocded port for debugging
2025-03-17 20:40:06 +00:00
FoxxMD
1dd3185715
fix: Better handling of 0 duration tracks
...
* Check for zero duration before using progress bar in debug logging
* Adds tests for scrobble thresholds to make sure 0 duration is handled
2025-03-17 20:40:06 +00:00
FoxxMD
4fee231a7b
test(musiccast): Add tests for basic connectivity
2025-03-17 20:36:15 +00:00
FoxxMD
b5ead39792
feat(musiccast): Switch play info fetch order
...
net/usb is more likely to be used since it has more sources. Likely using it will reduce required fetches in most usage scenarios.
2025-03-17 20:36:15 +00:00
FoxxMD
190431b9d4
feat(musiccast): Implement MusicCast Source
2025-03-17 20:36:15 +00:00
FoxxMD
210fa35cb6
docs: Add Last.fm Endpoint source docs
2025-03-14 16:34:43 +00:00
FoxxMD
479af1cd5e
docs: Add Listenbrainz Endpoint source docs
2025-03-14 16:29:48 +00:00
Matt Foxx
c72831cd12
Merge pull request #281 from FoxxMD/normalScrobbleEndpoints
...
feat: Implement dummy endpoint Sources for Listenbrainz and Last.fm
2025-03-14 11:24:08 -04:00
FoxxMD
f68a9493ce
fix(listenbrainz): add dummy validate-token endpoint
2025-03-14 08:16:56 -04:00
Matt Foxx
78a93d0809
Merge pull request #256 from FoxxMD/configurablePlayerStale
...
feat(source): Stale/orphan scrobble and timestamp improvments
2025-03-13 15:26:46 -04:00
FoxxMD
3680ac8af1
feat(lastm): Implement MVP Lastfm endpoint source
2025-03-13 18:44:08 +00:00
FoxxMD
e74ba52c47
fix(listenbrainz): Improved slug and normal lz endpoint detection
2025-03-13 16:53:25 +00:00
FoxxMD
d3cd07c5c3
feat(listenbrainz): Implement MVP LZ endpoint source
2025-03-13 16:20:37 +00:00
FoxxMD
2b890d4704
refactor: Pass reportedTS for testing purposes
2025-03-13 11:06:26 -04:00
FoxxMD
47eead2a18
feat: Use timestamp for position MS change on RT player
...
Makes testing easier
2025-03-13 11:06:26 -04:00
FoxxMD
38ea3115f6
test: Add tests for scrobble behavior when cleaning up players
2025-03-13 11:06:26 -04:00
FoxxMD
f11a2b5442
fix: Use last known position for final range when cleaning up stale RT player
...
Prevents listen duration from being reported as overdrift RT position due to lack of player updates
2025-03-13 11:06:26 -04:00
FoxxMD
818f67d6da
feat(source): Add relative time since last activity to logging
...
Makes logs easier to read when looking for stale source/player
2025-03-13 11:06:26 -04:00
FoxxMD
84f353220d
feat(source): Clear listening range on stale to prevent erroneous scrobble on resume
...
Clearing pre-stale listening range prevents any future resume (player becomes non-stale) from using old listening range to scrobble. Represents a physical "break" between listening sessions for the same song
2025-03-13 11:06:26 -04:00
FoxxMD
47541a449b
feat: Use human-friendly timestamp for stale/ophan interva logging
2025-03-13 11:06:26 -04:00
FoxxMD
1a62edab37
feat(source): Add stale/orphaned intervals as user configurable
2025-03-13 11:06:26 -04:00
FoxxMD
5927450840
fix(ytm): Recover artist/album from YTM when not surfaced by youtube.js
...
Use flex_columns for parsing raw data when musicshelf when artist/album does not have an endpoint LuanRT/YouTube.js#381
Fixes #280
2025-03-13 10:40:47 -04:00
FoxxMD
ec9bea70fd
chore: Bump YTM dependency version
2025-03-13 10:37:53 -04:00
FoxxMD
2f9a45b1e4
fix: Filter components by name and check for undefined
...
Fixes #273
2025-03-12 19:16:32 +00:00
FoxxMD
3c649df2e9
docs(azuracast): Add azuracast Source docs
2025-03-11 16:41:42 +00:00
FoxxMD
ab1766ca0a
feat(azuracast): Add station name hint and fix labels
2025-03-11 16:10:38 +00:00
FoxxMD
a42de78ad3
feat(azuracast): Implement manual listening
2025-03-11 16:06:46 +00:00
FoxxMD
81bde3a771
feat(azuracast): Add MVP azuracast source implementation
2025-03-11 15:21:07 +00:00
FoxxMD
982e6655ef
chore: Add more log guidance on bug report
2025-02-14 17:51:17 +00:00
FoxxMD
44ce0cba3c
feat(azuracast): Implement config and types
2025-02-03 16:53:39 +00:00
FoxxMD
c1e1c69b5e
fix: Missing optional period on vs. when parsing artist
2025-01-27 21:13:32 +00:00
FoxxMD
142defdd20
docs: Put delimited artist example in expander
2025-01-27 14:57:15 +00:00
FoxxMD
aad9f2b4de
docs: Add primary artist extraction examples for scrobble modification
2025-01-27 09:46:14 -05:00
FoxxMD
8e92407182
test: Add modification example for parsing a primary artist from delimited string
2025-01-27 09:36:15 -05:00
FoxxMD
94210e29d1
docs: Fix extra array in title modification example
...
Fixes #258
2025-01-27 09:16:34 -05:00
FoxxMD
d2c6194314
ci: Add comments on PR SHA usage
2025-01-21 14:06:16 -05:00
FoxxMD
11ca7a724d
try pull SHA directory for build
...
So that build summary details used SHA
2025-01-21 13:58:47 -05:00
FoxxMD
3057908074
fix(ci): Add context to build-push so it uses checked out PR ref
2025-01-21 13:28:45 -05:00
FoxxMD
6a9e538845
chore: Bump version for release
2025-01-21 15:04:38 +00:00
Matt Foxx
130538cd9a
Merge pull request #255 from FoxxMD/GH-254/playCompletedOnCleanup
...
fix(spotify): Generate played object from cleanup with correct TS
2025-01-18 12:57:51 -05:00
FoxxMD
1486613744
fix(spotify): Generate played object from player cleanup with correct timestamp
...
Missing arg to pass to getPlayedObject to ensure the timestamp used for playDate is the same as normally discovered tracks. Without the arg two tracks played with the second being scrobbled on stale would cause the latter to have the same TS as the former
fixes #254
2025-01-17 18:55:35 +00:00
Matt Foxx
f2516206c0
ci: Refactor OCI image workflows to use multi-runner for cross-arch builds ( #246 )
...
Replaces `build-push-action` buildx QEMU building for multiple `arch` with a multi-runner matrix that builds each image on native runners and combines digests before pushing to registries.
* Use arm public preview runner
* Refactor publish image workflow to use multi-runner
* Refactor PR workflow to use multi-runner
2025-01-17 09:35:11 -05:00
FoxxMD
f8902e05a6
ci: Update sanity test to install/build concurrently
2025-01-16 16:15:00 -05:00
Matt Foxx
c59b47c801
Merge pull request #252 from FoxxMD/paralellBuild
...
feat(docker): Paralellize npm install and build processes
2025-01-16 16:06:27 -05:00
FoxxMD
0e4845f2e2
feat(docker): Paralellize npm install and build processes
2025-01-16 20:48:05 +00:00
FoxxMD
e2775cd9de
chore(docker): Update node version and reduce npm verbosity
...
* Update to latest node 20.x minor version
* Remove `--verbose` and enable `--no-audit` for npm install to reduce install time
* These were left over from debugging ARM builds from Feb 2024
2025-01-16 14:43:29 -05:00
Matt Foxx
816bec88c8
Merge pull request #251 from FoxxMD/docusaurus36
...
docs: Update to Docusaurs 3.6 to improve build times
2025-01-16 14:25:19 -05:00
FoxxMD
d724bef4e4
docs: Update to Docusaurs 3.6 to improve build times
2025-01-16 14:07:47 -05:00
FoxxMD
cac851f120
chore: Bump version for release
2025-01-15 15:16:26 +00:00
FoxxMD
c1df74ee27
docs: Strikeout tautulli in readme
2025-01-15 15:16:01 +00:00
FoxxMD
0c7b51c622
docs: Update bug report template to correct debug mode link
2025-01-15 15:12:26 +00:00
FoxxMD
56ecad24d4
docs: Update kitchensink with newer jellyfin/plex examples
2025-01-15 15:09:38 +00:00
FoxxMD
6bb600648a
docs: Add final deprecation notices for Plex/Tautull/Jellyfin legacy sources
2025-01-15 15:00:44 +00:00
FoxxMD
fe2610c35a
docs: Add debug mode information
2025-01-15 14:36:48 +00:00
FoxxMD
84bcbc9cea
docs(ytm): Update docs with more debugging options
2025-01-15 14:02:50 +00:00
FoxxMD
d741377e5a
feat(ytm): Debug mode enables log diffs
2025-01-15 13:50:47 +00:00
Matt Foxx
1ea106970d
Merge pull request #248 from FoxxMD/GH-227/ytmMusicalChairs
...
fix(ytm): Improve history handling
2025-01-15 08:27:55 -05:00
Matt Foxx
a879b7aded
Merge pull request #249 from FoxxMD/GH-223/plexPlatformCleanup
...
fix(plex): Improve handling of orphaned API sessions
2025-01-14 08:19:12 -05:00
FoxxMD
30ee000676
fix(plex): Refactor final range position to be configurable
...
* Keep default 3 seconds grace period
* Set grace period for plex to API viewoffset period (rtdrift) of 17 seconds #223
2025-01-09 18:42:09 +00:00
FoxxMD
703cf80d5a
fix(source): Implement player cleanup with play discovery for stale platforms
...
* Do play cleanup during polling for new plays so that we can discover tracks from abandoned players
* Fixes missed scrobbles from Plex API when Source stops returning a session due to player queue end #223
2025-01-09 18:01:12 +00:00
FoxxMD
34289f0176
docs: defer script load
2025-01-03 19:24:51 +00:00
FoxxMD
8b8f32de02
feat(ytm): Use durations to generate play dates for interim tracks
...
#226
2025-01-03 18:28:55 +00:00
FoxxMD
095e5cc0d9
feat(ytm): Conservative skip detection
...
#226
2025-01-03 17:56:07 +00:00
FoxxMD
0c46c0a079
refactor(ytm): Clean up tests and history parsing functions
2025-01-03 16:25:33 +00:00
FoxxMD
dd4b2ebb8c
fix(ytm): Compare recent changed history to detect outdated responses
...
Store responses when history changes and then check if YTM returns an outdated response after previously returning new tracks.
#227
2025-01-02 19:03:38 +00:00
FoxxMD
d30ee0c35a
feat(source): Ensure delay on close-interval for scrobbling is less than interval
2025-01-02 18:29:34 +00:00
FoxxMD
484fb16bba
fix(ytm): Use diff type to restrict valid history changes
...
* Diff type should always be prepend since we are checking for new tracks
* Warn and log if another type is detected
* Warn if more than one track diffed for discovery
* Refactor and and make YTM history parsing testable
#227
2025-01-02 18:28:59 +00:00
FoxxMD
f320e6cef0
feat: Include comment in play diff when present
2025-01-02 18:25:27 +00:00
FoxxMD
ea2421bc6d
chore: Bump plexjs version
...
Includes originalTitle spec addition so we can remove patch
2025-01-02 16:59:36 +00:00
FoxxMD
f43c31fb9a
docs: Add lnav config
2024-12-27 18:49:29 +00:00
FoxxMD
6825ad55e3
feat(ui): Disable minifiying frontend identifiers
...
No need to minify to save space since this is not a high-traffic site and preserving identifiers helps with debug issues
2024-12-27 18:49:16 +00:00
FoxxMD
92841f8bb3
fix: Default positional listen range to 0 position if none is provided
...
* doesn't make sense to use undefined as start. if we are providing a position it should be 0, if unknown
#245
2024-12-27 18:43:51 +00:00
FoxxMD
38e5e4c9a9
feat: Add init log message for debug mode status
2024-12-20 13:47:54 -05:00
FoxxMD
1bcfed05af
feat: Log player state when using debug mode
2024-12-20 18:28:21 +00:00
FoxxMD
e00ec4098a
feat: Reduce polling log noise
2024-12-20 18:10:22 +00:00
FoxxMD
5d44953435
revert ts comment causing failing build
2024-12-20 17:46:04 +00:00
FoxxMD
80ad5a3518
feat: Fully implement use of DEBUG_MODE
2024-12-20 14:02:21 +00:00
FoxxMD
b5683ba4b8
fix(jellyfin): Fix missing check for undefined play
...
#239
2024-12-17 20:53:54 +00:00
FoxxMD
884b3963d3
fix(plex): Use track artist from response data when album artist is present
...
* Fixes #241 by using the track artist as the primary artist when album artist is present
* Bug is reported in LukeHagar/plexjs#27 but will need be patched at runtime for the foreeable future due to npm packages not being published since September LukeHagar/plexjs#26
2024-12-16 20:11:50 +00:00
Matt Foxx
8de2296aaf
Merge pull request #221 from FoxxMD/improveInitUsage
...
refactor: bubble init usage and errors to simplify recovery
2024-12-16 09:43:53 -05:00
Matt Foxx
c1869f469c
Merge pull request #240 from Fratt/fix-spotify-album-artists
...
fix(spotify): Album artists no longer missing
2024-12-16 09:34:29 -05:00
FoxxMD
86196b3122
test(spotify): Test album artist parsing
2024-12-16 14:31:10 +00:00
Fratt
fd03e42240
fix(spotify): Album artists no longer missing
2024-12-14 13:08:00 +01:00
FoxxMD
3e230b0d68
fix(ui): Fix card header right-side alignment
2024-12-11 20:41:06 +00:00
FoxxMD
133d7f56e5
fix(ui): Wording for non-polling sources start/restart
2024-12-11 20:35:22 +00:00
FoxxMD
78d048ba62
fix: missing implemented methods for test class
2024-12-11 18:24:42 +00:00
FoxxMD
323004a730
feat: Implement start/restart/force init from UI regardless of status
2024-12-11 18:20:12 +00:00
FoxxMD
626bca9951
feat: Initialize usage refactored everywhere
...
* try-catch and bubble up depending on usage
* replace poll/monitor code on startup with scheduler task usage
* better notification messages with truncated cause chain
2024-12-11 17:30:08 +00:00
FoxxMD
3ae0d4ff45
feat: Add stage Error classes and cause chain for notification
2024-12-10 21:17:44 +00:00
FoxxMD
9d85df54e1
refactor: Normalize all testAuth implementation to throw on error
2024-12-10 20:56:31 +00:00
FoxxMD
0ff1c95fd1
TODO partial refactor of init usage to throw errors
2024-12-10 20:34:33 +00:00
FoxxMD
b93274fd53
Merge remote-tracking branch 'origin/master'
2024-12-10 15:19:55 -05:00
FoxxMD
0f0d1d64f9
feat(jellyfin): More robust connection check and logging
2024-12-10 20:19:30 +00:00
FoxxMD
d77e6c6f22
feat(jellyfin): Bump client major version
2024-12-10 20:19:10 +00:00
Matt Foxx
83ff5348c6
Merge pull request #216 from FoxxMD/GH-215/notifiersRelax
...
feat(notifications): Make init more granular and always complete init
2024-12-10 11:54:59 -05:00
FoxxMD
65012d40ed
feat(notifications): Make init more granular and always complete init
...
* Notifications are not mission critical so its okay if they fail on init because service outage may be transient. Always init notification services and always attempt to push (we catch failures anyway)
* Parse more info from notification URL and test simple reachability of host/port to make troubleshooting easier
Fixes #215
2024-12-10 11:33:33 -05:00
FoxxMD
feb02bfa85
docs(ytmusic): Clearer wording for troubleshooting content
...
Also increase non-erroneous diff logging from DEBUG to VERBOSE to raise signal a bit.
2024-12-10 15:55:20 +00:00
FoxxMD
276e51b8ea
docs: Fix broken links
2024-12-10 15:40:15 +00:00
FoxxMD
c83d77c02a
docs: Fix bad transform links
2024-12-10 15:28:25 +00:00
FoxxMD
0cdb48a71a
ci: Generate schema files for docsite in GH docs deploy workflow
2024-12-10 10:13:06 -05:00
FoxxMD
1556d7ac69
chore: Generate schema files during docker build for docsite
2024-12-10 10:08:02 -05:00
Matt Foxx
1e65abd962
Merge pull request #236 from FoxxMD/ytOauthRedux
...
feat(ytm): Re-implement auth with cookie and oauth
2024-12-10 09:16:14 -05:00
FoxxMD
9f11d799ac
feat(source): Add experimental file logging
2024-12-09 18:44:43 +00:00
FoxxMD
5c0f419e7e
feat(ytm): Implement ENV config
2024-12-06 19:28:32 +00:00
FoxxMD
c33d42808a
docs(ytmusic): Add new auth docs and update FAQ
2024-12-06 19:09:32 +00:00
FoxxMD
e8716a45b2
feat(ytmusic): Custom redirectUri checks
2024-12-06 15:56:32 +00:00
FoxxMD
570dee30e3
fix(ytmusic): Add missing logging for redirect URI
2024-12-06 15:33:02 +00:00
FoxxMD
97222ed233
refactor(ytmusic): Improve auth handling for reauthentication
2024-12-06 15:18:07 +00:00
FoxxMD
e2a7fff6f9
chore: Bump youtubei.js major version
...
* Fixes parsing warning for history response
2024-12-06 15:17:18 +00:00
FoxxMD
efc8246a76
chore: Add docker-compose dev file and vscode task
2024-12-05 09:37:58 -05:00
FoxxMD
b4a95e0cf9
fix(ytmusic): query string on redirect uri incorrectly encoded
2024-12-05 09:18:05 -05:00
FoxxMD
c66d5d4627
docs: Improve schema generation and compatibility
...
* Patch generator to generate definition titles until vega/ts-json-schema-generator#2127 is resolved
* Add launch config for debugging schema generation
* Disallow topRef generation so docusarus json viewer works
* Write to docsite static assets on generation
2024-12-04 14:46:40 -05:00
FoxxMD
4de28e0390
feat(ytmusic): Add more innertube options to user configuration
2024-12-04 19:38:54 +00:00
FoxxMD
f74721b366
fix(ytmusic): Fix missing api prefix for redirectUri
2024-12-04 15:04:36 +00:00
Matt Foxx
4fb16e7098
Merge pull request #232 from CodeWithMa/remove-deprecated-version
...
fix: remove deprecated version from docker-compose.yml
2024-12-03 16:35:46 -05:00
Matt Foxx
a76c351206
Merge pull request #235 from CodeWithMa/fix_case
...
fix: fix WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match
2024-12-03 16:35:03 -05:00
FoxxMD
7faf94cfab
feat(ytm): Re-implement auth with cookie and oauth
...
Youtube TV seems no longer have scope for reading history or account details?
Cookie may work and custom oauth seems most stable based on reporting from LuanRT/YouTube.js#803
2024-12-03 15:58:08 -05:00
Ma
3a1e29f682
fix: fix WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match
2024-11-28 15:57:17 +01:00
Ma
88cb287df8
fix: remove deprecated version from docker-compose.yml
2024-11-20 17:16:14 +01:00
dependabot[bot]
eb26ee0cd4
Merge pull request #194 from FoxxMD/dependabot/npm_and_yarn/npm_and_yarn-ac4cac0c7a
2024-10-31 12:44:16 +00:00
dependabot[bot]
844833f348
chore(deps): bump the npm_and_yarn group across 2 directories with 3 updates
...
Bumps the npm_and_yarn group with 1 update in the / directory: [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js ).
Bumps the npm_and_yarn group with 2 updates in the /docsite directory: [micromatch](https://github.com/micromatch/micromatch ) and [webpack](https://github.com/webpack/webpack ).
Updates `xml2js` from 0.6.0 to 0.6.1
- [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/compare/0.6.0...0.6.1 )
Updates `micromatch` from 4.0.7 to 4.0.8
- [Release notes](https://github.com/micromatch/micromatch/releases )
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md )
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8 )
Updates `webpack` from 5.92.1 to 5.95.0
- [Release notes](https://github.com/webpack/webpack/releases )
- [Commits](https://github.com/webpack/webpack/compare/v5.92.1...v5.95.0 )
---
updated-dependencies:
- dependency-name: xml2js
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: micromatch
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: webpack
dependency-type: indirect
dependency-group: npm_and_yarn
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-31 12:40:57 +00:00
FoxxMD
38b02cf771
Update dependencies
2024-10-31 12:38:04 +00:00
Matt Foxx
1706d5cab9
Merge pull request #203 from FoxxMD/GH-195/ytoauth
...
feat(youtube)!: Use oauth-based api library for better stability
2024-10-31 08:30:48 -04:00
Matt Foxx
640d2ff28b
Merge pull request #219 from FoxxMD/GH-218/plexLocal
...
fix(plex): Handle plex local user
2024-10-30 13:42:55 -04:00
FoxxMD
312b6ce987
fix(plex): Handle plex local user
...
* Identify when session is for the local user (no user is logged in)
* Add Local User as default allowed when no usersAllow settings
* Allow user config to allow/block local user
* Update plex docs
Fixes #218
2024-10-30 16:44:51 +00:00
FoxxMD
489f70929e
docs: Fix spelling mistake
2024-10-29 13:47:38 -04:00
FoxxMD
904ddfa5c6
docs(tautulli): Add deprecation notice and discussion link
2024-10-29 16:57:59 +00:00
FoxxMD
3ed6840607
feat: Improved filtering for platform players with multiple states
...
* Add session key dervied from source data to Play and PlayerState
* Discriminate states based on a session key, if possible
* Log which states are being dropped based on session key (plex)
* Add session key to important logging (new player play, in UI for player info)
2024-10-29 14:59:55 +00:00
FoxxMD
93125dd7c8
feat: Reduce drop reason logging noise for jellyfin/plex API sources
...
Only log the first occurrence of a unique session drop so that subsequent drops don't make logging noisy
2024-10-28 18:33:52 +00:00
FoxxMD
34356c6c56
fix(youtube): Fix signout check
2024-10-28 18:03:10 +00:00
FoxxMD
05466fed2b
feat(youtube): Add config option to always log diff
2024-10-28 18:03:10 +00:00
FoxxMD
535b818a22
fix(youtube): Implement bump-only list change detection
...
Should fix new way YTM orders recent history #195
2024-10-28 18:03:10 +00:00
FoxxMD
e62e04dd14
feat(youtube)!: Use oauth-based api library for better stability
...
* Fixes #195 missing (404) history endpoint which only appear when using cookies
* Might fix #158 due to using a different authentication method
2024-10-28 18:03:10 +00:00
FoxxMD
61cd5fcf7b
fix: Bump @foxxmd/logging to fix DST rolling file issue
...
#214
2024-10-28 18:02:04 +00:00
Matt Foxx
f308f71b5d
Merge pull request #212 from FoxxMD/playerStateCleanup
...
feat(player): Real time positional player state
2024-10-25 14:54:23 -04:00
FoxxMD
c498bde1fd
feat(ui): Show indeterminate state for non-positional players
2024-10-25 15:57:30 +00:00
FoxxMD
0c9b496137
feat(player): Implement real-time positional state tracking
...
* Introduce positional and non-positional data structures
* Refactor state player into types of each
* Refactor listen ranges and progress into types of each
* Implment (internal) real-time player and base positional player seeked/repeat on real-time drift instead of just reported position
* Refactor tests to use (emulated) real-time components
2024-10-24 20:37:41 +00:00
FoxxMD
9682d4f8f9
refactor(player): Cleaner player update signature
2024-10-24 14:53:30 +00:00
Matt Foxx
da76945f5e
Merge pull request #211 from FoxxMD/plexApi
...
feat(plex): Initial Plex API Source implementation
2024-10-24 09:45:17 -04:00
FoxxMD
51074a58f4
Add deprecation warning to plex webhook source
2024-10-24 13:41:10 +00:00
FoxxMD
3cc735b9c8
fix(plex): Refactor player state to allow for drift and tracking pause based on Source behavior
...
Plex only updates player position every 15 seconds (of played track) so player state needs to be adapted to not detect this as a pause or seek.
* Allow per-source drift allowed before triggering seek
* Allow per-source pause detection
2024-10-23 20:30:33 +00:00
FoxxMD
b74f31c26d
feat(plex): Implement album art for UI
2024-10-23 18:42:55 +00:00
FoxxMD
4a96cbfb0e
docs(plex): Clean up api/webhook sections and add migration guide
2024-10-23 15:18:13 +00:00
FoxxMD
77a3c352b1
feat(plex): Implement workaround for getting plex token details
...
Ignore sdk validation error and get raw value in order to parse authenticated user
2024-10-23 10:59:36 -04:00
FoxxMD
598ae01082
feat(plex): Add track progress tracking to api source
2024-10-23 13:40:50 +00:00
FoxxMD
54e11899a0
Fix missing comma
2024-10-22 18:29:11 +00:00
FoxxMD
dc4962ade1
feat(plex): Initial Plex API Source implementation
2024-10-22 18:21:28 +00:00
FoxxMD
ccf317c06f
docs: Fix Jellyfin API migration version
2024-10-17 10:40:54 -04:00
FoxxMD
aff5717f19
fix(ui): Fix album art ordering
2024-10-16 16:26:23 +00:00
FoxxMD
fa39209272
feat(ui): Implement album art for Jellyfin and Spotify
2024-10-16 16:09:24 +00:00
FoxxMD
d63082a889
fix(ui): Skip lg breakpoint for cleaner interface
2024-10-16 16:09:05 +00:00
FoxxMD
a28d46ecbe
feat(ui): Add album art support in player
2024-10-16 16:08:41 +00:00
FoxxMD
3bc72ce881
feat(ui): Improve player ui when player is stopping
2024-10-16 13:56:05 +00:00
FoxxMD
314210117b
fix(player): Fix missing calculated state on player stop
2024-10-16 13:55:35 +00:00
FoxxMD
57a8e48d3a
fix(jellyfin): Fix memory player hanging on end of state
...
Was not passing stopped state due to undefined play but need to do this to let last play actually be scrobbled.
Refactor jellyfin session validation and types for MemorySource to correctly allow processing player state with no plays
2024-10-16 13:55:05 +00:00
FoxxMD
2d3ab86238
fix: Fix string splitting
2024-10-16 13:03:37 +00:00
FoxxMD
b76edbf7de
fix: Revert including platform for track dispay by default
2024-10-16 12:47:43 +00:00
Matt Foxx
b2efc34b80
Merge pull request #210 from FoxxMD/GH-209/jellyfinCleanup
...
fix(jellyfin): Enforcing media type and session handling fixes
2024-10-15 14:36:56 -04:00
FoxxMD
dee8d6bc61
chore(vscode): Add markdown extension to devcontainer
2024-10-15 17:42:04 +00:00
FoxxMD
3e5576481d
feat(jellyfin): Support and enforce library collection type
...
* Default disallow any activity not from a library of collectionType 'music'
* Allow user config for allow/block by library name
* Allow user config for allowing additional library collection types
* Update docs and example config
2024-10-15 17:41:33 +00:00
FoxxMD
ffd74aea6f
docs: Enable parsing json5 for AIO examples
2024-10-15 17:39:49 +00:00
FoxxMD
145af33239
feat(jellyfin): More item type validation
2024-10-15 14:25:51 +00:00
FoxxMD
3851b2226a
fix(jellyfin): Detect theme song extras play and discard
...
Fixes #209
2024-10-15 13:13:36 +00:00
FoxxMD
bb132101b5
fix(jellyfin): Use correct id for tracking first-time seen media
2024-10-14 17:19:41 -04:00
FoxxMD
1e6251edfb
ci: Fix sanity test checkout ref and shorten APP_VERSION sha usage
2024-10-14 13:07:12 -04:00
FoxxMD
e251da9b8e
test(jellyfin): Update valid activity tests
2024-10-14 15:42:54 +00:00
FoxxMD
335ee0cd60
fix(jellyfin): Set multi-platform in constructor
2024-10-14 11:15:59 -04:00
FoxxMD
dc9f6c22ad
feat(jellyfin): Add debug options for media data troubleshooting
2024-10-14 11:11:58 -04:00
FoxxMD
5568b54c99
fix(jellyfin): Enforce media type when determining session validity
...
Fixes #209 for erroneous scrobbling of video
2024-10-14 11:01:48 -04:00
FoxxMD
e6e35e052a
feat: Implement platform output when building track info
2024-10-14 11:01:11 -04:00
Matt Foxx
9c21db8172
Merge pull request #205 from FoxxMD/GH-200/jfPlayFormat
...
fix(jellyfin): Gaurd against undefined playback data
2024-10-11 15:57:57 -04:00
FoxxMD
77c9141d92
fix(jellyfin): Gaurd against active session without now playing data
2024-10-11 13:47:39 -04:00
FoxxMD
68e86f4f90
fix(jellyfin): Gaurd against undefined playback data
...
SDK types say AlbumArtists etc. should be defined but #200 shows that's not always the case, for some reason.
Check for undefined value on playback data that requires additional transformation to prevent errors.
Fixes #200
2024-10-11 13:47:39 -04:00
Matt Foxx
5e95f60461
Merge pull request #208 from FoxxMD/vegaSchema
...
fix: Replace typescript-json-schema with ts-json-schema-generator
2024-10-11 13:32:52 -04:00
FoxxMD
908d7d4177
fix: Replace typescript-json-schema with ts-json-schema-generator
...
Fixes a lot of headaches:
* vega is more up to date and extensible
* no more hacky regex for reference names
* complete control over parsing and formatting (const as enum)
* does not duplicate typescript as dependency
* should properly throw errors on schema generation instead of just logging to console
* move schema static files into programmatic creation instead of package scripts
* fix types being removed in prod which caused schema generation errors
2024-10-11 12:28:55 -04:00
FoxxMD
de1a9c35ec
fix: Add missing express types for prod dependencies
...
Required for ts-schema generator to correctly work since we use it in config definitions
2024-10-11 09:28:01 -04:00
FoxxMD
f7fa9cd330
fix: Guard against ts-schema generation errors
...
* Check if generator is null and throw
* Check if schema is null before trying to validate, will make errors less cryptic
2024-10-11 09:27:12 -04:00
FoxxMD
ee8b371850
fix: Missing tsconfig and other root files for some reason??
2024-10-11 09:23:02 -04:00
FoxxMD
601228a369
fix: Fix boolean options in issue template forms
2024-10-10 15:12:24 -04:00
FoxxMD
5dcaefc460
chore: Rename config template
2024-10-10 15:06:21 -04:00
FoxxMD
026e94fc1b
chore: Add issue template config
2024-10-10 15:05:24 -04:00
FoxxMD
fd7c8467b4
chore: Add templates for feature request and new source/client
2024-10-10 15:03:31 -04:00
FoxxMD
06e651a844
chore: Migrate bug report template to form
2024-10-10 14:41:38 -04:00
FoxxMD
1b0e7a3dfd
ci: Make test workflow reusable and add run sanity check
...
* Add sanity run steps to check for obvious errors when running in production
* Refactor test job to be reusable
2024-10-10 12:05:16 -04:00
FoxxMD
abc5d1861a
fix: Specify ts-json-schema as NON dev dep
...
Not enough to include it in both dependencies and devDependencies -- it needs to be NOT in devDependencies to prevent `npm ci --omit=dev` from purging it.
2024-10-10 12:02:06 -04:00
FoxxMD
4b8129fd19
fix: missing schema package in regular deps and freeze ts version
2024-10-10 11:36:23 -04:00
FoxxMD
f610f385bd
test: Try timeout in test instead of before()
2024-10-09 16:15:21 -04:00
FoxxMD
6994635fe4
test: Try another timeout and destroy scheduler
2024-10-09 16:13:15 -04:00
FoxxMD
61525e1351
test: Add long timeout to first config parse due to slow schema generation
...
Not a problem on my machine but causing timeout on github actions
2024-10-09 15:55:06 -04:00
FoxxMD
a50070e133
ci: Add ACT run for just backend test
2024-10-09 15:51:58 -04:00
Matt Foxx
db632424b1
Merge pull request #202 from FoxxMD/validateGranular
...
feat: Improve client/source schema validation generation and error handling
2024-10-09 12:52:47 -04:00
FoxxMD
6b92920f50
fix: Use silent logger for source config tests
2024-10-09 12:20:10 -04:00
FoxxMD
a30d362695
fix: Fix error logging line numbers
...
Don't use ts-node for json-schema
2024-10-09 12:18:23 -04:00
FoxxMD
d105e62f18
feat: Refactor validation errors to emit an event instead of throwing
...
* Prevents app from crashing due to only one thing going wrong
* Will be used for testing error handling in the future
2024-10-09 12:18:23 -04:00
FoxxMD
d5ad796339
fix: Fix example configs so they pass validation tests
...
* Add missing sources to dual configs
* Fix slug type for webscrobbler example
2024-10-09 12:18:23 -04:00
FoxxMD
c0aabefc72
test: Add tests for example configs and test parsing/validation
...
* Add suite for testing client/source parsing and validation
* Additionally, use example configs for two-birds-one-stone checking they are valid
* Refactor sources init as separate step from component building
2024-10-09 12:18:23 -04:00
FoxxMD
259d321f3d
chore: Remove tests folder from tsconfig exclude to get autocomplete
2024-10-09 12:18:23 -04:00
FoxxMD
d2375d92e6
test: Force mocha to exit
2024-10-09 12:18:23 -04:00
FoxxMD
f8a63c5df1
fix: Add missing glob package
2024-10-09 12:18:23 -04:00
FoxxMD
5004d99473
chore: Add tmp testing folders to ignore files
2024-10-09 12:18:23 -04:00
FoxxMD
5b26cc73e8
feat: Improve client/source schema validation generation and error handling
...
* Use runtime-generated schemas
* Ensures validated schemas always match code
* Can use schemas for individual source/clients without having to generate files
* catch invididual validation errors and log instead of crashing
* refactor validation error output into chained error instead of as individual log statements to improve clarity
2024-10-09 12:18:23 -04:00
FoxxMD
72a4c4542b
fix: Fix some source schemas to reflect documentation WRT optional properties
2024-10-09 12:18:23 -04:00
Matt Foxx
fdaeb8f6b8
Merge pull request #201 from FoxxMD/GH-199/ytschema
...
fix(ytmusic): Allow authUser to be number or string
2024-10-09 08:28:25 -04:00
FoxxMD
f2f550dae7
Update devcontainer usage with docusarus and docs
2024-10-08 19:53:50 +00:00
FoxxMD
6780d72296
Improve testing, linting, and node usage in devcontainer
...
* Swtch to devcontainer for node 18.x and remove terminal/launch settings for version (removes nvm dependency in container)
* Update eslint config to use proper config for include/ignore files
* Add spec for mocha and mocha test runner extension + settings
2024-10-08 19:33:47 +00:00
FoxxMD
f1784f3c21
fix(ytmusic): Allow authUser to be number or string
...
Fixes #199
2024-10-07 10:38:55 -04:00
FoxxMD
22d17ba621
docs: Fix link typo for flatpak
2024-10-03 09:18:26 -04:00
FoxxMD
4b4cc1c438
docs: Update/fix docker-compose usage
...
* Remove bad direct links to non-docsite docker-compose and replace with inline file
* Fix quotes around base url ENV
* Simplify config volume mapping
2024-10-03 09:11:56 -04:00
FoxxMD
7aac664916
docs: Update jellyfin instructions in quickstart to use API Source
2024-10-03 08:55:36 -04:00
FoxxMD
12c4a014f2
fix(jellyfin): Fix tests not exiting
2024-09-30 13:43:15 -04:00
FoxxMD
1eada12714
fix(jellyfin): Fix naming in documentation for allow/disallow options
...
* Fix documentation and jellyfin example to match code
* Add tests for jellyfin api config parsing and valid activities
* Fix jellyin api ENV naming to match code
* Fix config parsing missing lowercase transform
Fixes #196
2024-09-30 11:07:43 -04:00
FoxxMD
5adb831136
Add multi-runner WIP tests to ACT
...
Would like to move to this to improve build time on GH Actions but its not working yet. Will also be good when GH Runners release arm nodes publicly.
2024-09-27 16:30:02 -04:00
FoxxMD
5b8a8a7449
ci: Refactor ACT for more thorough usage
...
* All required files in the same file by using .actrc
* Include example .secrets and .env
* Update README with usage
* Refactor actTest to make docker build steps optional with ENV
2024-09-27 11:41:38 -04:00
FoxxMD
005dae76ab
chore: Bump version for release
2024-09-27 09:02:04 -04:00
FoxxMD
cb2c7276dd
docs: Add scrobble modification logging docs
2024-09-24 11:45:50 -04:00
FoxxMD
54fe61c51c
docs: Add when condition docs and examples
2024-09-24 11:43:56 -04:00
FoxxMD
bdf27ec421
fix: Freeze typescript to fix weird unused error directive problem
2024-09-23 09:49:31 -04:00
FoxxMD
3addd39fc5
chore(vscode): Add default built task
2024-09-23 09:49:10 -04:00
FoxxMD
19bf456e47
Fix version for yt-music-api
2024-09-23 08:39:46 -04:00
Matt Foxx
66bf889e9f
Merge pull request #186 from FoxxMD/GH-185/condition
...
feat(modifications): Implement "when" conditions
2024-09-23 08:34:53 -04:00
FoxxMD
09ea158734
Update lock file after rebase
2024-09-23 08:34:09 -04:00
FoxxMD
88c1b553e3
feat(modifications): Refactor hooks to accept an array of parts
...
* Hook can be single object part or array of parts
* All arrays are processed
#185
2024-09-23 08:32:40 -04:00
FoxxMD
1d1fd1b54d
feat(modifications): Implement "when" conditions for scrobble modifications
...
Enable using multiple "when" conditions of regex matching to determine if a hook or individual part-rules should run
#185
2024-09-23 08:32:37 -04:00
FoxxMD
9d3267b1fc
Add dockerignore entries for vscode
2024-09-23 08:29:47 -04:00
FoxxMD
22a04adde0
docker: Update dockerfile to ignore devcontainer and vscode settings
2024-09-20 12:33:23 -04:00
FoxxMD
1dba90ceb5
docs: Update development docs for VSCode usage
2024-09-20 12:31:34 -04:00
FoxxMD
4e9794d574
feat: Add VSCode devcontainer
2024-09-20 12:17:37 -04:00
FoxxMD
23a747d3a9
feat: Add VSCode native dev settings
...
* Add settings.json to ensure terminal runs with correct node version
* Add launch settings for debugging individual files, whole app, and mocha tests
2024-09-20 11:57:37 -04:00
FoxxMD
4678c35453
Merge remote-tracking branch 'origin/master'
2024-09-19 12:56:03 -04:00
FoxxMD
c153e53c5b
feat: Improve upstream scrobble refresh logic and caching controls
...
* Add refreshMinInterval to prevent hammering upstream services
* Refactor refresh logic to be simpler and account for backlogged tracks
* (test): Improve play generation utils for testing
* (test): Refactor testing for upstream scrobble refreshing to use more actual scrobbler class behavior
2024-09-19 12:55:50 -04:00
FoxxMD
e20ee09bbb
chore: Update faker to official release
2024-09-19 12:53:00 -04:00
Matt Foxx
619687472d
Merge pull request #192 from FoxxMD/GH-191/plex-formdata-fix
...
fix(plex): Refactor plex webhook formdata parsing to be more defensive
2024-09-17 08:51:18 -04:00
FoxxMD
b74f23f6d1
fix: Don't use es module in vite config because of gross esm/cjs reasons
2024-09-13 17:07:32 -04:00
FoxxMD
d073b4c402
fix: Strip wrapping quotes from base url
...
Compensates for scenarios where a user accidentally encloses value in quotes when it shouldn't be
fixes #187
2024-09-13 16:51:02 -04:00
FoxxMD
258883d88b
test: Add missing version prop for test components
2024-09-13 16:49:37 -04:00
FoxxMD
29c8d6236a
fix(plex): Refactor plex webhook formdata parsing to be more defensive
...
* Move file parsing to own function
* Add some typings to file parsing to help with development (typings are bad)
* Defensively check structure of formdata for nested arrays since Plex seems to waffle on how it sends data (fixes #191 )
* Add logging for all files found to help with future end-user debugging
2024-09-13 13:54:50 -04:00
FoxxMD
a1443594f7
docs: Fix youtube music identifier
...
Closes #190
2024-09-12 08:46:49 -04:00
Matt Foxx
ac2e9570e5
Merge pull request #189 from jackwilsdon/fix-docs-link
...
docs: fix link
2024-09-11 15:00:04 -04:00
FoxxMD
983b1c67ac
fix: Bump @foxxmd/logging version to fix read-only system issues
2024-09-11 14:48:27 -04:00
Jack Wilsdon
764493f5c9
docs: fix link
2024-09-11 19:35:39 +01:00
Matt Foxx
d7981e7cc0
Merge pull request #188 from jackwilsdon/fix-local-docs
...
fix: local documentation
2024-09-11 08:33:03 -04:00
Jack Wilsdon
11fbe97325
fix: local documentation
...
express-static prefers directories over files when using the extensions
option, meaning an extensionless route will always route to the
directory instead of the file (expressjs/serve-static#138 ).
2024-09-10 21:09:09 +01:00
Matt Foxx
3f37a63439
Merge pull request #182 from FoxxMD/dependabot/npm_and_yarn/npm_and_yarn-cccb3c3a64
...
chore(deps): bump the npm_and_yarn group across 2 directories with 7 updates
2024-08-30 11:03:09 -04:00
dependabot[bot]
ee78b95617
chore(deps): bump the npm_and_yarn group across 2 directories with 7 updates
...
Bumps the npm_and_yarn group with 6 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [formidable](https://github.com/node-formidable/formidable ) | `2.1.2` | `3.5.1` |
| [@types/formidable](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/formidable ) | `2.0.6` | `3.4.5` |
| [ntfy](https://github.com/ffflorian/node-packages ) | `1.5.4` | `1.6.2` |
| [postcss](https://github.com/postcss/postcss ) | `8.4.38` | `8.4.41` |
| [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js ) | `0.5.0` | `0.6.0` |
| [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse ) | `7.24.7` | `7.25.6` |
Bumps the npm_and_yarn group with 2 updates in the /docsite directory: [postcss](https://github.com/postcss/postcss ) and [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse ).
Updates `formidable` from 2.1.2 to 3.5.1
- [Release notes](https://github.com/node-formidable/formidable/releases )
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md )
- [Commits](https://github.com/node-formidable/formidable/commits/v3.5.1 )
Updates `@types/formidable` from 2.0.6 to 3.4.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/formidable )
Updates `ntfy` from 1.5.4 to 1.6.2
- [Commits](https://github.com/ffflorian/node-packages/compare/ntfy@1.5.4...ntfy@1.6.2 )
Updates `postcss` from 8.4.38 to 8.4.41
- [Release notes](https://github.com/postcss/postcss/releases )
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/postcss/postcss/compare/8.4.38...8.4.41 )
Updates `xml2js` from 0.5.0 to 0.6.0
- [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/compare/0.5.0...0.6.0 )
Updates `@babel/traverse` from 7.24.7 to 7.25.6
- [Release notes](https://github.com/babel/babel/releases )
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md )
- [Commits](https://github.com/babel/babel/commits/v7.25.6/packages/babel-traverse )
Updates `axios` from 1.7.2 to 1.7.4
- [Release notes](https://github.com/axios/axios/releases )
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md )
- [Commits](https://github.com/axios/axios/compare/v1.7.2...v1.7.4 )
Updates `postcss` from 8.4.39 to 8.4.41
- [Release notes](https://github.com/postcss/postcss/releases )
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/postcss/postcss/compare/8.4.38...8.4.41 )
Updates `@babel/traverse` from 7.24.7 to 7.25.6
- [Release notes](https://github.com/babel/babel/releases )
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md )
- [Commits](https://github.com/babel/babel/commits/v7.25.6/packages/babel-traverse )
---
updated-dependencies:
- dependency-name: formidable
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: "@types/formidable"
dependency-type: direct:development
dependency-group: npm_and_yarn
- dependency-name: ntfy
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: postcss
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: xml2js
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: "@babel/traverse"
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: axios
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: postcss
dependency-type: indirect
dependency-group: npm_and_yarn
- dependency-name: "@babel/traverse"
dependency-type: indirect
dependency-group: npm_and_yarn
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-30 14:55:40 +00:00
FoxxMD
d7091f8a8e
chore(ci): Add dependabot PR test gh action
2024-08-30 10:53:09 -04:00
FoxxMD
4b5cdade77
chore(ci): Disable alpine builds for PR image
2024-08-30 10:37:21 -04:00
FoxxMD
cb67d1ae40
chore!: Fix latest/tag for images and disable alpine builds
...
* Ensure pre-release tags don't also get latest tag
* Disable alpine builds
* Only increases testing and build complexity and there has been no feedback from users about needing it
2024-08-30 10:26:23 -04:00
FoxxMD
676af4a2bf
Merge branch 'develop'
2024-08-30 09:54:24 -04:00
FoxxMD
0feb02babe
chore: Refactor git/dev workflow to use master as unstable branch
...
* Aligns with "normal" default branch usage better, allows dependabot to actually run
* Change image publishing to push tagged images as 'latest' and master images as `edge`
2024-08-30 09:53:52 -04:00
FoxxMD
90c481b12b
Merge remote-tracking branch 'origin/develop' into develop
2024-08-30 09:23:02 -04:00
FoxxMD
59fed488ba
feat(jellyfin): Update schema
2024-08-30 09:22:52 -04:00
Matt Foxx
8431e7b6b2
Merge pull request #172 from FoxxMD/jellyfinApi
...
feat: Refactor Jellyfin source to use Jellyfin API
2024-08-30 09:13:56 -04:00
FoxxMD
be30cdd540
feat(jellyfin): Implement partial WS client for future use
2024-08-29 15:16:49 -04:00
FoxxMD
54927ed77c
fix(jellyfin): Map AlbumArtist Name property
2024-08-29 11:30:59 -04:00
FoxxMD
97f974d931
update vlc source building after rebase
2024-08-29 11:29:41 -04:00
FoxxMD
0de2cc0922
feat(jellyfin)!: Refactor Jellyfin source to use Jellyfin API
...
* Implement new jellyfin source using JF typescript api client library for communication
* Use either API Key or username/password
* Implement real-time scrobble monitoring
* Implement feature parity filters from old jellyfin source (users) and add devices filters
* Refactor documentation for new configuration with api and add migration steps for webhook users
* Add deprecation warning to jellyfin webhook source
2024-08-29 11:28:27 -04:00
FoxxMD
e80ad81f05
Merge branch 'develop'
2024-08-28 09:35:28 -04:00
FoxxMD
a3960421d7
chore: Bump version for release
2024-08-28 09:35:13 -04:00
FoxxMD
2f2eeeb13a
docs(youtube): Add FAQ entries for YTM auth and scrobble issues
2024-08-28 09:32:46 -04:00
Matt Foxx
eeb026abf0
Merge pull request #163 from FoxxMD/ytMusicDebug
...
Improve YTM experience
2024-08-28 09:11:38 -04:00
FoxxMD
0fed96f59c
Merge branch 'develop'
2024-08-28 09:07:12 -04:00
Matt Foxx
8369939135
Merge pull request #181 from FoxxMD/malojaDuplicateHandling
...
fix(maloja): Improve handling for Maloja warnings-as-errors
2024-08-27 16:54:11 -04:00
FoxxMD
08056a650f
fix: Actually store recent scrobbles
...
Refresh scrobbles refactor missed actually storing scrobbles on refresh
2024-08-27 09:40:30 -04:00
FoxxMD
5b53b7490c
fix(maloja): Improve handling for Maloja warnings-as-errors
...
* Fixes incorrect handling for duplicate scrobble error from Maloja 3.2.2 #180
* More defensive Maloja scrobble parsing
2024-08-26 11:09:49 -04:00
Matt Foxx
ce95c3ae8c
Merge pull request #179 from FoxxMD/vlc
...
Implement VLC as Source
2024-08-26 10:55:01 -04:00
FoxxMD
5e0c4e3e77
docs(vlc): Some fixes for VLC docs
...
tags <> in code block in details causes parsing error
2024-08-23 09:00:14 -04:00
FoxxMD
10bf48df40
docs(vlc): Add VLC docs
2024-08-22 17:30:37 -04:00
FoxxMD
ae935798f3
chore: Update schema
2024-08-22 16:44:15 -04:00
FoxxMD
bf71f8cf86
feat(vlc): Use regex from configuration to extract metadata from filenames
2024-08-22 16:44:08 -04:00
FoxxMD
4206696f0d
feat(vlc): Better metadata parsing
2024-08-22 15:07:47 -04:00
FoxxMD
2903662f8b
feat: Implement POC vlc Source #177
2024-08-22 13:11:12 -04:00
FoxxMD
469847e4b7
feat(youtube): Use just-validated history as recently played on new plays #156
...
Rather than generating our own just use the known "good" history we just compared against to see if this improves consistency.
2024-08-21 13:14:38 -04:00
FoxxMD
d7a86b0401
feat(youtube): Increase level of auth update logging when configured to output changes #158
...
Increasing to INFO makes the signal better for long-running MS processes instead of requiring logging all of DEBUG
2024-08-21 13:14:38 -04:00
FoxxMD
4fdd346c00
Merge branch 'refs/heads/develop'
2024-08-20 09:18:01 -04:00
FoxxMD
4f26b63ab1
chore: Bump version for release
2024-08-20 09:17:28 -04:00
FoxxMD
0fed91302c
chore(ci): Update untagged package schedule to run once a week
...
Doesn't need to run every day.
2024-08-19 11:55:47 -04:00
FoxxMD
831cefd9a7
docs(deezer): Deprecate due to discontinued API support
...
Deprecate Source with warning message and update docs. #175
2024-08-19 11:25:11 -04:00
FoxxMD
114a3dda8b
feat(ui): Add timestamp to recent pages #167
2024-07-26 10:07:25 -04:00
FoxxMD
55ddd2c5a0
docs: Mention data modification in readme
2024-07-26 09:38:18 -04:00
FoxxMD
1d276186f8
feat: Implement removing field if field is an empty string after transforming
2024-07-26 09:30:58 -04:00
FoxxMD
fb3886b981
docs: Modification improvements
2024-07-26 09:19:11 -04:00
FoxxMD
2bed7be654
docs: Fix compare example
2024-07-25 17:47:57 -04:00
FoxxMD
5c460ad747
docs: Add Play Transform docs
2024-07-25 17:28:49 -04:00
FoxxMD
32220d7509
feat: Implement play transforms in source/client logic
2024-07-25 16:16:58 -04:00
FoxxMD
b0265001f8
feat: Improve logging for play transforms
...
* Use a proper child logger and error messages on catch
* Log full play string before => after instead of just parts
2024-07-25 15:12:39 -04:00
FoxxMD
9ede4634cb
test: Use faker 9.0RC for more plausible artist/album names in generated data
2024-07-25 15:04:37 -04:00
FoxxMD
0e008ecd5c
feat: Add album option to play string building function
2024-07-25 15:03:39 -04:00
FoxxMD
2ae82fdd9e
feat: Implement common play transform functionality
2024-07-25 13:43:34 -04:00
Matt Foxx
3b430b95ed
Merge pull request #174 from FoxxMD/issue-173-scrobbler-improvement
...
Enable more agressive scrobble checking behavior
2024-07-25 09:18:07 -04:00
FoxxMD
e907892c4a
refactor(scrobbler): Change refresh force to user-configurable staleness time
...
Use refreshStaleAfter to force refresh to user can configure the time.
Allows more nuanced refreshing behavior as well as always refresh (0 seconds)
2024-07-24 12:06:20 -04:00
FoxxMD
d9cd3764b9
refactor(scrobbler): Consolidate refresh logic and add more logging
...
* Move recentScrobbles and generic refresh logic into abstract class
* New abstract function for scrobbler children to implement to get scrobbler-specific play lists on refresh
* Implement shouldRefereshScrobble with logging for better insight into why or why not a scrobbler refreshed upstream scrobbles
2024-07-24 11:20:09 -04:00
FoxxMD
9c2bf05a24
refactor(listenbrainz): Simplify scrobble api calls and logging
2024-07-24 10:31:37 -04:00
FoxxMD
91e52c4c5d
feat(musikcube): Provide more error logging and example config
...
* Update iso-websockets to fix typing exports and get node network error from WS error
* Add url example to config
2024-07-23 12:11:19 -04:00
FoxxMD
b41d7f539f
feat(scrobble): Enable forcing existing scrobbles refresh on every scrobble #173
2024-07-23 10:48:35 -04:00
FoxxMD
9735b980d7
fix(tests): Do not re-use scrobbler between tests
2024-07-19 14:44:39 -04:00
FoxxMD
706483ed06
feat: On polling error retry check source is initialized and reinitialize if not
2024-07-19 14:36:50 -04:00
FoxxMD
7760776a5f
feat(mpd): Use idle event to wake up from polling early
2024-07-19 14:36:27 -04:00
FoxxMD
8b9a7893d3
feat(mpd): Implement MPD Source MVP
2024-07-19 12:10:51 -04:00
FoxxMD
729250a2cc
Merge branch 'refs/heads/develop'
2024-07-18 14:18:39 -04:00
FoxxMD
f14203f85e
docs: More improvements to configuration docs
2024-07-18 11:14:40 -04:00
FoxxMD
60e880f7f2
Merge branch 'refs/heads/develop'
...
# Conflicts:
# docsite/docs/configuration/configuration.md
2024-07-17 12:47:23 -04:00
FoxxMD
16cef0ae65
chore: Bump versions for release
2024-07-17 12:46:18 -04:00
FoxxMD
12ff1f421e
docs: Use relative paths for volume mounting
2024-07-17 11:46:00 -04:00
FoxxMD
61c33da2b0
docs: Fix quickstart link
2024-07-17 11:39:41 -04:00
FoxxMD
8b0c7205b7
docs: Add quick start guide
2024-07-17 11:33:56 -04:00
FoxxMD
b02c96ada8
docs: Parse and render config examples from repository
2024-07-17 09:51:44 -04:00
FoxxMD
52b20e4c8e
docs: Update kitchensink code block titles
2024-07-16 15:37:09 -04:00
FoxxMD
a94ac8284f
docs: refactor installation for docusaurus
2024-07-16 15:28:09 -04:00
FoxxMD
ee399136a9
docs: Lean 100% into docusaurus documentation
...
Since docs are now generated alongside builds and hosted on the app server there is no longer a barrier to using docusaurus docs as the main documentation presentation. Any user looking for docs can use the GH Pages hosted site or a "versioned" docs site hosted on their MS app. Due to this we can fully commit to docusaurus and take advantage of MDX layouts to simplify docs.
* Replace env/file configs headings in configuration with MDX tabs to make reading easier
* Remove superfluous TOCs
* Replace internal links in repo readme with links to docsite
2024-07-16 14:11:14 -04:00
FoxxMD
ab54422acf
docs: Replace manual notes with admonitions
2024-07-16 11:58:09 -04:00
FoxxMD
d56c5720eb
docs(flatpak): Fix typo in docs website link
2024-07-16 11:46:13 -04:00
FoxxMD
040de4b000
docs(flatpak): Implement bash setup script and move flatpak instructions to docsite
...
* setup.sh takes care of building generated sources for project/docsite and building flatpak app
* Modify flatpak manifest to include two generated sources files and build docsite files
* Update flatpak docs with script usage and generated sources changes, move to docusauraus doc site
2024-07-16 11:34:15 -04:00
FoxxMD
815a774e3d
docs(fix): Fix broken links/anchors
2024-07-15 14:24:00 -04:00
FoxxMD
b2e7f58e14
docs(fix): Add missing docsite build steps to alpine docker variant
2024-07-15 13:50:37 -04:00
FoxxMD
8d124a20ac
docs(fix): Update package scripts to use npx to invoke docusarus
2024-07-15 13:44:07 -04:00
FoxxMD
d1a4a54d2a
docs: Implement self-hosted docs
...
* Add npm scripts for installing/building docusaurus from main project
* Set base url based on ENV
* Build docsite in docker image
* Add link to doc in dashboard and link to github
* Update nodejs install instructions to include doc build command
* Update GH pages workflow to use correct base url
* Add hint page to main app when docs are not built
2024-07-15 13:26:57 -04:00
FoxxMD
049bb06762
docs: Make docs site more prominent in readme
2024-07-12 16:55:48 -04:00
FoxxMD
e5dd473981
Merge branch 'refs/heads/develop'
2024-07-12 14:39:53 -04:00
FoxxMD
ca5cc3bb30
docs(feat): Add TOC to dev docs and links in readme
2024-07-12 14:37:52 -04:00
FoxxMD
444d75c803
docs(feat): Add architecture overview, common dev structures, and dev guidance for Sources
2024-07-12 14:31:11 -04:00
FoxxMD
ccda3a6098
Merge branch 'refs/heads/develop'
2024-07-09 16:06:05 -04:00
FoxxMD
ce1c70a4e1
ci: Ignore flatpak and docsite for image deploy
2024-07-09 16:05:15 -04:00
FoxxMD
5fcfa979c5
docs: Improve TOC for docusaurus and github
...
* Use lower headers so docusaurs sidebar TOC is more accurate
* Specify header levels for config/FAQ to make sidebar more concise
* Wrap inline TOC in details block -- so docusaurs users don't have to see it twice but its still available to github viewers
2024-07-09 15:56:44 -04:00
FoxxMD
ec4d609ba1
docs: Update docusaurs playground schema for MS to latest
2024-07-09 15:55:07 -04:00
FoxxMD
b42278a372
docs: Update docusaurus to v3
2024-07-09 15:54:45 -04:00
FoxxMD
1f96035ba9
Merge branch 'refs/heads/develop'
2024-07-09 10:25:29 -04:00
FoxxMD
332edb5dca
chore: Bump flatpak release history
2024-07-09 10:25:17 -04:00
FoxxMD
c5681d31eb
Merge branch 'refs/heads/develop'
2024-07-09 09:53:03 -04:00
FoxxMD
685d70c639
chore: Bump version for release
2024-07-09 09:51:43 -04:00
FoxxMD
848878bc5e
docs: Update screenshot
2024-07-09 09:51:33 -04:00
FoxxMD
088d063d38
fix: use correct ordering for version priority
2024-07-05 11:26:23 -04:00
FoxxMD
4e493db987
refactor: Use @foxxmd/get-version to render app version
2024-07-05 10:42:41 -04:00
FoxxMD
6d017d4b27
chore(ci): Update setup-node to v4 to squash node deprecation warnings
2024-07-03 10:11:52 -04:00
FoxxMD
a34066d650
fix(docker): Typo in Dockerfile name
2024-07-03 10:09:24 -04:00
FoxxMD
0e34d63c84
feat(docker)!: Use debian image as default
...
Sporadic DNS issues with alpine have caused a number of issues #160 #126 #134
Use debian as default since it has been proven to be stable. The image size increase is worth squashing these issues.
2024-07-03 10:07:35 -04:00
FoxxMD
9dca8ebfa0
fix(chromecast): Add missing avahi-utils package for debian image
2024-07-03 09:55:58 -04:00
FoxxMD
c908aea1ae
ci: Better package cleanup and manual triggers
2024-06-26 16:39:42 -04:00
FoxxMD
c7a58bbce6
ci: Add package cleanup
2024-06-26 16:26:30 -04:00
FoxxMD
b26f303479
ci: remove test workflow
2024-06-26 15:52:52 -04:00
FoxxMD
13d64d2ce2
ci: Implement gated automated PR building
...
Only checkout/build PR branches if labelled first
2024-06-26 15:44:12 -04:00
FoxxMD
ddb7fb3d6e
ci: Use checked out repo to get git info rather than GH variables
2024-06-26 14:05:33 -04:00
FoxxMD
457967bfb2
Pass default APP_VERSION env as build arg
2024-06-26 13:23:45 -04:00
FoxxMD
734742ecbe
Add APP_VERSION parsing to github actions
2024-06-26 12:37:09 -04:00
FoxxMD
26dab3870a
Simplify version info on frontend by using api endpoint
2024-06-26 12:37:08 -04:00
FoxxMD
ca9acbb089
Add git versioning check on backend
2024-06-26 12:37:08 -04:00
FoxxMD
f78d6fec1d
fix(youtube): Catch auth issues that occur during polling #158
2024-06-26 12:37:08 -04:00
FoxxMD
bafb852545
feat(youtube): Use full-fat list diffing to watch for new plays #156
...
* Use superdiff to diff PlayObject lists and detect changes as well as append/prepend scenarios
* Replace YTM recently played logic with list diffing, only accept prepend-validated lists
* On non-prepend scenarios replace existing recently played and log human readable diff
2024-06-26 12:37:08 -04:00
FoxxMD
a755db45b9
fix: Fix ntfy imports
2024-06-26 12:37:08 -04:00
FoxxMD
b9715f2159
chore: update dependencies
2024-06-26 12:37:07 -04:00
FoxxMD
e90dbaf691
chore: npm audit fixes
2024-06-26 12:37:07 -04:00
FoxxMD
08ac55f718
fix(webscrobbler): Fix formatting of slug url in logs
2024-06-26 12:37:07 -04:00
FoxxMD
5bf831e236
feat(youtube): Sync cookies with those returned from YTM responses #158
...
* Patch youtube-music-ts-api to use updated cookies from response and provide a callback on update
* Implement currentCreds/build init data and read from MS-updated creds if available
* Write to currentCreds when ytm-ts-api invokes auth update callback and optionally log what parts changed based on config options
2024-06-26 12:37:07 -04:00
FoxxMD
1905804f2a
fix(webscrobbler): Add preflight route #157
2024-06-26 12:37:07 -04:00
FoxxMD
afc931ac8c
docs: Use vars instead of secrets
2024-06-26 12:37:07 -04:00
FoxxMD
9fb032e030
docs: Add scripting on deploy for plausible analytics
2024-06-26 12:37:07 -04:00
FoxxMD
09b0c96263
feat(youtube): Surface library history playlist and raw recently played for debugging #156
2024-06-26 12:37:06 -04:00
FoxxMD
7c66816023
Implement musikcube source
2024-06-26 12:35:13 -04:00
FoxxMD
3e7e5df5de
fix: Missed package-lock.json commit
2024-06-05 11:01:12 -04:00
FoxxMD
1c84a74034
fix(vite): Use default base string if no other path detected
...
* Update Vite dep
* Use inlineViteConfig for vite-express middleware and detect correct base string
* Refactor vite.config.ts to detect correct base string
2024-06-05 10:58:52 -04:00
FoxxMD
09969dd9d7
fix(spotify): Convert URL to string for redirectUri
2024-06-05 10:21:18 -04:00
FoxxMD
63b57e1113
docs: Clarify BASE_URL usage and add more examples #155
2024-06-04 15:51:30 -04:00
FoxxMD
585677e515
fix: Refactor Base URL normalization to cover more cases #155
...
* Move code into testable function
* Fix port erasure when url uses standard port but it is explicitly specified
* Simplify building default url and fix using undefined mainPort variable
* Fix port erasure when https protocol is explicitly specified
* Refactor localUrl usage as URL instead of string
* Implement pathname joining on URL to make handling trailing/leading slashes take place in nodejs lib
* Implements tests for URL building/manipulation
2024-06-04 15:44:28 -04:00
FoxxMD
57f2b5f7e5
feat: Update normalize-url to prevent port erasure #155
2024-06-04 15:39:47 -04:00
FoxxMD
3597735556
feat(client): Implement initial refresh count and config control #153
...
* Refresh recent scrobbles with a higher limit after initialization (maximum supported by api call)
* Implement controlling count in client config
2024-05-16 15:22:24 -04:00
FoxxMD
2442cf2286
refactor: Move all init logic into common abstract base class
2024-05-16 15:01:07 -04:00
FoxxMD
97438e13d2
refactor(client): Use same init logic as source
2024-05-16 14:50:26 -04:00
FoxxMD
57dff9d122
feat!(source): Increase backlog limit defaults and add config control #153
...
* Increase default backlog limits to maximum pagination supported by each source
* Add scrobbleBacklogCount config property so user can explicitly set # of tracks to backlog
2024-05-16 13:43:44 -04:00
FoxxMD
963fc792a0
fix: Fix clientDefaults interface
2024-05-10 12:53:04 -04:00
FoxxMD
35a6418f38
docs!: Update schema
2024-05-10 12:48:08 -04:00
FoxxMD
3c0b951132
refactor(config)!: Move common options out of client config and into new option property
2024-05-10 12:44:16 -04:00
FoxxMD
3dc9e7d8b4
refactor(config)!: Move remaining common options out of source data and into options
...
* Move logPayload and logFilterFailure to options
* Disallow use of "options" property in common data
2024-05-10 12:38:09 -04:00
FoxxMD
ab372b8357
refactor(config)!: Move source retry config to options
2024-05-10 12:07:39 -04:00
FoxxMD
c79f04581f
refactor(config)!: Move scrobble thresholds to options
2024-05-10 12:01:45 -04:00
FoxxMD
0dcd049453
Merge branch 'refs/heads/develop'
2024-04-11 09:39:08 -04:00
FoxxMD
7170b09586
chore: Bump version for release
2024-04-11 09:38:55 -04:00
FoxxMD
3d893b126f
refactor(logging): Balance debug/verbose level logging pt.1
...
* Move some debug => verbose for non-repeating logs that are relevant to state, notifications, and scrobbling
* Move some verbose => debug that were repeating and making verbose level noisy
2024-04-10 11:25:27 -04:00
FoxxMD
fb73b8b106
feat(mpris): Less noisy error handling
...
* Convert DBus non-standard thrown error data to regular Errors
* Only warn about position errors if error message is unexpected
2024-04-10 10:57:02 -04:00
FoxxMD
cede77e3fa
refactor: Remove pony-cause dependency
...
Use built-in error cause and adapt helper functions from pony-cause so we can remove a dependency
2024-04-10 10:56:04 -04:00
FoxxMD
0572d6a308
refactor(logging): Reduce noise for polling interval logging
2024-04-10 10:19:58 -04:00
FoxxMD
5967e3df46
feat: Implement notifications via Apprise
2024-04-05 12:07:41 -04:00
FoxxMD
6b1ee83654
docs: Add config section and config example for disabling web server #150
2024-04-04 09:35:27 -04:00
FoxxMD
0af1496a0f
chore: Update proxies
2024-04-04 09:30:42 -04:00
FoxxMD
52b08efd88
feat: Implement option for disabling web server #150
...
If a user does not need the dashboard or has security concerns about ingress and cannot control their hosting environment this enables reducing attack surface.
Closes #150
2024-04-04 09:30:33 -04:00
FoxxMD
7a3e4e56e2
chore: Remove some unused packages
2024-04-02 10:15:41 -04:00
FoxxMD
abe6638f66
refactor: Use updated logger to reduce log file path logic complexity
2024-03-28 12:28:56 -04:00
FoxxMD
eb62c2cea9
refactor: optimize imports
...
* Remove unused imports
* Normalize spaces in curly braces
* Sort by module (npm packages, then relative imports)
2024-03-28 09:20:46 -04:00
FoxxMD
7e6eddce3e
refactor: Reduce usage of ErrorWithCause
...
Error Cause (https://github.com/tc39/proposal-error-cause ) was finalized and introduced in ES2022 so we don't need to ponyfill this anymore. Still using the helpful helper functions thought.
2024-03-28 09:20:45 -04:00
FoxxMD
bc517e0cb0
Merge branch 'develop'
2024-03-26 09:37:03 -04:00
FoxxMD
41900b0048
chore: Bump version for release
2024-03-26 09:36:37 -04:00
FoxxMD
9ea71b931c
fix(flatpak): Fix missing package.json needed to run as esm module
2024-03-26 09:04:31 -04:00
FoxxMD
64f222b5b7
fix: Add binary alias(?) to pass appstream guidelines
...
flathub/io.github.foxxmd.multiscrobbler#14
2024-03-25 09:49:01 -04:00
FoxxMD
6c27406803
fix: Fix colored output being applied to file logging
2024-03-21 17:08:14 -04:00
FoxxMD
2f51e7ad99
feat: Enable colorizing docker log output
2024-03-21 16:29:33 -04:00
FoxxMD
d86dd63236
fix: Fix log name to match existing logs names
2024-03-21 15:50:43 -04:00
FoxxMD
f794133915
fix: Fix missing parent logger
2024-03-21 15:33:06 -04:00
FoxxMD
c7d2e7acc2
feat(ui): Use ansi-to-react for log coloring
...
Vastly simplifies log formatting on the dashboard
2024-03-21 15:33:06 -04:00
FoxxMD
2dde3840c6
refactor(logging): Replace winston with @foxxmd/logging
2024-03-21 15:33:06 -04:00
FoxxMD
4675847fec
fix(flatpak): Reduce summary length
2024-03-11 16:14:45 -04:00
FoxxMD
830d1a2243
fix(flatpak): Add missing developer name
...
https://github.com/flathub/io.github.foxxmd.multiscrobbler/pull/13#issuecomment-1949888692
2024-03-06 10:10:13 -05:00
FoxxMD
8a43f0ded5
test arm64 building for debian docker image using updated node version #126
...
Using latest LTS (20) seems to have fixed TLS timeout/connection reset issue seen when trying to `npm ci` on LTS 18
2024-02-19 15:32:24 -05:00
FoxxMD
af24e0ffbe
chore(docker): Remove unused dependencies
2024-02-19 15:09:55 -05:00
FoxxMD
d3a70bf2c1
fix: Add comment for future typed linting
2024-02-19 13:24:53 -05:00
FoxxMD
a62fe705f9
fix: Fix lint errors
2024-02-19 13:02:28 -05:00
FoxxMD
1c6407238c
feat: Add initial linting config
2024-02-19 12:27:34 -05:00
FoxxMD
ec897b185c
fix: Fix logger used for tests to always be 'noop'
...
Cleans up logging output during tests
2024-02-19 10:50:10 -05:00
FoxxMD
69e15b3797
fix: Refactor static arrow function class fields to normal functions #143
...
Something about using arrow function form for static class methods causes node debugger to crash.
Closes #143
2024-02-19 10:38:59 -05:00
FoxxMD
dae4af070f
chore: Bump mocha version
2024-02-15 13:01:22 -05:00
FoxxMD
beaf0f3bfd
chore(!): Upgrade Node to LTS for --import support
...
So that we can use tsx with official --import rather than requiring (old-style) which doesn't work with string-sameness esm for some reason
https://github.com/mochajs/mocha/issues/5002
https://github.com/mochajs/mocha-examples/pull/76
2024-02-15 12:40:02 -05:00
FoxxMD
8057982184
chore: Upgrade string-sameness
...
* Removes dependency on unmaintained dice coeffecient library
* New version is esm-only library
2024-02-15 12:27:59 -05:00
FoxxMD
9a5a808780
fix: Remove alt single quote when normalizing strings
2024-02-15 12:05:50 -05:00
FoxxMD
d2d5f4a705
chore: Remove more unused packages
2024-02-15 10:10:01 -05:00
FoxxMD
4aa875660f
chore: Remove unused es6-error package
2024-02-15 09:25:32 -05:00
FoxxMD
5ab8f00aeb
Fix microsecond conversion
2024-02-15 09:23:26 -05:00
FoxxMD
1e1b5f56ce
refactor: Replace dbus-next with dbus-ts #142
2024-02-14 16:32:38 -05:00
FoxxMD
49b9ee96f3
fix: Fix ts schema generation import issue
...
Changing tsconfig resolution caused generation to generate new (bad?) import lines. Replacing with regex from https://github.com/YousefED/typescript-json-schema/issues/582 returned ref/definitions to normal
2024-02-14 09:47:00 -05:00
FoxxMD
aef7716634
fix(webscrobbler): Fix missing wildcard to match slug route #137
...
Closes #137
2024-02-14 09:45:14 -05:00
FoxxMD
57f2e1d500
feat: Log more URL when route is unknown
2024-02-14 09:44:47 -05:00
FoxxMD
41c696992a
feat: Add legacy fallback options for subsonic communication #136
...
* Add config options for using legacy authentication and ignoring TLS cert errors
* Fallback to legacy auth if subsonic error code 41 is detected
2024-02-13 15:59:17 -05:00
FoxxMD
f231d4e1e4
ci: Implement test checks for PRs and image publishing
2024-02-08 13:07:13 -05:00
FoxxMD
0efbe41b7e
test: Use tsx through mocha config
2024-02-08 12:14:11 -05:00
FoxxMD
be9675bb10
fix: Handle when no existing scrobble match with score greater than 0 #130
...
https://github.com/FoxxMD/multi-scrobbler/issues/130#issuecomment-1934452275
2024-02-08 11:51:00 -05:00
FoxxMD
4e45d35925
test: Add test that handles no existing scrobble match with score greater than 0 #130
...
Detects track string error thrown reported via https://github.com/FoxxMD/multi-scrobbler/issues/130#issuecomment-1934452275
2024-02-08 11:47:58 -05:00
FoxxMD
a5e293554c
Merge branch 'develop'
2024-02-06 09:28:35 -05:00
FoxxMD
c76d4822fe
docs: Fix which host debian image is available for
2024-02-06 09:28:22 -05:00
FoxxMD
0f8fd5cc0e
chore: Forgot to bump version in lock file
2024-02-06 09:28:02 -05:00
FoxxMD
8b27890254
Merge branch 'develop'
2024-02-05 11:53:18 -05:00
FoxxMD
8747c8375e
chore: Bump version
2024-02-05 11:52:47 -05:00
FoxxMD
50f27c110c
Merge branch 'develop'
2024-02-05 11:47:40 -05:00
FoxxMD
c1f8997c01
feat: Implement remaining recently played endpoints
2024-02-05 11:40:06 -05:00
FoxxMD
12ed767961
ci: Bump action versions to fix node deprecations
2024-02-05 10:47:58 -05:00
FoxxMD
335808217b
docs: Add debian docker image network workaround to docs #126 #134
2024-02-05 10:38:15 -05:00
FoxxMD
b5bb7024fc
docs: Add workarounds for rollup issues and flatpak disclaimer
2024-02-05 10:28:40 -05:00
FoxxMD
ac2806dc66
fix(frontend): Fix scss division deprecation warnings
2024-02-05 10:14:11 -05:00
FoxxMD
9d149dab49
Try to use direct node binary distribution #126
2024-02-02 12:55:58 -05:00
FoxxMD
451404c0f9
Disable arm64 debian builds and document issues in dockerfile #126
2024-02-02 11:05:09 -05:00
FoxxMD
a3f1f077ce
Revert fancy default negation
...
Doesn't work
2024-02-01 12:18:30 -05:00
FoxxMD
dcd13833ae
Ignore secrets files
2024-02-01 12:16:03 -05:00
FoxxMD
78b732b75c
Update metadata-action version
2024-02-01 11:55:57 -05:00
FoxxMD
3152933937
chore: Add matrix for building debian flavor tag
2024-02-01 11:54:40 -05:00
FoxxMD
6c6126bb27
chore: make container image build tags agnostic to default branch name
2024-02-01 11:48:15 -05:00
FoxxMD
ad13b7687d
feat: Implement debian-based image #126
2024-02-01 11:39:05 -05:00
FoxxMD
633e366e82
feat: Improved logging for last.fm api network errors #115
2024-01-31 15:52:25 -05:00
FoxxMD
69b1786859
fix: Add patch-package as postinstall script so packages actually get patched
2024-01-31 14:09:31 -05:00
FoxxMD
41839a961a
chore: Ignore apple cert extensions
2024-01-31 14:09:06 -05:00
FoxxMD
ccb50c64bb
fix(lastfm): Patch lfm library to actually implement a request timeout #134
2024-01-31 13:15:20 -05:00
FoxxMD
d88ac1b424
feat(source): Start implementing recent from API
2024-01-31 12:36:35 -05:00
FoxxMD
c807611e55
fix: Revert debug statement
2024-01-31 11:51:20 -05:00
FoxxMD
155ec1403e
feat(sources): Improve Source of Truth usage and presentation to user #134
...
* Refactor SOT to be a type (may have more in the future)
* Set player stale/orphan interval based on SOT type
* Add note in log when initializing MemorySource which does not use player as SOT
* Add tooltip to UI player when it is not SOT
2024-01-31 11:46:22 -05:00
FoxxMD
ecde657c3e
feat(lastfm): Implement nowPlaying lfm api call
2024-01-31 10:01:12 -05:00
FoxxMD
6aa8374f25
feat: Add debug logging for user api requests
2024-01-31 09:30:58 -05:00
FoxxMD
c2f01473fd
fix(scrobbler): Fix erasing non-english characters #121
2024-01-30 14:47:19 -05:00
FoxxMD
41e607c995
refactor(scrobbler): Use simpler method for handling queued scrobbles #130
2024-01-30 13:40:52 -05:00
FoxxMD
fee754f15f
feat(chrome): Used improved library
2024-01-30 13:24:09 -05:00
FoxxMD
d62d18232d
chore: Remove some unused packages
2024-01-30 10:30:33 -05:00
FoxxMD
a1acab0fed
Merge branch 'develop'
2024-01-29 10:35:27 -05:00
FoxxMD
d39a7099c7
docs(cast): Add disclaimer about status of source support
2024-01-29 10:34:13 -05:00
FoxxMD
7b2c4f99f3
chore: Bump version for release
2024-01-29 10:33:57 -05:00
FoxxMD
b941ff08dc
Merge branch 'develop'
2024-01-29 10:25:06 -05:00
FoxxMD
210a74c75f
chore: Bump version for release
2024-01-29 10:24:50 -05:00
FoxxMD
eafce71cd0
chore(flatpak): Update flatpak release version
2024-01-29 10:24:08 -05:00
FoxxMD
d5777b501d
chore(flatpak): Update flatpak manifest to work with new app structure
2024-01-29 10:21:44 -05:00
FoxxMD
dd60e5eb21
fix(flatpak): Fix missing destination when building locally
2024-01-29 09:49:33 -05:00
FoxxMD
c57dbf23e1
chore(maloja): Deprecate support for versions below 3.0.0
2024-01-26 10:31:23 -05:00
FoxxMD
cb52adb4de
feat: Log when heartbeat tasks start
2024-01-26 10:17:17 -05:00
FoxxMD
a75b0fc549
feat(chrome): Reduce device rejection logging noise
...
Change device rejection log to verbose if we've seen the blacklisted device before
2024-01-26 10:12:20 -05:00
FoxxMD
1a546b72d2
docs(chrome): Add more google cast configuration docs and update TOCs
2024-01-26 09:55:50 -05:00
FoxxMD
fd13d268d0
fix(chrome): Typo
2024-01-25 16:47:10 -05:00
FoxxMD
5837fc11a5
fix: Better handling of uncaught exceptions and rejections
2024-01-25 10:54:44 -05:00
FoxxMD
efdbbe40e8
fix(chromecast): Remove debugging interval
2024-01-25 09:52:39 -05:00
FoxxMD
5103cf1c12
feat(chromecast): Catch buffering media
2024-01-25 09:50:23 -05:00
FoxxMD
e855a3de7d
feat(chromecast): Try to connect all discovered interfaces in the event one fails
2024-01-25 09:43:15 -05:00
FoxxMD
b90e38d595
fix(chromecast): Fix black/white app name variable assign
2024-01-25 09:15:53 -05:00
FoxxMD
1864f39be0
fix(chromecast): Fix unknown play tracking
2024-01-25 09:11:44 -05:00
FoxxMD
89e80b6f8b
fix(chromecast): Debounce avahi discovery
2024-01-24 14:47:15 -05:00
FoxxMD
564295ee64
feat(spotify): Prepare for future spotify lib migration by writing completing credential data
...
Migrating to @spotify/spotify-web-api-ts-sdk requires that the credentials we provide have valid expires_in/expires data and grant type. Make this migration easier by writing that data now so users upgrading later most likely do not need to re-authenticate.
2024-01-23 15:10:33 -05:00
FoxxMD
61c7f26007
fix: Fix where retries are checked
2024-01-23 11:37:51 -05:00
FoxxMD
54b9ece5b6
fix: Fix when to check connection
...
Since all sources can now control if they need to check connection or not do not restrict to just those that can poll
2024-01-23 11:27:54 -05:00
FoxxMD
335136561a
fix(chromecast): Better handling of client offline events
...
* Actually remove device if it fails after X retries
* Properly close controllers/platform/client to prevent uncaught errors from castv2
* Move manually configured devices to device discovery function so they can be reconnected on heartbeat (if previously removed)
2024-01-23 10:45:12 -05:00
FoxxMD
56f1cacd07
fix: Fix return values for source init startup
2024-01-23 09:41:40 -05:00
FoxxMD
558e358d0b
fix: Fix default import usage
2024-01-22 13:25:31 -05:00
FoxxMD
290e6eecc4
fix: Fix import missing extension
2024-01-22 13:25:17 -05:00
FoxxMD
f512f55782
feat(deezer): Fix credentials check during build data stage
2024-01-22 13:21:00 -05:00
FoxxMD
ad6eba58d2
feat: improve data init stage log wording
2024-01-22 13:13:29 -05:00
FoxxMD
b675aee8ff
fix: Fix status text based on initialization OK values
2024-01-22 13:10:12 -05:00
FoxxMD
c29ea9c89c
fix: Fix status indicator color based on status text
2024-01-22 13:09:43 -05:00
FoxxMD
50016a31a8
fix: Fix isReady logic
2024-01-22 13:09:32 -05:00
FoxxMD
1cecffc30f
feat(subsonic): Improve error/response parsing and report errors correcetly on startup #129
...
* Implement interfaces for response shape and getters for data
* Parse version data from response and use ping endpoint to return info on connection test
* Fix throwing auth/connection errors to include actual cause along with more human-friendly parsed error info
2024-01-22 12:00:53 -05:00
FoxxMD
833273c19d
feat: Improve discovery for network exceptions in error causes
2024-01-22 12:00:50 -05:00
FoxxMD
35603d0caf
chore: update ChromecastSource to comply with new initialization flow
2024-01-22 12:00:47 -05:00
FoxxMD
de1377afdd
fix: actually throw auth failure so initialization fails correctly
2024-01-22 12:00:43 -05:00
FoxxMD
a22ddd10cc
Merge branch 'develop' into sourceInitializeRefactor
...
# Conflicts:
# src/backend/scrobblers/LastfmScrobbler.ts
# src/backend/sources/DeezerSource.ts
# src/backend/sources/MopidySource.ts
# src/backend/sources/SpotifySource.ts
# src/backend/sources/SubsonicSource.ts
# src/backend/tasks/heartbeatSources.ts
2024-01-22 11:59:59 -05:00
FoxxMD
280add7107
Prepare for reverse proxy usage #125
...
Not working correctly yet but no BC for regular, non suburl, usage
2024-01-19 11:40:15 -05:00
FoxxMD
b34abcab56
Update index.html
2024-01-19 11:05:34 -05:00
FoxxMD
788b26949e
Fix uncaught Vite startup errors
2024-01-19 11:00:09 -05:00
FoxxMD
c11da3df3d
Working dockerfile
2024-01-18 16:59:45 -05:00
FoxxMD
0d68fea0eb
Working app version indicator
2024-01-18 16:41:35 -05:00
FoxxMD
c98672bcef
Simplify port usage
2024-01-18 15:23:56 -05:00
FoxxMD
bb0c079757
Cleanup package.json
2024-01-18 15:23:47 -05:00
FoxxMD
891144546e
Simplify (and fix) test tooling for new esm stuff
2024-01-18 15:06:25 -05:00
FoxxMD
86611d764d
Cleanup
2024-01-18 14:36:28 -05:00
FoxxMD
e604268004
It works!
2024-01-18 14:18:08 -05:00
FoxxMD
396c3da277
Convert all relative backend endings to js
2024-01-18 13:58:31 -05:00
FoxxMD
0591b90089
somewhat working esm conversion
2024-01-18 13:15:06 -05:00
FoxxMD
6763be53ac
Use vite-express to migrate from CRA
...
TODO convert backend to esmodule?
2024-01-18 11:52:13 -05:00
FoxxMD
aee23f7550
fix(chrome): Remove device if it fails to refresh after 6 retries
2024-01-17 10:11:53 -05:00
FoxxMD
57b5528d43
docs(chrome): Update device connection instructions
2024-01-16 11:40:19 -05:00
FoxxMD
bd8cf18a1a
feat(chrome): refactor mdns discovery to run on source heartbeat as well as startup
2024-01-16 11:29:43 -05:00
FoxxMD
84acdd901a
refactor: Move mdns discovery into own functions
...
May be useful for other sources...
2024-01-16 11:10:49 -05:00
FoxxMD
e213a95996
fix(chrome): Refactor error handling for client and mdns libraries to catch errors properly
2024-01-16 09:52:41 -05:00
FoxxMD
78cd2eecf9
feat(chrome): Allow manual device connections
2024-01-15 16:11:33 -05:00
FoxxMD
ebfeea1087
feat(chrome): Implement user filtering media by type
2024-01-15 16:02:10 -05:00
FoxxMD
ddca623792
Fix error causing schema to generate
2024-01-15 16:01:36 -05:00
FoxxMD
f0da35d115
docs: Add local source reference to flatpak manifest
2024-01-15 14:18:29 -05:00
FoxxMD
10eb355f92
chore(chromecast): Switch to scoped chromecast-client to fix flatpak source generation limitation
2024-01-15 14:18:14 -05:00
FoxxMD
85702c534a
feat(maloja): Improve error handling
...
* Build error causes based on known error response types and expected maloja error body
* Only retry requests if error is network-related
* Set upstream error as NOT showstopping if we find expected error structure and status is less than 500
* Better maloja error parsing and logging
2024-01-15 12:45:01 -05:00
FoxxMD
e2dfe317a9
feat(chrome): Improve mdns discovery for docker
...
* Switch to lower-level mdns library for more control during debugging
* Use avahi-browse with host avahi-daemon to circumvent musl (alpline) issues with mdns resolution https://johnsiu.com/blog/alpine-linux/
2024-01-12 17:00:05 -05:00
FoxxMD
7008ae8672
feat(chrome): Handle applications with transportId context
...
* Add transportId shortname to logger label for better differentiation of "per session" apps
* Fix handling of MS player deletion when pruning apps by checking for other valid apps before deletion
2024-01-12 13:26:53 -05:00
FoxxMD
10d9fa3581
feat(chrome): Improved app logging
...
Use child winston logger for better readability
2024-01-12 12:58:14 -05:00
FoxxMD
2b85927739
feat(chrome): Don't use bad media data as a play
...
* Check media data for missing artist or track and skip play if either is missing
* Remove player if bad data for 60 seconds
2024-01-12 12:31:35 -05:00
FoxxMD
8c402238ed
feat(chrome): Add user debugging
2024-01-12 11:38:52 -05:00
FoxxMD
758770d278
refactor(chrome): Use forked chromecast-client lib
...
* Instead of patching using forked lib with validation fixes and improvements
* Print raw data if validation error is found
2024-01-12 11:12:21 -05:00
FoxxMD
ee7ebb159b
fix(chrome): Fix ENV names
2024-01-12 10:14:31 -05:00
FoxxMD
f47a66060f
refactor(chrome): Proper package patch for optional/nullish validation fixes
...
https://github.com/dantaylor3/chromecast-client/pull/14
2024-01-12 10:14:17 -05:00
FoxxMD
8929a630ed
docs: chromecast docs and schema
2024-01-11 15:25:06 -05:00
FoxxMD
077f5d7547
feat: Improve chromecast handling
2024-01-11 14:51:52 -05:00
FoxxMD
369ad42946
feat: Add initial Chromecast source
2024-01-10 16:43:34 -05:00
FoxxMD
4bd996eb46
Merge branch 'develop'
2024-01-10 08:45:47 -05:00
FoxxMD
a6ddc2b9f5
chore: Bump version for release
2024-01-10 08:45:10 -05:00
FoxxMD
afb2e76b2d
feat: Improve track credits parsing to recognize post-feat suffixes
...
* Refactor credit parsing into two stages: joiner separation and credits parsing
* Break credit parsing into wrapped vs. non-wrapped for simpler regexes
* Implement suffix matching after credits
* Add tests for wrapped vs. non-wrapped credits and with suffixes
2024-01-09 11:50:42 -05:00
FoxxMD
47812546e3
Merge branch 'playCompletedContext' into develop
2024-01-08 14:07:02 -05:00
FoxxMD
5ab6b85b30
refactor(source): Implement more granular initialization
...
* Break up initialize into build data => check connection => check auth
* Implement stub methods in AbstractSource with default return for steps
* Refactor existing initialize overrides into steps for each source
2024-01-05 13:19:34 -05:00
FoxxMD
9709d6348a
refactor(source): Start consolidating isReady behavior
2024-01-05 11:15:30 -05:00
FoxxMD
10fea9b23d
feat(source): Improve (re)start behavior and ui
...
* Move (re)start to same location on status card as client and change verbage to be the same
* Fix api behavior to use correct poll function so that backlog is triggered
2024-01-05 11:06:09 -05:00
FoxxMD
051dd5d128
feat(player): Improved player deletion behavior
...
* Consolidate playerDelete event emitter to deletePlayer function
* Consolidate logging for player deletion to deletePlayer function
* Add removal reason when transferring player state for single-platform sources
2024-01-04 11:10:39 -05:00
FoxxMD
369e18b1c2
feat(player): Handle state transfer for single-platform sources
...
The assumption is that single platform sources (like spotify) can only play from one platform at a time. If they are smart (like Spotify) the "new" platform picks up where the old platform left off WRT playing music. This commit implements the same behavior for MS player state by transferring existing state from the existing (previous) platform to the newly discovered platform.
2024-01-04 10:57:03 -05:00
FoxxMD
fd49d17de4
Remove unused import
2024-01-04 08:49:14 -05:00
FoxxMD
e0f034fa99
feat: Implement play completion context #121
...
* Track datetime player "completes" play at
* Add scrobble datetime SOC metadata
* Log SOC used when printing play datetime
* Use hinted SOC scrobble datetime when comparing existing scrobbles
* Use hinted SOC scrobble datetime when building scrobbler client scrobble payload
* Hint Spotify backlog plays use END play date for scrobble SOC
2024-01-03 12:42:27 -05:00
Matt Foxx
80bc629ac2
Merge pull request #123 from Bujiraso/issue-122
...
Correct json-schema.app links
2024-01-02 20:54:39 -05:00
Bujiraso
1a90c23e76
fix: correct json-schema.app links
...
* Add missing 'backend' folder
* Change 'develop' branch to 'master'
2024-01-02 18:41:44 -04:00
FoxxMD
48ddd4272f
feat(scrobbler): Improve log readability for duplicate checking
2024-01-02 15:38:13 -05:00
FoxxMD
ea408ac7a4
feat(scrobbler): Use play data to extract non-joined track name when comparing for duplicate check
2024-01-02 15:25:38 -05:00
FoxxMD
79c48af3e9
chore(tests): Fix TS compile warning on test for bad data
2024-01-02 15:24:24 -05:00
FoxxMD
12c2c0a132
feat(scrobbler): Change fuzzy diff threshold to be inclusive
2024-01-02 14:46:33 -05:00
FoxxMD
78abfc2168
refactor: Temporal comparison result data improvements #121
...
* Refactor using 'close' boolean to 'match' granularity
* Makes using granularity for future logic easier
* Easier logging for granularity in summary
* Remove intermediate temporal functions in classes for DRY and so we can use comparison results
* Add Time Detail to match breakdown for more visibility during logging
2024-01-02 13:55:53 -05:00
FoxxMD
0f721b94c2
refactor: Move Play time comparison code into own file
2024-01-02 13:02:44 -05:00
FoxxMD
f126bf0ec0
refactor: Improve string comparison robustness
...
* Fix undefined token inclusion caused by token lists with differing lengths
* Always compare longer to shorter string so sameness parameter order is invariant
* Add comments to make logic easier to understand
* Add tests to test new functionality
2024-01-02 12:38:24 -05:00
FoxxMD
064a435c79
Simplify debug mode usage for testing
2024-01-02 12:34:19 -05:00
FoxxMD
c0e5bb872a
fix(lastfm): Fix handling of non-string mbid string values #114
2024-01-02 11:09:51 -05:00
FoxxMD
e9561b5783
fix(jellyfin): Split musicbrainz mbid artist identifier semicolon #114
...
Jellyfin can apparently return multiple artist mbids but does so in one string deliminated by a semicolon
2023-12-28 10:07:11 -05:00
FoxxMD
77c3a2f0c7
fix(listenbrainz): Treat 400 responses as non-showstopping #114
2023-12-28 09:56:25 -05:00
FoxxMD
db4e64dc2a
Merge remote-tracking branch 'origin/develop' into develop
2023-12-27 11:55:45 -05:00
FoxxMD
fcc05a8b19
feat(scrobblers): Implement user-initiated (re)start mechanism #114
...
* Add api endpoint for restarting client
* Implement (re)start link on client card
2023-12-27 11:50:57 -05:00
FoxxMD
c37d94e71b
refactor(scrobblers): Consolidate scrobbler client startup surface area
...
* Move logging for init/auth into client instead of builder class
* Move startup from builder class to main backend and use initScrobbleMonitoring() instead of calling init/auth individually
Paves the way for manual restarting #114
2023-12-27 11:02:15 -05:00
FoxxMD
aa59bc4607
Fix service documentation link #119
2023-12-20 13:31:40 -05:00
FoxxMD
a993df4f0b
docs: Add contributing guidelines and PR template
2023-12-12 10:01:58 -05:00
Matt Foxx
7e83e0f085
Merge pull request #118 from brunohpaiva/develop
...
fix(spotify): undefined player state data when in private session
2023-12-12 09:40:17 -05:00
Bruno Henrique Paiva
5b2449adb0
fix(spotify): undefined player state data when in private session
2023-12-12 11:37:47 -03:00
FoxxMD
5811912745
feat(webscrobbler): Log the best-guess URL for requests using configured slug
2023-12-04 11:13:20 -05:00
FoxxMD
b7d6e9e497
docs: Update schema for logging enums
2023-12-04 11:06:14 -05:00
FoxxMD
5fd0cc3fe4
docs(webscrobbler): Move slug into data #111
2023-12-04 11:06:02 -05:00
FoxxMD
6e2e6f4492
fix(webscrobbler): Correct ENV names to match those documented #111
2023-12-04 11:02:19 -05:00
FoxxMD
ed6f7cfe5f
docs(webscrobbler): Add where to find connector list #112
2023-12-04 10:47:27 -05:00
FoxxMD
6b17babd7a
fix(mopidy): Fix album artist parsing #110
...
Should be using mapped artist string name rather than model but cannot test due to mopidy being difficult. Hopefully this works?
2023-11-30 11:15:49 -05:00
FoxxMD
c77e4355fc
fix(player): Fix listen range default value
2023-11-30 11:14:52 -05:00
FoxxMD
25de65f41f
chore: bump package-lock version
2023-11-30 11:13:59 -05:00
FoxxMD
af037ee215
Merge branch 'develop'
2023-11-29 11:41:17 -05:00
FoxxMD
39c4764b40
chore: Bump releases in flatpak
2023-11-29 11:40:59 -05:00
FoxxMD
ec28d2aeb5
Merge branch 'develop'
2023-11-29 11:22:22 -05:00
FoxxMD
baf8635587
chore: Bump version for release
2023-11-29 11:22:07 -05:00
FoxxMD
a3839a28a2
feat(scrobbler): Use listenedFor when checking for existing scrobbles
...
* Parse listenedFor from maloja response data
* Compare listenedFor against playdate diff when comparing fuzzy times for existing scrobbles
2023-11-28 11:43:45 -05:00
FoxxMD
4247f545c5
feat(player): Pad scrobble listen duration when confidence is high #108
...
If player is calculated as playing and tracks have positional data then start and end positions can be fudged to completion if jitter is small enough
* At beginning of new track if position is within 3 seconds of start of track fudge to 1 second
* At end of old track if position is within 3 seconds of end track fudge to completion
This can be achieved with high confidence due to smart polling near end of tracks added in 1d84f07a40
2023-11-16 13:24:26 -05:00
FoxxMD
c54c3ff5de
docs(spotify): Add note about duration accuracy when using Spotify's Automix feature
2023-11-16 12:38:45 -05:00
FoxxMD
1d84f07a40
feat(source): Smart interval calculation based on track position and end time #108
...
If player has an absolute position and play has duration we can determine if polling interval will occur after play would end. In this scenario we can shorten interval to before play ends to get more accurate data about play state close to end of track and report more accurate play time.
2023-11-16 12:29:55 -05:00
FoxxMD
b47c80dc11
fix(source): Fix polling interval drift
...
* Wake up timestamp was based on ts AFTER polling finished + interval. This means real-time interval between polling drifted by the amount of time it takes to execute polling loop. Fixed by getting ts at beginning of loop instead of at end.
* Implement interval function that can be overriding by child classes
* Format interval to make floats less ugly
2023-11-16 12:27:03 -05:00
FoxxMD
75e2b2b337
fix(player): Correctly output value of play timestamps for player based on undefined or not #107
...
Fixes #107
2023-11-15 10:35:00 -05:00
FoxxMD
08ca7fff35
feat: Add app version output
...
Output to logs and display in front end next to header
2023-11-13 12:25:07 -05:00
FoxxMD
3140df28b7
non working version display
2023-11-13 11:50:05 -05:00
FoxxMD
14546b8d74
fix(lastfm): Fix api error when listening history is private by sending session key #105
...
Thanks @FozzieHi for doing the legwork on finding the solution for this
Closes #105
2023-11-13 10:40:06 -05:00
FoxxMD
341e896eca
feat: Implement album artist for all sources #104
2023-11-07 11:44:36 -05:00
FoxxMD
b3b4636e7f
feat: Implement album artist and scrobble client payload function
...
* Implement abstract playToClientPayload function to make future testing easier
* Refactor play object to include album artist in data
* Refactor scrobble client payloads to include album artist, if applicable
2023-11-07 10:54:14 -05:00
FoxxMD
43f5aeb5dc
fix(plex): Use album artist if present and remove "Various" artist #104
2023-11-06 12:41:05 -05:00
FoxxMD
d38aabf7b8
chore(flatpak): Update metainfo and sources
2023-11-03 15:58:37 -04:00
FoxxMD
c64b8d16e6
fix(spotify): Improve api error handling #103
...
* Discriminate between proper errors (permissions) and network errors
* Fix return value and playbackState flag set during post-auth hook
* Improve error logging using cause and upstream error
* Fix undefined destructure when device is not present in playingNow payload
2023-11-02 11:20:42 -04:00
FoxxMD
1938fc3a27
fix: Catch errors during source backlog processing #103
2023-11-02 11:16:54 -04:00
FoxxMD
36181396c7
refactor: don't stringify error when using upstream options
2023-11-02 11:16:26 -04:00
FoxxMD
bb76a3b214
fix: test auth correctly on auth flow completion
2023-11-02 11:16:02 -04:00
FoxxMD
339bb7fcd2
refactor: Simplify network error detection during auth test
2023-11-02 10:07:02 -04:00
FoxxMD
3a25057d05
fix(maloja): Fix missing return value for auth test
2023-11-02 09:49:03 -04:00
FoxxMD
14ab6032f5
feat: Refactor auth testing to differentiate between network issues and actual auth errors #102
...
* Implement type/guard for node network error
* Refactor auth in sources & clients to flag if error is network or api based
* Retry auth on heartbeat if auth failure was caused by network
* Implement initial tests for testing client auth
* Fix tests hanging due to running async functions
2023-11-01 15:15:09 -04:00
FoxxMD
3e1f785437
Add pony-cause find by function helper
2023-11-01 15:09:06 -04:00
FoxxMD
91bb9d6089
feat: Allow disabling console and file logging through ENV
...
Used internally for controlling logging when testing
2023-11-01 15:08:26 -04:00
FoxxMD
9cf373e9f4
chore: Update string-sameness version
2023-11-01 09:39:37 -04:00
FoxxMD
9ec22e9000
Merge branch 'develop'
2023-10-24 09:20:25 -04:00
FoxxMD
9616860e23
chore: Bump version for release
2023-10-24 09:20:04 -04:00
FoxxMD
0f6638dfdf
docs: Add queued scrobble feature highlight
2023-10-24 08:56:14 -04:00
FoxxMD
fe9f49779c
feat: Implement queued scrobbles display
...
* Show number of queued scrobbles for clients in ui
* Implement live updates to queue count
2023-10-19 13:40:43 -04:00
FoxxMD
3aab6a207b
feat: Implement live client/source status updates
2023-10-19 11:53:48 -04:00
FoxxMD
49e9fd4b3b
feat: Implement live updates for dead letter and scrobble counts
2023-10-19 11:41:06 -04:00
FoxxMD
0143ae62aa
feat: Implement retry/remove all dead letter scrobbles
...
* Implement API endpoints
* Implement front-end logic and actions on dead letter page
2023-10-19 11:03:04 -04:00
FoxxMD
2882f65b69
refactor: Reduce noisy logging at INFO level
2023-10-19 10:36:57 -04:00
FoxxMD
62e9f7f620
feat: Log storage improvements and limit controls
...
* Store logs by levels, fixes issue where rarer warn/info are pushed out of buffer by frequent debug/verbose
* Use FixedSizeList instead of homegrown buffer
* Implement API and ui controls for setting log limit
2023-10-13 14:28:24 -04:00
FoxxMD
57f2ebf2b5
feat: Add dead letter error to data
2023-10-13 12:12:46 -04:00
FoxxMD
884134cab9
Simplify dead letter data clear
...
Just reset state on GET pending instead of using effect cleanup in react component
2023-10-13 11:38:38 -04:00
FoxxMD
0c90de78ab
Implement full-fat deadletter reducer
...
couldn't figure out a better way to handle this with just the api endpoint code
2023-10-13 11:34:22 -04:00
FoxxMD
1c5530ee2a
fix: deadletter endpoint responses
...
Send empty response so RTK Query correctly parses response
2023-10-13 11:33:47 -04:00
FoxxMD
fbb67a8fe6
feat: Implement dead letter endpoints
...
* Implement backend api endpoints for dead letter CRUD
* Include dead letter queue count in client status data
* Implement dead letter client view
* Partially working retry/remove actions for client (request is OK, RTK not working for update yet)
2023-10-11 12:38:43 -04:00
FoxxMD
c8c5f5dcb7
docs(webscrobbler): Add disclaimer about hostname for firefox
2023-10-06 09:44:29 -04:00
FoxxMD
eb449eeca6
feat: Implement WebScrobbler source
2023-10-05 13:58:20 -04:00
FoxxMD
7cfdb10813
chore: Update flatpak commit
2023-10-05 10:10:58 -04:00
FoxxMD
be599b5562
Merge branch 'develop'
...
# Conflicts:
# flatpak/io.github.foxxmd.multiscrobbler.metainfo.xml
2023-10-04 10:05:50 -04:00
FoxxMD
07d97a4937
chore: Bump version numbers
2023-10-04 10:05:08 -04:00
FoxxMD
7037d6f833
Merge branch 'develop'
2023-10-04 09:13:21 -04:00
FoxxMD
2deca322e7
fix(ui): For non-polling sources use last activity date for status
...
So that status changes if player is updated instead of waiting for track to be discovered
2023-10-03 14:16:07 -04:00
FoxxMD
ab84cb396d
docs(jellyfin): Add request header workaround for jellyfin #101
2023-10-03 14:08:07 -04:00
FoxxMD
bb63c61ca8
docs: Clarify subsonic api compatibility
2023-10-03 14:00:57 -04:00
FoxxMD
f4256d1084
docs: Update dashboard screenshot
2023-10-03 13:56:27 -04:00
FoxxMD
fc87b86f52
test(player): Add player tests
2023-10-03 12:36:00 -04:00
FoxxMD
5dff617ed6
fix(player): Fix some bugs and add param for easier testing
...
* Fix repeat end position percent test (should be 85% not 15%)
* Fix current play/range not being reset correctly on repeat
* Add reportedTS param to facilitate testing
2023-10-03 12:35:48 -04:00
FoxxMD
f2a171c596
refactor(player): Move listen progress/range functionality into own class (SRP)
2023-10-03 11:06:44 -04:00
FoxxMD
336970c1f7
feat(ui): Improve status display
...
* Use running/idle for scrobble client to indicate processing status
* Change polling sources status to polling/idle to better reflect behavior
* Add status indicator color to statuses
2023-10-03 10:15:18 -04:00
FoxxMD
d04bc038d4
feat(ui): Implement status indicator
2023-10-03 10:13:45 -04:00
FoxxMD
1ab12355f3
feat(player): Implement seek and repeat detection
...
* Start new listening ranges if player has seeked forward/backwards
* Treat track repeats as new plays
2023-10-02 17:22:59 -04:00
FoxxMD
fb5d9fb7b0
feat(player): Log when play fails discovery on player change
2023-10-02 13:54:55 -04:00
FoxxMD
9aae57f966
test(scrobble): Add tests for scrobble processing queue and existing comparisons
2023-10-02 13:39:33 -04:00
FoxxMD
fefc82c521
feat(scrobble): Improve existing scrobble comparison logic
...
* Use existing time comparison function with "close" matching
* Fix wording and return value
2023-10-02 13:39:14 -04:00
FoxxMD
43ebdcb10c
refactor(scrobble): Refactor scrobble delay and scrobble processing sleep behavior
...
* Delay scrobble based on last scrobble attempt TS
* rename abstract scrobble func to doScrobble
* Implement scrobble() in abstract client and track last scrobble attempt time, delay based on arg or client property
* This way first scrobble isn't delayed and we only delay if subsequent scrobble attempts are close in time
* Make scrobble processing sleep time on empty queue configurable
2023-10-02 13:38:08 -04:00
FoxxMD
adfb166320
feat(scrobble): Implement heartbeat task for scrobblers
...
Task does scrobble processing restart and dead letter queue processing
2023-09-29 15:07:44 -04:00
FoxxMD
1c54ae6465
feat(scrobble): Implement dead letter queue processing
...
* Implemented logic for processing and removing scrobbles from dead letter queue
* Only retry scrobbles under X retries based on config or argument
* Add removal-only function (for later use with UI)
2023-09-29 15:07:08 -04:00
FoxxMD
9309f7d8cf
feat(scrobble): Initial scrobble queue implementation
...
* Move scrobble checking into client (out of client manager) for single responsibility
* Implement scrobble queue/deadletter
* Less chance of duplicate processing since sources can't scrobble concurrently
* Better throttling since multiple sources can't scrobble concurrently
* When scrobbling fails we can retry on delay just like polling and *keep* the failed scrobbles for later retry rather than dropping them
* Deadletter (to be fully implemented) for scrobbles that fail multiple times or are signalled as not upstream api issues by client
2023-09-29 14:15:32 -04:00
FoxxMD
8717fad08a
feat(source): Control backlogging via config #100
2023-09-29 11:28:32 -04:00
FoxxMD
983b4c7417
feat(maloja): Add listened duration to scrobble payload
2023-09-28 15:23:14 -04:00
FoxxMD
a663e9af14
feat(player): Defer play discovery so listenedFor is accurate
...
Wait until player gets a new play or becomes stale before trying to discover the (previous) play so that we store a more accurate amount of time the user actually listened to that play
2023-09-28 15:22:22 -04:00
FoxxMD
249a606bf5
feat(scrobble): Implement artist dup bonus scoring heuristic
...
When looking for dups and finding a fuzzy timestamp match, close title, and mismatch (but some matched) multiple artist -- we give a bonus to artist score since its likely a dup.
2023-09-28 12:19:11 -04:00
FoxxMD
0ec8d8814d
fix(scrobble): Fix not using reference duration for fuzzy comparison
2023-09-28 11:25:33 -04:00
FoxxMD
f0cee72f43
test(scrobble): Improve test durability by using mixed duration sources
2023-09-28 11:01:07 -04:00
FoxxMD
a82aafa6b8
test(scrobble): Add test for duplicate when exact title/time
2023-09-28 10:47:07 -04:00
FoxxMD
3b624205ad
fix: Fix missing destructure default value
2023-09-28 10:35:38 -04:00
FoxxMD
c6d38e40d0
refactor(scrobble): Adjust dup score weights
2023-09-28 10:31:45 -04:00
FoxxMD
1ca7834feb
test(scrobble): Add more tests for similar-but-unique scrobble detection
2023-09-28 10:31:06 -04:00
FoxxMD
77c9977d27
Use string highScore instead of weighted since cosine isn't messing things up anymore
2023-09-28 10:29:34 -04:00
FoxxMD
521130562d
feat(scrobble): Use new string approach for artists
2023-09-28 09:55:09 -04:00
FoxxMD
9512ca7e84
feat(scrobble): Use new string approach for track
...
And move weights to constants
2023-09-27 16:01:09 -04:00
FoxxMD
159901f79e
refactor(tests): Move jellyfin/listenbrainz test into own folders
2023-09-27 15:44:22 -04:00
FoxxMD
9758568ded
feat: Implement new string comparison logic
2023-09-27 15:43:44 -04:00
FoxxMD
a953f83d07
test(scrobble): Add more tests
2023-09-27 14:14:49 -04:00
FoxxMD
2bbe2e6ba0
refactor(scrobble): Print score breakdown in different statement
...
Is more readable
2023-09-27 14:14:34 -04:00
FoxxMD
ec4ab8c078
test(scrobble): Implement basic scrobble tests
2023-09-27 13:20:03 -04:00
FoxxMD
7885c4ca9c
fix(scrobble): Fix wrong artists used for comparison
2023-09-27 13:19:25 -04:00
FoxxMD
8371ec3a01
fix(scrobble): Fix config destructing default value
2023-09-27 13:18:58 -04:00
FoxxMD
43cbadcd2d
refactor(scrobble): Clean up base design a little
...
* Make alreadyScrobbled abstract function
* Make sorting recentScrobbles automatic by refactoring into a getter/setter
2023-09-27 13:18:20 -04:00
FoxxMD
6e1e2c3534
Add verify example for body parser
2023-09-26 15:38:04 -04:00
FoxxMD
a46389e745
Remove unused import
2023-09-26 14:08:02 -04:00
FoxxMD
ce5f8d5fca
fix(jellyfin): Enable parsing requests with more content-types and add logging on invalid types
...
* Add text/* wildcard so any text-prefixed content-type is valid (Jellyfin should always be sending json anyway)
* Add logging WARN when body is empty
Fixes #101
2023-09-26 14:03:03 -04:00
FoxxMD
bdbbce4cb0
feat(jellyfin): Initial testing suite
2023-09-26 11:39:34 -04:00
FoxxMD
034cb321ef
fix(flatpak): Add missing release node
2023-09-21 09:12:07 -04:00
FoxxMD
ac2d453aa2
feat(config): Implement property to control whether a source/client is used
...
* QoL improvement -- Instead of needing to rename a config file so it is not read by MS a user can now use the 'enable' property in all source/client configs to enable or disable loading the config
* Added property to all config examples
2023-09-20 11:31:15 -04:00
FoxxMD
860d2d953f
fix(youtube): Use updated yt music library #98
2023-09-19 09:22:22 -04:00
FoxxMD
a486102747
feat(lastfm): Add player support
...
* Use lastfm 'nowPlaying' property in user listens for MS player implementation
* Do not use MS player as source of truth -- continue to use lfm listen history
2023-09-18 15:21:25 -04:00
FoxxMD
735264cb2b
feat(listenbrainz): Add player support #74
...
* Use listenbrainz 'playing-now' endpoint for MS player implementation
* Do not use MS player as source of truth -- continue to use LZ listen history
2023-09-18 14:58:18 -04:00
FoxxMD
7dece447df
feat(player): Add sourceOfTruth variable to control logging and future use
...
Will not be used by listenbrainz source for actual scrobbling so make logs less noisy by suppressing what would normally be logging on newely added tracks from player
2023-09-18 14:56:23 -04:00
FoxxMD
3fb5d6aae9
fix(ui): Remove duration percent display when duration is zero
2023-09-18 14:40:22 -04:00
FoxxMD
d5dfc33fce
fix(deezer): Fix deezer passport generation
2023-09-14 12:51:16 -04:00
FoxxMD
6dc40e50ad
feat: Implement Base URL
...
* Allows users to define a base URL to be used for default redirect URI generation
* Convenience mostly for docker users so they do not have to explicitly define redirect uri for each source/client
* Use in UI start up logging hints
2023-09-14 12:38:20 -04:00
FoxxMD
b8ebd8ca7e
chore: Ensure production mode for webpack without relying on env
2023-09-14 10:34:07 -04:00
FoxxMD
e9eb7d357f
fix*(scrobblers): Test auth when client completes auth callback
2023-09-14 10:07:44 -04:00
FoxxMD
3f2cb8ac0c
fix: Pass localUrl to scrobble clients for use by lastfm
2023-09-14 10:07:12 -04:00
FoxxMD
8e36c27ec9
fix(backend): Fix how port is determined and used for localUrl
2023-09-14 10:06:42 -04:00
FoxxMD
fa90a3b821
fix: Load variables from .env for backend
...
Was being used for frontend (cra) but not applied to backend
2023-09-14 10:05:24 -04:00
FoxxMD
2d2319fa27
fix(ui): Fix wrong route for client auth #97
2023-09-14 09:08:01 -04:00
FoxxMD
ba161b7b92
chore: Remove unused dashboard backend endpoint
2023-09-14 09:07:36 -04:00
FoxxMD
d438c8b256
fix(docker): Normalize ownership of node_modules files
...
files in node_module can have wierd ownership based on how a package owner published the package. If this occurs a rootless container build system could potentially have issues with subui/gid mapping for non-standard (high number) ids.
During image build recursively chown all node_modules files to normalize ownership and avoid this problem.
Fixes #96
2023-09-13 14:55:04 -04:00
FoxxMD
bbb4555c0e
chore(docker)!: Bump lsio base image version to 3.18
...
* Updates alpine 3.17 -> 3.18
* Main reason is to potentially fix DNS issues related to musl #88
* https://github.com/nodejs/node/issues/15780#issuecomment-334496907 and https://bell-sw.com/blog/how-to-deal-with-alpine-dns-issues/
* Resolved in musl 1.2.4
* https://gitlab.alpinelinux.org/alpine/tsc/-/issues/43
* https://www.openwall.com/lists/musl/2023/05/02/1
* Bumps npm 9.1.2 -> 9.6.6
New/changed ENVs used by LSIO may require removing "stored" ENVs if using portainer
2023-09-13 13:21:44 -04:00
FoxxMD
6e8ea96f32
fix: Fix js endings
2023-09-13 12:19:58 -04:00
FoxxMD
b06de77f42
Merge branch 'player' into develop
2023-09-13 12:13:17 -04:00
FoxxMD
3aa8279914
Merge branch 'develop'
2023-09-13 12:02:51 -04:00
FoxxMD
a64724e114
chore: Bump version for release
2023-09-13 12:02:38 -04:00
FoxxMD
052234a3d9
Merge branch 'develop'
2023-09-13 12:02:04 -04:00
FoxxMD
aa2c565afd
fix(ui): Log line parsing missing line terminator capture
2023-09-13 11:59:27 -04:00
FoxxMD
d0fd225d99
chore: Use constant for default retry multiplier
2023-09-13 11:40:29 -04:00
FoxxMD
c40acdd7c7
feat!: Decrease default polling interval
...
* Due to increased scrobbled thresholds in 590610022d we need to pol more frequently to make sure more of the track is accurately monitored
* Decreased default from 30 to 10 seconds
* Decreased max interval from 60 to 30 seconds
2023-09-13 11:36:22 -04:00
FoxxMD
590610022d
feat!: Set default scrobble thresholds to standard values #73
...
https://github.com/krateng/maloja/blob/master/API.md#scrobbling-guideline
https://www.last.fm/api/scrobbling
The defaults are 50% of the track or 4 minutes.
2023-09-13 10:49:54 -04:00
FoxxMD
f7dae32f50
feat(maloja): Generate web links for scrobbled tracks
2023-09-12 16:01:32 -04:00
FoxxMD
3cbbc0837f
feat(ui): Expand displayed plays
...
* Implement API for fetching client recently scrobbled
* Reduce text noise by combining track stats and link for recent
2023-09-12 15:46:49 -04:00
FoxxMD
0197e70a1a
feat(ui): Remove unnecessary wording for track stats
2023-09-12 14:58:20 -04:00
FoxxMD
40a7d9e398
feat(ui): Make player dates human friendly
2023-09-12 14:57:41 -04:00
FoxxMD
c7b2dcbbbe
fix(ui): Use normal match parameters
...
groups are undefined probably due to minification?
2023-09-12 12:11:39 -04:00
FoxxMD
a524e18820
feat(ui): More ui compaction
...
* Better use of header
* Show name on separate line
* Only show client/source if ambiguous
* Move status into right side of header
* Reduce padding/margin on card grid
2023-09-12 12:03:49 -04:00
FoxxMD
81894d691b
feat(ui): Compact ui a bit
...
* Reduce padding on card headers and bodies
* Improve log experience
* Reduce log font size and convert to mono
* Use proper log message parsing to remove dangerous html set
2023-09-12 11:07:39 -04:00
FoxxMD
0fb192dd41
refactor(ui): Prevent nodemon from restarting on tailwind config change
2023-09-12 11:05:56 -04:00
FoxxMD
3f608c6c8e
fix(listenbrainz): Artist parsing joiner phrases must begin with non-word character
...
Prevents artists with joiner phrases in their name (EX 'Daft Punk' contains 'ft') from erroneously being split
Fixes #94
2023-09-12 09:29:04 -04:00
FoxxMD
dcff9ee73d
feat(player state): Implement player status and listened duration in UI
2023-09-11 13:21:24 -04:00
FoxxMD
f1cd66d3e8
feat(player state): Preserve position when player is not in stopped status
...
Makes for a nicer UI experience to see where the player was paused
2023-09-11 13:20:58 -04:00
FoxxMD
d95fef09a3
refactor(player state): Remove old play logic
...
Recent plays are dead. Long live recent plays.
2023-09-11 12:38:10 -04:00
FoxxMD
d1060e724e
feat(ui): Remove player when dead
2023-09-11 12:36:10 -04:00
FoxxMD
a7faaaac86
refactor(player state): Refactor handling of non-updated players
...
* Check for stale/orphaned/dead in independent loop so they are not dependent on getting source updates to update
* Only emit events if player state has updated
2023-09-11 12:35:41 -04:00
FoxxMD
3762f95bae
fix(player state): Fix stale/dead logic checks
...
* Stale should not reset to stale when status is orphaned
* Dead check should be in seconds, not minutes
2023-09-11 12:34:09 -04:00
FoxxMD
b9f04deb28
Always emit player state
2023-09-08 16:35:20 -04:00
FoxxMD
9cc820c76e
feat: More player polish and additional info pane
2023-09-08 16:33:23 -04:00
FoxxMD
f7195fb40c
feat: Rework source api to include player states
...
* Create and implement api interface for player state data
* Serialize memory source players to object indexed by platform id
* Refactor event emitters to separate event data better from event metadata
* Update source slice when player update event is broadcast
2023-09-08 14:47:53 -04:00
FoxxMD
9c0f029992
feat: POC player
...
Based on https://codepen.io/keithpickering/pen/wjYJKM
2023-09-08 13:40:43 -04:00
FoxxMD
f370b8ad1e
fix: Update heartbeat job to 20 minutes
...
1 minute was for debugging...
2023-09-05 11:44:22 -04:00
FoxxMD
7c962ec43a
fix: Fix more import endings
2023-09-05 11:19:13 -04:00
FoxxMD
2013a6692e
fix: Fix import ending
2023-09-05 11:18:15 -04:00
FoxxMD
4a5eb91f16
feat: Schedule heartbeat task to restart sources that should be polling
...
Addresses #5 and #65 -- in default config use-cases where:
* request/polling retry attempts are low
* source was initially OK (auth OK, initial communication OK)
* and there is a non-auth related *upstream* communication issue
there is no fallback path for restarting source polling after upstream has normalized.
This feat implements a scheduled heartbeat task that attempts to restart polling every 20 minutes if this scenario is valid so that a good source config will recover without user intervention.
2023-09-05 11:11:10 -04:00
FoxxMD
a606801bb0
Merge branch 'develop'
2023-08-31 10:58:48 -04:00
FoxxMD
db395e40e8
chore: Bump for release
2023-08-31 10:58:30 -04:00
FoxxMD
1c498a2c71
Merge branch 'develop'
2023-08-31 10:55:10 -04:00
FoxxMD
e4a647d425
fix(jellyfin): Attempt to fix route redirect #92
...
Should not be appending to route but replacing...see if leading slash fixes things
2023-08-31 09:29:11 -04:00
FoxxMD
c1a91ab610
fix: Fix route redirect
2023-08-31 09:28:19 -04:00
FoxxMD
093007a72b
Merge branch 'develop'
2023-08-29 09:46:25 -04:00
FoxxMD
cb5cdb09f7
chore: Bump versions for release
2023-08-29 09:45:54 -04:00
FoxxMD
8f2e1ad7e7
refactor: Update flatpak build
...
* Update flatpak build instructions to use build
* Add run command to readme
* Update default config to keep web port backwards compatible
* Fix flatpak application name in run command in installation docs
2023-08-29 09:35:49 -04:00
FoxxMD
ed6bcd60b3
refactor: Remove unused react packages and fix CRA babel plugin warning
2023-08-28 10:39:03 -04:00
FoxxMD
edbe131f1b
fix: Fix tsconfig and out locations for generated schema
2023-08-24 12:10:49 -04:00
FoxxMD
881e537a89
fix: ts libcheck prevents mocha from causing errors while generating schema
...
https://stackoverflow.com/a/65568463/1469797
2023-08-24 12:10:31 -04:00
FoxxMD
abb286f4a8
fix: Fix js extensions
2023-08-24 11:53:42 -04:00
FoxxMD
04ffc0a589
refactor: Restructure server directory
...
* Rename to backend to better reflect what it is
* Move server functionality out of entry file and into own server subdirectory
* Rename 'apis' folder to 'vendor' to reflect usage and move into common
* Rename 'clients' folder to 'scrobblers' reflect usage and prevent ambiguity with client CRA folder
2023-08-24 11:12:27 -04:00
FoxxMD
4cccdeeff0
chore: Clean up site metadata and update logo
...
* Changed logo color to be easy to view in both dark/light modes (better color in general, imo)
* Changed and cleaned up head/meta/manifest info and logos for docs and frontend
2023-08-24 10:26:45 -04:00
FoxxMD
2295cf4756
docs: Update example configs
2023-08-24 09:40:59 -04:00
FoxxMD
dcd63ff093
feat: Add more IP info and docker hint at server startup
2023-08-23 12:33:32 -04:00
FoxxMD
c4bf076d0a
Use string-sameness package
2023-08-23 10:31:39 -04:00
FoxxMD
5b32602aca
Update yt music package and add missing leven package
2023-08-22 16:29:52 -04:00
FoxxMD
82167ab5ec
fix(spotify): Correctly catch 401 errors on refresh token failure
2023-08-22 15:29:19 -04:00
FoxxMD
aac963a21c
feat: Improve LZ play parsing to pass test suite
2023-08-22 14:36:25 -04:00
FoxxMD
fc84d846b2
feat: Implement test skeleton and basic testing for LZ listen parsing
2023-08-22 12:52:49 -04:00
FoxxMD
7674593bfe
fix: Use correct data for clients slice
2023-08-22 09:32:41 -04:00
FoxxMD
500dc809bf
Even more js extension removals...
2023-08-21 16:48:02 -04:00
FoxxMD
b4e9c52301
More js extension removals
2023-08-21 16:43:17 -04:00
FoxxMD
6efac246ff
Remove erroneous js extensions
2023-08-21 16:31:37 -04:00
FoxxMD
bec841e833
Implement live events infra with POC for tracks discovered updates
2023-08-21 16:21:30 -04:00
FoxxMD
25ebfbcccf
refactor: Migrate from react-query to RTK
2023-08-21 14:56:03 -04:00
FoxxMD
74c2bed572
Increase number of log lines in buffer
2023-08-21 11:28:59 -04:00
FoxxMD
a1672dfa45
Implement log level filtering
2023-08-21 11:24:16 -04:00
FoxxMD
abe494e2b0
Remove socket.io
2023-08-18 14:47:20 -04:00
FoxxMD
fabcfc1377
Put dev packages in correct dependency location
2023-08-18 14:39:57 -04:00
FoxxMD
9f89507ce4
Switch back to NPM because of yarn prod dependency issue
2023-08-18 14:32:56 -04:00
FoxxMD
f277557e83
Codeshift relative imports on server to not use extension
...
Makes debugging work in webstorm
2023-08-18 12:54:21 -04:00
FoxxMD
59dfdf1400
Implement codeshift for transforming import extensions
2023-08-18 12:53:45 -04:00
FoxxMD
322b25db00
Add 404 route
2023-08-18 09:26:34 -04:00
FoxxMD
a2b424de93
Add empty render for recently played tracks
2023-08-18 09:24:05 -04:00
FoxxMD
09e6e5e534
Add reauth/initialze links for client
2023-08-18 09:22:25 -04:00
FoxxMD
5450c8ddf1
Add nodemon config to prevent auth json file writes from causing server to restart
2023-08-17 16:06:10 -04:00
FoxxMD
99e772e9f6
Add source auth flow link to source card
2023-08-17 14:32:42 -04:00
FoxxMD
69fb3f1dbd
Need to use full source maps and remove '.js' extensions to get webstorm to fully use debugger
2023-08-17 13:57:35 -04:00
FoxxMD
e9c4f9f9bb
fix(web): Implement log prefetch for dashboard
2023-08-17 13:40:30 -04:00
FoxxMD
fa6e46f453
fix(sources): Fix polling bug that caused infinite loop
...
* If user tried to start polling while polling was already occuring it caused an infinite while loop
* Add more signals for stopping polling for a restart use case
2023-08-17 13:19:02 -04:00
FoxxMD
2d6bafecaf
Don't refetch status query on window focus
2023-08-17 13:17:58 -04:00
FoxxMD
7dffc3def7
Don't recompile tsx (front end only)
2023-08-17 13:17:38 -04:00
FoxxMD
922f4be14f
refactor(web): Move server routes into own files and setup with one function (reorg)
2023-08-17 12:11:07 -04:00
FoxxMD
e7bab87e6e
refactor(web): Implement recently played
2023-08-16 16:08:57 -04:00
FoxxMD
dd67501337
Add proxy setup to git
2023-08-16 15:02:45 -04:00
FoxxMD
4f60f2fa9a
Prevent browser from auto opening on client start
2023-08-16 15:01:37 -04:00
FoxxMD
7cb215be52
refactor: Re-organize server/client structure so everything exists on same port
...
Used https://spin.atomicobject.com/2020/08/17/cra-express-share-code as a base for refactoring
2023-08-16 14:47:21 -04:00
FoxxMD
e2b472cf44
Some progress towards recent page
2023-08-15 14:28:56 -04:00
FoxxMD
64c46ac87f
Update yarn lock and nvm
2023-08-15 12:47:51 -04:00
FoxxMD
334b782ca3
Merge branch 'webClient' into next
...
# Conflicts:
# package-lock.json
# src/common/infrastructure/Atomic.ts
2023-08-15 12:44:25 -04:00
FoxxMD
9e214243c9
fix(jellyfin): Disregard time difference direction and always check absolute diff #87
...
May allow more UserDataSaved scrobbles to occur but gives up any form of disallowing future scrobbles from bad timestamps
2023-08-15 12:16:11 -04:00
FoxxMD
77bf84fef4
feat(jellyfin): Simplify tz correct and detect/correct ~future~ listens #87
2023-08-11 12:28:43 -04:00
FoxxMD
cde6046ffb
feat(jellyfin): Timezone trickery to sus out weird timezone reporting from jellyfin #87
2023-08-10 13:30:27 -04:00
FoxxMD
af4ac98357
feat(logging): Expand temporal logging comparison functionality so we can analyze results
...
* Result and criteria are returned from methods
* Logging method to summarize results
* Log results for jellyfin if using debug mode or explicit config option
2023-08-10 11:44:27 -04:00
FoxxMD
6f66813db0
feat(logging): Add debug mode shortcut property
...
Allows enabling all debugging for properties that aren't explicitly set
2023-08-10 10:45:27 -04:00
FoxxMD
f42fef85b7
feat(config): Add a common 'options' property for all sources and implement logPlayerState
...
* Will eventually migrate all non-source specific properties to this new property to simplify data config
* Add logPlayerState to allow configurable player state output to DEBUG logging
2023-08-10 10:14:45 -04:00
FoxxMD
400f448108
fix(jellyfin): Use new player state for checking for existing track
2023-08-10 09:58:52 -04:00
FoxxMD
4659735c12
feat: Use listen ranges for play comparisons
2023-08-10 09:58:31 -04:00
FoxxMD
c08fe0e54b
fix: State Player range fixes and logging
...
* include all listen ranges when played object output
* include incoming play details in logging when starting new play
2023-08-10 09:58:16 -04:00
FoxxMD
37d4a1c81a
feat: POC player state tracking #74
...
* Implements generic Player state tracking when using MemorySource
* State tracking will replace processRecentPlays and all its data structures
* Tracks reported player position OR real-time listened when position not available
* Records listened sessions for more exhaustive "listen to" duration and eventually comparing incoming data playedAt for dups
* Uses own tracked data to calculate most likely player state (stopped/started/paused) as well as health (stale/orphaned from no data)
* Tracks player's reported state, if provided
2023-08-09 14:35:29 -04:00
FoxxMD
857971517f
Implement basic player state
2023-08-08 17:26:28 -04:00
FoxxMD
51d16c9026
Fix timezone offset detection #87
...
Check forward and backward offsets and use absolute difference
2023-08-08 15:47:05 -04:00
FoxxMD
6b4fdf53eb
Improve Jellyfin UserDataSaved event handling and prevent double reporting due to incorrect timestamp #87
...
* Move UserDataSaved heuristics into scrobble method implementation with more descriptive logging
* Add more aggressive UserDataSaved filtering by discarding play if its found in memory tracking, regardless of play date
* Attempt to correct bad UTC offset for second UserDataSaved event
2023-08-07 12:33:07 -04:00
FoxxMD
09dd5b7c5f
Implement heuristics to detect offline jellyfin plays #87
...
* Refactor candidate/discovered Play maps to use tuple id instead of string so user can be compared later
* Add option to check all discovered platform plays (since jellyfin UserDataSaved doesn't include device id in payload)
* Check for UserDataSaved notification with correct reason as well as sanity check last played date (since jellyfin will save as played regardless of duration played)
* Bypass play tracking
2023-08-04 15:56:13 -04:00
FoxxMD
c182767e5e
Implement most read-only functionality for dashboard in CRA
...
* Layout and skeleton for dashboard
* Client/source cards with initial data
* Logs using SSE
2023-08-03 14:50:03 -04:00
FoxxMD
efa93a1529
Redirect non-view server routes to path with /api prefix
2023-08-02 15:18:20 -04:00
FoxxMD
6efd1e54a8
POC CRA with existing express server
2023-08-02 14:18:02 -04:00
FoxxMD
231bd03d9a
chore: Add docsite folders to dockerignore
2023-08-02 11:07:21 -04:00
FoxxMD
38c096b4d6
fix(youtube): Use youtube-music-ts-api fork while waiting for upstream PR merge #86
2023-08-02 10:08:47 -04:00
FoxxMD
68ca275673
fix(listenbrainz): Check for delimiters in user-submitted values before splitting #90
2023-08-02 09:49:28 -04:00
FoxxMD
de05612873
fix(listenbrainz): Normalize and parse artist names from user-submitted artist/track info #90
...
Try to parse common patterns (ft/feat/featuring etc) from both artist and track information
2023-08-01 17:51:57 -04:00
FoxxMD
bcb0c7471b
fix(listenbrainz): Normalize artist names before mapping to scrobble payload #90
2023-07-27 10:13:18 -04:00
FoxxMD
f856f79e51
Merge branch 'develop'
2023-07-17 15:41:00 -04:00
FoxxMD
fbea08dded
chore: Bump version
2023-07-17 15:40:44 -04:00
FoxxMD
dc52376395
docs: Use external links for config examples
...
Docusaurus treats the files as assets and forces them to download when relative links. Instead, use external links to github so the user can stay in browser
2023-07-17 15:39:24 -04:00
FoxxMD
1e2bc0ca85
Merge branch 'docsite' into develop
2023-07-14 11:27:56 -04:00
FoxxMD
7849d6098a
docs: Fix docker heading
2023-07-13 16:29:55 -04:00
FoxxMD
0b101b758e
feat(tautulli): Support empty user to enable source with all users #84
2023-07-13 16:13:16 -04:00
FoxxMD
756ff0e0c1
chore(github): Update trigger branch for docs deploy to master
2023-07-13 16:12:31 -04:00
FoxxMD
2ddeca7d29
Use working directory without cd command
2023-07-13 15:58:12 -04:00
FoxxMD
1de934e30a
Use working directory
2023-07-13 15:57:26 -04:00
FoxxMD
0409c526ee
Assume we are still in docsite dir?
2023-07-13 15:54:25 -04:00
FoxxMD
a7c340188f
Fix run step typo
2023-07-13 15:52:42 -04:00
FoxxMD
5dc54849cc
chore(github): Add action for build/deploy docusaurus docsite
2023-07-13 15:51:20 -04:00
FoxxMD
058fbee0c8
Migrate all docs to docsite
2023-07-13 15:40:48 -04:00
FoxxMD
daea76eef3
feat: Implement somewhat-working docusaurus site
2023-07-13 15:08:00 -04:00
FoxxMD
b81b1d94a3
docs: Update docker registry options
2023-07-13 11:21:27 -04:00
FoxxMD
226b7c741c
feat: Implement filter logging controls
...
For jellyfin/plex/tautulli -- `logFilterFailure` option in config allows controlling if and what log LEVEL user/server filter failures are logged. #85
* Updated schema
* Updated examples
* Also added expected/found detailed logging for filters to jellyfin #84
2023-07-13 11:07:12 -04:00
FoxxMD
e452bd761c
chore(github): Publish to GHCR
...
Also pin actions at versions instead of commits
2023-07-13 09:58:07 -04:00
FoxxMD
19c3d97a46
chore(docker): Remove armv7 buildx platform
...
It's legacy and not supported in most places! Don't need to build for this anymore.
2023-07-13 09:46:22 -04:00
FoxxMD
64164b28de
fix(plex): More config data normalization
...
* Split user value on comma to align with what config describes as acceptable (comma-delim)
* Trim found values to fix any whitespace typos
* On disallowed event logging add expected/found values to help with debugging
Fixes #84
2023-07-13 09:42:21 -04:00
FoxxMD
b03cbe7a0a
Merge branch 'develop'
2023-06-12 14:20:09 -04:00
FoxxMD
91bd702deb
docs: Add multiple artist scrobbling limitation to FAQ
2023-06-12 12:23:49 -04:00
Matt Foxx
ede22e10e9
Merge pull request #82 from Whhoesj/lastfm-fix
2023-06-12 12:10:05 -04:00
Wouter Habets
c648ad4ae3
fix(lastfm): only scrobble primary artist to last.fm
...
When a track contains multiple artist, only the first artist should be send to Last.fm since it doesn't support multiple artists per track.
Previous behaviour was to combine all artists in a single string.
Issue: #81
2023-06-12 17:56:37 +02:00
FoxxMD
a0fbd1129a
chore: Add git-cliff template
2023-06-07 10:01:30 -04:00
FoxxMD
b90ea03924
Merge branch 'develop'
2023-06-07 09:23:51 -04:00
FoxxMD
88efe2ad87
Bump versions for release
2023-06-07 09:23:40 -04:00
FoxxMD
39f933418e
fix(ntfy): Include authorization object correctly in publish request data #80
2023-05-30 10:32:20 -04:00
FoxxMD
cc8c7d84e2
fix(kodi): Fix hardcoded string #79
...
Probably leftover from debugging, oops
2023-05-25 12:18:29 -04:00
FoxxMD
6d9783c5f5
fix(tautulli): More response formatting safeguards #77
...
* Log warning if payload is empty
* Destructure request body with default empty object
2023-05-25 11:46:00 -04:00
FoxxMD
c10d46b774
fix: Passing wrong argument to tautulli payload formatter #77
2023-05-24 11:47:29 -04:00
FoxxMD
a5417277a8
feat: Use pre/post auth hooks for polling start to simplify logic
...
* Removes need to override poll() in child class and better defines when logic should be performed
* Fixes app crash when spotify credentials are present but invalid #76
2023-05-24 11:04:51 -04:00
FoxxMD
5a1c931513
fix: Re-initialize auth state after receiving auth callback
...
So we don't have to restart after authenticating in order to start polling
#76
2023-05-24 10:45:07 -04:00
FoxxMD
09f4503593
fix: Handle null/non-string values when truncating
...
#76
2023-05-19 12:25:22 -04:00
FoxxMD
045cae66f5
fix: Respect maloja response status and throw on error
...
Don't assume track scrobble correctly. Check body status prop and throw on error or log warnings if they are present
Maybe fixes #57
2023-04-18 10:51:25 -04:00
FoxxMD
e67ef5fb0f
fix: try to limit number of plays returned by deezer
2023-04-03 16:10:58 -04:00
FoxxMD
1677c0021f
Update maloja track parsing in preparation for Maloja 3.2
...
Album structure changes
2023-04-03 15:59:29 -04:00
FoxxMD
3400e747a8
Fix listenbrainz example
...
Thanks @captainnapalm
2023-04-03 15:46:43 -04:00
FoxxMD
c08ff4843c
Bump flatpak build source
2023-03-27 10:02:49 -04:00
FoxxMD
5e905eae17
Merge branch 'develop'
2023-03-27 09:40:42 -04:00
FoxxMD
7ebe73ccb3
Update flatpak install instructions (official!)
2023-03-27 09:40:20 -04:00
FoxxMD
574911cfa0
Update flatpak instructions
2023-03-24 09:34:15 -04:00
FoxxMD
91a84dc4f4
Use files from repo rather than including separately to keep more things upstreams
...
https://github.com/flathub/flathub/pull/4002#pullrequestreview-1355412003
2023-03-23 16:09:18 -04:00
FoxxMD
9a578e54a8
Fix app id and other issues from review in flathub PR
...
https://github.com/flathub/flathub/pull/4002
2023-03-23 16:03:43 -04:00
FoxxMD
1a8d5eded3
Update metadata
2023-03-23 15:21:48 -04:00
FoxxMD
94765057db
oops typo on icon name
2023-03-23 12:36:54 -04:00
FoxxMD
86c639ad2c
Add actual MS icon
...
Commissioned from @mkalunivsky https://www.fiverr.com/mkalunivsky
2023-03-23 12:35:00 -04:00
FoxxMD
f3045debb3
Scope dbus access to mpris
2023-03-23 12:16:28 -04:00
FoxxMD
ffc826f04d
Log message if running as foreground app with flatpak
2023-03-23 12:00:48 -04:00
FoxxMD
e70a4bbf1c
Update flatpak build with proper desktop integration
...
* Fix appstream (metainfo) missing properties and correct component types
* Add .desktop file that specifies terminal use
* Add placeholder icon
2023-03-23 11:56:53 -04:00
FoxxMD
a9eca51bfa
Implement user-defined scrobble thresholds #73
...
Add a scrobbleThresholds object with 'duration' and 'percent' values to all sources and sourceDefaults. If both are defined then first passing condition trigger scrobble.
* duration, in seconds, tests how long MS has been tracking the play (since discovery)
* percent, only used if source provides track duration, tests time MS has been tracking play (since discovery) is some % of track duration
2023-03-22 14:55:38 -04:00
FoxxMD
de4a0aecd5
Add .flatpak-builder ignore in flatpak folder
2023-03-22 12:00:52 -04:00
FoxxMD
f097fac8ea
docs: Add systemd usage and add preview flatpak install instructions
2023-03-22 11:39:51 -04:00
FoxxMD
a20b35f7cd
More build improvements and provide config defaults to flatpak config dir
...
* Remove npm dev dependencies after app install/build
* Delete typescript files after build
* Provide a default config with file logging disabled and copy examples to config folder if empty
2023-03-22 10:32:29 -04:00
FoxxMD
2d51a0e159
Don't create rotating log file on init logger
...
We don't know if use wants files or there may not be permissions necessary...wait until we try to parse logging from config in appLogger
2023-03-22 10:31:04 -04:00
FoxxMD
e524077242
Update flatpak build instructions to use npm
2023-03-21 16:54:23 -04:00
FoxxMD
a5b5fe8d2a
Use npm package-lock and update winston dependencies
...
* Update winston-duplex to remove hard winston dependency
* Use scoped @foxxmd/winston instead of git commit
* Replace 'winston' with '@foxxmd/winston' in application
2023-03-21 16:53:42 -04:00
FoxxMD
ddb3e0e02d
Move into own folder and cleanup/instructions
...
Only blocking issue is needing to use yarn instead of npm
2023-03-21 11:09:25 -04:00
FoxxMD
ec97ec428a
Update permissions
2023-03-21 09:15:13 -04:00
FoxxMD
49b834af5d
working config folder
2023-03-21 09:15:13 -04:00
FoxxMD
6329aaf6a9
Revert to git source for winston to fix typings problem
2023-03-21 09:15:12 -04:00
FoxxMD
fd6e5ab084
Working example
2023-03-21 09:15:12 -04:00
FoxxMD
1dbb1b9ba3
Add network permission
2023-03-21 09:15:12 -04:00
FoxxMD
fc65a63d43
Use yarn instead of npm
2023-03-21 09:15:12 -04:00
FoxxMD
4d1ddde57b
NON working flatpak manifest
...
See comments in manifest
use npm published @foxxmd winston package
2023-03-21 09:15:12 -04:00
FoxxMD
7d14fb5341
Modify ioc and index so we can get port from config
2023-03-21 09:05:16 -04:00
FoxxMD
e310b3aec8
Add PORT to aio config
2023-03-21 09:05:16 -04:00
FoxxMD
056457d028
Fix readJson logging usage
2023-03-21 09:05:16 -04:00
FoxxMD
73183e760e
feat: Improve robustness of MPRIS data parsing
...
* Log warnings when any specific mpris info for a player isn't able to be parsed rather than failing entire poll attempt
* Fallback to undefined tracking progress if position cannot be parsed
2023-03-21 09:04:41 -04:00
FoxxMD
3fff729d32
Scrobble to Listenbrainz with MBID metadata if present
...
* Add play object data "meta" with a brainz property and common mbid tags
* Parse MBID data from jellyfin webhook
* Add MBID data from play object to 'additional_info' when scrobbling to listenbrainz
Closes #72
2023-03-20 22:37:54 -04:00
FoxxMD
19e199bd58
Pre-emptive adding flatpak folders to gitignore
2023-03-20 22:31:27 -04:00
FoxxMD
7b0f5801a1
Merge branch 'develop'
2023-03-20 11:06:38 -04:00
FoxxMD
4dbea91a5e
docs: some words
2023-03-15 12:28:44 -04:00
FoxxMD
548356aaa4
feat: Implement Kodi as a Source
2023-03-15 12:26:35 -04:00
FoxxMD
8b3f4c636c
Merge branch 'develop'
2023-03-15 09:13:20 -04:00
FoxxMD
1b0212f3bb
feat: Improve polling retry strategy
...
* Increase default to 5 for all sources
* Use true exponential backoff for determining delay between polling
2023-03-15 09:06:26 -04:00
FoxxMD
14e9ec0b45
refactor: Remove superfluous 'Client' from scrobbler label
...
Already know what it is since it is prefixed by [Scrobblers] label
2023-03-15 08:30:18 -04:00
FoxxMD
dab113ab76
docs: Missing jriver TOC entry
2023-03-13 14:01:40 -04:00
FoxxMD
ad729769ec
Implement JRiver Source #26
2023-03-13 13:59:24 -04:00
FoxxMD
bb4ae549a3
Remove superfluous spotify label
2023-03-13 10:13:47 -04:00
FoxxMD
0786642a38
Increase default poll retries for Spotify
...
This seems to be a pain point so increasing ought to help.
2023-03-13 10:09:22 -04:00
FoxxMD
77d5f5884e
Use error with cause for spotify api errors
2023-03-13 10:00:23 -04:00
FoxxMD
7a0a23b7fd
Merge branch 'develop'
2023-03-10 15:12:53 -05:00
FoxxMD
1207a5eec1
docs: Update wording
2023-03-10 14:58:27 -05:00
FoxxMD
48a0ecad41
feat: Implement Listenbrainz as a client #16
2023-03-10 14:38:07 -05:00
FoxxMD
f792feeb6c
fix: re-add accidentally delete lastfm docs
2023-03-10 14:28:50 -05:00
FoxxMD
d6b682a23a
fix: Do not prematurely return no existing scrobble when no recent scrobbles exist
...
don't want to assume we won't find an existing just because there are no scrobbles from the client itself -- we may have found it from recent recorded scrobbles sent
2023-03-10 14:26:42 -05:00
FoxxMD
d77d547c15
fix: fix always adding plays to newly discovered
2023-03-10 14:25:05 -05:00
FoxxMD
0dc828fa85
fix: time frame should be valid if there were no recent scrobbles retrieved
2023-03-10 14:08:48 -05:00
FoxxMD
bd00a5f414
feat: Improve error and json logging
...
* Properly handle ErrorWithCause stacks
* Output json when log meta exists
2023-03-10 12:41:07 -05:00
FoxxMD
f587ad4bbc
feat: Use fixed length array to store scrobbled plays
...
May reduce memory usage as we don't store all scrobbles ever
2023-03-10 11:58:57 -05:00
FoxxMD
b8f2b1e3f8
feat: Increase number of recent scrobbles to fetch
2023-03-10 11:38:24 -05:00
FoxxMD
bf3b81f1cd
feat(listenbrainz): Add timeout for listens response
2023-03-10 11:34:41 -05:00
FoxxMD
9375a6fce4
feat: Improve listenbrainz scrobbler source of truth behavior
...
Use updated listenbrainz api methods and scrobbled play method
2023-03-10 11:24:15 -05:00
FoxxMD
ca148f490e
refactor: Make scrobbled data transform responsibility of concrete scrobbler class
2023-03-10 11:23:15 -05:00
FoxxMD
9ab0468913
feat: Improve listenbrainz api
...
* The response track data is different than submission data so make sure we are accurately parsing that data to PlayObjects
* Add separate method for getting listens as recently played (play objects) and refactor getUserListens to return raw payload
2023-03-10 11:22:21 -05:00
FoxxMD
99a73a80db
feat: Implement Listenbrainz source
2023-03-10 09:54:20 -05:00
FoxxMD
80ba6e6c79
remove commented out code
2023-03-09 14:33:16 -05:00
FoxxMD
7a4f0f0d3f
fix: Fix mopidy response handling when no track is being played
2023-03-09 13:12:31 -05:00
FoxxMD
a9a6c6ae15
feat: Improve scrobble client debug logging during scrobble loop
...
Use client logger for cleaner labels
2023-03-09 13:09:26 -05:00
FoxxMD
c5190fc2a6
feat: Improve logging
...
* use child loggers instead of creating new loggers for each part of the app
* cleans up and automates nested labels in log output
* fixes "event emitters may be leaky" node warning
* add ability to specify log levels per output type (console, ui, file) using aioconfig
* improve UI logging experience
* use more color-blind friendly colors (borrowed from context-mod)
* add verbose log level output
* increase log buffer and store all logs, then filter at render time, instead of discarding based on min log level so that we always have logs to display
* fix level selection in ui to work for all levels
2023-03-09 13:02:46 -05:00
FoxxMD
93b543e1a4
Fix mopidy json schema url
2023-03-08 15:21:10 -05:00
FoxxMD
4d77ca9c11
Add missing mopidy example
2023-03-08 15:18:24 -05:00
FoxxMD
03cf3d1e3c
feat: Implement Mopidy source #24
2023-03-08 15:16:37 -05:00
FoxxMD
d2134f3467
fix: fix reversing referenced array
2023-03-08 09:57:34 -05:00
FoxxMD
97fe411ac0
feat: improved last activity date tracking
2023-03-07 14:22:27 -05:00
FoxxMD
ff953b4535
fix: oops left in debug statement
2023-03-07 12:31:27 -05:00
FoxxMD
b68fb9a9f9
fix(youtube): Fix bad index when checking for repeat tracks
2023-03-07 12:20:02 -05:00
FoxxMD
ad1895d6e1
fix: Add fallback comparison when sorting plays by playDate
2023-03-07 12:19:29 -05:00
FoxxMD
51b4ea3b16
Refactor: Consolidate formatPlayObj options
2023-03-07 11:51:36 -05:00
FoxxMD
3d86a38a2e
Refactor: Create a Source of Truth for track discover by sources and consolidate/simplify scrobble behavior
...
* Add a 'recentDiscoveredPlays' class property for abstract source
* recentDiscoveredPlays is platform aware and configured based on source 'multiPlatform' class property
* Consolidate scrobble behavior into abstract class
* Check for existing discovered track before scrobbling
* Add to discovered if not existing and increment discovered tracks counter
* Decouple sources from clients by using event emitter when a newly discovered track should be scrobbled
* Use discovered tracks for UI display instead of api data
2023-03-07 11:27:25 -05:00
FoxxMD
605aad1df3
Refactor: Consolidate scrobble client existing play check into abstract client
...
* Move main logic into class methods that can be overridden
* Move title, artist, and date checks into class methods that can be overridden
2023-03-07 10:36:05 -05:00
FoxxMD
3d2e3534ff
Refactor: Move play date comparison into util
2023-03-07 10:34:20 -05:00
FoxxMD
2a65ffe6c4
Merge branch 'statefulSOT' into experimental
2023-03-06 13:20:37 -05:00
FoxxMD
e3e3e03249
Merge branch 'spotifyConnect' into experimental
...
# Conflicts:
# src/sources/AbstractSource.ts
# src/sources/SpotifySource.ts
# src/sources/SubsonicSource.ts
2023-03-06 13:20:30 -05:00
FoxxMD
6bd8642c91
Initial pass at IOC
2023-03-06 13:13:25 -05:00
FoxxMD
40ae842f82
Add fixed-size-list
...
To be used for storing a fixed length array of scrobbled plays for clients and a discovered tracks for sources
2023-03-06 11:12:11 -05:00
FoxxMD
a2ab1aa49e
feat: Add polling options to config schema and make polling more aggressive
...
Since spotify now uses currently playing with memory we need to poll more aggressively to make sure we catch tracks as they are played. Additionally need to decrease max polling interval so as not to miss activity.
2023-03-03 12:32:16 -05:00
FoxxMD
6d3cbf32df
feat(spotify): Refactor spotify Source as Memory Source #51
...
* Use recently-played to scrobble backlogged tracks
* Use currently-playing or current-state to implement spotify as a memory source in order to track plays made from spotify connect devices
2023-03-02 15:29:31 -05:00
FoxxMD
7a8138773c
feat(spotify): Implement currently playing retrieval
2023-03-02 13:38:56 -05:00
FoxxMD
5ae79deca4
feat: Implement MPRIS Source
2023-03-02 12:57:29 -05:00
FoxxMD
285f593a0f
Add dbus-next dependency
2023-03-02 10:29:46 -05:00
FoxxMD
e0ae621b62
feat: Implement more context awareness for memory sources to handle multi-platform/device plays
...
* Track candidate plays separately based on device/platform/user metadata
* Perform additional check for playback progress if metadata exists
Fixes #67
2023-02-28 12:34:09 -05:00
FoxxMD
259d4dabc8
feat: Parse device id metadata from sources to be used for multi-player awareness #67
2023-02-28 11:12:15 -05:00
FoxxMD
f7b03d9622
refactor: Rename sourceId to trackId to be clearer in what it actually is
2023-02-28 10:14:06 -05:00
FoxxMD
bd188a8ca7
refactor: Remove unused trackLength property
2023-02-28 09:58:56 -05:00
FoxxMD
28910a9332
Merge branch 'develop'
2023-02-27 11:13:28 -05:00
FoxxMD
ee38252e1a
docs: Add webhook and healthcheck endpoint documentation
2023-02-27 10:58:39 -05:00
FoxxMD
6f3595db31
feat: Add initialization and auth tests for notifiers
2023-02-27 10:58:31 -05:00
FoxxMD
c5c0cd9cd2
refactor: Improve title and messages for webhook notifications
2023-02-27 10:09:25 -05:00
FoxxMD
f5da32d233
fix: YT Music error throwing
2023-02-27 09:35:44 -05:00
FoxxMD
315869dafe
fix: Update auth check when starting polling
...
Use general requiresAuth instead of only requiresAuthInteraction
2023-02-27 09:35:29 -05:00
FoxxMD
330802e29b
fix: Default import for gotify library
2023-02-27 09:34:52 -05:00
FoxxMD
3d5e988ef0
Suppress error
2023-02-24 15:31:43 -05:00
FoxxMD
9a2b4b3d1e
fix: Maybe fix for missing lastfm credentials configdir base
2023-02-24 15:27:16 -05:00
FoxxMD
4a1ebcdbc6
fix: Fix webhook missing initializer value
2023-02-24 13:57:08 -05:00
FoxxMD
bc66fdb2b6
fix: Stop api calls if authentication failed
2023-02-24 13:56:52 -05:00
FoxxMD
6c2b0557c6
feat: Implement health endpoint #66
...
* HTTP Status as primary indicator with messages in json response
* No parameters in request aggregates all client/source statuses. Otherwise can use 'type' or 'name' parameters to restrict client/sources to aggregate
2023-02-24 13:51:59 -05:00
FoxxMD
c24dc41811
feat: Implement webhook-based status notifications #66
...
* Implemented notifications for Gotify and Ntfy
* Notifications pushed on: polling started, polling retry, polling stopped on error, scrobble client scrobble failure
2023-02-24 13:19:03 -05:00
FoxxMD
0a41d32084
fix: Fix config deconstruct for polling data
2023-02-24 11:13:58 -05:00
FoxxMD
b7aa087b74
feat: Add debug logging of jellyfin webhook payload with docs
2023-02-24 11:04:47 -05:00
FoxxMD
1f511d964d
feat: Improve jellyfin logging
...
* Refactor initial connection info to be more verbose and only log once
* Refactor valid event check logging order of operations and make logging more verbose
2023-02-24 10:48:40 -05:00
FoxxMD
14eabecb7d
Update google headers image
2023-02-23 12:57:11 -05:00
FoxxMD
8e31aa431d
docs: Add youtube music docs and example
2023-02-23 12:54:48 -05:00
FoxxMD
e47a636c2d
feat: Add friendly auth error and hints for YT authentication test
2023-02-23 12:27:37 -05:00
FoxxMD
bdd14b16de
feat: Implement YT recent played UI
2023-02-23 12:16:44 -05:00
FoxxMD
8cc5aacb9a
feat: Implement working YT Music source #34
2023-02-23 12:07:06 -05:00
FoxxMD
d8e861dd54
feat: Add YTMusic api implementation and basic source
2023-02-22 16:35:09 -05:00
FoxxMD
e369f9eb21
Merge branch 'develop'
2023-02-22 12:55:23 -05:00
FoxxMD
ce6246e479
docs: Add FAQ to bug report template
2023-02-22 12:55:14 -05:00
FoxxMD
0c58cc6687
Merge branch 'develop'
2023-02-22 12:09:40 -05:00
FoxxMD
19687b725d
fix: Fix logging empty ingress notifications
2023-02-22 12:00:13 -05:00
FoxxMD
02dee5fb6c
docs: Add bug report template
2023-02-22 11:54:13 -05:00
FoxxMD
e08a1ad514
fix: fix typo
2023-02-22 11:46:01 -05:00
FoxxMD
865f1064f5
docs: Add FAQ
2023-02-22 11:43:57 -05:00
FoxxMD
2b798e5a69
feat: Implement initial request logging for all sources that use ingress instead of polling
...
In order to make basic troubleshooting easier all ingress-based sources (plex, tautulli, jellyfin) now log initial connections and basic request validation checks:
* Request logging includes remote address and user agent
* Log initial requests before any middleware/body parsing
* Include method for checking if request is valid at a low-level (IE checking request verb)
* Include source-specific methods for checking if request payload is valid
2023-02-22 11:04:50 -05:00
FoxxMD
da4d2ecade
docs: Add additional properties to tautulli payload
2023-02-22 11:01:24 -05:00
FoxxMD
89540d8b76
docs: Add jellyfin example to kitchen sink and fix inconsistencies #55
2023-02-21 12:54:40 -05:00
FoxxMD
931709d277
fix: typo
2023-02-21 12:50:11 -05:00
FoxxMD
1b199750bd
docs: Simplify and correct example configs
...
* Keep examples as valid json by removing comments and fixing trailing commas #55
* Add README pointing to configuration docs
2023-02-21 12:49:20 -05:00
FoxxMD
4b1fa710f7
docs: Rename json-based to file-based for consistent terminology
2023-02-21 12:47:56 -05:00
FoxxMD
360b6f4cf0
docs: Add links to schema explorer for json configs
2023-02-21 12:27:55 -05:00
FoxxMD
e960438968
feat: Revert specific config requirement to be a top-level array
...
Wasn't really necessary and would cause breaking change for existing configs.
2023-02-21 12:27:27 -05:00
FoxxMD
93230c45c7
docs: Add examples and more descriptions to json schema
2023-02-21 11:52:27 -05:00
FoxxMD
a3fd30c427
fix: Update project TS and node configuration in order to correctly generate json schema
...
* Output to commonjs using TS (remove type:module from package.json)
* Update tsconfig config
* Downgrade formidable to fix ES module import error
* Remove js assertions and use separate json schema for aio client/source validation to keep MS log output cleaner
2023-02-21 11:05:33 -05:00
FoxxMD
c9bac6f7d2
fix: Use separate interface for maloja config data with inherited properties
2023-02-21 11:02:30 -05:00
FoxxMD
06c0b64ee5
fix: Correct plex data types
2023-02-21 11:01:28 -05:00
FoxxMD
70a1181ea1
chore: Add missing passport-deezer typings
2023-02-21 11:00:56 -05:00
FoxxMD
be9938fe95
missed some wording
2023-02-20 11:32:47 -05:00
FoxxMD
27acfa9489
docs: Simplify oauth config by removing unused access/refresh token
...
Although it was nice to include the option no one is providing their own tokens from a separate flow completed elsewhere. It simplifies readability and usage in MS to remove these and always generate out own.
2023-02-20 11:31:24 -05:00
FoxxMD
fc26125f80
fix anchor
2023-02-20 11:19:33 -05:00
FoxxMD
193a5c1e4d
docs: Rewrite docs to include more examples and clearer usage
2023-02-20 11:18:01 -05:00
FoxxMD
700722627a
feat: Allow parsing json files as json5
...
So users can use example json files with comments as-is
2023-02-20 09:42:16 -05:00
FoxxMD
1f6996d881
chore: Update superagent version
2023-02-14 11:35:44 -05:00
FoxxMD
1cbad9ccfd
refactor: Use node from alpine packages instead of building from source
...
Using LTS either way but building from source makes image much larger and takes forever on build runners (github)
2023-02-14 11:23:05 -05:00
FoxxMD
04c9de648d
refactor: Update s6-overlay usage for ms config and start up
...
Refactor s6 usage based on most recent lsio images
2023-02-14 10:44:31 -05:00
FoxxMD
2b60a0f76f
fix: Fix ENV usage for jellyfin #61
...
Correct property names when parsing from ENV
2023-02-10 13:53:09 -05:00
FoxxMD
176ff80172
Fix docker example folder mapping
2023-02-10 12:46:20 -05:00
FoxxMD
e2d150ce15
feat: add docker-compose with instructions #55
2023-02-10 12:44:22 -05:00
FoxxMD
636004a1bb
Refactor: Update dockerfile and simplify configuration #55
...
* Update to alpine 3.17 and node 18 to match the project
* Use LSIO base to enable ui/guid usage through env
* Use build stages to reduce image size and speed up build
* Refactor build to use typescript
* Simplify config directory by using root-level /config as default
* Add bash script on startup to copy example configs if a new config folder is detected
2023-02-10 12:12:57 -05:00
FoxxMD
2258bb36b9
Refactor: Simplify logs location by using config directory #55
2023-02-10 12:09:20 -05:00
FoxxMD
0583a59177
Regenerate json schema files
2023-02-10 12:08:37 -05:00
FoxxMD
fbbcfc5a57
Downgrade socket.io to avoid ESM module issue
2023-02-10 11:09:43 -05:00
FoxxMD
317da71ec3
Ignore .bak files
2023-02-10 10:18:15 -05:00
FoxxMD
22bbcfe3e5
Remove unused subsonic library
2023-02-10 10:18:05 -05:00
FoxxMD
de3832f3ce
More TS fixes
2023-02-09 16:09:52 -05:00
FoxxMD
04b07d6bfb
Update abstract source config usage
2023-02-09 15:18:31 -05:00
FoxxMD
fdf00d8acc
Update deezer config usage
2023-02-09 15:18:09 -05:00
FoxxMD
3d2296858f
Update subsonic source config usage
2023-02-09 15:15:24 -05:00
FoxxMD
b1390cd74a
Update spotify client typings
2023-02-09 15:05:14 -05:00
FoxxMD
216d92cad7
Add recentlyPlayed option interface
2023-02-09 15:04:59 -05:00
FoxxMD
dcde41f89a
Fix spotify source credential handling
2023-02-09 14:48:27 -05:00
FoxxMD
1e9518ac54
Fix spotify source credential handling
2023-02-09 14:48:20 -05:00
FoxxMD
ac2aa8297c
Remove ts-migrate
2023-02-09 14:48:12 -05:00
FoxxMD
8611798051
it works!
2023-02-09 13:51:06 -05:00
FoxxMD
a659897d37
refactor: Update project to ESM
...
* Update relative import extension
* Remove (bad?) TSconfig extends presets
* Fix default non-relative imports
2023-02-09 12:50:37 -05:00
FoxxMD
b4303fa81c
refactor: add typings everywhere they are needed
2023-02-09 12:22:55 -05:00
FoxxMD and ts-migrate
8f0a75a81b
[ts-migrate][.] Run TS Migrate
...
Co-authored-by: ts-migrate <>
2023-02-08 12:56:09 -05:00
FoxxMD and ts-migrate
e006476b52
[ts-migrate][.] Rename files from JS/JSX to TS/TSX
...
Co-authored-by: ts-migrate <>
2023-02-08 12:56:04 -05:00
FoxxMD and ts-migrate
bb7bfc4a6e
[ts-migrate][.] Init tsconfig.json file
...
Co-authored-by: ts-migrate <>
2023-02-08 12:56:04 -05:00
FoxxMD and ts-migrate
03c3f6b6a2
[ts-migrate][.] Init tsconfig.json file
...
Co-authored-by: ts-migrate <>
2023-02-08 12:55:08 -05:00
FoxxMD and ts-migrate
900f3c2471
[ts-migrate][.] Init tsconfig.json file
...
Co-authored-by: ts-migrate <>
2023-02-08 12:53:42 -05:00
FoxxMD and ts-migrate
cd86acdcf0
[ts-migrate][.] Init tsconfig.json file
...
Co-authored-by: ts-migrate <>
2023-02-08 12:53:13 -05:00
FoxxMD
abf338f71a
refactor: Move application files into src folder
...
* In preparation for documentation site and building from TS isolate app files to own folder
* Fix log/config/views folder default location
2023-02-08 12:46:46 -05:00
FoxxMD
91bb0cba45
Update to note 18 and add tsconfig
2023-02-08 12:30:39 -05:00
FoxxMD
8499e3197d
feat: Add unknown route logging
2023-02-08 11:53:37 -05:00
FoxxMD
bfc3568b00
feat: Add more debug logging for memory source play object tracking
2023-02-08 11:13:35 -05:00
FoxxMD
26613f8b68
docs: Update jellyfin webhook install instructions
2023-02-08 11:13:03 -05:00
FoxxMD
0b2d4b5f89
feat: Add more information to jellyfin play object and logging
...
* Standardize runtime stamp parsing
* Add playback position for future use
* Add source version and log first-seen server logging to jellyfin source
2023-02-08 11:12:44 -05:00
FoxxMD
6561ec9404
fix: Fix retrieving incorrect source for spotify callback when sources are unnamed
...
MS incorrectly chooses the first unnamed source (based on built source order) when handling spotify callback. Fixed by specify source type when retrieving source. Fixes #63
2023-02-03 11:04:49 -05:00
FoxxMD
517df8a3ad
chore: remove quotes from nvmrc
2023-02-03 11:02:33 -05:00
Matt Foxx
4a0cdc0e87
Merge pull request #62 from samdoshi/lastfm-docs
2023-01-21 17:48:27 -05:00
Sam Doshi
a54bc99925
add note about privacy setting for Last.fm sources
2023-01-21 15:28:21 +00:00
Matt Foxx
eeae98360f
Merge pull request #56 from CPU-Blanc/bugfixing
...
Fix: Jellyfin source
2022-12-29 08:58:08 -05:00
CPU_Blanc
c5a938d4eb
Fix Jellyfin source
2022-11-29 02:01:20 +00:00
FoxxMD
c5b7dbd50f
fix: Improve scrobble client init flow and retries
...
* Refactor init state to have an interim value and use getter/setter to control it
* Replace usage of 'ready' class field on maloja client with serverIsHealthy (make it client specific)
* Add some missing functions in abstract client class
* If client is not already initialized (or trying to initialize) then try to initialize client on scrobble attempt, maybe fixes #44
2022-06-16 11:06:06 -04:00
FoxxMD
26cd478c6f
fix(plex): Properly handle requests without data
2022-06-15 12:01:38 -04:00
FoxxMD
670805f18a
feat(plex): Improve request handling and debug info
...
* Replace multer with formidable as it is more up-to-date and has more granular options for tracking progress and parsing data
* Add debug logging for the lifecycle of a plex request
* throws errors if any part of plex request lifecycle is unexpected
2022-06-15 11:51:58 -04:00
Matt Foxx
8b851d2220
Merge pull request #49 from northys/tautulli_readme_duration
...
docs: tautulli payload duration => duration_sec [fixes #48 ]
2022-04-28 16:24:36 -04:00
Jiri Travnicek
7a1279b02c
docs: tautulli payload duration => duration_sec [ fixes #48 ]
2022-04-28 22:11:42 +02:00
FoxxMD
3f2a49dedf
Merge remote-tracking branch 'origin/develop' into develop
2022-04-28 10:25:27 -04:00
FoxxMD
d0f792c107
feat: Add scrobble client request data to logging
...
* Output request payload as part of log message on error
* Always output request payload (raw) to debug
* Should help with debugging #48
2022-04-28 10:25:19 -04:00
Matt Foxx
ff9172001f
Merge pull request #46 from northys/build_arm
...
build arm [closes #45 ]
2022-04-26 23:14:10 -04:00
Jiri Travnicek
0b1772b30d
build arm [ closes #45 ]
2022-04-26 20:50:28 +02:00
FoxxMD
64b77cab6b
fix(maloja): Use length as track length property for all maloja versions
...
#42
2022-04-15 12:19:15 -04:00
FoxxMD
8aecd9dbce
fix(maloja): Use a different data shape for new scrobbles on maloja >= 3.0.3
...
Addresses #42
2022-04-15 09:44:43 -04:00
FoxxMD
0bdd0fd801
fix(ui): Provide defaults to express-session to prevent deprecation message
...
Closes #41
2022-04-14 09:59:49 -04:00
FoxxMD
0ede2cd96b
feat(maloja): Support maloja >= 3.0.0
...
* Use server version to determine shape of scrobble data when formatting play object
* Refactor adding new scrobble to recent list to use correct shape based on server version
2022-04-14 09:45:44 -04:00
FoxxMD
8219dcecd7
refactor(maloja): Handle maloja server version use cases for auth/readiness
2021-12-17 10:51:42 -05:00
FoxxMD
42a5fdf9a1
Don't invoke scrobble function if source has no plays
...
If source does not have new OR existing plays to check against clients there is no reason to call scrobble function
2021-12-14 11:06:21 -05:00
FoxxMD
9bc6f44af4
Implement readiness check for maloja client
...
* Use rebuild status and health reported from maloja api endpoint to determine if server is ready to scrobble/query
* Use readiness as prerequisite for auth test (can be removed if krateng/maloja#92 is merged)
2021-12-14 11:05:22 -05:00
FoxxMD
ccb31c5866
Implement ready state check for scrobble clients
...
Default state is calculated from initialized and auth status. Allows an additional check for client readiness independent of communication (initialized) status and auth status.
2021-12-14 11:03:03 -05:00
FoxxMD
30f9ebf900
Add note about authentication flow on deezer config
2021-10-20 14:30:56 -04:00
FoxxMD
9b4eb2d383
Implement Deezer source
...
Closes #35
2021-10-20 14:23:41 -04:00
FoxxMD
6e2f765e69
fix(lastfm): Fix mishandled properties in scrobble request causing ignored track
...
Removing undefined properties from request data for track scrobble fixes an issue where last.fm ignores the track and returns error code 1
Fixes #33
2021-10-05 12:06:50 -04:00
FoxxMD
57fd88556d
Better detection when last.fm ignores a scrobble
...
* Use ignored count to determine if warning is logged
* Let user know if no error message included
* Include link to error code reference in last.fm api docs
2021-09-29 12:42:22 -04:00
FoxxMD
034f5b217e
Fix missing auth variable for status render
2021-08-26 10:23:07 -04:00
FoxxMD
a5112e0bbb
Add github action to push docker image
2021-08-26 10:22:54 -04:00
FoxxMD
f6db5fa14e
Add streaming indicator
2021-07-14 10:35:43 -04:00
FoxxMD
d7de41d642
Improve log streaming
...
* Emit individual log statements in winston formatter
* Emit different event when logs should be cleared
* Use window global to keep track of sort order when appending on emit
2021-07-14 10:16:51 -04:00
Matt Foxx
ca0d1a4f90
Merge pull request #30 from christophernewton/master
...
feat: removed fs and made the options rely more on sockets
2021-07-14 09:42:08 -04:00
Chris Newton
46fc9143b4
feat: removed fs and made the options rely more on sockets
2021-07-14 13:58:45 +10:00
Matt Foxx
0800cff6fc
Merge pull request #29 from christophernewton/master
...
Added Websockets
2021-07-13 10:00:13 -04:00
Chris Newton
3106b56dee
feat: fixed issue with trailing commas
2021-07-13 14:43:35 +10:00
Chris Newton
08b1ac04bb
feat: added websocket for streaming logs
2021-07-13 14:20:20 +10:00
Chris Newton
1a55cc482c
feat: cleaned up formatting
2021-07-13 11:53:18 +10:00
Matt Foxx
73aa7ad890
Merge pull request #28 from christophernewton/master
...
Small QOL updates
2021-07-12 13:47:38 -04:00
Chris Newton
95db3da58f
Merge branch 'FoxxMD:master' into master
2021-07-12 14:14:46 +10:00
Chris Newton
31926e6ad9
feat: added better check for log colors, added favicon, fixed mobile viewport issue
2021-07-12 14:13:51 +10:00
FoxxMD
71a8ad2418
Fix typo on users specification for jellyfin source setup
2021-07-05 10:43:44 -04:00
FoxxMD
49bd1c8836
Refactor initialization and authentication stages for client/source building
...
* Break up into different functions and add properties to concrete classes signalling its capabilities
* More detailed logging based on which fails/succeeds
* Simplify client/source init/auth step (no more need for case switch specifics other than creating object)
2021-04-14 16:22:05 -04:00
FoxxMD
fc3dd62858
Refactor source building and initialization to log failures but continue
...
* Instead of stopping the whole application for one misconfigured config just log the issue and continue with any valid/working configs.
* Add better logging for type.json issues (add index)
* Add deprecation warnings for single-user mode structures in type.json (to be removed in 0.4)
2021-04-14 11:28:55 -04:00
FoxxMD
ff114a0ae5
Refactor client building and initialization to log failures but continue
...
* Instead of stopping the whole application for one misconfigured config just log the issue and continue with any valid/working configs.
* Add better logging for type.json issues (add index)
* Add deprecation warnings for single-user mode structures in type.json (to be removed in 0.4)
2021-04-14 11:14:57 -04:00
FoxxMD
8bfcb6cd9a
Showcase last.fm as a source in readme
2021-04-14 10:19:23 -04:00
FoxxMD
8154e30939
Add last.fm as source to readme
2021-04-13 17:05:46 -04:00
FoxxMD
506440825f
Implement Last.fm as a source
...
For #23
2021-04-13 17:04:40 -04:00
FoxxMD
646723fcf8
Add ui screenshot to readme
2021-03-17 10:34:51 -04:00
FoxxMD
a560a49aac
Fix typo
2021-03-16 15:44:38 -04:00
FoxxMD
de763d68f3
Add Jellyfin source #15
...
* Implement Jellyfin source similar to Plex, but using MemorySource
* Add configuration docs and json example
2021-03-16 15:36:51 -04:00
FoxxMD
f731c25332
Return new plays when memory source adds them to stateful
...
Will make it easier for non-polling sources to see what is new from state
2021-03-16 15:33:41 -04:00
FoxxMD
f738eb92e8
Merge branch 'develop' into feat-jellyfin
2021-03-16 14:39:26 -04:00
FoxxMD
b9f4f43d30
Refactor subsonic source to use MemorySource
...
* Should stabilize subsonic as a source and prevents duplicate scrobbles
* Reduce polling interval to 10 seconds for more accurate recently played data and restrict max backoff time to 30 seconds
2021-03-16 14:38:59 -04:00
FoxxMD
e42f00604e
Refactor polling source backoff approach
...
Use time-based approach rather than check count approach so active period is not sensitive to interval value
2021-03-16 14:37:15 -04:00
FoxxMD
74eed98b9b
Fix filter method
2021-03-16 14:25:55 -04:00
FoxxMD
cef6f5864a
Implement "in memory" recently played tracking for sources that don't support a source of truth
...
If sources don't support a scrobble action or don't return a sane "recently played" data source we need to keep track of these plays ourselves. Do it in memory based on currently playing and return that as source "source of truth" for recently played.
2021-03-16 14:01:17 -04:00
FoxxMD
d5e816b1d3
Use a persistent datetime based on source instantiation or last track play as client refresh check threshold
...
We don't need to refresh clients on every source poll, only when first creating a source or when a new track play is discovered.
2021-03-16 13:59:43 -04:00
FoxxMD
dcc4201019
Improve parsing of last.fm track responses and handling recent tracks
...
* Include some metadata (mbid, url, nowplaying)
* Check for more artist properties since responses seem inconsistent now
* Check for timestamp to handle nowplaying use case
* Handle invalid scrobbles from last.fm on recents refresh WRT nowplaying and missing timestamps #22
2021-03-16 10:57:44 -04:00
FoxxMD
9c093a8455
POC jellyfin implementation #15
...
* Hopefully can get artist from webhook payload in the future so we can actually use this
* Add basic instructions for using Webhook plugin in configuration docs
2021-03-12 11:24:33 -05:00
FoxxMD
9a56a3ee4d
Merge branch 'develop' into feat-jellyfin
...
# Conflicts:
# index.js
2021-03-12 10:24:54 -05:00
Matt Foxx
f2b0714dea
Merge pull request #21 from christophernewton/master
...
Feature: Fix padding on client box
2021-03-02 09:19:19 -05:00
Chris Newton
0a1357acc7
feat: fix padding on client boxes
2021-03-02 08:54:47 +11:00
FoxxMD
855d3f6144
Jellyfin initial code
2021-01-04 12:06:45 -05:00