feat(themes): add follow-system mode to the theme scheduler (#1163)

* feat(themes): add follow-system mode to the theme scheduler

The theme scheduler can now switch the day/night theme pair by the OS
light/dark preference instead of a clock schedule. A segmented control
picks the trigger; in system mode the time inputs are hidden and the two
theme pickers read as Light/Dark.

The OS theme is read via the native Tauri window theme API (theme() +
onThemeChanged) rather than the Web prefers-color-scheme media query,
which is unreliable through WebKitGTK on Linux. Live updates land
instantly where the platform forwards them; on Linux setups that don't,
a hint notes the change applies after an app restart.

* docs(changelog): add follow-system theme mode entry (#1163)

CHANGELOG Added entry, contributor credit and What's New highlight for the
theme scheduler's new system-theme mode.
This commit is contained in:
Psychotoxical
2026-06-23 12:13:26 +02:00
committed by GitHub
parent 78a177b1bc
commit c7d76af790
20 changed files with 356 additions and 51 deletions
+7 -1
View File
@@ -650,12 +650,18 @@ export const settings = {
seekbarRetrotape: 'Retro-Band',
themeSchedulerTitle: 'Theme-Zeitplan',
themeSchedulerEnable: 'Theme-Zeitplan aktivieren',
themeSchedulerEnableSub: 'Wechselt automatisch zwischen zwei Themes basierend auf der Uhrzeit',
themeSchedulerEnableSub: 'Wechselt automatisch zwischen zwei Themes nach Uhrzeit oder System-Theme',
themeSchedulerDayTheme: 'Tages-Theme',
themeSchedulerDayStart: 'Tag beginnt um',
themeSchedulerNightTheme: 'Nacht-Theme',
themeSchedulerNightStart: 'Nacht beginnt um',
themeSchedulerActiveHint: 'Theme-Zeitplan ist aktiv - Themes werden automatisch gewechselt.',
themeSchedulerModeLabel: 'Wechseln nach',
themeSchedulerModeTime: 'Uhrzeit',
themeSchedulerModeSystem: 'System-Theme',
themeSchedulerLightTheme: 'Helles Theme',
themeSchedulerDarkTheme: 'Dunkles Theme',
themeSchedulerSystemRestartHint: 'Ein Wechsel des System-Designs (hell/dunkel) wird erst nach einem Neustart der App übernommen.',
visualOptionsTitle: 'Visuelle Optionen',
coverArtBackground: 'Cover-Hintergrund',
coverArtBackgroundSub: 'Zeigt verschwommenes Cover als Hintergrund in Album/Playlist-Kopfzeilen',
+7 -1
View File
@@ -717,12 +717,18 @@ export const settings = {
seekbarRetrotape: 'Retro Tape',
themeSchedulerTitle: 'Auto-Switch Theme',
themeSchedulerEnable: 'Enable Theme Scheduler',
themeSchedulerEnableSub: 'Automatically switch between two themes based on the time of day',
themeSchedulerEnableSub: 'Automatically switch between two themes based on the time of day or your system theme',
themeSchedulerDayTheme: 'Day Theme',
themeSchedulerDayStart: 'Day Starts At',
themeSchedulerNightTheme: 'Night Theme',
themeSchedulerNightStart: 'Night Starts At',
themeSchedulerActiveHint: 'Theme Scheduler is active - theme changes are managed automatically.',
themeSchedulerModeLabel: 'Switch Based On',
themeSchedulerModeTime: 'Time of Day',
themeSchedulerModeSystem: 'System Theme',
themeSchedulerLightTheme: 'Light Theme',
themeSchedulerDarkTheme: 'Dark Theme',
themeSchedulerSystemRestartHint: 'Changing your system light/dark setting takes effect after restarting the app.',
visualOptionsTitle: 'Visual Options',
coverArtBackground: 'Cover Art Background',
coverArtBackgroundSub: 'Show blurred cover art as background in album/playlist headers',
+7 -1
View File
@@ -649,12 +649,18 @@ export const settings = {
seekbarRetrotape: 'Cinta Retro',
themeSchedulerTitle: 'Cambio Automático de Tema',
themeSchedulerEnable: 'Habilitar Programador de Temas',
themeSchedulerEnableSub: 'Cambia automáticamente entre dos temas según la hora del día',
themeSchedulerEnableSub: 'Cambia automáticamente entre dos temas según la hora del día o el tema del sistema',
themeSchedulerDayTheme: 'Tema de Día',
themeSchedulerDayStart: 'Comienza de Día A las',
themeSchedulerNightTheme: 'Tema de Noche',
themeSchedulerNightStart: 'Comienza de Noche A las',
themeSchedulerActiveHint: 'El Programador de Temas está activo — los cambios de tema se manejan automáticamente.',
themeSchedulerModeLabel: 'Cambiar según',
themeSchedulerModeTime: 'Hora del día',
themeSchedulerModeSystem: 'Tema del sistema',
themeSchedulerLightTheme: 'Tema claro',
themeSchedulerDarkTheme: 'Tema oscuro',
themeSchedulerSystemRestartHint: 'Cambiar el ajuste claro/oscuro del sistema se aplica tras reiniciar la aplicación.',
visualOptionsTitle: 'Opciones Visuales',
coverArtBackground: 'Fondo de Portada',
coverArtBackgroundSub: 'Mostrar portada desenfocada como fondo en encabezados de álbumes y listas de reproducción',
+7 -1
View File
@@ -637,12 +637,18 @@ export const settings = {
seekbarRetrotape: 'Bande rétro',
themeSchedulerTitle: 'Planificateur de thème',
themeSchedulerEnable: 'Activer le planificateur de thème',
themeSchedulerEnableSub: 'Bascule automatiquement entre deux thèmes selon l\'heure',
themeSchedulerEnableSub: 'Bascule automatiquement entre deux thèmes selon l\'heure ou le thème du système',
themeSchedulerDayTheme: 'Thème de jour',
themeSchedulerDayStart: 'Début du jour',
themeSchedulerNightTheme: 'Thème de nuit',
themeSchedulerNightStart: 'Début de la nuit',
themeSchedulerActiveHint: 'Le planificateur de thème est actif - les thèmes changent automatiquement.',
themeSchedulerModeLabel: 'Basculer selon',
themeSchedulerModeTime: 'Heure',
themeSchedulerModeSystem: 'Thème du système',
themeSchedulerLightTheme: 'Thème clair',
themeSchedulerDarkTheme: 'Thème sombre',
themeSchedulerSystemRestartHint: 'Le changement du thème clair/sombre du système prend effet après le redémarrage de l\'application.',
visualOptionsTitle: 'Options Visuelles',
coverArtBackground: "Fond d'Art de Poche",
coverArtBackgroundSub: "Afficher la pochette floutée comme fond dans les en-têtes d'albums et de playlists",
+7 -1
View File
@@ -717,12 +717,18 @@ export const settings = {
seekbarRetrotape: 'Retro szalag',
themeSchedulerTitle: 'Automatikus témaváltás',
themeSchedulerEnable: 'Témaütemező engedélyezése',
themeSchedulerEnableSub: 'Automatikus váltás két téma között a napszak alapján',
themeSchedulerEnableSub: 'Automatikus váltás két téma között a napszak vagy a rendszertéma alapján',
themeSchedulerDayTheme: 'Nappali téma',
themeSchedulerDayStart: 'A nappal kezdődik',
themeSchedulerNightTheme: 'Éjszakai téma',
themeSchedulerNightStart: 'Az éjszaka kezdődik',
themeSchedulerActiveHint: 'A témaütemező aktív a témaváltások automatikusan kezeltek.',
themeSchedulerModeLabel: 'Váltás alapja',
themeSchedulerModeTime: 'Napszak',
themeSchedulerModeSystem: 'Rendszertéma',
themeSchedulerLightTheme: 'Világos téma',
themeSchedulerDarkTheme: 'Sötét téma',
themeSchedulerSystemRestartHint: 'A rendszer világos/sötét beállításának módosítása az alkalmazás újraindítása után lép életbe.',
visualOptionsTitle: 'Vizuális beállítások',
coverArtBackground: 'Borító háttér',
coverArtBackgroundSub: 'Elmosott borító megjelenítése háttérként az album/lejátszási lista fejlécekben',
+7 -1
View File
@@ -711,12 +711,18 @@ export const settings = {
seekbarRetrotape: 'Retro Tape',
themeSchedulerTitle: 'テーマ自動切り替え',
themeSchedulerEnable: 'テーマスケジューラーを有効化',
themeSchedulerEnableSub: '時刻に基づいて 2 つのテーマを自動で切り替えます',
themeSchedulerEnableSub: '時刻またはシステムテーマに基づいて 2 つのテーマを自動で切り替えます',
themeSchedulerDayTheme: '昼テーマ',
themeSchedulerDayStart: '昼の開始時刻',
themeSchedulerNightTheme: '夜テーマ',
themeSchedulerNightStart: '夜の開始時刻',
themeSchedulerActiveHint: 'テーマスケジューラーが有効です。テーマ変更は自動で管理されます。',
themeSchedulerModeLabel: '切り替え基準',
themeSchedulerModeTime: '時刻',
themeSchedulerModeSystem: 'システムテーマ',
themeSchedulerLightTheme: 'ライトテーマ',
themeSchedulerDarkTheme: 'ダークテーマ',
themeSchedulerSystemRestartHint: 'システムのライト/ダーク設定の変更は、アプリの再起動後に反映されます。',
visualOptionsTitle: '表示オプション',
coverArtBackground: 'カバーアート背景',
coverArtBackgroundSub: 'アルバム/プレイリストヘッダーの背景にぼかしたカバーアートを表示',
+7 -1
View File
@@ -636,12 +636,18 @@ export const settings = {
seekbarRetrotape: 'Retrotape',
themeSchedulerTitle: 'Tidsplanlagt tema',
themeSchedulerEnable: 'Aktiver temaplanlegger',
themeSchedulerEnableSub: 'Bytter automatisk mellom to temaer basert på tidspunkt',
themeSchedulerEnableSub: 'Bytter automatisk mellom to temaer basert på tidspunkt eller systemtemaet',
themeSchedulerDayTheme: 'Dagtema',
themeSchedulerDayStart: 'Dag starter kl.',
themeSchedulerNightTheme: 'Natttema',
themeSchedulerNightStart: 'Natt starter kl.',
themeSchedulerActiveHint: 'Temaplanlegger er aktiv - temaer byttes automatisk.',
themeSchedulerModeLabel: 'Bytt basert på',
themeSchedulerModeTime: 'Tidspunkt',
themeSchedulerModeSystem: 'Systemtema',
themeSchedulerLightTheme: 'Lyst tema',
themeSchedulerDarkTheme: 'Mørkt tema',
themeSchedulerSystemRestartHint: 'Endring av systemets lys/mørk-innstilling trer i kraft etter omstart av appen.',
visualOptionsTitle: 'Visuelle Alternativer',
coverArtBackground: 'Cover-bakgrunn',
coverArtBackgroundSub: 'Vis uskarpt cover som bakgrunn i album/playlist-overskrifter',
+7 -1
View File
@@ -637,12 +637,18 @@ export const settings = {
seekbarRetrotape: 'Retrotape',
themeSchedulerTitle: 'Thema-planner',
themeSchedulerEnable: 'Thema-planner inschakelen',
themeSchedulerEnableSub: 'Schakelt automatisch tussen twee thema\'s op basis van de tijd',
themeSchedulerEnableSub: 'Schakelt automatisch tussen twee thema\'s op basis van de tijd of je systeemthema',
themeSchedulerDayTheme: 'Dagthema',
themeSchedulerDayStart: 'Dag begint om',
themeSchedulerNightTheme: 'Nachtthema',
themeSchedulerNightStart: 'Nacht begint om',
themeSchedulerActiveHint: "Thema-planner is actief - thema's worden automatisch gewisseld.",
themeSchedulerModeLabel: 'Wisselen op basis van',
themeSchedulerModeTime: 'Tijd van de dag',
themeSchedulerModeSystem: 'Systeemthema',
themeSchedulerLightTheme: 'Licht thema',
themeSchedulerDarkTheme: 'Donker thema',
themeSchedulerSystemRestartHint: 'Het wijzigen van de licht/donker-instelling van je systeem wordt pas na het herstarten van de app toegepast.',
visualOptionsTitle: 'Visuele Opties',
coverArtBackground: 'Cover Achtergrond',
coverArtBackgroundSub: 'Toon vervaagde cover als achtergrond in album/playlist headers',
+7 -1
View File
@@ -652,12 +652,18 @@ export const settings = {
seekbarRetrotape: 'Bandă Retro',
themeSchedulerTitle: 'Schimbă Tema automat',
themeSchedulerEnable: 'Pornește temele programate',
themeSchedulerEnableSub: 'Schimbă automat între două teme pe baza orei din zi',
themeSchedulerEnableSub: 'Schimbă automat între două teme în funcție de ora din zi sau tema sistemului',
themeSchedulerDayTheme: 'Temă de zi',
themeSchedulerDayStart: 'Ziua începe la',
themeSchedulerNightTheme: 'Temă de noapte',
themeSchedulerNightStart: 'Noaptea începe la',
themeSchedulerActiveHint: 'Temele programate sunt active - aceste schimbări de teme sunt gestionate automat.',
themeSchedulerModeLabel: 'Comută în funcție de',
themeSchedulerModeTime: 'Ora din zi',
themeSchedulerModeSystem: 'Tema sistemului',
themeSchedulerLightTheme: 'Temă luminoasă',
themeSchedulerDarkTheme: 'Temă întunecată',
themeSchedulerSystemRestartHint: 'Schimbarea setării luminos/întunecat a sistemului are efect după repornirea aplicației.',
visualOptionsTitle: 'Opțiuni vizuale',
coverArtBackground: 'Arta de fundal a copertei',
coverArtBackgroundSub: 'Arată arta de copertă blurată ca fundal în antetele albumelor/playlisturilor',
+7 -1
View File
@@ -737,12 +737,18 @@ export const settings = {
seekbarRetrotape: 'Ретро-лента',
themeSchedulerTitle: 'Расписание тем',
themeSchedulerEnable: 'Включить расписание тем',
themeSchedulerEnableSub: 'Автоматически переключается между двумя темами в зависимости от времени суток',
themeSchedulerEnableSub: 'Автоматически переключается между двумя темами в зависимости от времени суток или системной темы',
themeSchedulerDayTheme: 'Дневная тема',
themeSchedulerDayStart: 'День начинается в',
themeSchedulerNightTheme: 'Ночная тема',
themeSchedulerNightStart: 'Ночь начинается в',
themeSchedulerActiveHint: 'Расписание тем активно - темы переключаются автоматически.',
themeSchedulerModeLabel: 'Переключать по',
themeSchedulerModeTime: 'Времени суток',
themeSchedulerModeSystem: 'Системной теме',
themeSchedulerLightTheme: 'Светлая тема',
themeSchedulerDarkTheme: 'Тёмная тема',
themeSchedulerSystemRestartHint: 'Изменение светлой/тёмной настройки системы вступит в силу после перезапуска приложения.',
visualOptionsTitle: 'Визуальные Настройки',
coverArtBackground: 'Фон Обложки',
coverArtBackgroundSub: 'Показывать размытую обложку как фон в заголовках альбомов и плейлистов',
+7 -1
View File
@@ -636,12 +636,18 @@ export const settings = {
seekbarRetrotape: '复古磁带',
themeSchedulerTitle: '主题定时切换',
themeSchedulerEnable: '启用主题定时器',
themeSchedulerEnableSub: '根据一天中的时间自动在两个主题之间切换',
themeSchedulerEnableSub: '根据一天中的时间或系统主题自动在两个主题之间切换',
themeSchedulerDayTheme: '白天主题',
themeSchedulerDayStart: '白天开始时间',
themeSchedulerNightTheme: '夜晚主题',
themeSchedulerNightStart: '夜晚开始时间',
themeSchedulerActiveHint: '主题定时器已启用 - 主题将自动切换。',
themeSchedulerModeLabel: '切换依据',
themeSchedulerModeTime: '时间',
themeSchedulerModeSystem: '系统主题',
themeSchedulerLightTheme: '浅色主题',
themeSchedulerDarkTheme: '深色主题',
themeSchedulerSystemRestartHint: '更改系统的浅色/深色设置需重启应用后生效。',
visualOptionsTitle: '视觉选项',
coverArtBackground: '封面背景',
coverArtBackgroundSub: '在专辑/播放列表标题中显示模糊的封面作为背景',