Commit Graph

162 Commits

Author SHA1 Message Date
7dc37d9eb7 ui: player: fix volume slider overflow in desktop player controls 2026-02-12 22:36:47 -08:00
ec3565078f feat(queue): auto-scroll to currently playing on queue open
Adds a visible prop to Queue that triggers auto-scroll to the currently
playing track when the queue becomes visible. PlayerMobile passes the
drawer open state, PlayerDesktop passes whether a track exists.
2026-02-12 22:19:12 -08:00
e3c0c6cade feat(queue): add scroll to currently playing button
Adds a scrollToIndex method to VirtualList and a locate button in the
Queue header that scrolls to center the currently playing track.
2026-02-12 22:19:12 -08:00
28643c38b8 feat(queue): add confirmation dialog when clearing the queue
Wraps the clear button in an AlertDialog that shows the number of songs
to be removed, requiring explicit confirmation before clearing.
2026-02-12 21:56:14 -08:00
3944cf6ff4 modify id to index map imperatively 2026-02-11 23:35:30 -08:00
6fca5bae39 perf(player): virtualize queue list rendering
Extract a generic VirtualList.svelte component that only renders
visible rows + overscan buffer using absolute positioning in a tall
sentinel div. Queue.svelte now uses VirtualList with 64px row height
(supporting 2-line titles) instead of rendering all items.

This reduces DOM nodes from 1000+ to ~20 for large queues.
2026-02-11 23:35:30 -08:00
cd443b974b perf(player): debounce localStorage persistence
Wrap save() in a 300ms debounce to prevent rapid serialization
when multiple state changes fire in quick succession (e.g. removing
several items or adjusting volume).
2026-02-11 23:35:20 -08:00
31414c5874 perf(player): add idToIndex Map for O(1) track lookups
Replace all linear find/findIndex/some scans with a derived Map
keyed by track.id. This makes currentTrack, currentIndex, hasTrack,
add, playNext, remove, and addAll all O(1) for ID lookups.
2026-02-11 22:56:49 -08:00
da3ab81ae6 perf(player): batch addAll/playAllNext to avoid cascading reactivity
addAll() now collects all new tracks and pushes them in a single
array operation instead of calling add() in a loop, which triggered
per-item reactive updates and O(n²) existence checks.
2026-02-11 22:56:00 -08:00
7e3a22f14b ui: queue: hide grab handle if hover available 2026-02-11 22:00:41 -08:00
86827777f4 testing with pgrok config 2026-02-11 21:28:06 -08:00
5e7534af35 ui: add placeholder artwork 2026-02-11 20:53:40 -08:00
11a4239fdc even more layout fixes 2026-02-10 05:41:18 -08:00
cdd90016f8 add extra song information to player 2026-02-10 05:25:28 -08:00
864a11fac4 stupid layout again 2026-02-10 04:46:16 -08:00
48e5719813 ui: add tags for dub and rebroadcast 2026-02-10 04:26:10 -08:00
e0d6e5bc32 a few more layout optimizations 2026-02-10 04:13:48 -08:00
fc0f04f29c more layout fixes 2026-02-10 03:53:53 -08:00
9e83b72139 remove artwork 2026-02-10 03:39:41 -08:00
f47f6e6cd8 actual layout improvements 2026-02-10 03:29:17 -08:00
197b9267c4 drag and drop but nicer 2026-02-10 01:58:33 -08:00
ed9fcbe116 drag and drop init 2026-02-10 01:55:49 -08:00
9f0234e00e fix play now 2026-02-10 01:48:02 -08:00
c8220eec02 fix play track in queue 2026-02-10 01:35:42 -08:00
99e6fd8eb4 fix shuffle 2026-02-10 01:28:36 -08:00
57320232a6 fix some ui 2026-02-10 01:17:38 -08:00
892f43381b fix stupid slider 2026-02-10 00:58:40 -08:00
bfae55afa3 fix 2026-02-10 00:30:38 -08:00
c8de948e7f WIP: global player pt. 6 fix playback finally 2026-02-10 00:22:52 -08:00
cfd45b6815 WIP: global player pt. 5 svelte bindings 2026-02-10 00:09:41 -08:00
4fb1d7865f WIP: global player pt. 4 fixed mobile 2026-02-10 00:01:32 -08:00
a4cf9356a8 WIP: global player pt. 3 monstrosity 2026-02-09 23:55:19 -08:00
f9fe6a2d11 WIP: global player refactor pt. 2 2026-02-09 23:42:08 -08:00
aea41df214 WIP: global player refactor pt. 1 2026-02-09 23:19:17 -08:00
9126e34f38 additional shadcn components 2026-02-09 22:30:48 -08:00
4e680c6697 ui: refactor chips into ChipGroup component 2026-02-09 21:51:10 -08:00
28d6231f21 ui: add styles for chip component on songs page 2026-02-09 21:28:39 -08:00
a9008627a1 ui: refactor some shadcn styles into utiltiy classes 2026-02-09 21:04:59 -08:00
72ee0260d9 refactor song type schema on search page 2026-02-09 20:52:49 -08:00
2bf5aeb1c0 db: change anime category number type to number 2026-02-09 18:53:42 -08:00
7b8ccb0e83 refactor ClientOnly component to simplify a bit 2026-02-09 18:42:14 -08:00
6f36ec0c62 patch runed/use-search-params to work with SSR 2026-02-07 20:45:01 -08:00
8e05915031 add .env.example, update gitignore 2026-02-07 20:23:16 -08:00
fa35340861 add global percent to song entry component 2026-02-06 12:18:29 -08:00
0d48cea726 songs page add query limit option 2026-02-06 12:08:37 -08:00
a33d495acd fix nonexistent filenames for song entry component 2026-02-06 12:08:14 -08:00
8cb04e0295 song type schema stuff 2026-02-06 11:37:39 -08:00
f63841e69f songs add single song type to filters 2026-02-06 11:17:06 -08:00
f3371e386a refactor songs page to use shadcn 2026-02-06 11:01:48 -08:00
70d53b2d83 stop truncating anime names in player 2026-02-06 10:49:17 -08:00