diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5582843d..ba305fbb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,18 @@
### Builds after release 0.12.0
-#### Build 2111160
+#### Build 2111220
+
+- Fixed preset cycle not working from preset called by UI
+- Reintroduced permanent min. and max. cycle bounds
+
+#### Build 2111190
+
+- Changed default ESP32 LED pin from 16 to 2
+- Renamed "Running 2" to "Chase 2"
+- Renamed "Tri Chase" to "Chase 3"
+
+#### Build 2111170
- Version bump to 0.13.0-b5 "Toki"
- Improv Serial support (PR #2334)
@@ -388,6 +399,7 @@
- Added support for WESP32 ethernet board (PR #1764)
- Added Caching for main UI (PR #1704)
- Added Tetrix mode (PR #1729)
+- Removed Merry Christmas mode (use "Chase 2" - called Running 2 before 0.13.0)
- Added memory check on Bus creation
#### Build 2102050
diff --git a/readme.md b/readme.md
index 506f7de7..e7682100 100644
--- a/readme.md
+++ b/readme.md
@@ -51,7 +51,7 @@ A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control
See the [documentation on our official site](https://kno.wled.ge)!
-[On this page](https://github.com/Aircoookie/WLED/wiki/Learning-the-ropes) you can find excellent tutorials made by the community and helpful tools to help you get your new lamp up and running!
+[On this page](https://kno.wled.ge/basics/tutorials/) you can find excellent tutorials made by the community and helpful tools to help you get your new lamp up and running!
## 🖼️ Images
@@ -82,7 +82,7 @@ Any | 5v 3-pin ARGB for PC | Any PC RGB device that supports the 5v 3-pin ARGB m
## ✌️ Other
Licensed under the MIT license
-Credits [here](https://github.com/Aircoookie/WLED/wiki/Contributors-&-About)!
+Credits [here](https://kno.wled.ge/about/contributors/)!
Uses Linearicons by Perxis!
diff --git a/wled00/FX.h b/wled00/FX.h
index f74a380e..7b3bc69a 100644
--- a/wled00/FX.h
+++ b/wled00/FX.h
@@ -967,7 +967,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([
"Colorful",
"Traffic Light",
"Sweep Random",
-"Running 2@!,Width;!,!,;!",
+"Chase 2@!,Width;!,!,;!",
"Aurora",
"Stream",
"Scanner",
@@ -984,7 +984,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([
"Two Areas@!,Size;1,2,Bg;!",
"Running Dual",
"Halloween",
-"Tri Chase@!,Size;1,2,3;",
+"Chase 3@!,Size;1,2,3;",
"Tri Wipe@!,Width;1,2,3;",
"Tri Fade",
"Lightning",
diff --git a/wled00/const.h b/wled00/const.h
index a88f0a94..d7be4a03 100644
--- a/wled00/const.h
+++ b/wled00/const.h
@@ -320,8 +320,8 @@
#ifdef WLED_ENABLE_DMX
#if (LEDPIN == 2)
#undef LEDPIN
- #define LEDPIN 3
- #warning "Pin conflict compiling with DMX and LEDs on pin 2. The default LED pin has been changed to pin 3."
+ #define LEDPIN 1
+ #warning "Pin conflict compiling with DMX and LEDs on pin 2. The default LED pin has been changed to pin 1."
#endif
#endif
diff --git a/wled00/json.cpp b/wled00/json.cpp
index 54289d3f..693c3b52 100644
--- a/wled00/json.cpp
+++ b/wled00/json.cpp
@@ -355,10 +355,11 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
deletePreset(ps);
}
- if (getVal(root["ps"], &presetCycCurr, 1, 5)) { //load preset (clears state request!)
- DEBUG_PRINTLN(F("Applying preset"));
+ ps = presetCycCurr;
+ if (getVal(root["ps"], &ps, presetCycMin, presetCycMax)) { //load preset (clears state request!)
if (!presetId) unloadPlaylist(); //stop playlist if preset changed manually
- applyPreset(presetCycCurr, callMode);
+ if (ps >= presetCycMin && ps <= presetCycMax) presetCycCurr = ps;
+ applyPreset(ps, callMode);
return stateResponse;
}
diff --git a/wled00/set.cpp b/wled00/set.cpp
index a47a27e7..e37653dd 100644
--- a/wled00/set.cpp
+++ b/wled00/set.cpp
@@ -538,6 +538,7 @@ void parseNumber(const char* str, byte* val, byte minv, byte maxv)
const char* str2 = strchr(str,'~'); //min/max range (for preset cycle, e.g. "1~5~")
if (str2) {
byte p2 = atoi(str2+1);
+ presetCycMin = p1; presetCycMax = p2;
while (isdigit((str2+1)[0])) str2++;
parseNumber(str2+1, val, p1, p2);
} else {
@@ -646,17 +647,14 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply)
pos = req.indexOf(F("PS=")); //saves current in preset
if (pos > 0) savePreset(getNumVal(&req, pos));
- byte presetCycleMin = 1;
- byte presetCycleMax = 5;
-
pos = req.indexOf(F("P1=")); //sets first preset for cycle
- if (pos > 0) presetCycleMin = getNumVal(&req, pos);
+ if (pos > 0) presetCycMin = getNumVal(&req, pos);
pos = req.indexOf(F("P2=")); //sets last preset for cycle
- if (pos > 0) presetCycleMax = getNumVal(&req, pos);
+ if (pos > 0) presetCycMax = getNumVal(&req, pos);
//apply preset
- if (updateVal(&req, "PL=", &presetCycCurr, presetCycleMin, presetCycleMax)) {
+ if (updateVal(&req, "PL=", &presetCycCurr, presetCycMin, presetCycMax)) {
applyPreset(presetCycCurr);
}
diff --git a/wled00/wled.h b/wled00/wled.h
index 1b2c4b87..bd51e1b8 100644
--- a/wled00/wled.h
+++ b/wled00/wled.h
@@ -8,7 +8,7 @@
*/
// version code in format yymmddb (b = daily build)
-#define VERSION 2111211
+#define VERSION 2111220
//uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG
@@ -520,6 +520,8 @@ WLED_GLOBAL byte improvError _INIT(0);
WLED_GLOBAL int16_t currentPlaylist _INIT(-1);
//still used for "PL=~" HTTP API command
WLED_GLOBAL byte presetCycCurr _INIT(0);
+WLED_GLOBAL byte presetCycMin _INIT(1);
+WLED_GLOBAL byte presetCycMax _INIT(5);
// realtime
WLED_GLOBAL byte realtimeMode _INIT(REALTIME_MODE_INACTIVE);