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

+14
View File
@@ -32,3 +32,17 @@ export { default as personIcon } from '@material-symbols/svg-400/rounded/person.
export { default as refreshIcon } from '@material-symbols/svg-400/rounded/refresh.svg';
export { default as storageIcon } from '@material-symbols/svg-400/rounded/hard_drive.svg';
export { default as storageFillIcon } from '@material-symbols/svg-400/rounded/hard_drive-fill.svg';
export { default as pauseIcon } from '@material-symbols/svg-400/rounded/pause-fill.svg';
export { default as nextIcon } from '@material-symbols/svg-400/rounded/skip_next-fill.svg';
export { default as prevIcon } from '@material-symbols/svg-400/rounded/skip_previous-fill.svg';
export { default as likeIcon } from '@material-symbols/svg-400/rounded/favorite.svg';
export { default as likeFillIcon } from '@material-symbols/svg-400/rounded/favorite-fill.svg';
export { default as dislikeIcon } from '@material-symbols/svg-400/rounded/heart_broken.svg';
export { default as dislikeFillIcon } from '@material-symbols/svg-400/rounded/heart_broken-fill.svg';
export { default as volumeIcon } from '@material-symbols/svg-400/rounded/volume_up.svg';
export { default as volumeOffIcon } from '@material-symbols/svg-400/rounded/volume_off.svg';
export { default as shuffleIcon } from '@material-symbols/svg-400/rounded/shuffle.svg';
export { default as repeatIcon } from '@material-symbols/svg-400/rounded/repeat.svg';
export { default as repeatOneIcon } from '@material-symbols/svg-400/rounded/repeat_one.svg';
export { default as historyIcon } from '@material-symbols/svg-400/rounded/history.svg';
export { default as historyFillIcon } from '@material-symbols/svg-400/rounded/history-fill.svg';