diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp
index 4ac4912d5..83512be8f 100644
--- a/wled00/FX_fcn.cpp
+++ b/wled00/FX_fcn.cpp
@@ -1366,11 +1366,17 @@ void WS2812FX::setTransitionMode(bool t)
void WS2812FX::load_gradient_palette(uint8_t index)
{
+ // NOTE: due to constant execution (in every effect update) of this code
+ // if loading from FS is requested it will produce excessive flickering
+ // loading of palette into RAM from FS should be optimised in such case
+ // (it is mandatory to load palettes in each service() as each segment can
+ // have its own palette)
+
byte tcp[72]; //support gradient palettes with up to 18 entries
- if (index>127) {
+ if (index>114) {
char fileName[32];
strcpy_P(fileName, PSTR("/palette"));
- if (index>128) sprintf(fileName +7, "%d", index-127);
+ sprintf(fileName +8, "%d", index-115); // palette ID == 128
strcat(fileName, ".json");
if (WLED_FS.exists(fileName)) {
@@ -1392,7 +1398,6 @@ void WS2812FX::load_gradient_palette(uint8_t index)
targetPalette.loadDynamicGradientPalette(tcp);
}
}
- releaseJSONBufferLock();
}
} else {
byte i = constrain(index, 0, GRADIENT_PALETTE_COUNT -1);
diff --git a/wled00/data/index.css b/wled00/data/index.css
index 776d866a9..756904852 100644
--- a/wled00/data/index.css
+++ b/wled00/data/index.css
@@ -393,9 +393,9 @@ button {
border-radius: 26px;
height: 26px;
margin: 0 auto; /* 8px if you want space */
- padding: 8px;
+ padding: 8px 2px;
position: relative;
- width: 260px;
+ /*width: 260px;*/
/*transition: opacity 1s;*/
/*opacity: 1;*/
}
@@ -1204,7 +1204,7 @@ TD .checkmark, TD .radiomark {
.filter .fchkl {
display: inline-block;
- min-width: 1em;
+ min-width: 0.7em;
padding: 4px 4px 4px 32px;
text-align: left;
line-height: 24px;
diff --git a/wled00/data/index.htm b/wled00/data/index.htm
index d5791cb0b..df35012d2 100644
--- a/wled00/data/index.htm
+++ b/wled00/data/index.htm
@@ -222,6 +222,10 @@
+