From 02c7a3fe22e9bfeb8376c5f4bef85514fa8106b6 Mon Sep 17 00:00:00 2001 From: Psychotoxical Date: Fri, 17 Apr 2026 21:52:16 +0200 Subject: [PATCH] feat(settings): collapse Discord sub-options under one header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Fetch covers from Apple Music" and "Custom text templates" are now both tucked into a single collapsible "Advanced Discord options" block (default collapsed) that only appears when Discord Rich Presence is enabled. Reduces vertical noise in Settings → General for the common case where users just flip Rich Presence on and leave the defaults. Uses the same chevron-rotate pattern as the font picker and contributors list. Adds `settings.discordOptions` key in all 8 locales. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/locales/de.ts | 1 + src/locales/en.ts | 1 + src/locales/es.ts | 1 + src/locales/fr.ts | 1 + src/locales/nb.ts | 1 + src/locales/nl.ts | 1 + src/locales/ru.ts | 1 + src/locales/zh.ts | 1 + src/pages/Settings.tsx | 114 ++++++++++++++++++++++++++--------------- 9 files changed, 80 insertions(+), 42 deletions(-) diff --git a/src/locales/de.ts b/src/locales/de.ts index 6c3af711..da1dab76 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -540,6 +540,7 @@ export const deTranslation = { useCustomTitlebarDesc: 'Ersetzt die System-Titelleiste durch eine eingebaute, die zum App-Theme passt. Deaktivieren, um die native GNOME/GTK-Titelleiste zu verwenden.', discordAppleCovers: 'Cover über Apple Music für Discord laden', discordAppleCoversDesc: 'Sendet Künstler- und Albumname an die Apple-Such-API, um Cover für dein Discord-Profil zu finden. Standardmäßig aus Datenschutzgründen deaktiviert.', + discordOptions: 'Erweiterte Discord-Optionen', discordTemplates: 'Benutzerdefinierte Textvorlagen', discordTemplatesDesc: 'Passen Sie an, welche Informationen in Ihrem Discord-Profil angezeigt werden. Variablen: {title}, {artist}, {album}', discordTemplateDetails: 'Primäre Zeile (details)', diff --git a/src/locales/en.ts b/src/locales/en.ts index 85e601de..e6286b53 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -542,6 +542,7 @@ export const enTranslation = { useCustomTitlebarDesc: 'Replace the system title bar with a built-in one that matches the app theme. Disable to use the native GNOME/GTK title bar.', discordAppleCovers: 'Fetch covers from Apple Music for Discord', discordAppleCoversDesc: 'Sends the artist and album name to Apple\'s search API to find cover art for your Discord profile. Disabled by default for privacy.', + discordOptions: 'Advanced Discord options', discordTemplates: 'Custom text templates', discordTemplatesDesc: 'Customize what information is shown on your Discord profile. Variables: {title}, {artist}, {album}', discordTemplateDetails: 'Primary line (details)', diff --git a/src/locales/es.ts b/src/locales/es.ts index 5652fa11..9c5f0823 100644 --- a/src/locales/es.ts +++ b/src/locales/es.ts @@ -543,6 +543,7 @@ export const esTranslation = { useCustomTitlebarDesc: 'Reemplaza la barra de título del sistema con una integrada que coincide con el tema de la app. Desactiva para usar la barra nativa de GNOME/GTK.', discordAppleCovers: 'Obtener portadas de Apple Music para Discord', discordAppleCoversDesc: 'Envía el artista y nombre del álbum a la API de búsqueda de Apple para encontrar portadas para tu perfil de Discord. Desactivado por defecto por privacidad.', + discordOptions: 'Opciones avanzadas de Discord', discordTemplates: 'Plantillas de texto personalizadas', discordTemplatesDesc: 'Personaliza qué información se muestra en tu perfil de Discord. Variables: {title}, {artist}, {album}', discordTemplateDetails: 'Línea principal (details)', diff --git a/src/locales/fr.ts b/src/locales/fr.ts index 26e56994..5a354f93 100644 --- a/src/locales/fr.ts +++ b/src/locales/fr.ts @@ -538,6 +538,7 @@ export const frTranslation = { discordRichPresenceDesc: 'Affiche le titre en cours de lecture sur votre profil Discord. Discord doit être ouvert.', discordAppleCovers: 'Récupérer les pochettes via Apple Music pour Discord', discordAppleCoversDesc: 'Envoie le nom de l\'artiste et de l\'album à l\'API Apple pour trouver une pochette pour votre profil Discord. Désactivé par défaut pour des raisons de confidentialité.', + discordOptions: 'Options Discord avancées', discordTemplates: 'Modèles de texte personnalisés', discordTemplatesDesc: 'Personnalisez les informations affichées sur votre profil Discord. Variables : {title}, {artist}, {album}', discordTemplateDetails: 'Ligne principale (details)', diff --git a/src/locales/nb.ts b/src/locales/nb.ts index e97a0893..9b942eaf 100644 --- a/src/locales/nb.ts +++ b/src/locales/nb.ts @@ -537,6 +537,7 @@ export const nbTranslation = { discordRichPresenceDesc: 'Vis sporet som spilles i din Discord-profil. Krever at Discord kjører.', discordAppleCovers: 'Hent covere fra Apple Music til Discord', discordAppleCoversDesc: 'Sender artist- og albumnavn til Apples søke-API for å finne cover til Discord-profilen din. Deaktivert som standard av personvernhensyn.', + discordOptions: 'Avanserte Discord-alternativer', discordTemplates: 'Egendefinerte tekstmaler', discordTemplatesDesc: 'Tilpass hvilken informasjon som vises på Discord-profilen din. Variabler: {title}, {artist}, {album}', discordTemplateDetails: 'Primær linje (details)', diff --git a/src/locales/nl.ts b/src/locales/nl.ts index 6ff9e76d..d7aefccc 100644 --- a/src/locales/nl.ts +++ b/src/locales/nl.ts @@ -537,6 +537,7 @@ export const nlTranslation = { discordRichPresenceDesc: 'Toont het huidige nummer op je Discord-profiel. Discord moet daarvoor geopend zijn.', discordAppleCovers: 'Hoezen ophalen via Apple Music voor Discord', discordAppleCoversDesc: 'Stuurt artiest- en albumnaam naar de Apple-zoek-API om een hoes te vinden voor je Discord-profiel. Standaard uitgeschakeld vanwege privacy.', + discordOptions: 'Geavanceerde Discord-opties', discordTemplates: 'Aangepaste tekstsjablonen', discordTemplatesDesc: 'Pas aan welke informatie wordt weergegeven op je Discord-profiel. Variabelen: {title}, {artist}, {album}', discordTemplateDetails: 'Primaire regel (details)', diff --git a/src/locales/ru.ts b/src/locales/ru.ts index f41a46a3..52c9fa2e 100644 --- a/src/locales/ru.ts +++ b/src/locales/ru.ts @@ -560,6 +560,7 @@ export const ruTranslation = { 'Показывать текущий трек в профиле и статусе Discord. Нужен запущенный клиент Discord.', discordAppleCovers: 'Загружать обложки через Apple Music для Discord', discordAppleCoversDesc: 'Отправляет имя исполнителя и альбома в Apple Music API для поиска обложки для профиля Discord. По умолчанию отключено из соображений конфиденциальности.', + discordOptions: 'Расширенные параметры Discord', discordTemplates: 'Пользовательские шаблоны текста', discordTemplatesDesc: 'Настройте, какая информация отображается в профиле Discord. Переменные: {title}, {artist}, {album}', discordTemplateDetails: 'Основная строка (details)', diff --git a/src/locales/zh.ts b/src/locales/zh.ts index 81428dd6..d8702dee 100644 --- a/src/locales/zh.ts +++ b/src/locales/zh.ts @@ -533,6 +533,7 @@ export const zhTranslation = { discordRichPresenceDesc: '在 Discord 个人资料上显示当前播放的曲目。需要 Discord 处于运行状态。', discordAppleCovers: '通过 Apple Music 为 Discord 获取封面', discordAppleCoversDesc: '将艺术家和专辑名称发送至 Apple 搜索 API,以为 Discord 个人资料查找封面图片。出于隐私考虑,默认禁用。', + discordOptions: 'Discord 高级选项', discordTemplates: '自定义文本模板', discordTemplatesDesc: '自定义在 Discord 个人资料上显示的信息。变量:{title}, {artist}, {album}', discordTemplateDetails: '主行 (details)', diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx index c001a46a..a4fd5bd4 100644 --- a/src/pages/Settings.tsx +++ b/src/pages/Settings.tsx @@ -412,6 +412,7 @@ export default function Settings() { const [clearing, setClearing] = useState(false); const [contributorsOpen, setContributorsOpen] = useState(false); const [fontPickerOpen, setFontPickerOpen] = useState(false); + const [discordOptionsOpen, setDiscordOptionsOpen] = useState(false); useEffect(() => { if (!auth.lastfmSessionKey || !auth.lastfmUsername) { setLfmUserInfo(null); return; } @@ -1159,51 +1160,80 @@ export default function Settings() { {auth.discordRichPresence && ( <> -
-
-
-
{t('settings.discordAppleCovers')}
-
{t('settings.discordAppleCoversDesc')}
-
- -
-
{t('settings.discordTemplates')}
-
{t('settings.discordTemplatesDesc')}
-
- - auth.setDiscordTemplateDetails(e.target.value)} - placeholder="{artist} - {title}" +
-
- - auth.setDiscordTemplateState(e.target.value)} - placeholder="{album}" - /> -
-
- - auth.setDiscordTemplateLargeText(e.target.value)} - placeholder="{album}" - /> -
+
+ {t('settings.discordOptions')} +
+ + {discordOptionsOpen && ( +
+
+
+
{t('settings.discordAppleCovers')}
+
{t('settings.discordAppleCoversDesc')}
+
+ +
+
+
+
{t('settings.discordTemplates')}
+
{t('settings.discordTemplatesDesc')}
+
+ + auth.setDiscordTemplateDetails(e.target.value)} + placeholder="{artist} - {title}" + /> +
+
+ + auth.setDiscordTemplateState(e.target.value)} + placeholder="{album}" + /> +
+
+ + auth.setDiscordTemplateLargeText(e.target.value)} + placeholder="{album}" + /> +
+
+
+ )}
)}