diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-24 19:46:06 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-24 19:46:06 +0200 |
| commit | 62253b9592a83ce152d0c64471e20514218fb132 (patch) | |
| tree | d41b84661da3252045937f5a90dc45ca7b029edc /packages/meshbay-hub/src/meshbay_hub/static/locales | |
| parent | d053d083627f1f9f010752f8ad67941e22d49f27 (diff) | |
| download | meshbay-62253b9592a83ce152d0c64471e20514218fb132.tar.gz | |
feat(hub): consolidate loose tracks, "&"/"and" fold, player close/queue
Album-grid readability, part two:
- groupMusicEntries (music-app.js): an album bucket left with exactly
one track - a real album tag, but only one song from it, not the
whole release - clutters the grid the same way an untagged loose
track does. Both kinds now fold into one "<artist> - Various" tile
per artist, unless there is only one leftover track overall, where
relabeling buys nothing and the track keeps its own name (or the
generic placeholder, if it never had one).
- foldKey also normalizes "&" vs "and" ("Artist & The Band" / "Artist
and The Band" is one act, tagged both ways across different rips of
the same catalogue) alongside the existing case/whitespace fold.
- music-player.js: a close button pauses and tears the player down;
an unmount cleanup effect (pause, revoke every cached blob URL)
fires either way, whether that's the close button or the shell
tearing the bar down on its own. A "current queue" button opens an
overlay listing the whole playing queue with the current track
highlighted, click any to jump to it - works identically regardless
of how the queue was built (an album, the consolidated misc bucket,
a single standalone track), since it only ever reads the player's
own live tracks/order/pos.
- group-page.js: this component is not remounted when switching to a
*different* group on the same /group/:id route (only the groupId
prop changes) - so without an explicit reset, music from one group
would carry into the next one opened. Resets musicQueue to null on
groupId change; a tab switch inside one group still leaves it alone.
- Scrubbed real artist/band names that had leaked into code comments
and test fixtures (enrich_audio.py's docstrings, several
test_enrich_audio.py assertions, a music-app.js comment) - replaced
with generic placeholders, no behavioural change.
- i18n: music.various, music.player_close, music.player_queue,
music.queue_title added across all ten locales.
Client-side only except none of this touches the node at all. npm run
sync-ui re-run. Full suite: 1129 passed, no regressions.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KBi7ALLGfwcjBXt57yNMcy
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales')
10 files changed, 40 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js index cb542a6..70d2b95 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js @@ -182,6 +182,7 @@ export default { 'music.mode_flat': 'Flache Liste', 'music.empty': 'Keine Musik gefunden.', 'music.unknown_album': 'Unbekanntes Album', + 'music.various': 'Verschiedenes', 'music.play_all': 'Alle abspielen', 'music.n_tracks': { one: '{n} Titel', @@ -197,6 +198,9 @@ export default { 'music.player_repeat_all': 'Alle wiederholen', 'music.player_repeat_one': 'Einzelnen wiederholen', 'music.player_volume': 'Lautstärke', + 'music.player_close': 'Player schließen', + 'music.player_queue': 'Aktuelle Wiedergabeliste', + 'music.queue_title': 'Wird wiedergegeben', // LAN-Cast 'cast.start': 'Auf Gerät übertragen', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js index e05b398..0ee0972 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js @@ -180,6 +180,7 @@ export default { 'music.mode_flat': 'Flat list', 'music.empty': 'No music found.', 'music.unknown_album': 'Unknown album', + 'music.various': 'Various', 'music.play_all': 'Play all', 'music.n_tracks': { one: '{n} track', @@ -195,6 +196,9 @@ export default { 'music.player_repeat_all': 'Repeat all', 'music.player_repeat_one': 'Repeat one', 'music.player_volume': 'Volume', + 'music.player_close': 'Close player', + 'music.player_queue': 'Current queue', + 'music.queue_title': 'Playing now', // LAN cast 'cast.start': 'Cast to device', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js index 113ae7a..69e2687 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/es.js @@ -180,6 +180,7 @@ export default { 'music.mode_flat': 'Lista plana', 'music.empty': 'No se encontró música.', 'music.unknown_album': 'Álbum desconocido', + 'music.various': 'Varios', 'music.play_all': 'Reproducir todo', 'music.n_tracks': { one: '{n} pista', @@ -195,6 +196,9 @@ export default { 'music.player_repeat_all': 'Repetir todo', 'music.player_repeat_one': 'Repetir una', 'music.player_volume': 'Volumen', + 'music.player_close': 'Cerrar reproductor', + 'music.player_queue': 'Cola actual', + 'music.queue_title': 'Reproduciendo ahora', // LAN cast 'cast.start': 'Enviar a dispositivo', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js index 6a57174..8d52d37 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/fr.js @@ -181,6 +181,7 @@ export default { 'music.mode_flat': 'Liste à plat', 'music.empty': 'Aucune musique trouvée.', 'music.unknown_album': 'Album inconnu', + 'music.various': 'Divers', 'music.play_all': 'Tout lire', 'music.n_tracks': { one: '{n} piste', @@ -196,6 +197,9 @@ export default { 'music.player_repeat_all': 'Tout répéter', 'music.player_repeat_one': 'Répéter le morceau', 'music.player_volume': 'Volume', + 'music.player_close': 'Fermer le lecteur', + 'music.player_queue': 'File en cours', + 'music.queue_title': 'En cours de lecture', // LAN cast 'cast.start': 'Diffuser sur un appareil', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js index 257318a..dfd4bbc 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/it.js @@ -181,6 +181,7 @@ export default { 'music.mode_flat': 'Elenco semplice', 'music.empty': 'Nessuna musica trovata.', 'music.unknown_album': 'Album sconosciuto', + 'music.various': 'Vari', 'music.play_all': 'Riproduci tutto', 'music.n_tracks': { one: '{n} traccia', @@ -196,6 +197,9 @@ export default { 'music.player_repeat_all': 'Ripeti tutto', 'music.player_repeat_one': 'Ripeti brano', 'music.player_volume': 'Volume', + 'music.player_close': 'Chiudi lettore', + 'music.player_queue': 'Coda attuale', + 'music.queue_title': 'In riproduzione', // LAN cast 'cast.start': 'Trasmetti al dispositivo', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js index 44f9037..10d2088 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js @@ -178,6 +178,7 @@ export default { 'music.mode_flat': 'フラットリスト', 'music.empty': '音楽が見つかりません。', 'music.unknown_album': '不明なアルバム', + 'music.various': 'その他', 'music.play_all': 'すべて再生', 'music.n_tracks': { one: '{n}曲', @@ -193,6 +194,9 @@ export default { 'music.player_repeat_all': 'すべてリピート', 'music.player_repeat_one': '1曲リピート', 'music.player_volume': '音量', + 'music.player_close': 'プレーヤーを閉じる', + 'music.player_queue': '再生中のキュー', + 'music.queue_title': '再生中', // LAN cast 'cast.start': 'デバイスにキャスト', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js index 2fedd70..3342559 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/nl.js @@ -182,6 +182,7 @@ export default { 'music.mode_flat': 'Platte lijst', 'music.empty': 'Geen muziek gevonden.', 'music.unknown_album': 'Onbekend album', + 'music.various': 'Diversen', 'music.play_all': 'Alles afspelen', 'music.n_tracks': { one: '{n} nummer', @@ -197,6 +198,9 @@ export default { 'music.player_repeat_all': 'Alles herhalen', 'music.player_repeat_one': 'Nummer herhalen', 'music.player_volume': 'Volume', + 'music.player_close': 'Speler sluiten', + 'music.player_queue': 'Huidige wachtrij', + 'music.queue_title': 'Nu aan het afspelen', // LAN cast 'cast.start': 'Naar apparaat casten', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js index dac2359..1b52a8b 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js @@ -189,6 +189,7 @@ export default { 'music.mode_flat': 'Lista płaska', 'music.empty': 'Nie znaleziono muzyki.', 'music.unknown_album': 'Nieznany album', + 'music.various': 'Różne', 'music.play_all': 'Odtwórz wszystko', 'music.n_tracks': { one: '{n} utwór', @@ -206,6 +207,9 @@ export default { 'music.player_repeat_all': 'Powtórz wszystko', 'music.player_repeat_one': 'Powtórz utwór', 'music.player_volume': 'Głośność', + 'music.player_close': 'Zamknij odtwarzacz', + 'music.player_queue': 'Aktualna kolejka', + 'music.queue_title': 'Teraz odtwarzane', // LAN cast 'cast.start': 'Przesyłaj na urządzenie', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js index 4251a4b..1b8c50c 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pt-BR.js @@ -182,6 +182,7 @@ export default { 'music.mode_flat': 'Lista simples', 'music.empty': 'Nenhuma música encontrada.', 'music.unknown_album': 'Álbum desconhecido', + 'music.various': 'Diversos', 'music.play_all': 'Reproduzir tudo', 'music.n_tracks': { one: '{n} faixa', @@ -197,6 +198,9 @@ export default { 'music.player_repeat_all': 'Repetir tudo', 'music.player_repeat_one': 'Repetir faixa', 'music.player_volume': 'Volume', + 'music.player_close': 'Fechar player', + 'music.player_queue': 'Fila atual', + 'music.queue_title': 'Tocando agora', // LAN cast 'cast.start': 'Transmitir para dispositivo', diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js index 7e7676b..5cc6cb3 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/zh-CN.js @@ -175,6 +175,7 @@ export default { 'music.mode_flat': '平铺列表', 'music.empty': '未找到音乐。', 'music.unknown_album': '未知专辑', + 'music.various': '其他', 'music.play_all': '全部播放', 'music.n_tracks': { one: '{n} 首曲目', @@ -190,6 +191,9 @@ export default { 'music.player_repeat_all': '全部重复', 'music.player_repeat_one': '单曲重复', 'music.player_volume': '音量', + 'music.player_close': '关闭播放器', + 'music.player_queue': '当前队列', + 'music.queue_title': '正在播放', // LAN cast 'cast.start': '投射到设备', |