From 7865985eebf667a6258a40c788c8253a087e04c4 Mon Sep 17 00:00:00 2001 From: Arcitec <38923130+Arcitec@users.noreply.github.com> Date: Sun, 17 Aug 2025 21:47:33 +0200 Subject: [PATCH] Make version information consistent across update interfaces The duplication of logic and the formatting differences between the "OTA Updates" and "Security & Updates" pages made it very difficult to find the exact version details. With this change, both update-pages now share the same consistent and detailed formatting, making it easy for users to identify which exact version and binary of WLED they've installed. The version format has also been improved to make it much easier to understand. --- wled00/data/settings_sec.htm | 2 +- wled00/data/update.htm | 2 +- wled00/xml.cpp | 35 ++++++++++++++++++++++------------- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/wled00/data/settings_sec.htm b/wled00/data/settings_sec.htm index 7a92c27b..15104baa 100644 --- a/wled00/data/settings_sec.htm +++ b/wled00/data/settings_sec.htm @@ -76,7 +76,7 @@ A huge thank you to everyone who helped me create WLED!

(c) 2016-2024 Christian Schwinne
Licensed under the EUPL v1.2 license

- Server message: Response error!
+ Installed version: WLED ##VERSION##
diff --git a/wled00/data/update.htm b/wled00/data/update.htm index 8b39b1cc..ef923920 100644 --- a/wled00/data/update.htm +++ b/wled00/data/update.htm @@ -27,7 +27,7 @@

WLED Software Update

- Installed version: ##VERSION##
+ Installed version: WLED ##VERSION##
Download the latest binary:
diff --git a/wled00/xml.cpp b/wled00/xml.cpp index d6f2bf2d..40bd9924 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -26,7 +26,8 @@ void XML_response(Print& dest) ); } -static void extractPin(Print& settingsScript, const JsonObject &obj, const char *key) { +static void extractPin(Print& settingsScript, const JsonObject &obj, const char *key) +{ if (obj[key].is()) { JsonArray pins = obj[key].as(); for (JsonVariant pv : pins) { @@ -37,6 +38,22 @@ static void extractPin(Print& settingsScript, const JsonObject &obj, const char } } +void fillWLEDVersion(char *buf, size_t len) +{ + if (!buf || len == 0) return; + + snprintf_P(buf,len,PSTR("WLED %s (%d)
\\\"%s\\\"
(Processor: %s)"), + versionString, + VERSION, + releaseString, + #if defined(ARDUINO_ARCH_ESP32) + ESP.getChipModel() + #else + "ESP8266" + #endif + ); +} + // print used pins by scanning JsonObject (1 level deep) static void fillUMPins(Print& settingsScript, const JsonObject &mods) { @@ -72,7 +89,8 @@ static void fillUMPins(Print& settingsScript, const JsonObject &mods) } } -void appendGPIOinfo(Print& settingsScript) { +void appendGPIOinfo(Print& settingsScript) +{ settingsScript.print(F("d.um_p=[-1")); // has to have 1 element if (i2c_sda > -1 && i2c_scl > -1) { settingsScript.printf_P(PSTR(",%d,%d"), i2c_sda, i2c_scl); @@ -594,7 +612,7 @@ void getSettingsJS(byte subPage, Print& settingsScript) printSetFormCheckbox(settingsScript,PSTR("AO"),aOtaEnabled); printSetFormCheckbox(settingsScript,PSTR("SU"),otaSameSubnet); char tmp_buf[128]; - snprintf_P(tmp_buf,sizeof(tmp_buf),PSTR("WLED %s (build %d)"),versionString,VERSION); + fillWLEDVersion(tmp_buf,sizeof(tmp_buf)); printSetClassElementHTML(settingsScript,PSTR("sip"),0,tmp_buf); settingsScript.printf_P(PSTR("sd=\"%s\";"), serverDescription); //hide settings if not compiled @@ -656,16 +674,7 @@ void getSettingsJS(byte subPage, Print& settingsScript) if (subPage == SUBPAGE_UPDATE) // update { char tmp_buf[128]; - snprintf_P(tmp_buf,sizeof(tmp_buf),PSTR("WLED %s
%s
(%s build %d)"), - versionString, - releaseString, - #if defined(ARDUINO_ARCH_ESP32) - ESP.getChipModel(), - #else - "esp8266", - #endif - VERSION); - + fillWLEDVersion(tmp_buf,sizeof(tmp_buf)); printSetClassElementHTML(settingsScript,PSTR("sip"),0,tmp_buf); #ifndef ARDUINO_ARCH_ESP32 settingsScript.print(F("toggle('rev');")); // hide revert button on ESP8266