feat(core,web): player queue, play events and web player controller (M3, wip)
- 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:
1 parent
c05e523cbe
commit
ec3c2810c8
10 files changed
+1025
-4
No files matched your search
@@ -25,7 +25,11 @@
|
||||
"users": "Пользователи",
|
||||
"audit": "Журнал",
|
||||
"library": "Библиотека",
|
||||
"sources": "Хранилища"
|
||||
"sources": "Хранилища",
|
||||
"collection": "Коллекция",
|
||||
"history": "История",
|
||||
"likes": "Лайки",
|
||||
"dislikes": "Дизлайки"
|
||||
},
|
||||
"profile": {
|
||||
"menu": "Меню профиля",
|
||||
@@ -43,7 +47,26 @@
|
||||
"wave_soon": "Бесконечная лента под ваш вкус появится, когда сервер подключит библиотеку."
|
||||
},
|
||||
"player": {
|
||||
"empty": "Ничего не играет"
|
||||
"empty": "Ничего не играет",
|
||||
"label": "Плеер",
|
||||
"play": "Слушать",
|
||||
"pause": "Пауза",
|
||||
"next": "Следующий",
|
||||
"prev": "Предыдущий",
|
||||
"like": "Нравится",
|
||||
"unlike": "Убрать из лайков",
|
||||
"dislike": "Не нравится",
|
||||
"undislike": "Убрать дизлайк",
|
||||
"volume": "Громкость",
|
||||
"mute": "Выключить звук",
|
||||
"unmute": "Включить звук",
|
||||
"shuffle": "Перемешать",
|
||||
"repeat_off": "Повтор выключен",
|
||||
"repeat_all": "Повторять очередь",
|
||||
"repeat_one": "Повторять трек",
|
||||
"progress": "Позиция",
|
||||
"unavailable": "Трек недоступен — пропускаем",
|
||||
"error": "Не удалось воспроизвести трек"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Настройки",
|
||||
@@ -117,5 +140,20 @@
|
||||
"back_home": "На главную",
|
||||
"artist": "Исполнитель",
|
||||
"album": "Альбом"
|
||||
},
|
||||
"collection": {
|
||||
"title": "Коллекция",
|
||||
"history": "История",
|
||||
"likes": "Лайки",
|
||||
"dislikes": "Дизлайки",
|
||||
"clear_history": "Очистить историю",
|
||||
"clear_confirm": "Очистить историю прослушиваний? Рекомендации её всё равно учтут.",
|
||||
"today": "Сегодня",
|
||||
"yesterday": "Вчера",
|
||||
"empty_history": "Здесь появится то, что вы слушали",
|
||||
"empty_likes": "Отмечайте треки сердечком — они соберутся здесь",
|
||||
"empty_dislikes": "Треки с дизлайком не попадут в волну. Пока таких нет",
|
||||
"play_all": "Слушать всё",
|
||||
"more": "Показать ещё"
|
||||
}
|
||||
}
|
||||
@@ -61,5 +61,10 @@
|
||||
},
|
||||
"search": {
|
||||
"unavailable": "Поиск временно недоступен"
|
||||
},
|
||||
"playback": {
|
||||
"link_invalid": "Ссылка устарела — обновите страницу",
|
||||
"track_unavailable": "Трек недоступен",
|
||||
"transcode_failed": "Не удалось подготовить трек"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user