Commit Graph
412 Commits
Author SHA1 Message Date
Admin 2bd5ef729e feat(backend): YouTube Music search and playback resolution endpoints 2026-07-16 01:05:42 +02:00
Admin 87997d90a4 feat(backend): add source, external id and artist to tracks 2026-07-16 01:05:28 +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 a59ce99051 style(backend): formatting pass on GetListeningHistory 2026-07-15 16:15:37 +02:00
Admin e5614178c8 fix(backend): stop loading a user's entire listening history into memory
GetListeningHistory used AsEnumerable() before DistinctBy/Take, which
forced EF Core to materialize every history row for the user just to
keep the last 15 distinct tracks. Now groups by track and takes the
15 most recently played track ids in SQL, then fetches only those.
2026-07-15 16:12:26 +02:00
Admin 5614033294 chore(deploy): add pgAdmin to the dev stack
Runs alongside Postgres in the unified compose file at
http://localhost:5050, config via PGADMIN_* env vars.
2026-07-15 16:10:18 +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 a1f7756fc9 fix(backend): compute track listens count via SQL instead of an unloaded navigation
TrackApplicationResponse.FromEntity counted track.ListeningHistories,
but none of the queries that built a response ever Included it, so
the collection was always empty and listensCount was always 0. Each
query now projects the count as a correlated subquery before mapping
to the response.
2026-07-15 16:09:54 +02:00
Admin 461bae1b01 feat(backend): add playlist cover endpoint and relax description validation
Adds GET /playlists/{id}/cover (mirrors the track cover endpoint) so
uploaded playlist pictures can actually be served. Also drops the
NotEmpty rule on playlist description, which rejected the blank
description the frontend treats as optional; CreatePlayList now falls
back to the domain's default text instead.
2026-07-15 16:09:40 +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 2e866075a2 feat(backend): expose track duration and listen count in track response 2026-07-14 13:54:12 +02:00
Admin afac7d5dd5 refactor(backend): rename AudioTranscoderConfiguration/Service to AudioConfiguration/AudioService 2026-07-14 13:54:08 +02:00
Admin f6ac22af32 refactor(backend): return AudioTranscodeResult with status code and duration 2026-07-14 13:49:28 +02:00
Admin 8a637d71f0 feat(backend): add migration for Track.Duration column 2026-07-14 13:48:05 +02:00
Admin 209c02ded7 feat(backend): extract audio duration during transcoding and persist to track 2026-07-14 13:47:52 +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 78caf588be fix(backend): order listening history by recency and cap to 15 tracks 2026-07-14 13:26:04 +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
Admin e9e0b9ae9b docs: add project README and frontend pages notes 2026-07-14 04:55:44 +02:00
Admin a826c39003 refactor(frontend): tidy Navbar, Footer and document shell
Align Navbar and Footer with the new design tokens and enable stable scrollbar gutter on the document.
2026-07-14 04:55:44 +02:00
Admin 4f9ae51971 chore(frontend): add font/icon deps and dev config
Add @fontsource-variable (manrope/sora/inter), @lucide/svelte and @types/node, mark @lucide/svelte as noExternal for SSR, and add the dev-server launch config.
2026-07-14 04:55:39 +02:00
Admin 2eaca66ec2 feat(frontend): rework home page with recent, latest and playlists
Add SSR data loading for the home page and rebuild its layout (greeting hero, recently played, new releases, user playlists).
2026-07-14 04:55:12 +02:00
Admin f155ccc912 feat(frontend): add (app) route group and rework auth routing
Move authenticated pages under an (app) group with a Sidebar shell, add /auth/login and page-based /login, drop the old explore page and login +server endpoint, and add the server upload helper.
2026-07-14 04:55:04 +02:00
Admin 6cc41d1d6f feat(frontend): rework audio player and shared UI components
Expand the player store, split player controls (transport, seek, volume, track info), add Cover/PlaylistArt/NowPlaying UI primitives and a cover image proxy route.
2026-07-14 04:54:51 +02:00
Admin 8c87d84f80 feat(frontend): add theme tokens and dynamic accent palette
Introduce theme.css design tokens, color/palette helpers, and global layout styles (scrollbars, animations, home gradient).
2026-07-14 04:54:45 +02:00
Admin 0b72363c33 feat(tracks): add track cover endpoint
Serve cover images via GET /tracks/{id}/cover with a size parameter, streamed from storage with long-lived immutable cache headers.
2026-07-14 04:54:40 +02:00
Admin a40f3da247 feat(tracks): add user listening history
Record a listening-history entry when a stream ticket is issued and expose GET /users/{id}/listening-history to read it back.
2026-07-14 04:54:35 +02:00
Admin 18d3aea853 feat(frontend): play tracks from the explore page 2026-07-06 02:40:44 +02:00
Admin 9b34f2db84 feat(frontend): music player component with separated controls and stream proxy 2026-07-06 02:40:44 +02:00
Admin 812913156b refactor(application): drop redundant default values on query records 2026-07-06 02:23:35 +02:00
Admin 927f965023 fix(playlists): reject empty/whitespace name and description on update 2026-07-06 02:20:47 +02:00
Admin 7623b4e80e refactor(search): treat empty search strings as no filter (string.IsNullOrEmpty) 2026-07-06 02:12:58 +02:00