Commit Graph
100 Commits
Author SHA1 Message Date
CaZzzer 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
CaZzzer 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
CaZzzer 3944cf6ff4 modify id to index map imperatively 2026-02-11 23:35:30 -08:00
CaZzzer 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
CaZzzer 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
CaZzzer 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
CaZzzer 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
CaZzzer 7e3a22f14b ui: queue: hide grab handle if hover available 2026-02-11 22:00:41 -08:00
CaZzzer 86827777f4 testing with pgrok config 2026-02-11 21:28:06 -08:00
CaZzzer 5e7534af35 ui: add placeholder artwork 2026-02-11 20:53:40 -08:00
CaZzzer 11a4239fdc even more layout fixes 2026-02-10 05:41:18 -08:00
CaZzzer cdd90016f8 add extra song information to player 2026-02-10 05:25:28 -08:00
CaZzzer 864a11fac4 stupid layout again 2026-02-10 04:46:16 -08:00
CaZzzer 48e5719813 ui: add tags for dub and rebroadcast 2026-02-10 04:26:10 -08:00
CaZzzer e0d6e5bc32 a few more layout optimizations 2026-02-10 04:13:48 -08:00
CaZzzer fc0f04f29c more layout fixes 2026-02-10 03:53:53 -08:00
CaZzzer 9e83b72139 remove artwork 2026-02-10 03:39:41 -08:00
CaZzzer f47f6e6cd8 actual layout improvements 2026-02-10 03:29:17 -08:00
CaZzzer 197b9267c4 drag and drop but nicer 2026-02-10 01:58:33 -08:00
CaZzzer ed9fcbe116 drag and drop init 2026-02-10 01:55:49 -08:00
CaZzzer 9f0234e00e fix play now 2026-02-10 01:48:02 -08:00
CaZzzer c8220eec02 fix play track in queue 2026-02-10 01:35:42 -08:00
CaZzzer 99e6fd8eb4 fix shuffle 2026-02-10 01:28:36 -08:00
CaZzzer 57320232a6 fix some ui 2026-02-10 01:17:38 -08:00
CaZzzer 892f43381b fix stupid slider 2026-02-10 00:58:40 -08:00
CaZzzer bfae55afa3 fix 2026-02-10 00:30:38 -08:00
CaZzzer c8de948e7f WIP: global player pt. 6 fix playback finally 2026-02-10 00:22:52 -08:00
CaZzzer cfd45b6815 WIP: global player pt. 5 svelte bindings 2026-02-10 00:09:41 -08:00
CaZzzer 4fb1d7865f WIP: global player pt. 4 fixed mobile 2026-02-10 00:01:32 -08:00
CaZzzer a4cf9356a8 WIP: global player pt. 3 monstrosity 2026-02-09 23:55:19 -08:00
CaZzzer f9fe6a2d11 WIP: global player refactor pt. 2 2026-02-09 23:42:08 -08:00
CaZzzer aea41df214 WIP: global player refactor pt. 1 2026-02-09 23:19:17 -08:00
CaZzzer 9126e34f38 additional shadcn components 2026-02-09 22:30:48 -08:00
CaZzzer 4e680c6697 ui: refactor chips into ChipGroup component 2026-02-09 21:51:10 -08:00
CaZzzer 28d6231f21 ui: add styles for chip component on songs page 2026-02-09 21:28:39 -08:00
CaZzzer a9008627a1 ui: refactor some shadcn styles into utiltiy classes 2026-02-09 21:04:59 -08:00
CaZzzer 72ee0260d9 refactor song type schema on search page 2026-02-09 20:52:49 -08:00
CaZzzer 2bf5aeb1c0 db: change anime category number type to number 2026-02-09 18:53:42 -08:00
CaZzzer 7b8ccb0e83 refactor ClientOnly component to simplify a bit 2026-02-09 18:42:14 -08:00
CaZzzer 6f36ec0c62 patch runed/use-search-params to work with SSR 2026-02-07 20:45:01 -08:00
CaZzzer 8e05915031 add .env.example, update gitignore 2026-02-07 20:23:16 -08:00
CaZzzer fa35340861 add global percent to song entry component 2026-02-06 12:18:29 -08:00
CaZzzer 0d48cea726 songs page add query limit option 2026-02-06 12:08:37 -08:00
CaZzzer a33d495acd fix nonexistent filenames for song entry component 2026-02-06 12:08:14 -08:00
CaZzzer 8cb04e0295 song type schema stuff 2026-02-06 11:37:39 -08:00
CaZzzer f63841e69f songs add single song type to filters 2026-02-06 11:17:06 -08:00
CaZzzer f3371e386a refactor songs page to use shadcn 2026-02-06 11:01:48 -08:00
CaZzzer 70d53b2d83 stop truncating anime names in player 2026-02-06 10:49:17 -08:00
CaZzzer 8a58706025 add songs link to nav 2026-02-06 10:47:41 -08:00
CaZzzer 006a03816a songs fix zod number stuff 2026-02-06 10:35:45 -08:00
CaZzzer 0faf98ee80 songs remove complicated params that don't work 2026-02-06 10:28:32 -08:00
CaZzzer 4b58d71b7c songs page refactor schema 2026-02-06 08:51:01 -08:00
CaZzzer 0531a1f5c0 songs page init 2026-02-06 08:37:48 -08:00
CaZzzer 323c7c7f77 db: add globalPercent to songs schema 2026-02-06 08:04:11 -08:00
CaZzzer 7eb4bc1bb1 finally fix player stuff 2026-02-06 07:52:17 -08:00
CaZzzer 138b11f73b improved song entry layout 2026-02-06 07:40:35 -08:00
CaZzzer 565429ecc6 fix metadata track title 2026-02-06 06:52:06 -08:00
CaZzzer 5a920de85d fixed initial track playback 2026-02-06 06:50:44 -08:00
CaZzzer 3401967d7c track switching fixed! (sorta!) 2026-02-06 06:44:57 -08:00
CaZzzer 42d8e8fa8d type number to track title 2026-02-06 06:44:45 -08:00
CaZzzer d5ed0e251c gemini will fix my track switching 2026-02-06 06:31:51 -08:00
CaZzzer a8302d3696 put anime name in song name for media session (dirty junk) 2026-02-06 06:19:42 -08:00
CaZzzer 3c0221fe37 make the queue a bit nicer 2026-02-06 05:43:28 -08:00
CaZzzer 692772cb14 drag drop pt. 4 grab handle 2026-02-06 05:34:40 -08:00
CaZzzer de711b8c40 drag drop pt. 3 2026-02-06 05:33:29 -08:00
CaZzzer c18f4e80b9 drag drop pt. 2 2026-02-06 05:30:50 -08:00
CaZzzer 03be6760cc drag drop 2026-02-06 05:23:07 -08:00
CaZzzer f8b5f12812 desktop player button layout stuff 2026-02-06 05:16:28 -08:00
CaZzzer 66312e99b5 up the list limit to 1000 2026-02-06 05:13:10 -08:00
CaZzzer 46783cb924 flesh out main page 2026-02-06 05:11:01 -08:00
CaZzzer 665eb31775 flesh out anime page 2026-02-06 05:02:05 -08:00
CaZzzer 82714100e4 big buttons 2026-02-06 04:53:34 -08:00
CaZzzer d0efb3549b player layout improvements 2026-02-06 04:47:39 -08:00
CaZzzer f4e3c6eb08 layout improvements 2026-02-06 04:31:38 -08:00
CaZzzer d5d3917974 shadcn alert to clear queue 2026-02-06 04:23:16 -08:00
CaZzzer 151f597b88 add shadcn alert dialog 2026-02-06 04:20:48 -08:00
CaZzzer 068616681e more player improvements 2026-02-06 04:15:47 -08:00
CaZzzer 2bb2ba2ea5 forgot to commit the portal 2026-02-06 04:15:34 -08:00
CaZzzer 6aac19870a navbar 2026-02-06 04:13:40 -08:00
CaZzzer 2839417ee9 finally synced 2026-02-06 04:09:58 -08:00
CaZzzer 291b8d5d21 player layout shenanigans 2026-02-06 04:04:10 -08:00
CaZzzer 3418d19a57 remove reduntand global player 2026-02-06 04:01:22 -08:00
CaZzzer b25110dfe3 player scrubber sync attempt 2026-02-06 03:58:09 -08:00
CaZzzer 4794d2fbb0 player scrubber 2026-02-06 03:54:42 -08:00
CaZzzer db670d1979 fix scroll player scroll again 2026-02-06 03:51:40 -08:00
CaZzzer c0d4f47d9c player use icons 2026-02-06 03:44:14 -08:00
CaZzzer 455699415f player breakpoint improvements 2026-02-06 03:36:52 -08:00
CaZzzer dab9d4f5f7 mobile player improvements 2026-02-06 03:30:06 -08:00
CaZzzer 9c52e32895 browser message 2026-02-06 03:15:38 -08:00
CaZzzer 722c133811 song info better 2026-02-06 03:12:14 -08:00
CaZzzer c4d39c6f81 display all the other song info on global player 2026-02-06 02:39:45 -08:00
CaZzzer 36540aa5d5 gp sticky 2026-02-06 02:37:10 -08:00
CaZzzer 9a193399ea global player pt. 12 sidebar shenanigans 2026-02-06 02:29:57 -08:00
CaZzzer 2801ca7a9a global player pt. 11 fix hiding sidebar 2026-02-06 02:22:45 -08:00
CaZzzer c5c402a6b4 global player pt. 10 fix displaying shuffled queue 2026-02-06 02:17:38 -08:00
CaZzzer 28aed104f6 global player pt. 9 fix play track pt. 2 2026-02-06 02:15:11 -08:00
CaZzzer 0b1a7792b4 global player pt. 9 fix play track 2026-02-06 02:11:28 -08:00
CaZzzer cedec104a1 global player pt. 8 preload stuff 2026-02-06 02:09:37 -08:00
CaZzzer 5efe06e640 global player pt. 7 works kinda 2026-02-06 02:04:21 -08:00
CaZzzer e91ea1761f global player pt. 6 attempt to skip tracks 2026-02-06 01:59:59 -08:00