feat: v1.31.0 — AutoEQ, resizable tracklist columns, Discord Listening type, layout fixes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-04-04 02:04:14 +02:00
parent 463b7483fd
commit c873880a26
31 changed files with 1895 additions and 224 deletions
+145
View File
@@ -26,6 +26,7 @@ const enTranslation = {
offlineLibrary: 'Offline Library',
genres: 'Genres',
playlists: 'Playlists',
radio: 'Internet Radio',
},
home: {
hero: 'Featured',
@@ -131,11 +132,13 @@ const enTranslation = {
moreLabelAlbums: 'More albums on {{label}}',
trackTitle: 'Title',
trackArtist: 'Artist',
trackGenre: 'Genre',
trackFormat: 'Format',
trackFavorite: 'Favorite',
trackRating: 'Rating',
trackDuration: 'Duration',
trackTotal: 'Total',
columns: 'Columns',
notFound: 'Album not found.',
bioModal: 'Artist Biography',
bioClose: 'Close',
@@ -353,6 +356,7 @@ const enTranslation = {
serverFailed: 'Connection failed.',
testBtn: 'Test Connection',
testingBtn: 'Testing…',
serverCompatible: 'Compatible with: Navidrome · Gonic · Airsonic · Subsonic',
connected: 'Connected',
failed: 'Failed',
eqTitle: 'Equalizer',
@@ -365,6 +369,15 @@ const enTranslation = {
eqPresetName: 'Preset name…',
eqDeletePreset: 'Delete preset',
eqResetBands: 'Reset to Flat',
eqPreGain: 'Pre-gain',
eqResetPreGain: 'Reset pre-gain',
eqAutoEqTitle: 'AutoEQ Headphone Lookup',
eqAutoEqPlaceholder: 'Search headphone / IEM model…',
eqAutoEqSearching: 'Searching…',
eqAutoEqNoResults: 'No results found',
eqAutoEqError: 'Search failed',
eqAutoEqRateLimit: 'GitHub rate limit reached — try again in a minute',
eqAutoEqFetchError: 'Failed to fetch EQ profile',
lfmTitle: 'Last.fm',
lfmConnect: 'Connect with Last.fm',
lfmConnecting: 'Waiting for authorisation…',
@@ -690,6 +703,22 @@ const enTranslation = {
cacheOffline: 'Cache playlist offline',
offlineCached: 'Playlist cached',
offlineDownloading: 'Caching… ({{done}}/{{total}} albums)',
},
radio: {
title: 'Internet Radio',
empty: 'No radio stations configured.',
addStation: 'Add Station',
editStation: 'Edit',
deleteStation: 'Delete station',
confirmDelete: 'Click again to confirm',
stationName: 'Station name…',
streamUrl: 'Stream URL…',
homepageUrl: 'Homepage URL (optional)',
save: 'Save',
cancel: 'Cancel',
live: 'LIVE',
liveStream: 'Internet Radio',
openHomepage: 'Open homepage',
}
};
@@ -718,6 +747,7 @@ const deTranslation = {
offlineLibrary: 'Offline-Bibliothek',
genres: 'Genres',
playlists: 'Playlists',
radio: 'Internetradio',
},
home: {
hero: 'Featured',
@@ -823,11 +853,13 @@ const deTranslation = {
moreLabelAlbums: 'Weitere Alben von {{label}} anzeigen',
trackTitle: 'Titel',
trackArtist: 'Interpret',
trackGenre: 'Genre',
trackFormat: 'Format',
trackFavorite: 'Favorit',
trackRating: 'Bewertung',
trackDuration: 'Dauer',
trackTotal: 'Gesamt',
columns: 'Spalten',
notFound: 'Album nicht gefunden.',
bioModal: 'Künstler-Biografie',
bioClose: 'Schließen',
@@ -1045,6 +1077,7 @@ const deTranslation = {
serverFailed: 'Verbindung fehlgeschlagen.',
testBtn: 'Verbindung testen',
testingBtn: 'Teste…',
serverCompatible: 'Kompatibel mit: Navidrome · Gonic · Airsonic · Subsonic',
connected: 'Verbunden',
failed: 'Fehlgeschlagen',
eqTitle: 'Equalizer',
@@ -1057,6 +1090,15 @@ const deTranslation = {
eqPresetName: 'Preset-Name…',
eqDeletePreset: 'Preset löschen',
eqResetBands: 'Auf Flat zurücksetzen',
eqPreGain: 'Vorverstärkung',
eqResetPreGain: 'Vorverstärkung zurücksetzen',
eqAutoEqTitle: 'AutoEQ Kopfhörer-Suche',
eqAutoEqPlaceholder: 'Kopfhörer / IEM Modell suchen…',
eqAutoEqSearching: 'Suche…',
eqAutoEqNoResults: 'Keine Ergebnisse gefunden',
eqAutoEqError: 'Suche fehlgeschlagen',
eqAutoEqRateLimit: 'GitHub Rate-Limit erreicht — in einer Minute erneut versuchen',
eqAutoEqFetchError: 'EQ-Profil konnte nicht geladen werden',
lfmTitle: 'Last.fm',
lfmConnect: 'Mit Last.fm verbinden',
lfmConnecting: 'Warte auf Bestätigung…',
@@ -1382,6 +1424,22 @@ const deTranslation = {
cacheOffline: 'Playlist offline speichern',
offlineCached: 'Playlist gecacht',
offlineDownloading: 'Wird gecacht… ({{done}}/{{total}} Alben)',
},
radio: {
title: 'Internetradio',
empty: 'Keine Radiosender konfiguriert.',
addStation: 'Sender hinzufügen',
editStation: 'Bearbeiten',
deleteStation: 'Sender löschen',
confirmDelete: 'Zum Bestätigen erneut klicken',
stationName: 'Sendername…',
streamUrl: 'Stream-URL…',
homepageUrl: 'Homepage-URL (optional)',
save: 'Speichern',
cancel: 'Abbrechen',
live: 'LIVE',
liveStream: 'Internetradio',
openHomepage: 'Homepage öffnen',
}
};
@@ -1410,6 +1468,7 @@ const frTranslation = {
offlineLibrary: 'Bibliothèque hors ligne',
genres: 'Genres',
playlists: 'Playlists',
radio: 'Radio Internet',
},
home: {
hero: 'En vedette',
@@ -1515,11 +1574,13 @@ const frTranslation = {
moreLabelAlbums: 'Plus d\'albums sur {{label}}',
trackTitle: 'Titre',
trackArtist: 'Artiste',
trackGenre: 'Genre',
trackFormat: 'Format',
trackFavorite: 'Favori',
trackRating: 'Note',
trackDuration: 'Durée',
trackTotal: 'Total',
columns: 'Colonnes',
notFound: 'Album introuvable.',
bioModal: 'Biographie de l\'artiste',
bioClose: 'Fermer',
@@ -1737,6 +1798,7 @@ const frTranslation = {
serverFailed: 'Connexion échouée.',
testBtn: 'Tester la connexion',
testingBtn: 'Test en cours…',
serverCompatible: 'Compatible avec : Navidrome · Gonic · Airsonic · Subsonic',
connected: 'Connecté',
failed: 'Échec',
eqTitle: 'Égaliseur',
@@ -1749,6 +1811,15 @@ const frTranslation = {
eqPresetName: 'Nom du préréglage…',
eqDeletePreset: 'Supprimer le préréglage',
eqResetBands: 'Réinitialiser à plat',
eqPreGain: 'Pré-amplification',
eqResetPreGain: 'Réinitialiser la pré-amplification',
eqAutoEqTitle: 'Recherche AutoEQ',
eqAutoEqPlaceholder: 'Rechercher un casque / IEM…',
eqAutoEqSearching: 'Recherche…',
eqAutoEqNoResults: 'Aucun résultat',
eqAutoEqError: 'Échec de la recherche',
eqAutoEqRateLimit: 'Limite GitHub atteinte — réessayez dans une minute',
eqAutoEqFetchError: 'Impossible de charger le profil EQ',
lfmTitle: 'Last.fm',
lfmConnect: 'Connecter avec Last.fm',
lfmConnecting: 'En attente d\'autorisation…',
@@ -2074,6 +2145,22 @@ const frTranslation = {
cacheOffline: 'Mettre la playlist hors ligne',
offlineCached: 'Playlist en cache',
offlineDownloading: 'En cache… ({{done}}/{{total}} albums)',
},
radio: {
title: 'Radio Internet',
empty: 'Aucune station radio configurée.',
addStation: 'Ajouter une station',
editStation: 'Modifier',
deleteStation: 'Supprimer la station',
confirmDelete: 'Cliquer à nouveau pour confirmer',
stationName: 'Nom de la station…',
streamUrl: 'URL du flux…',
homepageUrl: 'URL de la page d\'accueil (optionnel)',
save: 'Enregistrer',
cancel: 'Annuler',
live: 'LIVE',
liveStream: 'Radio Internet',
openHomepage: 'Ouvrir la page d\'accueil',
}
};
@@ -2102,6 +2189,7 @@ const nlTranslation = {
offlineLibrary: 'Offline bibliotheek',
genres: 'Genres',
playlists: 'Playlists',
radio: 'Internetradio',
},
home: {
hero: 'Uitgelicht',
@@ -2207,11 +2295,13 @@ const nlTranslation = {
moreLabelAlbums: 'Meer albums op {{label}}',
trackTitle: 'Titel',
trackArtist: 'Artiest',
trackGenre: 'Genre',
trackFormat: 'Formaat',
trackFavorite: 'Favoriet',
trackRating: 'Beoordeling',
trackDuration: 'Duur',
trackTotal: 'Totaal',
columns: 'Kolommen',
notFound: 'Album niet gevonden.',
bioModal: 'Artiest biografie',
bioClose: 'Sluiten',
@@ -2429,6 +2519,7 @@ const nlTranslation = {
serverFailed: 'Verbinding mislukt.',
testBtn: 'Verbinding testen',
testingBtn: 'Testen…',
serverCompatible: 'Compatibel met: Navidrome · Gonic · Airsonic · Subsonic',
connected: 'Verbonden',
failed: 'Mislukt',
eqTitle: 'Equalizer',
@@ -2441,6 +2532,15 @@ const nlTranslation = {
eqPresetName: 'Naam voorinstelling…',
eqDeletePreset: 'Voorinstelling verwijderen',
eqResetBands: 'Terugzetten naar vlak',
eqPreGain: 'Voorversterking',
eqResetPreGain: 'Voorversterking resetten',
eqAutoEqTitle: 'AutoEQ Hoofdtelefoon Zoeken',
eqAutoEqPlaceholder: 'Zoek hoofdtelefoon / IEM model…',
eqAutoEqSearching: 'Zoeken…',
eqAutoEqNoResults: 'Geen resultaten gevonden',
eqAutoEqError: 'Zoeken mislukt',
eqAutoEqRateLimit: 'GitHub limiet bereikt — probeer over een minuut opnieuw',
eqAutoEqFetchError: 'EQ-profiel kon niet worden geladen',
lfmTitle: 'Last.fm',
lfmConnect: 'Verbinden met Last.fm',
lfmConnecting: 'Wachten op autorisatie…',
@@ -2766,6 +2866,22 @@ const nlTranslation = {
cacheOffline: 'Playlist offline opslaan',
offlineCached: 'Playlist gecached',
offlineDownloading: 'Cachen… ({{done}}/{{total}} albums)',
},
radio: {
title: 'Internetradio',
empty: 'Geen radiostations geconfigureerd.',
addStation: 'Station toevoegen',
editStation: 'Bewerken',
deleteStation: 'Station verwijderen',
confirmDelete: 'Klik opnieuw om te bevestigen',
stationName: 'Stationsnaam…',
streamUrl: 'Stream-URL…',
homepageUrl: 'Homepage-URL (optioneel)',
save: 'Opslaan',
cancel: 'Annuleren',
live: 'LIVE',
liveStream: 'Internetradio',
openHomepage: 'Homepage openen',
}
};
@@ -2794,6 +2910,7 @@ const zhTranslation = {
offlineLibrary: '离线音乐库',
genres: '流派',
playlists: '播放列表',
radio: '网络电台',
},
home: {
hero: '精选',
@@ -2899,11 +3016,13 @@ const zhTranslation = {
moreLabelAlbums: '{{label}} 的更多专辑',
trackTitle: '标题',
trackArtist: '艺术家',
trackGenre: '流派',
trackFormat: '格式',
trackFavorite: '收藏',
trackRating: '评分',
trackDuration: '时长',
trackTotal: '总计',
columns: '列',
notFound: '未找到专辑。',
bioModal: '艺术家简介',
bioClose: '关闭',
@@ -3117,6 +3236,7 @@ const zhTranslation = {
serverFailed: '连接失败。',
testBtn: '测试连接',
testingBtn: '正在测试…',
serverCompatible: '兼容:Navidrome · Gonic · Airsonic · Subsonic',
connected: '已连接',
failed: '失败',
eqTitle: '均衡器',
@@ -3129,6 +3249,15 @@ const zhTranslation = {
eqPresetName: '预设名称…',
eqDeletePreset: '删除预设',
eqResetBands: '重置为平直',
eqPreGain: '预增益',
eqResetPreGain: '重置预增益',
eqAutoEqTitle: 'AutoEQ 耳机查询',
eqAutoEqPlaceholder: '搜索耳机/入耳式型号…',
eqAutoEqSearching: '搜索中…',
eqAutoEqNoResults: '未找到结果',
eqAutoEqError: '搜索失败',
eqAutoEqRateLimit: 'GitHub 请求限制 — 请一分钟后重试',
eqAutoEqFetchError: '无法获取 EQ 配置',
lfmTitle: 'Last.fm',
lfmConnect: '连接 Last.fm',
lfmConnecting: '等待授权…',
@@ -3454,6 +3583,22 @@ const zhTranslation = {
cacheOffline: '离线缓存播放列表',
offlineCached: '播放列表已缓存',
offlineDownloading: '正在缓存… ({{done}}/{{total}} 张专辑)',
},
radio: {
title: '网络电台',
empty: '未配置任何电台。',
addStation: '添加电台',
editStation: '编辑',
deleteStation: '删除电台',
confirmDelete: '再次点击确认',
stationName: '电台名称…',
streamUrl: '流地址…',
homepageUrl: '主页地址(可选)',
save: '保存',
cancel: '取消',
live: '直播',
liveStream: '网络电台',
openHomepage: '打开主页',
}
};