Admin
e98798894e
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
b4b08aa3fd
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
a10426b3f1
feat(frontend): hide playlists if the user doesn't have any
2026-07-14 19:24:41 +02:00
Admin
f101ce69a0
Changes
2026-07-14 19:11:58 +02:00
Admin
cb7aa32567
fix(frontend): change max recent tracks
2026-07-14 18:51:42 +02:00
Admin
92aec73b9d
feat(frontend): persistent player volume
2026-07-14 18:48:57 +02:00
Admin
79119fe3fa
style(frontend): drop card background on explore results, match home track style
2026-07-14 14:30:19 +02:00
Admin
26f2c92bec
style(frontend): make explore search bar span full width
2026-07-14 14:28:54 +02:00
Admin
1e21c6dad9
feat(frontend): search tracks live as you type on explore page
2026-07-14 14:27:38 +02:00
Admin
2208453775
style(frontend): restore original card sizes and stretch all home grids full width
2026-07-14 14:24:28 +02:00
Admin
d05dc74f90
style(frontend): let recently-played cards fill the full page width
2026-07-14 14:22:55 +02:00
Admin
fc298ac1dd
style(frontend): enlarge recently-played section on home page
2026-07-14 14:20:51 +02:00
Admin
597fc7387a
fix(frontend): give duration and remove-track their own grid columns
2026-07-14 14:11:36 +02:00
Admin
054160d68b
style(frontend): move remove-track button to the far right of the row
2026-07-14 14:08:45 +02:00
Admin
815aca64bc
fix(frontend): contain NowPlaying indicator inside playlist play button
2026-07-14 14:06:48 +02:00
Admin
095088fb65
style(frontend): polish playlist page header, back link and action buttons
2026-07-14 14:04:31 +02:00
Admin
c4aea1f7a1
feat(frontend): show track duration in a Spotify-style table on playlist page
2026-07-14 14:00:23 +02:00
Admin
4ebcd69eeb
feat(backend): expose track duration and listen count in track response
2026-07-14 13:54:12 +02:00
Admin
877f2c42a4
refactor(backend): rename AudioTranscoderConfiguration/Service to AudioConfiguration/AudioService
2026-07-14 13:54:08 +02:00
Admin
7ac105f113
refactor(backend): return AudioTranscodeResult with status code and duration
2026-07-14 13:49:28 +02:00
Admin
71c0bfa418
feat(backend): add migration for Track.Duration column
2026-07-14 13:48:05 +02:00
Admin
1711012541
feat(backend): extract audio duration during transcoding and persist to track
2026-07-14 13:47:52 +02:00
Admin
d889aa63c5
chore(frontend): allow dev server to fall back to a free port
2026-07-14 13:26:11 +02:00
Admin
5905f56e84
feat(frontend): show recently played from listening history on home
2026-07-14 13:26:08 +02:00
Admin
5fe0f6ff32
fix(backend): order listening history by recency and cap to 15 tracks
2026-07-14 13:26:04 +02:00
Admin
2abca7f08d
fix(frontend): apply display font to page titles missing it
2026-07-14 13:23:56 +02:00
Admin
b372028e0a
refactor(frontend): drop downloads/import nav, promote library above upload
2026-07-14 13:23:51 +02:00
Admin
e4830ad73f
feat(frontend): drive seek bar with rAF for smooth playback progress
2026-07-14 13:23:44 +02:00
Admin
9b866cb5f1
docs: add project README and frontend pages notes
2026-07-14 04:55:44 +02:00
Admin
0f776078f3
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
dd41d23144
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
c544a6c78c
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
0b4e61b3ab
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
1f531ea70e
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
458c20335e
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
54484d9fd4
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
5c1edc0dc7
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
bbc115ca84
feat(frontend): play tracks from the explore page
2026-07-06 02:40:44 +02:00
Admin
c04d79beb0
feat(frontend): music player component with separated controls and stream proxy
2026-07-06 02:40:44 +02:00
Admin
e34347e450
refactor(application): drop redundant default values on query records
2026-07-06 02:23:35 +02:00
Admin
7aa5350484
fix(playlists): reject empty/whitespace name and description on update
2026-07-06 02:20:47 +02:00
Admin
1769df12d5
refactor(search): treat empty search strings as no filter (string.IsNullOrEmpty)
2026-07-06 02:12:58 +02:00
Admin
7f439b168b
feat(frontend): add /explore page with track listing and name search
2026-07-06 02:05:47 +02:00
Admin
5cca9a80dd
chore(frontend): regenerate api types with track name search
2026-07-06 02:04:04 +02:00
Admin
fabd26e42f
feat(tracks): support search by name in GetTracks
2026-07-06 02:04:01 +02:00
Admin
047d5da319
chore(frontend): generate backend API types from live OpenAPI spec
2026-07-06 01:54:28 +02:00
Admin
72a7d13f6d
feat(frontend): add typed backend API client (openapi-fetch) with codegen script
2026-07-06 01:52:25 +02:00
Admin
dadeac3571
refactor(frontend): require refresh/id token in Session, validate at callback boundary
2026-07-05 23:57:19 +02:00
Admin
757c74b899
refactor(frontend): restrict insecure HTTP issuer to dev / explicit opt-in
2026-07-05 23:56:35 +02:00
Admin
b9d14412e6
refactor(frontend): make SessionUser fields non-null and normalize claims at boundary
2026-07-05 23:45:18 +02:00