feat: v1.23.0 — Advanced Search, Genre Mix overhaul, Playlist append, Contributors table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-03-30 22:56:59 +02:00
parent 74b519f9f5
commit 43c656dfc3
16 changed files with 714 additions and 144 deletions
+95 -15
View File
@@ -52,6 +52,19 @@ const enTranslation = {
title: 'Search',
resultsFor: 'Results for "{{query}}"',
album: 'Album',
advanced: 'Advanced Search',
advancedSearchTerm: 'Search term',
advancedSearchPlaceholder: 'Title, album, artist…',
advancedGenre: 'Genre',
advancedAllGenres: 'All genres',
advancedYear: 'Year',
advancedYearFrom: 'from',
advancedYearTo: 'to',
advancedAll: 'All',
advancedSearch: 'Search',
advancedEmpty: 'Enter a search term or select a filter to begin.',
advancedNoResults: 'No results found.',
advancedGenreNote: 'Songs are randomly selected from this genre.',
},
nowPlaying: {
tooltip: 'Who is listening?',
@@ -155,6 +168,7 @@ const enTranslation = {
albums: 'Albums',
songs: 'Songs',
enqueueAll: 'Add all to queue',
playAll: 'Play all',
removeSong: 'Remove from favorites',
},
randomAlbums: {
@@ -197,10 +211,12 @@ const enTranslation = {
artistClickHint: 'Click to block this artist',
blacklistToggle: 'Keyword Filter',
genreMixTitle: 'Genre Mix',
genreMixDesc: 'Select a genre to get a curated random mix',
genreMixDesc: 'Top 20 genres by song count click to load a random mix',
genreMixLoadMore: 'Load 10 more',
genreMixNoGenres: 'No genres found on server.',
shuffleGenres: 'Show different genres',
filterPanelTitle: 'Filters',
filterPanelDesc: 'Click a genre tag or artist name in the tracklist below to block it from future mixes.',
genreClickHint: 'Click a genre tag to add it\nas a filter keyword.\nMatches genre, title, album & artist.',
},
albums: {
@@ -359,7 +375,6 @@ const enTranslation = {
aboutBuiltWith: 'Built with Tauri · React · TypeScript · Rust/rodio',
aboutAiCredit: 'Developed with the support of Claude Code by Anthropic',
aboutContributorsLabel: 'Contributors',
aboutContributors: 'jiezhuo — Chinese translation · nullobject — Seek & waveform fixes',
changelog: 'Changelog',
showChangelogOnUpdate: "Show 'What's New' on update",
showChangelogOnUpdateDesc: "Automatically show what's new when a new version is launched for the first time.",
@@ -500,7 +515,8 @@ const enTranslation = {
loadPlaylist: 'Load Playlist',
loading: 'Loading…',
noPlaylists: 'No playlists found.',
load: 'Load',
load: 'Replace queue & play',
appendToQueue: 'Append to queue',
delete: 'Delete',
deleteConfirm: 'Delete playlist "{{name}}"?',
clear: 'Clear',
@@ -629,6 +645,19 @@ const deTranslation = {
title: 'Suche',
resultsFor: 'Ergebnisse für „{{query}}"',
album: 'Album',
advanced: 'Erweiterte Suche',
advancedSearchTerm: 'Suchbegriff',
advancedSearchPlaceholder: 'Titel, Album, Künstler…',
advancedGenre: 'Genre',
advancedAllGenres: 'Alle Genres',
advancedYear: 'Jahr',
advancedYearFrom: 'von',
advancedYearTo: 'bis',
advancedAll: 'Alle',
advancedSearch: 'Suchen',
advancedEmpty: 'Suchbegriff eingeben oder Filter wählen, um zu beginnen.',
advancedNoResults: 'Keine Ergebnisse gefunden.',
advancedGenreNote: 'Songs werden zufällig aus dem Genre gewählt.',
},
nowPlaying: {
tooltip: 'Wer hört was?',
@@ -732,6 +761,7 @@ const deTranslation = {
albums: 'Alben',
songs: 'Songs',
enqueueAll: 'Alle in die Warteschlange',
playAll: 'Alle abspielen',
removeSong: 'Aus Favoriten entfernen',
},
randomAlbums: {
@@ -774,10 +804,12 @@ const deTranslation = {
artistClickHint: 'Klicken um diesen Künstler zu sperren',
blacklistToggle: 'Keyword-Filter',
genreMixTitle: 'Genre-Mix',
genreMixDesc: 'Genre auswählen für einen passenden Zufallsmix',
genreMixDesc: 'Top 20 Genres nach Songanzahl — klicken für einen Zufallsmix',
genreMixLoadMore: '10 weitere laden',
genreMixNoGenres: 'Keine Genres auf dem Server gefunden.',
shuffleGenres: 'Andere Genres anzeigen',
filterPanelTitle: 'Filter',
filterPanelDesc: 'Genre-Tag oder Künstlername in der Liste anklicken, um ihn aus zukünftigen Mixes auszuschließen.',
genreClickHint: 'Genre-Tag anklicken,\num es als Filter-Keyword hinzuzufügen.\nPrüft Genre, Titel, Album & Künstler.',
},
albums: {
@@ -936,7 +968,6 @@ const deTranslation = {
aboutBuiltWith: 'Gebaut mit Tauri · React · TypeScript · Rust/rodio',
aboutAiCredit: 'Mit freundlicher Unterstützung von Claude Code by Anthropic',
aboutContributorsLabel: 'Mitwirkende',
aboutContributors: 'jiezhuo — Chinesische Übersetzung · nullobject — Seek & Waveform-Fixes',
changelog: 'Changelog',
showChangelogOnUpdate: "'Was ist neu' bei Update anzeigen",
showChangelogOnUpdateDesc: 'Zeigt automatisch die Neuerungen an, wenn eine neue Version zum ersten Mal gestartet wird.',
@@ -1077,7 +1108,8 @@ const deTranslation = {
loadPlaylist: 'Playlist laden',
loading: 'Lade…',
noPlaylists: 'Keine Playlists gefunden.',
load: 'Laden',
load: 'Warteschlange ersetzen & abspielen',
appendToQueue: 'An Warteschlange anhängen',
delete: 'Löschen',
deleteConfirm: 'Playlist "{{name}}" löschen?',
clear: 'Leeren',
@@ -1206,6 +1238,19 @@ const frTranslation = {
title: 'Recherche',
resultsFor: 'Résultats pour « {{query}} »',
album: 'Album',
advanced: 'Recherche avancée',
advancedSearchTerm: 'Terme de recherche',
advancedSearchPlaceholder: 'Titre, album, artiste…',
advancedGenre: 'Genre',
advancedAllGenres: 'Tous les genres',
advancedYear: 'Année',
advancedYearFrom: 'de',
advancedYearTo: 'à',
advancedAll: 'Tous',
advancedSearch: 'Rechercher',
advancedEmpty: 'Entrez un terme de recherche ou sélectionnez un filtre.',
advancedNoResults: 'Aucun résultat trouvé.',
advancedGenreNote: 'Les morceaux sont sélectionnés aléatoirement dans ce genre.',
},
nowPlaying: {
tooltip: 'Qui écoute ?',
@@ -1309,6 +1354,7 @@ const frTranslation = {
albums: 'Albums',
songs: 'Morceaux',
enqueueAll: 'Tout ajouter à la file',
playAll: 'Tout lire',
removeSong: 'Retirer des favoris',
},
randomAlbums: {
@@ -1351,10 +1397,12 @@ const frTranslation = {
artistClickHint: 'Cliquer pour bloquer cet artiste',
blacklistToggle: 'Filtre par mot-clé',
genreMixTitle: 'Mix par genre',
genreMixDesc: 'Sélectionnez un genre pour obtenir un mix aléatoire',
genreMixDesc: 'Top 20 genres par nombre de morceaux — cliquer pour un mix aléatoire',
genreMixLoadMore: 'Charger 10 de plus',
genreMixNoGenres: 'Aucun genre trouvé sur le serveur.',
shuffleGenres: 'Afficher d\'autres genres',
filterPanelTitle: 'Filtres',
filterPanelDesc: 'Cliquez sur un tag de genre ou un nom d\'artiste dans la liste pour l\'exclure des futurs mix.',
genreClickHint: 'Cliquez sur un tag de genre pour l\'ajouter\ncomme mot-clé de filtre.\nCorrespond au genre, titre, album et artiste.',
},
albums: {
@@ -1513,7 +1561,6 @@ const frTranslation = {
aboutBuiltWith: 'Construit avec Tauri · React · TypeScript · Rust/rodio',
aboutAiCredit: 'Développé avec le soutien de Claude Code par Anthropic',
aboutContributorsLabel: 'Contributeurs',
aboutContributors: 'jiezhuo — traduction chinoise · nullobject — correctifs seek & waveform',
changelog: 'Journal des modifications',
showChangelogOnUpdate: "Afficher 'Quoi de neuf' lors des mises à jour",
showChangelogOnUpdateDesc: 'Affiche automatiquement les nouveautés au premier lancement d\'une nouvelle version.',
@@ -1654,7 +1701,8 @@ const frTranslation = {
loadPlaylist: 'Charger une liste',
loading: 'Chargement…',
noPlaylists: 'Aucune liste trouvée.',
load: 'Charger',
load: 'Remplacer la file et lire',
appendToQueue: 'Ajouter à la file',
delete: 'Supprimer',
deleteConfirm: 'Supprimer la liste « {{name}} » ?',
clear: 'Vider',
@@ -1783,6 +1831,19 @@ const nlTranslation = {
title: 'Zoeken',
resultsFor: 'Resultaten voor "{{query}}"',
album: 'Album',
advanced: 'Geavanceerd zoeken',
advancedSearchTerm: 'Zoekterm',
advancedSearchPlaceholder: 'Titel, album, artiest…',
advancedGenre: 'Genre',
advancedAllGenres: 'Alle genres',
advancedYear: 'Jaar',
advancedYearFrom: 'van',
advancedYearTo: 'tot',
advancedAll: 'Alle',
advancedSearch: 'Zoeken',
advancedEmpty: 'Voer een zoekterm in of selecteer een filter.',
advancedNoResults: 'Geen resultaten gevonden.',
advancedGenreNote: 'Nummers worden willekeurig uit dit genre geselecteerd.',
},
nowPlaying: {
tooltip: 'Wie luistert er?',
@@ -1886,6 +1947,7 @@ const nlTranslation = {
albums: 'Albums',
songs: 'Nummers',
enqueueAll: 'Alles aan wachtrij toevoegen',
playAll: 'Alles afspelen',
removeSong: 'Verwijderen uit favorieten',
},
randomAlbums: {
@@ -1928,10 +1990,12 @@ const nlTranslation = {
artistClickHint: 'Klik om deze artiest te blokkeren',
blacklistToggle: 'Trefwoordfilter',
genreMixTitle: 'Genremix',
genreMixDesc: 'Selecteer een genre voor een samengestelde willekeurige mix',
genreMixDesc: 'Top 20 genres op aantal nummers — klik voor een willekeurige mix',
genreMixLoadMore: '10 meer laden',
genreMixNoGenres: 'Geen genres gevonden op server.',
shuffleGenres: 'Andere genres tonen',
filterPanelTitle: 'Filters',
filterPanelDesc: 'Klik op een genre-tag of artiestennaam in de lijst om deze uit toekomstige mixes te weren.',
genreClickHint: 'Klik op een genre-tag om het\ntoe te voegen als filtertrefwoord.\nVergelijkt genre, titel, album & artiest.',
},
albums: {
@@ -2090,7 +2154,6 @@ const nlTranslation = {
aboutBuiltWith: 'Gebouwd met Tauri · React · TypeScript · Rust/rodio',
aboutAiCredit: 'Ontwikkeld met ondersteuning van Claude Code door Anthropic',
aboutContributorsLabel: 'Bijdragers',
aboutContributors: 'jiezhuo — Chinese vertaling · nullobject — seek & waveform-fixes',
changelog: 'Wijzigingslog',
showChangelogOnUpdate: "'Wat is nieuw' tonen bij update",
showChangelogOnUpdateDesc: 'Toont automatisch de nieuwigheden bij de eerste start van een nieuwe versie.',
@@ -2231,7 +2294,8 @@ const nlTranslation = {
loadPlaylist: 'Afspeellijst laden',
loading: 'Laden…',
noPlaylists: 'Geen afspeellijsten gevonden.',
load: 'Laden',
load: 'Wachtrij vervangen & afspelen',
appendToQueue: 'Toevoegen aan wachtrij',
delete: 'Verwijderen',
deleteConfirm: 'Afspeellijst "{{name}}" verwijderen?',
clear: 'Leegmaken',
@@ -2360,6 +2424,19 @@ const zhTranslation = {
title: '搜索',
resultsFor: '"{{query}}" 的搜索结果',
album: '专辑',
advanced: '高级搜索',
advancedSearchTerm: '搜索词',
advancedSearchPlaceholder: '标题、专辑、艺术家…',
advancedGenre: '流派',
advancedAllGenres: '所有流派',
advancedYear: '年份',
advancedYearFrom: '从',
advancedYearTo: '至',
advancedAll: '全部',
advancedSearch: '搜索',
advancedEmpty: '请输入搜索词或选择过滤器。',
advancedNoResults: '未找到结果。',
advancedGenreNote: '歌曲从该流派中随机选取。',
},
nowPlaying: {
tooltip: '谁正在收听?',
@@ -2463,6 +2540,7 @@ const zhTranslation = {
albums: '专辑',
songs: '歌曲',
enqueueAll: '全部加入队列',
playAll: '全部播放',
removeSong: '从收藏中移除',
},
randomAlbums: {
@@ -2505,10 +2583,12 @@ const zhTranslation = {
artistClickHint: '点击屏蔽此艺术家',
blacklistToggle: '关键词过滤',
genreMixTitle: '流派混音',
genreMixDesc: '选择一个流派以获取精选的随机混音',
genreMixDesc: '按歌曲数量排列的前 20 个流派 — 点击获取随机混音',
genreMixLoadMore: '加载 10 首更多',
genreMixNoGenres: '服务器上未找到流派。',
shuffleGenres: '显示其他流派',
filterPanelTitle: '过滤器',
filterPanelDesc: '点击下方列表中的流派标签或艺术家名称,将其从未来的混音中排除。',
genreClickHint: '点击流派标签将其添加为过滤关键词。\\n匹配流派、标题、专辑和艺术家。',
},
albums: {
@@ -2667,7 +2747,6 @@ const zhTranslation = {
aboutBuiltWith: '使用 Tauri · React · TypeScript · Rust/rodio 构建',
aboutAiCredit: '在 Anthropic 的 Claude Code 支持下开发',
aboutContributorsLabel: '贡献者',
aboutContributors: 'jiezhuo — 中文翻译 · nullobject — Seek & 波形修复',
changelog: '更新日志',
showChangelogOnUpdate: '更新时显示"新功能"',
showChangelogOnUpdateDesc: '新版本首次启动时自动显示更新内容。',
@@ -2808,7 +2887,8 @@ const zhTranslation = {
loadPlaylist: '加载播放列表',
loading: '加载中…',
noPlaylists: '未找到播放列表。',
load: '加载',
load: '替换队列并播放',
appendToQueue: '追加到队列',
delete: '删除',
deleteConfirm: '删除播放列表 "{{name}}"',
clear: '清空',