Fix config.js: weatherSim was inserted into window.THEMES by mistake

My previous patch used rfind('};') which landed on the THEMES
block's closer instead of CONFIG's. Moved weatherSim + weatherSimInterval
into CONFIG and cleaned the duplicated block. Rebuild docker so
the corrected file replaces the broken one.
This commit is contained in:
Richard Zink committed 2026-10-07 19:47:13 +02:00
1 parent 1bf1b708e8
commit ba7b90d7d9
1 file changed
+46 -84
+46 -84
View File
@@ -1,90 +1,60 @@
/* Application configuration
/*
* Wallpaper background config.
*
* debug - Show debug panel (0/1)
* Properties:
* theme - Active palette theme. One of the keys in window.THEMES
* (default 'ash'). The matching CSS file is loaded at
* startup.
* language - UI / i18n language code (default 'en').
* timeFormat - Moment.js-compatible format string for the clock.
* debug - If 1, the right-side debug panel is shown.
* units - Object with 'temperature' ('C' or 'F').
* renderer - Background renderer: 'vanta' (default, GPU 3D volumetric
* raymarched clouds via three.js), 'clouds2d' (lightweight
* WebGL fragment shader, 2D fBm scrolling), or 'clouds3d'
* (volumetric raymarcher with camera fly-through).
* location - Geographic coordinates for sun/moon calculations. Used
* by SunCalc (https://github.com/mourner/suncalc). Object
* with 'lat' (latitude, -90 to +90) and 'lon' (longitude,
* -180 to +180). Positive lat = north, positive lon = east.
* Optionally add 'label' (string) to override the
* reverse-geocoded city name.
* weatherSim - If true, ignore open-meteo and cycle through
* ['sunny','cloudy','stormy','night'] automatically every
* weatherSimInterval ms. Useful for A/B testing every
* theme without waiting on the API.
* weatherSimInterval - Sim cycle period in ms (default 30000).
*
* theme - Color palette. Pick one of the keys defined in window.THEMES
* below. To add a new theme, drop a new *.css file in the same
* directory and add an entry to window.THEMES.
*
* renderer - Background renderer: 'vanta' (default, GPU 3D volumetric
* clouds, heavy) or 'clouds2d' (lightweight 2D WebGL shader,
* very low GPU usage, similar visual style).
*
* units - Measurement units for the weather widget.
* 'metric' (°C, km/h) or 'imperial' (°F, mph)
*
* language - UI language code. Add a new language by extending
* window.TRANSLATIONS in i18n.js. English ('en') is the base;
* if a key is missing in the current language, English is used.
*
* location - Geographic coordinates for sun/moon calculations. Used
* by the SunCalc library (SunCalc.getTimes, getMoonTimes,
* getPosition). Object with 'lat' (latitude, -90 to +90)
* and 'lon' (longitude, -180 to +180). Positive lat = north,
* positive lon = east. Optionally add 'label' (string) to
* set a custom place name (skips reverse-geocoding).
*
* timeFormat - Format string for the digital clock, using strict
* ISO 8601 tokens (case-sensitive). Any other character is
* treated as a literal (including whitespace).
*
* YYYY 4-digit year (2026)
* MM month 01-12 (10) - always month
* DD day 01-31 (07)
* HH hour 00-23 (24h) (14)
* mm minute 00-59 (35) - lowercase!
* ss second 00-59 (22) - lowercase!
* sss millisecond 000-999 (456)
* a am/pm (lowercase) (pm)
* A AM/PM (uppercase) (PM)
* aaaa am/pm lowercase (pm) - long form
* AAAA AM/PM uppercase (PM) - long form
* T literal 'T'
*
* Non-standard extension tokens (localized via i18n):
* MMM month short name (Oct, Okt, Ott, ...)
* MMMM month full name (October, Oktober, ...)
* DDD weekday short name (Mon, Mo, Lu, ...)
* DDDD weekday full name (Monday, Montag, ...)
*
* Date-only forms: YYYY, YYYY-MM, YYYY-MM-DD
* Date-time forms: above + T + HH:mm, HH:mm:ss, HH:mm:ss.sss
* Any other character is a literal (incl. spaces, tabs, \n).
*
* Escape sequences (parsed in literal section):
* \n newline
* \t tab
* \\ literal backslash
*
* Note: MM is ALWAYS month (ISO). For minutes use mm (lowercase).
*
* Examples:
* 'HH:mm:ss' -> 14:35:22
* 'hh:mm:ss a' -> 02:35:22 PM
* 'YYYY-MM-DD' -> 2026-10-07
* 'YYYY-MM-DDTHH:mm:ss' -> 2026-10-07T14:35:22
* 'YYYY-MM-DDTHH:mm:ss.sss' -> 2026-10-07T14:35:22.456
* 'HH:mm:ss DDD' -> 14:35:22 Mon
* 'HH:mm:ss DDDD' -> 14:35:22 Monday
* 'HH:mm:ss MMM' -> 14:35:22 Oct
* 'HH:mm:ss MMMM' -> 14:35:22 October
* 'YYYY-MM-DD\tHH:mm:ss.sss a\n DDD MMM'
* -> 2026-10-07 14:35:22.456 PM
* Mon Oct
* Time format tokens (subset):
* YYYY 4-digit year (2026)
* YY 2-digit year (26)
* MMMM full month name (October)
* MM month with leading zero (10)
* DD day with leading zero (07)
* HH 24-hour hour with zero (18)
* hh 12-hour hour with zero (06)
* mm minute with leading zero (14)
* ss second with leading zero (25)
* a am/pm lowercase (pm) - long form
* A AM/PM uppercase (PM) - long form
*/
window.CONFIG = {
debug: 0,
theme: 'ash',
units: 'metric',
renderer: 'clouds2d', // 'vanta', 'clouds2d', or 'clouds3d'
language: 'de',
language: 'en',
timeFormat: 'DD. MMMM, YYYY ‒ HH:mm:SS',
debug: 0,
units: {
temperature: 'C'
},
renderer: 'clouds2d', // 'vanta', 'clouds2d', or 'clouds3d'
location: {
// Latitude and longitude for sun/moon calculations
// Default: Passau, Germany
lat: 48.5667,
lon: 13.4319
}
},
weatherSim: false,
weatherSimInterval: 30000,
};
// List of available themes. The key is the theme id (used in config.theme),
@@ -94,12 +64,4 @@ window.THEMES = {
'ash': 'ash.css',
'gruvbox': 'gruvbox.css',
'nord': 'nord.css'
// weatherSim - If true, ignore open-meteo and cycle through
// ['sunny', 'cloudy', 'stormy', 'night'] automatically
// every weatherSimInterval ms. Useful for testing
// every theme without waiting on the API.
// weatherSimInterval - Sim cycle period in ms (default 30000).
weatherSim: false,
weatherSimInterval: 30000,
};