Maurits
2ad4c58dcd
fix: startup resume-seek cancelled when shuffle is enabled ( #2203 )
...
applyStartupSeek() compared the armed target song against
getQueue().items[player.index], but player.index is a position in the
shuffled order while getQueue().items is always the default order. With
shuffle enabled the lookup resolves to the wrong song, the uniqueId
check fails, and the startup resume-seek is silently cancelled — the
track then plays from 0:00 and the progress poller overwrites the
persisted timestamp.
Use getCurrentSong() instead, which maps the index through
queue.shuffled, matching how the seek target is armed.
Fixes #2202
Co-authored-by: Maurits <WhoCarrot@users.noreply.github.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-06 01:10:36 +00:00
jeffvli
37ada07ee2
add "stopped" playback state and event handlers
2026-06-29 20:23:46 -07:00
jeffvli
46b94a83f1
fix reportPlayback event chain ( #2131 )
...
- properly send stopped event on song change
- properly send both starting and playing evento n song change instead of only starting
2026-06-06 18:41:59 -07:00
jeffvli
0e24eeeb1c
only show queue save toast on explicit request ( #2090 )
2026-06-03 00:28:12 -07:00
jeffvli
7243ed7f15
fix timestamp restore when song switched before playback start ( #2094 )
2026-05-31 23:09:33 -07:00
Kendall Garner
6aab8d4121
fix(scrobble): use proper pause/unpause for seek, use ms for subsonic
2026-05-31 21:13:11 -07:00
jeffvli
1f5907716f
disable interval-based timeupdate scrobbles
2026-05-28 00:59:30 -07:00
jeffvli
239ef4a4ec
add album mode for autodj
...
- add selection modes: similar, random
- add autodj settings in playerbar popover
2026-05-25 19:23:37 -07:00
jeffvli
504bbeed91
handle positional scrobbles for OS
2026-05-25 13:26:11 -07:00
Kendall Garner
7befd70e21
Apply additional security recommendations ( #2050 )
...
* enable sandbox
* enable CSP (umami tentatively works?) and reduce amount of ipc APIs exposed
* remove csp from index
2026-05-22 22:09:22 -07:00
Tiago Simionato
8f40894926
feat: persist player timestamp ( #2043 )
...
* feat: persist player timestamp
2026-05-21 00:16:46 -07:00
jeffvli
ffe59b2c78
refactor scrobbling to use duration instead of progress ( #2010 )
...
- add scrobble status debug and indicator
- add force / reset scrobble
2026-05-12 22:04:46 -07:00
Jeff
e2a1d813a9
Use proper casing for i18n locales ( #1998 )
2026-05-11 19:42:07 -07:00
jeffvli
323130a877
add toggle for app-suspension for powersave block ( #1992 )
2026-05-01 21:24:45 -07:00
jeffvli
f5eb3f1488
wrap useHotkeys to disable on command palette open ( #1925 )
2026-04-28 19:31:41 -07:00
York
b99899f128
fix MPV visualizer on macOS and handle exclusive mode UX ( #1930 )
2026-04-13 20:47:03 -07:00
Auzlex
895cbb4d16
fix(media-session): prevent handlers from being destroyed during playback ( #1898 )
...
Handlers were being registered and destroyed on state change/re-render,
causing media controls to vanish during rapid use or quick track skipping.
Persist handlers and add debounce for rapid track skipping.
Tested on Windows, Linux, and Android.
2026-04-05 22:27:04 -07:00
jeffvli
3f300c40cc
add in-app prompt for system audio connection
2026-04-05 22:19:09 -07:00
jeffvli
ef129e4638
remove video from displayMedia request
2026-04-05 07:58:01 -07:00
jeffvli
94886a2d5a
add system audio loopback for webaudio
2026-04-05 00:48:38 -07:00
Lyall
dfdac28f53
Fix server queue saving/restoring on Navidrome and OpenSubsonic ( #1828 )
...
* fix server queue saving
* fix error when attempting to restore empty queue
* queue items optional
* make playQueueByIndex optional
* fix incorrect error message
2026-03-12 13:41:50 +00:00
Kendall Garner
49c28299af
remove package.lock, make lint happy
2026-03-06 21:04:51 -08:00
Kendall Garner
0bb6fea3db
don't assume server exists in enable either
2026-03-06 20:59:13 -08:00
Kendall Garner
7027084394
fix(autosave): server isn't guaranteed to exist
2026-03-06 20:52:41 -08:00
Kendall Garner
7c4cbaad9a
feat(player): add server-side autosave capability
2026-03-06 20:01:35 -08:00
jeffvli
5039012fcb
catch errors on desktop scrobble notification failure ( #1723 )
2026-02-18 20:54:31 -08:00
jeffvli
75af57a7b3
use correct player seek event for mpris updater ( #1740 )
2026-02-18 20:37:18 -08:00
Jeff
f39a7f8d6f
Add album detail list view ( #1681 )
2026-02-09 21:56:08 -08:00
Mateleo
d93f6e8720
feat: enable scrobbling on song repeat and fix package name typo ( #1662 )
...
- Add `handleScrobbleFromRepeat` callback to reset scrobble state and send 'start' event when player repeats a song, ensuring accurate scrobbling in repeat mode.
- Fix typo in `web.vite.config.ts` by correcting '@tanstack_react-query-persist-client' to '@tanstack/react-query-persist-client' for proper package reference.
2026-02-07 15:25:29 -08:00
Steffen Martinsen
b8228844df
feat: Add support for player controls in macOS dock menu ( #1627 )
...
* Added simple macOS dock menu similar to tray menu
* Enhanced and moved dock menu to darwin folder and enabled mpris on macOS to support play/pause state
* Added missing property sortName to silence TS error
2026-01-30 12:01:02 -08:00
jeffvli
81af324260
handle radio metadata for mpris / mediasession ( #1586 )
2026-01-22 01:30:45 -08:00
jeffvli
f4072c183b
refactor feature hooks to be conditionally initialized
2026-01-21 02:23:25 -08:00
jeffvli
291daa434c
validate that the current song is different from server before revalidating in queue
2026-01-17 13:19:56 -08:00
jeffvli
2827b2ae01
invalidate the album query on scrobble submission
2026-01-16 04:23:57 -08:00
jeffvli
fc5024be90
revalidate current song in queue during playback
2026-01-16 04:18:02 -08:00
jeffvli
c2de979527
fix incorrect condition to try similar songs in autodj
2026-01-07 13:57:53 -08:00
jeffvli
a66c67e86d
optimize settings store
2026-01-03 01:01:54 -08:00
jeffvli
aaf840d358
resend mediasession on player repeat ( #1472 )
2026-01-01 20:17:49 -08:00
jeffvli
91ccc71fcd
fix media session using stale image reference ( #1296 )
2025-12-31 01:51:52 -08:00
jeffvli
ffdef596ad
auto follow queue when autodj is triggered
2025-12-28 14:34:38 -08:00
jeffvli
0a54f7c44c
remove similarSongs from autodj when music folder is selected ( #1451 )
...
- Similar songs queries for both Subsonic/Jellyfin do not support querying by musicFolderId
2025-12-28 14:09:22 -08:00
jeffvli
4eac6457ea
add MPRIS volume handler ( #1415 )
2025-12-28 01:15:38 -08:00
jeffvli
dff182cbc5
use correct id for runtime images in useItemImageUrl
2025-12-26 14:04:48 -08:00
jeffvli
076d9b3083
re-add pause / unpause events to Jellyfin scrobble ( #1413 )
2025-12-25 01:47:04 -08:00
jeffvli
ce570eddd2
improve auto dj to trigger on remaining songs change
2025-12-23 21:05:40 -08:00
Jeff
25bfb65b6d
Add image URL generation at runtime to allow for dynamic image sizes ( #1439 )
...
* add getImageUrl to domain endpoints
* add new ItemImage component and hooks to generate image url
* add configuration for image resolution based on types
2025-12-23 20:18:52 -08:00
Kendall Garner
ed5d590a6b
feat: sync play queue for navidrome/subsonic ( #1335 )
...
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com >
2025-12-12 21:05:00 -08:00
jeffvli
32062d7c0f
fix auto dj not triggering on single song queue ( #1359 )
2025-12-10 01:06:16 -08:00
jeffvli
65a7c3440b
add player autodj ( #7 )
2025-12-07 15:04:39 -08:00
jeffvli
42fca271ce
remove stale start event on song change for jellyfin scrobble ( #1332 )
2025-12-06 18:12:15 -08:00