Admin
bd07b1134e
web-player: fix icon size guardrail and add larger icon tokens
2026-09-24 11:56:09 +02:00
Admin
c041daf649
web-player: add lint guardrails for imports, non-null assertions, unused props and icon sizes; refresh docs
2026-09-24 11:54:38 +02:00
Admin
975fa7e4fd
web-player: consistent imports, tokens, glossary and app route grouping
2026-09-24 11:52:57 +02:00
Admin
1a2ae37f49
web-player: show only real upload steps
2026-09-24 11:51:47 +02:00
Admin
1cad36b929
web-player: extract menu, paged list and play-all components from pages
2026-09-24 11:51:14 +02:00
Admin
8cb9386447
web-player: unify primitive link/button rendering, add onEscape action and self-contained AccountMenu
2026-09-24 05:27:25 +02:00
Admin
5cda7cb4c1
web-player: split player, navigation and accent state into focused modules
2026-09-24 05:25:35 +02:00
Admin
e89463fb83
web-player: use playlist totals from the API, cache genres and parallelize explore requests
2026-09-24 05:21:29 +02:00
Admin
b011ccdd5b
backend: expose track count and duration on playlist responses
2026-09-24 05:20:20 +02:00
Admin
1df7f6ccf6
web-player: share form limits between client and server and extract form parsers
2026-09-24 05:19:41 +02:00
Admin
2915737f03
web-player: centralize server helpers (apiFor, authedAction, form readers) and unify page sizes
2026-09-24 05:13:51 +02:00
Admin
5b2a0e4d46
web-player: normalize tracks, albums and playlists into single domain types at the server boundary
2026-09-24 05:09:37 +02:00
Admin
37fc229bf6
web-player: remove dead code and unused props
2026-09-24 05:04:09 +02:00
Admin
bc43b4b6eb
web-player: fix playlist ownership, sidebar counts, home spotlight and assorted page bugs
2026-09-24 05:02:26 +02:00
Admin
dda8c30d45
backend: expose owner user id on playlist responses
2026-09-24 04:59:50 +02:00
Admin
906f38140a
web-player: dedupe queue, stop at end of queue, open queue once and harden localStorage
2026-09-24 04:59:28 +02:00
Admin
3e546d4a1e
web-player: fix open redirect via returnTo, require SESSION_SECRET and validate API inputs
2026-09-24 04:58:08 +02:00
Admin
b2f450dcf7
web-player: add Vitest, unit tests and pure queue operations
2026-09-24 04:54:09 +02:00
NotS1mp
87c3f97529
Merge pull request 'Web player general changes' ( #22 ) from web-player-general-changes into master
...
CI/CD / BackEnd (push) Successful in 1m17s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Successful in 2m4s
Reviewed-on: #22
2026-09-23 22:37:30 +00:00
Admin
302dd1e0f8
Merge master into web-player-general-changes
CI/CD / BackEnd (push) Canceled after 0s
CI/CD / WebPlayer (push) Canceled after 0s
CI/CD / BackEnd (pull_request) Successful in 1m23s
CI/CD / WebPlayer (pull_request) Successful in 40s
CI/CD / Deploy (pull_request) Skipped
CI/CD / Deploy (push) Canceled after 0s
2026-09-24 00:32:03 +02:00
NotS1mp
421fc929e8
Merge pull request 'Dynamic genres' ( #20 ) from dynamic-genres into master
...
CI/CD / BackEnd (push) Successful in 1m23s
CI/CD / WebPlayer (push) Successful in 39s
CI/CD / Deploy (push) Successful in 1m38s
Reviewed-on: #20
2026-09-23 22:24:22 +00:00
NotS1mp
c4ab5dc388
Merge branch 'master' into dynamic-genres
CI/CD / BackEnd (push) Canceled after 0s
CI/CD / WebPlayer (push) Canceled after 0s
CI/CD / Deploy (push) Canceled after 0s
CI/CD / BackEnd (pull_request) Successful in 1m20s
CI/CD / WebPlayer (pull_request) Successful in 40s
CI/CD / Deploy (pull_request) Skipped
2026-09-23 22:15:22 +00:00
NotS1mp
920dcc6779
Merge pull request 'Listening time accuracy' ( #19 ) from listening-time-accuracy into master
...
CI/CD / BackEnd (push) Successful in 1m18s
CI/CD / WebPlayer (push) Successful in 39s
CI/CD / Deploy (push) Successful in 1m40s
Reviewed-on: #19
2026-09-23 22:15:10 +00:00
Admin
430c711ff2
Refactor CI/CD workflow to improve database migration process and key generation
CI/CD / BackEnd (push) Successful in 1m18s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
CI/CD / BackEnd (pull_request) Successful in 1m27s
CI/CD / WebPlayer (pull_request) Successful in 39s
CI/CD / Deploy (pull_request) Skipped
2026-09-23 23:59:45 +02:00
Admin
cfdc61a4b8
Scroll content inside the shell so the player shares the ambient backdrop
...
CI/CD / BackEnd (push) Successful in 1m17s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
The player dock used to sit fixed over the scrolling page, so it needed an
opaque background. The shell is now a fixed-height frame where only the
content column scrolls, letting the dock stay transparent like the sidebar
and queue. Scroll reset/restore on navigation moves to restoreScroll(), and
the stable scrollbar gutter moves from <html> to the content scroller.
2026-09-23 23:52:27 +02:00
Admin
0f28e19c1d
Remove follow button from user rows
CI/CD / BackEnd (push) Successful in 1m24s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
2026-09-23 23:20:27 +02:00
Admin
7316e355ee
Add a second greeting variant per time slot
2026-09-23 23:20:27 +02:00
Admin
b39e55fd87
Restore master hero and spotlight gradients and sway them in place
2026-09-23 23:15:15 +02:00
Admin
cb046bba9e
Let users browse followers and following lists
...
Following lists are public; followers are visible to the user and to mutual followers.
Adds GET /users/{id}/followers and /following, exposes isFollowing and canViewFollowers
on the profile, and returns isFollowedByViewer from user search so the web player no
longer calls /is-following per user.
2026-09-23 22:55:14 +02:00
Admin
b9a40186b1
Lighten active surface gradients in light mode
CI/CD / BackEnd (push) Successful in 1m15s
CI/CD / WebPlayer (push) Successful in 40s
CI/CD / Deploy (push) Skipped
2026-09-23 22:44:42 +02:00
Admin
fd0a39b879
IsExplicit
2026-09-23 22:42:28 +02:00
Admin
cc7afe4326
Add explicit flag to tracks and mark it on upload
2026-09-23 22:41:57 +02:00
Admin
72cbc18a48
Add follow button next to each user in search results
...
Extract FollowButton and shared follow/unfollow actions, reused by the user profile page.
2026-09-23 22:34:56 +02:00
Admin
84408b842b
Semibold
2026-09-23 22:25:04 +02:00
Admin
339fcb56ad
Semibold
2026-09-23 22:24:57 +02:00
Admin
74cf534be5
Animate queue drag and drop reordering
2026-09-23 22:18:21 +02:00
Admin
89820c1377
Fix gradient background syntax in Artwork component
2026-09-23 22:10:46 +02:00
Admin
2fe26b15dd
Allow reordering upcoming tracks in the queue by drag and drop
2026-09-23 22:10:21 +02:00
Admin
2cb560fda4
Keep light mode gradients visible while drifting
2026-09-23 22:07:50 +02:00
Admin
d8530b9209
Animate menu close with shared pop transition
2026-09-23 22:01:51 +02:00
Admin
5049b0ba91
Update global icon stroke width to 1.5 in layout.css
2026-09-23 21:59:24 +02:00
Admin
1b98a75c0e
Added shadow
2026-09-23 21:59:13 +02:00
Admin
cbbde95773
Set global icon stroke width and remove per-icon strokeWidth props
2026-09-23 21:55:00 +02:00
Admin
26bb8a50a3
Solid player bar, gradient sliders and smooth progress
2026-09-23 21:48:39 +02:00
Admin
bf19bb31f9
Make accent hue crossfade between songs last 2 to 4 seconds
2026-09-23 21:40:22 +02:00
Admin
55cc803708
Drift accent gradients on buttons, hero, spotlight, active rows and modals
2026-09-23 21:37:41 +02:00
Admin
805e521b1d
Animate ambient background, add mute toggle and smooth queue panel
2026-09-23 21:36:01 +02:00
Admin
f8d431a0d7
Implement volume control with mute functionality; update PlayerState to manage muted state
2026-09-23 21:28:17 +02:00
Admin
7b72db8a24
Add ambient drift animation to app backdrop; adjust inset and handle reduced motion
2026-09-23 21:28:07 +02:00
Admin
b61ff1ebec
Make Discover and upload genres dynamic
...
CI/CD / BackEnd (push) Successful in 1m22s
CI/CD / WebPlayer (push) Successful in 38s
CI/CD / Deploy (push) Skipped
CI/CD / BackEnd (pull_request) Successful in 1m21s
CI/CD / WebPlayer (pull_request) Successful in 40s
CI/CD / Deploy (pull_request) Skipped
Discover used a hardcoded list of genre tiles that searched track titles,
and the upload form kept its own copy of the genre list and compatibility
rules. Both now come from the backend.
Backend:
- GET /genres returns genres with at least one track and their counts.
- GET /genres/available returns every assignable genre with the genres
it cannot be combined with, so the rules live only in
GenreCompatibility.
- GET /tracks accepts ?genre= (case-insensitive, 400 on unknown values).
web-player:
- Discover tiles are built from /genres; each opens /explore?genre=X, a
song list filtered by that tag. Unknown genres fall back to a label
derived from their name.
- The upload form loads /genres/available, disables incompatible genres
as you pick, and the server validates before reserving upload URLs.
- lib/data/trackGenres.ts is removed; its helpers merge into
lib/data/genres.ts.
- Regenerate the typed API client.
2026-09-23 20:05:30 +02:00