feat(mini-player): custom titlebar with action icons; cover/meta/controls layout polish

- Drop the native titlebar on Windows + Linux (decorations: false in
  open_mini_player); macOS keeps the system titlebar with traffic lights.
- Add a slim 26 px custom titlebar with drag region, current track
  title, and the queue / pin / open-main / close action icons.
- Remove the bottom toolbar — those four buttons now live in the
  titlebar where they're easier to reach.
- Refresh the player layout: cover shrinks 112 → 84 px, the right
  column gets title / artist / transport in a single 84 px-tall block,
  progress bar spans the full width below.
- Add a miniPlayer i18n namespace (showQueue, hideQueue, pinOnTop,
  pinOff, openMainWindow, close, emptyQueue) localized for all 8
  supported locales — previously the tooltips were hard-coded English.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-04-19 13:28:28 +02:00
parent d8244e0139
commit 16491f6321
11 changed files with 248 additions and 86 deletions
+9
View File
@@ -913,6 +913,15 @@ export const deTranslation = {
sourceHot: 'Wiedergabe aus dem Cache',
sourceStream: 'Wiedergabe aus dem Netzwerkstream',
},
miniPlayer: {
showQueue: 'Warteschlange einblenden',
hideQueue: 'Warteschlange ausblenden',
pinOnTop: 'Im Vordergrund halten',
pinOff: 'Vordergrund deaktivieren',
openMainWindow: 'Hauptfenster öffnen',
close: 'Schließen',
emptyQueue: 'Die Warteschlange ist leer',
},
statistics: {
title: 'Statistiken',
recentlyPlayed: 'Zuletzt gehört',
+9
View File
@@ -915,6 +915,15 @@ export const enTranslation = {
sourceHot: 'Playing from cache',
sourceStream: 'Playing from network stream',
},
miniPlayer: {
showQueue: 'Show queue',
hideQueue: 'Hide queue',
pinOnTop: 'Pin on top',
pinOff: 'Unpin',
openMainWindow: 'Open main window',
close: 'Close',
emptyQueue: 'Queue is empty',
},
statistics: {
title: 'Statistics',
recentlyPlayed: 'Recently Played',
+9
View File
@@ -906,6 +906,15 @@ export const esTranslation = {
sourceHot: 'Reproducción desde la caché',
sourceStream: 'Reproducción desde la transmisión en red',
},
miniPlayer: {
showQueue: 'Mostrar cola',
hideQueue: 'Ocultar cola',
pinOnTop: 'Mantener encima',
pinOff: 'Desfijar',
openMainWindow: 'Abrir ventana principal',
close: 'Cerrar',
emptyQueue: 'La cola está vacía',
},
statistics: {
title: 'Estadísticas',
recentlyPlayed: 'Reproducidos Recientemente',
+9
View File
@@ -901,6 +901,15 @@ export const frTranslation = {
sourceHot: 'Lecture depuis le cache',
sourceStream: 'Lecture depuis le flux réseau',
},
miniPlayer: {
showQueue: 'Afficher la file',
hideQueue: 'Masquer la file',
pinOnTop: 'Toujours visible',
pinOff: 'Désépingler',
openMainWindow: 'Ouvrir la fenêtre principale',
close: 'Fermer',
emptyQueue: 'La file est vide',
},
statistics: {
title: 'Statistiques',
recentlyPlayed: 'Écoutés récemment',
+9
View File
@@ -900,6 +900,15 @@ export const nbTranslation = {
sourceHot: 'Spiller fra cache',
sourceStream: 'Spiller fra nettverksstrøm',
},
miniPlayer: {
showQueue: 'Vis kø',
hideQueue: 'Skjul kø',
pinOnTop: 'Hold øverst',
pinOff: 'Løsne',
openMainWindow: 'Åpne hovedvindu',
close: 'Lukk',
emptyQueue: 'Køen er tom',
},
statistics: {
title: 'Statistikk',
recentlyPlayed: 'Nylig spilt',
+9
View File
@@ -900,6 +900,15 @@ export const nlTranslation = {
sourceHot: 'Afspelen vanuit cache',
sourceStream: 'Afspelen vanuit netwerkstream',
},
miniPlayer: {
showQueue: 'Wachtrij tonen',
hideQueue: 'Wachtrij verbergen',
pinOnTop: 'Altijd boven',
pinOff: 'Losmaken',
openMainWindow: 'Hoofdvenster openen',
close: 'Sluiten',
emptyQueue: 'Wachtrij is leeg',
},
statistics: {
title: 'Statistieken',
recentlyPlayed: 'Recent afgespeeld',
+9
View File
@@ -953,6 +953,15 @@ export const ruTranslation = {
sourceHot: 'Играет из кэша',
sourceStream: 'Играет из сетевого потока',
},
miniPlayer: {
showQueue: 'Показать очередь',
hideQueue: 'Скрыть очередь',
pinOnTop: 'Поверх окон',
pinOff: 'Открепить',
openMainWindow: 'Открыть главное окно',
close: 'Закрыть',
emptyQueue: 'Очередь пуста',
},
statistics: {
title: 'Статистика',
recentlyPlayed: 'Недавно проиграно',
+9
View File
@@ -896,6 +896,15 @@ export const zhTranslation = {
sourceHot: '正在从缓存播放',
sourceStream: '正在从网络流播放',
},
miniPlayer: {
showQueue: '显示队列',
hideQueue: '隐藏队列',
pinOnTop: '置顶',
pinOff: '取消置顶',
openMainWindow: '打开主窗口',
close: '关闭',
emptyQueue: '队列为空',
},
statistics: {
title: '统计',
recentlyPlayed: '最近播放',