Commit Graph

2839 Commits

Author SHA1 Message Date
Rayan Salhab f462ebafdb fix: persist lyrics overlay visibility (#2226)
Co-authored-by: cyphercodes <cyphercodes@users.noreply.github.com>
2026-07-14 12:05:08 -07:00
Tristen Allen 8517a9f934 Unify scrobbling behavior across subsonic servers. (#2229)
Small change that modifies the `scrobble` controller method to always limit sending a
`scrobble` payload to the subsonic backend to cases where a scrobble is being submitted
or a new song is being started.

This is the current behavior for subsonic backends which support the `reportPlayback` backend
(e.g., Navidrome). This change only modifies the behavior for other backends, which would receive
`scrobble` notifications whenever a song changed for both the stopped song and the newly-started song.

After this change, all subsonic backends now only receive a `scrobble` when a new song is started or
when feishin is attempting to submit a scrobble.
2026-07-14 11:46:08 -07:00
jeffvli c9e86bb201 fix missing X padding on synchronized lyric lines 2026-07-12 13:11:57 -07:00
jeffvli d8e1dd215a set fallback album group image size (#2221) 2026-07-12 13:11:57 -07:00
Kendall Garner 17dba85baf fix(pitch): % -> x 2026-07-12 08:38:52 -07:00
jeffvli 2e6e7839c1 fix album group height calculation on index reorder 2026-07-11 19:21:40 -07:00
jeffvli 0270e9e9e5 prevent initially rendering non-sync romaji generated lyrics on karaoke lyrics 2026-07-11 18:51:42 -07:00
jeffvli bafc14b55a fix mpv playback resume on queue end / stop 2026-07-11 18:51:42 -07:00
Kendall Garner c5d074be16 fix(subsonic): ensure reportPlayback is an integer 2026-07-11 18:09:53 -07:00
jeffvli 66338e2c85 use album order for album view playlist playback 2026-07-11 14:54:28 -07:00
jeffvli 7e5d626ed8 fix playlist search ranking (#1935) 2026-07-11 14:35:07 -07:00
jeffvli cae2135c3b fix title combined column trackSubtitle wrapping instead of truncating 2026-07-11 14:22:08 -07:00
jeffvli 1c659cc693 format playlist header title without folder names 2026-07-11 13:50:08 -07:00
jeffvli b8daaf49b0 default sidebarPlaylistFolders setting to false 2026-07-11 13:46:56 -07:00
jeffvli 58ae496e05 fix item table scroll sync when pinned columns change 2026-07-11 13:33:42 -07:00
jeffvli 641e938f86 fix album group row height resetting on song change 2026-07-11 12:14:39 -07:00
jeffvli bb2bae163c fix animation not triggering on delayed romaji generation 2026-07-11 12:04:03 -07:00
jeffvli 308a94d3b6 ensure savePlayQueueByIndex uses a valid currentIndex 2026-07-11 12:02:05 -07:00
jeffvli 53c8841fd6 revert to custom cubic-bezier transition for lyric lines 2026-07-11 11:56:08 -07:00
jeffvli 3f9fa0b208 additional type fix for album group 2026-07-10 22:25:59 -07:00
jeffvli 573396700d fix type for album group 2026-07-10 21:27:23 -07:00
jeffvli b834d8eade adjust padding and text styles for album group 2026-07-10 19:49:07 -07:00
jeffvli d40530b7f6 add additional album group metadata rows 2026-07-10 19:49:07 -07:00
jeffvli 857c8187b5 fix subtle inconsistent highlight color on animating lyric 2026-07-10 19:49:07 -07:00
jeffvli 9b3a47a27f fix scroll follow pause on manual scroll 2026-07-10 18:24:17 -07:00
jeffvli aea5a880ea reduce opacity of fullscreen player header when not hovered 2026-07-10 15:16:14 -07:00
jeffvli b4e530ea07 support additional lyric layers (#2211) 2026-07-10 15:12:17 -07:00
jeffvli 908e83a2f8 fix missing spaces between ttml word cues (#2214) 2026-07-10 12:48:34 -07:00
jeffvli 00506d06f1 fix inactive lyric color and slow down transitions 2026-07-10 11:48:19 -07:00
jeffvli 964e6f491a remove remote requirement for lyrics match display 2026-07-10 11:32:46 -07:00
jeffvli 7c1893f7f5 remove lyrics blur animation 2026-07-10 10:16:14 -07:00
jeffvli 5cfb80f75b fix lint 2026-07-10 02:21:17 -07:00
jeffvli 5804eb3215 fix queue scroll follow with album group 2026-07-10 02:13:52 -07:00
jeffvli 67a2be1559 add additional height calculation for album group 2026-07-10 01:45:39 -07:00
jeffvli f957fb0a05 on mediaNext, trigger stop on last track if repeat disabled 2026-07-10 01:12:26 -07:00
jeffvli 8fc30e6936 add links, favorite, rating to album group column (#2139)
- additionally fix drop and drop interactions
2026-07-10 00:59:07 -07:00
jeffvli 7d4c55fc37 fix JoinedArtists not truncating on ItemCard 2026-07-09 21:52:35 -07:00
jeffvli f91b58ea5b disable useTransition from router 2026-07-09 21:37:29 -07:00
Jeff 355b19c1cb Add support for OpenSubsonic enhanced lyrics (#2208) 2026-07-09 21:32:05 -07:00
mannansainidev 0c89fea1ea feat: add jukebox player engine for server-side playback (#2109)
* feat: add jukebox player engine for server-side playback

---------

Co-authored-by: jeffvli <jeffvictorli@gmail.com>
2026-07-09 21:29:22 -07:00
Logan Rupe dd136f91e6 feat(player): right-click volume icon to switch audio output device (#2189)
* feat(player): add right-click audio output device menu to volume icon

Right-clicking the volume/speaker icon in the player bar now opens a
context menu listing available audio output devices, with the active
device checkmarked and a System default reset option.

Selecting a device writes to the existing audioDeviceId (web) or
mpvAudioDeviceId (mpv) playback settings, so the choice is applied live
and persisted across restarts via the settings store. Unlike the
settings-page selector, the menu is not disabled during playback.

* refactor(player): drop redundant audio menu label, document wrapper div

Address review feedback: remove the self-explanatory ContextMenu.Label
from the audio output menu, and add a comment explaining why the volume
icon is wrapped in a div (Mantine Tooltip does not forward Radix's
asChild onContextMenu/ref to the button).
2026-07-09 21:11:10 -07:00
vimae c64807cf94 feat: musical speed controls (#2191)
* feat: musical speed controls
2026-07-09 21:06:46 -07:00
jeffvli e3c2605e1d trigger stop event on queue end 2026-07-09 20:51:19 -07:00
Kendall Garner 554e49cb85 note that sso is not supported for ND auth 2026-07-05 21:50:22 -07:00
jeffvli 7b5df97fa0 fix list select all hotkey (#2195) 2026-07-05 21:25:18 -07:00
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
Ahmed Alabsi 022d227d5e perf: use crypto.getRandomValues() for higher-quality shuffle in music player (#2181)
* fix: use crypto-safe randomness in shuffle helpers
2026-07-02 01:01:34 -07:00
Kendall Garner 42bd8d34d9 fix(sidebar): only re-expand sidebar when enabled 2026-06-29 21:06:32 -07:00
jeffvli b397790402 additional fix for furigana/romaji lyric handlers (#2188)
- Romaji conversion joined all synced lyric lines into one string. Because the block contained kana somewhere, hasKana passed for the entire array of lyrics.
2026-06-29 20:50:13 -07:00
jeffvli 37ada07ee2 add "stopped" playback state and event handlers 2026-06-29 20:23:46 -07:00