Commit Graph
73 Commits
Author SHA1 Message Date
Admin c8bc26a5e0 fix(web): guard authenticated routes instead of asserting the session user
library, playlists and playlists/[id] read locals.user!.sub with no
check, so an anonymous request threw a TypeError and returned 500
instead of redirecting to login. Adds requireUser(), which redirects to
/login?returnTo=... and returns a non-null SessionUser, and drops the
five non-null assertions.

/upload had no load at all: the page rendered for anonymous users and
only failed on submit. It now redirects up front.
2026-07-20 07:28:04 +02:00
Admin 74b8a1d351 chore(web): remove unused adapter-auto dependency
The project builds with adapter-node; adapter-auto was left over from
the SvelteKit template.
2026-07-20 07:27:57 +02:00
Admin c3b32ad40c feat(deploy): add production stack for the VPS
Compose file for ikerdemo.cat with nginx as TLS terminator, the three
.NET services, Zitadel and the storage stack. Values come from
deploy/.env.prod (untracked). Adds the frontend image, the migration
script and the Zitadel provisioning for production.
2026-07-20 07:27:51 +02:00
Admin 99c4bb8408 Changes 2026-07-18 23:29:57 +02:00
Admin 72f42369a0 A lot of changes 2026-07-17 18:56:23 +02:00
Admin 673689278d A lot of changes 2026-07-17 18:56:19 +02:00
Admin eeec891870 fix(frontend): remove context menu borders and add icon to the playlist row
Dropped the border from both menu panels (shadow alone separates them from the page), and gave 'Añadir a una playlist' a leading ListMusic icon so it matches the icon+text layout of 'Añadir a la cola'.
2026-07-16 22:48:48 +02:00
Admin 05ed7aec2e fix(frontend): stop clipping the add-to-playlist submenu
The redesign added overflow-hidden to the outer menu panel to round its corners, but the playlist submenu is absolutely positioned outside that panel's box (left-full/right-full), so it got clipped invisible. Restored the previous approach: rows get their own rounded-lg inside a padded (not overflow-hidden) panel.
2026-07-16 22:47:14 +02:00
Admin 7be5d22cb7 fix(frontend): restyle the track context menu to match the app's design tokens
Replaced the ad-hoc neutral-900/white-10 Tailwind palette with the same --mf-elevated/--mf-border/--mf-text-2 tokens and rounded-xl/shadow recipe the sidebar's own dropdown already uses, so the menu no longer looks foreign to the rest of the app.
2026-07-16 22:44:51 +02:00
Admin 7532511e1f fix(frontend): make add-to-queue insert the track to play next
It previously appended to the end of the queue; 'Añadir a la cola' is expected to mean the track plays right after the current one, so it now splices in right after the currently playing track's index.
2026-07-16 22:44:51 +02:00
Admin 63f7253714 feat(frontend): add queue option and enlarge first-level context menu text
The right-click menu now has a plain 'Añadir a la cola' item (appends the track to player.tracks via the new player.addToQueue) alongside the existing playlist submenu, and its first-level text is text-base to match the rest of the menu.
2026-07-16 19:19:08 +02:00
Admin 631941f690 fix(frontend): enlarge playlist submenu text, thumbnail and padding 2026-07-16 17:40:34 +02:00
Admin b4894f8169 fix(frontend): close the diagonal hover gap in the playlist submenu
The submenu was positioned with a margin gap after the trigger row, so moving the mouse toward it crossed a dead zone with no hovered element and the CSS :hover state dropped, hiding the submenu before the cursor reached it. The gap is now padding on the submenu's own wrapper, which keeps it part of the hoverable box and bridges the trigger to the submenu seamlessly.
2026-07-16 17:38:43 +02:00
Admin da96c8a112 fix(frontend): extend add-to-playlist context menu to local Musify tracks
Right-clicking a local track in the Musify section now opens the same nested add-to-playlist menu as YouTube results. Also switched the playlist thumbnail corners to rounded-lg.
2026-07-16 17:36:36 +02:00
Admin 62d30c2729 feat(frontend): add server action to attach local tracks to a playlist from explore 2026-07-16 17:36:36 +02:00
Admin 19f497c2d8 fix(frontend): nested add-to-playlist submenu with playlist thumbnails
The right-click menu now shows a single 'Añadir a una playlist' item; hovering it reveals a submenu listing every playlist with a small cover thumbnail next to its name, instead of dumping the whole playlist list into the first-level menu.
2026-07-16 17:33:38 +02:00
Admin 960565a968 fix(frontend): explore search polish
- Rename the local results heading from 'Mi música' to 'Musify'.
- Replace the per-card add-to-playlist icon on YouTube results with a right-click context menu listing all playlists.
- Stop the search box from clearing what the user is typing when a debounced navigation resolves after they've kept typing, by decoupling the input's value from the server-driven query prop.
2026-07-16 17:29:46 +02:00
Admin 82152beb93 fix(frontend): wire hardware media-key next/previous track buttons
The player never registered Media Session action handlers, so the OS/keyboard next-track and previous-track keys had nothing to call — only play/pause worked via the browser's built-in audio-element heuristic. Now previoustrack/nexttrack are wired to the player, and metadata/playback state are kept in sync for the lock-screen/OS media widget.
2026-07-16 17:20:49 +02:00
Admin 03b1166307 chore(frontend): show 27 local tracks per page in explore 2026-07-16 17:20:48 +02:00
Admin 53a3e80c05 fix(frontend): stop duplicating YouTube tracks in recently played after download
The queue/history identity for a song originating on YouTube now always uses its videoId, instead of switching to the local track id once it finishes downloading. Previously that switch made the same song produce two separate entries when merging session and server listening history.
2026-07-16 17:00:35 +02:00
Admin 8684067235 feat(frontend): hide empty local/YouTube sections when searching in explore 2026-07-16 17:00:27 +02:00
Admin 76ff77da7f feat(frontend): search local and YouTube Music together without filter tabs 2026-07-16 06:23:21 +02:00
Admin 6b69998865 feat: show explicit badge on YouTube Music results 2026-07-16 06:15:09 +02:00
Admin 8d19272f35 feat(frontend): unified explore search across local and YouTube Music
Explore now has Todo/Mi musica/YouTube Music filters (searching both by default), YouTube results share the local grid card style, and cards show the artist instead of the upload date.
2026-07-16 06:02:57 +02:00
Admin 74dd1e8374 feat(frontend): show YouTube tracks in recently played with their thumbnails 2026-07-16 01:15:50 +02:00
Admin a6f976a065 fix(frontend): show real cover art in the player for YouTube tracks 2026-07-16 01:06:20 +02:00
Admin 560a943bab feat(frontend): YouTube Music search, playback and playlist saving 2026-07-16 01:06:20 +02:00
Admin 49b7d54e58 style(frontend): full-width track rows with duration and listens on library page
Rows now span the full page width and show track duration plus
listens count, matching the columns already used elsewhere in the
app. Also trims the trailing bottom padding to match other pages.
2026-07-15 16:18:57 +02:00
Admin 17ce437571 style(frontend): even out page-bottom spacing and header sizing
Home and explore had an oversized trailing bottom padding compared to
the rest of the app; brought both down to match. Also matches "Mis
listas" grid/limit on home to "Novedades", and sizes the library page
header the same as the playlists page header.
2026-07-15 16:10:11 +02:00
Admin 3bbbd52d43 feat(frontend): redesign playlist pages with cover image support
Create and edit playlist modals now upload/preview a cover image
(reusing the presigned-upload flow already used for tracks) and share
identical layout and coloring. Adds a cover proxy route and wires
PlaylistArt to render a playlist's real cover before falling back to
the track mosaic/gradient.

Also reworks the playlist detail page: full-width borderless "Añadir
de tu biblioteca" table with listens count and click-to-play, drops
the empty-playlist placeholder message, and restyles the playlists
grid to match the rest of the app.
2026-07-15 16:10:04 +02:00
Admin b0e4ec650a feat(frontend): hide playlists if the user doesn't have any 2026-07-14 19:24:41 +02:00
Admin 84ffb1eef6 Changes 2026-07-14 19:11:58 +02:00
Admin 126f767dca fix(frontend): change max recent tracks 2026-07-14 18:51:42 +02:00
Admin 9e0c164e17 feat(frontend): persistent player volume 2026-07-14 18:48:57 +02:00
Admin e31419b8c8 style(frontend): drop card background on explore results, match home track style 2026-07-14 14:30:19 +02:00
Admin fe874b3608 style(frontend): make explore search bar span full width 2026-07-14 14:28:54 +02:00
Admin 9067e59f6f feat(frontend): search tracks live as you type on explore page 2026-07-14 14:27:38 +02:00
Admin e68bf36481 style(frontend): restore original card sizes and stretch all home grids full width 2026-07-14 14:24:28 +02:00
Admin e7fe2dd888 style(frontend): let recently-played cards fill the full page width 2026-07-14 14:22:55 +02:00
Admin 04ae571eee style(frontend): enlarge recently-played section on home page 2026-07-14 14:20:51 +02:00
Admin befd392971 fix(frontend): give duration and remove-track their own grid columns 2026-07-14 14:11:36 +02:00
Admin 32f3cbe5cf style(frontend): move remove-track button to the far right of the row 2026-07-14 14:08:45 +02:00
Admin 19a4299b71 fix(frontend): contain NowPlaying indicator inside playlist play button 2026-07-14 14:06:48 +02:00
Admin 87cdba6343 style(frontend): polish playlist page header, back link and action buttons 2026-07-14 14:04:31 +02:00
Admin 7d2681aaf6 feat(frontend): show track duration in a Spotify-style table on playlist page 2026-07-14 14:00:23 +02:00
Admin c9e083b1c3 chore(frontend): allow dev server to fall back to a free port 2026-07-14 13:26:11 +02:00
Admin 46a6a9757a feat(frontend): show recently played from listening history on home 2026-07-14 13:26:08 +02:00
Admin 937ad139e5 fix(frontend): apply display font to page titles missing it 2026-07-14 13:23:56 +02:00
Admin f10b0b800b refactor(frontend): drop downloads/import nav, promote library above upload 2026-07-14 13:23:51 +02:00
Admin 5bb6a4a1bf feat(frontend): drive seek bar with rAF for smooth playback progress 2026-07-14 13:23:44 +02:00