FoxxMD
33d64b240e
test: Add atproto identifier
2026-07-10 23:44:54 +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