feat(core,web): player queue, play events and web player controller (M3, wip)
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m6s
ci / ts / ts (packages + web) (push) Successful in 1m5s

- core: PlayQueue with shuffle and repeat, PlayAttempt counting only
  time actually played, EventBuffer with batching and backoff, uuidv7
- web: Player over HTMLAudioElement with Media Session, preload of the
  next track, expired-link refresh, local and server playback state,
  hotkeys; PlayerProvider is not wired into the shell yet
- ru/en strings and icons for the player and Collection

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-20 07:28:20 +03:00
1 parent c05e523cbe
commit ec3c2810c8
10 files changed
+1025 -4

No files matched your search

+40 -2
View File
@@ -25,7 +25,11 @@
"users": "Users",
"audit": "Audit log",
"library": "Library",
"sources": "Storage"
"sources": "Storage",
"collection": "Collection",
"history": "History",
"likes": "Likes",
"dislikes": "Dislikes"
},
"profile": {
"menu": "Profile menu",
@@ -43,7 +47,26 @@
"wave_soon": "An endless stream tuned to your taste will appear once the server has a library."
},
"player": {
"empty": "Nothing is playing"
"empty": "Nothing is playing",
"label": "Player",
"play": "Play",
"pause": "Pause",
"next": "Next",
"prev": "Previous",
"like": "Like",
"unlike": "Remove from likes",
"dislike": "Dislike",
"undislike": "Remove dislike",
"volume": "Volume",
"mute": "Mute",
"unmute": "Unmute",
"shuffle": "Shuffle",
"repeat_off": "Repeat off",
"repeat_all": "Repeat queue",
"repeat_one": "Repeat track",
"progress": "Position",
"unavailable": "Track is unavailable — skipping",
"error": "Could not play the track"
},
"settings": {
"title": "Settings",
@@ -117,5 +140,20 @@
"back_home": "Back home",
"artist": "Artist",
"album": "Album"
},
"collection": {
"title": "Collection",
"history": "History",
"likes": "Likes",
"dislikes": "Dislikes",
"clear_history": "Clear history",
"clear_confirm": "Clear your listening history? Recommendations will still take it into account.",
"today": "Today",
"yesterday": "Yesterday",
"empty_history": "What you listen to will show up here",
"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"
}
}