feat(web): align the web UI with the design prototype
ci / api / api (push) Successful in 43s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 52s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m36s
ci / ts / ts (packages + web) (push) Successful in 1m39s

- Ambient background in the app shell: three drifting blurred blobs,
  the third one tinted with the current track's cover; can be turned off
  in settings and stays still with reduced motion.
- Island player variant (floating glass panel) next to the bar, chosen
  in settings; player source line ("Album · …", "My Wave"), reactions
  around the transport controls, queue drawer.
- Sidebar: like / dislike counters, pending uploads badge on Queue,
  admin Settings page holding the upload queue limits.
- Collection: header tile with kicker, underline tabs, time / number
  lead column with an equalizer for the current track, album column,
  dimmed dislikes with undo, Play all / Shuffle pills.
- Album: cover-tinted header and Play / Shuffle; artist: artist wave,
  Play and popular tracks (new GET /artists/{id}/top-tracks).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-20 18:13:24 +03:00
1 parent 3afed02f23
commit 1c4e209e86
29 files changed
+1381 -339

No files matched your search

+32 -5
View File
@@ -33,7 +33,8 @@
"uploads": "Uploads",
"suggest": "Suggest tracks",
"my_uploads": "My uploads",
"upload_queue": "Upload queue"
"upload_queue": "Queue",
"admin_settings": "Settings"
},
"profile": {
"menu": "Profile menu",
@@ -70,7 +71,17 @@
"repeat_one": "Repeat track",
"progress": "Position",
"unavailable": "Track is unavailable — skipping",
"error": "Could not play the track"
"error": "Could not play the track",
"source_album": "Album · {{label}}",
"source_artist": "Artist · {{label}}",
"source_search": "Search · {{label}}",
"source_history": "History",
"source_likes": "Likes",
"source_dislikes": "Dislikes",
"source_wave": "My Wave",
"source_queue": "Queue",
"queue": "Queue",
"source_wave_seed": "Artist wave · {{label}}"
},
"settings": {
"title": "Settings",
@@ -96,7 +107,13 @@
"logout_all": "Sign out everywhere",
"wave_variant": "Wave style",
"wave_orb": "Orb",
"wave_liquid": "Liquid"
"wave_liquid": "Liquid",
"player_view": "Player style",
"player_bar": "Bar",
"player_island": "Island",
"ambient": "Ambient background",
"on": "On",
"off": "Off"
},
"form": {
"show_password": "Show password",
@@ -146,7 +163,10 @@
"col_duration": "Time",
"back_home": "Back home",
"artist": "Artist",
"album": "Album"
"album": "Album",
"play": "Play",
"artist_wave": "Artist wave",
"top_tracks": "Popular tracks"
},
"collection": {
"title": "Collection",
@@ -161,7 +181,14 @@
"empty_likes": "Tap the heart on tracks — they will gather here",
"empty_dislikes": "Disliked tracks stay out of the wave. None so far",
"play_all": "Play all",
"more": "Show more"
"more": "Show more",
"sub_history": "Everything you listened to, by day. Click a track to play it.",
"sub_likes_one": "{{count}} track · they shape My Wave the most",
"sub_likes_few": "{{count}} tracks · they shape My Wave the most",
"sub_likes_many": "{{count}} tracks · they shape My Wave the most",
"sub_likes_other": "{{count}} tracks · they shape My Wave the most",
"sub_dislikes": "These tracks never get into the wave or recommendations. Remove the dislike if you change your mind.",
"shuffle": "Shuffle"
},
"wave": {
"title": "My Wave",