fix(theme): Theme aus den wirksamen statt den rohen Einstellungen anwenden

initCalendar baute mit mergeEffective() korrekt die wirksamen Einstellungen
zusammen, benutzte danach aber die rohe Server-Antwort zum Anwenden:

  applyTheme(settings) statt applyTheme(state.settings)

Fuer jede Einstellung, deren Sync-Flag aus ist, ist der wirksame Wert laut
effectiveValue() der browser-lokale — der wurde damit stillschweigend
ignoriert. Die Einstellungstabelle zeigte also einen Wert an, waehrend die
Oberflaeche einen anderen benutzte.

Derselbe Fehler bei setLang: die Zeile mit dem wirksamen Wert wurde wenige
Zeilen spaeter vom rohen Server-Wert ueberschrieben. Die doppelte Zuweisung
faellt weg, die richtige bleibt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-01 11:34:55 +02:00
co-authored by Claude Opus 5
parent 6b7317b4e0
commit aaecfc435d
3 changed files with 7 additions and 5 deletions
+5 -3
View File
@@ -153,9 +153,11 @@ export async function initCalendar() {
// initial fetchAndRender) so a reload reopens settings instead of stripping it. // initial fetchAndRender) so a reload reopens settings instead of stripping it.
uiSettingsOpen = urlState.settings === true; uiSettingsOpen = urlState.settings === true;
setLang(settings.language || 'de'); // state.settings, not the raw server response: for any key whose sync flag
applyTheme(settings); // is off the effective value is this browser's local one, and using the raw
applyFavicon(settings.primary_color); // value here silently ignored it (and clobbered the setLang above).
applyTheme(state.settings);
applyFavicon(state.settings.primary_color);
updateViewButtons(); updateViewButtons();
renderCalendarList(); renderCalendarList();
renderMiniCal(); renderMiniCal();
+1 -1
View File
@@ -1,2 +1,2 @@
// Increment APP_VERSION with every code change // Increment APP_VERSION with every code change
export const APP_VERSION = 'v95'; export const APP_VERSION = 'v96';
+1 -1
View File
@@ -7,7 +7,7 @@
// the entry HTML / version files). New releases take effect on the next // the entry HTML / version files). New releases take effect on the next
// reload, no manual SW unregister required. // reload, no manual SW unregister required.
const CACHE_VERSION = 'calendarr-v41'; const CACHE_VERSION = 'calendarr-v42';
const OFFLINE_SHELL = ['/', '/index.html']; const OFFLINE_SHELL = ['/', '/index.html'];
self.addEventListener('install', event => { self.addEventListener('install', event => {