From 549677ffd41da38da63812e4ae47527b3cf806f9 Mon Sep 17 00:00:00 2001 From: Psychotoxical Date: Fri, 10 Apr 2026 22:19:22 +0200 Subject: [PATCH] feat(random-mix): context-aware remix button + genre reset chip Remix button now targets the active context: relabels to "{{genre}} neu mixen" when a genre is selected and re-fetches that genre instead of the global random pool. "Alle Songs" chip added as first genre option to reset back to the full library mix without leaving the page. Also fixes album-grid cards stretching to full page height on macOS WebKit (align-items: start on .album-grid-wrap). Co-Authored-By: Claude Sonnet 4.6 --- src/locales/de.ts | 3 +++ src/locales/en.ts | 3 +++ src/locales/fr.ts | 3 +++ src/locales/nb.ts | 3 +++ src/locales/nl.ts | 3 +++ src/locales/ru.ts | 3 +++ src/locales/zh.ts | 3 +++ src/pages/RandomMix.tsx | 21 +++++++++++++++++++-- src/styles/components.css | 1 + 9 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/locales/de.ts b/src/locales/de.ts index b908004a..f402b52e 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -217,6 +217,8 @@ export const deTranslation = { title: 'Zufallsmix', remix: 'Neu mixen', remixTooltip: 'Neue Songs laden', + remixGenre: '{{genre}} neu mixen', + remixTooltipGenre: 'Neue {{genre}}-Songs laden', playAll: 'Alle abspielen', trackTitle: 'Titel', trackArtist: 'Künstler', @@ -238,6 +240,7 @@ export const deTranslation = { blacklistToggle: 'Keyword-Filter', genreMixTitle: 'Genre-Mix', genreMixDesc: 'Top 20 Genres nach Songanzahl — klicken für einen Zufallsmix', + genreMixAll: 'Alle Songs', genreMixLoadMore: '10 weitere laden', genreMixNoGenres: 'Keine Genres auf dem Server gefunden.', shuffleGenres: 'Andere Genres anzeigen', diff --git a/src/locales/en.ts b/src/locales/en.ts index 3ed79e39..c414254e 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -218,6 +218,8 @@ export const enTranslation = { title: 'Random Mix', remix: 'Remix', remixTooltip: 'Load new random songs', + remixGenre: 'Remix {{genre}}', + remixTooltipGenre: 'Load new {{genre}} songs', playAll: 'Play All', trackTitle: 'Title', trackArtist: 'Artist', @@ -239,6 +241,7 @@ export const enTranslation = { blacklistToggle: 'Keyword Filter', genreMixTitle: 'Genre Mix', genreMixDesc: 'Top 20 genres by song count — click to load a random mix', + genreMixAll: 'All Songs', genreMixLoadMore: 'Load 10 more', genreMixNoGenres: 'No genres found on server.', shuffleGenres: 'Show different genres', diff --git a/src/locales/fr.ts b/src/locales/fr.ts index 0ebeb31a..277a6b46 100644 --- a/src/locales/fr.ts +++ b/src/locales/fr.ts @@ -217,6 +217,8 @@ export const frTranslation = { title: 'Mix aléatoire', remix: 'Remixer', remixTooltip: 'Charger de nouveaux morceaux aléatoires', + remixGenre: 'Remixer {{genre}}', + remixTooltipGenre: 'Charger de nouveaux morceaux {{genre}}', playAll: 'Tout lire', trackTitle: 'Titre', trackArtist: 'Artiste', @@ -238,6 +240,7 @@ export const frTranslation = { blacklistToggle: 'Filtre par mot-clé', genreMixTitle: 'Mix par genre', genreMixDesc: 'Top 20 genres par nombre de morceaux — cliquer pour un mix aléatoire', + genreMixAll: 'Tous les morceaux', genreMixLoadMore: 'Charger 10 de plus', genreMixNoGenres: 'Aucun genre trouvé sur le serveur.', shuffleGenres: 'Afficher d\'autres genres', diff --git a/src/locales/nb.ts b/src/locales/nb.ts index 0f051135..e869f066 100644 --- a/src/locales/nb.ts +++ b/src/locales/nb.ts @@ -217,6 +217,8 @@ export const nbTranslation = { title: 'Tilfeldig miks', remix: 'Remiks', remixTooltip: 'Last inn nye tilfeldige sanger', + remixGenre: 'Remiks {{genre}}', + remixTooltipGenre: 'Last inn nye {{genre}}-sanger', playAll: 'Spill alt', trackTitle: 'Tittel', trackArtist: 'Artist', @@ -238,6 +240,7 @@ export const nbTranslation = { blacklistToggle: 'Nøkkelordfilter', genreMixTitle: 'Sjangermiks', genreMixDesc: 'Topp 20 sjangre etter antall sanger - klikk for å laste en tilfeldig miks', + genreMixAll: 'Alle sanger', genreMixLoadMore: 'Last 10 til', genreMixNoGenres: 'Ingen sjangre funnet på tjeneren.', shuffleGenres: 'Vis andre sjangre', diff --git a/src/locales/nl.ts b/src/locales/nl.ts index acdb2dd3..2f7a9b0d 100644 --- a/src/locales/nl.ts +++ b/src/locales/nl.ts @@ -217,6 +217,8 @@ export const nlTranslation = { title: 'Willekeurige mix', remix: 'Opnieuw mixen', remixTooltip: 'Nieuwe willekeurige nummers laden', + remixGenre: '{{genre}} mixen', + remixTooltipGenre: 'Nieuwe {{genre}}-nummers laden', playAll: 'Alles afspelen', trackTitle: 'Titel', trackArtist: 'Artiest', @@ -238,6 +240,7 @@ export const nlTranslation = { blacklistToggle: 'Trefwoordfilter', genreMixTitle: 'Genremix', genreMixDesc: 'Top 20 genres op aantal nummers — klik voor een willekeurige mix', + genreMixAll: 'Alle nummers', genreMixLoadMore: '10 meer laden', genreMixNoGenres: 'Geen genres gevonden op server.', shuffleGenres: 'Andere genres tonen', diff --git a/src/locales/ru.ts b/src/locales/ru.ts index bbc17bd2..2efbd4c3 100644 --- a/src/locales/ru.ts +++ b/src/locales/ru.ts @@ -223,6 +223,8 @@ export const ruTranslation = { title: 'Случайный микс', remix: 'Новый микс', remixTooltip: 'Подобрать другие случайные треки', + remixGenre: 'Новый микс: {{genre}}', + remixTooltipGenre: 'Подобрать другие треки жанра {{genre}}', playAll: 'Воспроизвести всё', trackTitle: 'Название', trackArtist: 'Исполнитель', @@ -245,6 +247,7 @@ export const ruTranslation = { blacklistToggle: 'Фильтр по словам', genreMixTitle: 'Микс по жанру', genreMixDesc: 'Топ-20 жанров по числу треков — нажмите, чтобы собрать микс', + genreMixAll: 'Все треки', genreMixLoadMore: 'Ещё 10 жанров', genreMixNoGenres: 'На сервере нет данных о жанрах.', shuffleGenres: 'Другие жанры', diff --git a/src/locales/zh.ts b/src/locales/zh.ts index eeed2453..0861159e 100644 --- a/src/locales/zh.ts +++ b/src/locales/zh.ts @@ -217,6 +217,8 @@ export const zhTranslation = { title: '随机混音', remix: '重新混音', remixTooltip: '加载新的随机歌曲', + remixGenre: '重混 {{genre}}', + remixTooltipGenre: '加载新的{{genre}}歌曲', playAll: '全部播放', trackTitle: '标题', trackArtist: '艺术家', @@ -238,6 +240,7 @@ export const zhTranslation = { blacklistToggle: '关键词过滤', genreMixTitle: '流派混音', genreMixDesc: '按歌曲数量排列的前 20 个流派 — 点击获取随机混音', + genreMixAll: '所有歌曲', genreMixLoadMore: '加载 10 首更多', genreMixNoGenres: '服务器上未找到流派。', shuffleGenres: '显示其他流派', diff --git a/src/pages/RandomMix.tsx b/src/pages/RandomMix.tsx index 09c35d04..398f2dee 100644 --- a/src/pages/RandomMix.tsx +++ b/src/pages/RandomMix.tsx @@ -182,8 +182,17 @@ export default function RandomMix() {

{t('randomMix.title')}

- {(() => { const isGenreLoading = selectedGenre && !genreMixComplete; @@ -313,6 +322,14 @@ export default function RandomMix() { {t('randomMix.genreMixNoGenres')} ) : ( <> + {displayedGenres.map(genre => (