Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Palettes: Bad performance on 0.14.* and later #3978

Closed
1 task done
jw2013 opened this issue May 13, 2024 · 40 comments
Closed
1 task done

Palettes: Bad performance on 0.14.* and later #3978

jw2013 opened this issue May 13, 2024 · 40 comments
Labels
bug fixed in source This issue is unsolved in the latest release but fixed in master workaround The issue contains a workaround

Comments

@jw2013
Copy link

jw2013 commented May 13, 2024

What happened?

I discovered, that previous WLED binaries on ESP8266 were running at 80 MHz instead of 160 MHz.
Using it a lot, so I tested the newer _160 releases for my d1-mini's, but they were actually much slower!
String with 600 LEDs (WS2815) was now running at 13 FPS, instead of the 20 FPS using e.g. the 0.13.3 release.

So I curiously compiled 0.13.3 using board_build.f_cpu = 160000000L, and performance went up to 25 FPS. Nice!

But why do the new releases perform so badly? I compiled basically all 0.14.* sources, and discovered that performance went downhill going from 0.14.1-b2 to 0.14.1-b3. Only real code change here was in json.cpp, and that one indeed causes the performance issue.

To Reproduce Bug

Install firmware 0.14.1-b2 and 0.14.1-b3 to compare.
Setup LEDs with power limiter (WS2815), 600 LEDs (WS281x), Effect Glitter. Check FPS in info.

Expected Behavior

Expected to keep the nice FPS rate.

Install Method

Self-Compiled

What version of WLED?

WLED 0.14.1-b2 and WLED-0.14.1-b3

Which microcontroller/board are you seeing the problem on?

ESP8266

Relevant log/trace output

No response

Anything else?

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct
@jw2013 jw2013 added the bug label May 13, 2024
@blazoncek blazoncek added the cannot reproduce Developers are not able reproduce. Might be fixed already, or report is missing important details label May 14, 2024
@jw2013
Copy link
Author

jw2013 commented May 14, 2024

@blazoncek , why did you add the "cannot reproduce" label? It is super simple to reproduce this!
For your convenience, please find attached example cfg.json and presets.json files.

wled_presets.json
wled_cfg.json

600 LEDs, WS281X, using Glitter effect, on a regular ESP8266EX D1 mini module.

Using the release binaries provided here, I get the following results:

WLED_0.13.3_ESP8266.bin => 21 FPS
WLED_0.14.1-b2_ESP8266.bin => 12 FPS
WLED_0.14.1-b3_ESP8266.bin => 8 FPS

(self compiled WLED_0.13.3_ESP8266_160.bin => 25 FPS)

This is not just a minor performance issue, I hope you agree?
And replacing all ESP8266 and ESP8285 with ESP32 modules is NOT the correct fix.

@jw2013
Copy link
Author

jw2013 commented May 14, 2024

One further update, also checked the performance of the first release after 0.13.3, which would be 0.14.0-b1:

WLED_0.14.0-b1_ESP8266.bin => 16 FPS

But then I made a nice discovery: When changing to a different palette, FPS went up to 20 FPS, so similar to 0.13.3. Analyzed this further, turns out that the framerate drops tremendously once the "Power Limiter" kicks in! This was not the case in earlier versions. @blazoncek , any idea? Next I'm going to check the source code changes of that part.

@jw2013
Copy link
Author

jw2013 commented May 14, 2024

The power limiter seems not be the reason, it just causes a drop of about 2 FPS, but that's the same for 0.13.3 and 0.14.0-b1.
But the actual palette makes the big difference in 0.14.0-b1:

  • Default runs with 20 FPS
  • Colors run with 16 FPS
  • April Night runs with 12 FPS (!)
  • Rainbow Bands runs with 20 FPS

On 0.13.3, the selected palette has zero influence on the FPS, all run with 21 FPS.
Any ideas?

@blazoncek
Copy link
Collaborator

I'm only considering current 0_15 branch for anything that would need investigation.
So test on 0_15 branch, please.

@jw2013
Copy link
Author

jw2013 commented May 14, 2024

Ok, I will do that! Btw, for 0.14.0-b1, I have found the issue:

The performance issue is caused by Segment::color_from_palette in FX_fcn.cpp. It calls loadPalette for each single call of color_from_palette, which is causing a high CPU load (except for palettes 6, 7, 8, 9, 10, 11 and 12, as those are always kept in memory)!

Quick fix, using a paletteCache, renders the same performance as the 0.13 series!

CRGBPalette16 curPalCache;
int curPalCacheIndex = -1;

uint32_t Segment::color_from_palette(uint16_t i, bool mapping, bool wrap, uint8_t mcol, uint8_t pbri)
{
  // default palette or no RGB support on segment
  if ((palette == 0 && mcol < NUM_COLORS) || !_isRGB) {
    uint32_t color = currentColor(mcol, colors[mcol]);
    color = gamma32(color);
    if (pbri == 255) return color;
    return RGBW32(scale8_video(R(color),pbri), scale8_video(G(color),pbri), scale8_video(B(color),pbri), scale8_video(W(color),pbri));
  }

  uint8_t paletteIndex = i;
  if (mapping && virtualLength() > 1) paletteIndex = (i*255)/(virtualLength() -1);
  if (!wrap) paletteIndex = scale8(paletteIndex, 240); //cut off blend at palette "end"
  CRGB fastled_col;

  if (transitional && _t) {
    fastled_col = ColorFromPalette(_t->_palT, paletteIndex, pbri, (strip.paletteBlend == 3)? NOBLEND:LINEARBLEND); // NOTE: paletteBlend should be global
  }
  else {
    if ( curPalCacheIndex != palette ) {
      loadPalette(curPalCache, palette);
      curPalCacheIndex = palette;
    }
    fastled_col = ColorFromPalette(curPalCache, paletteIndex, pbri, (strip.paletteBlend == 3)? NOBLEND:LINEARBLEND);
  }

  return RGBW32(fastled_col.r, fastled_col.g, fastled_col.b, 0);
}

@jw2013
Copy link
Author

jw2013 commented May 14, 2024

Basically same problem in 0.15 and main branch.
color_from_palette always calls currentPalette, and currentPalette first calls loadPalette.

To give you an idea, just using the cache made it go up from 12 FPS to 24 FPS. So the current implementation spends half of its time in loadPalette calls :-/

@softhack007 softhack007 changed the title Bad performance on 0.14.1-b3 and later (d1-mini) Palettes: Bad performance on 0.14.1-b3 and later (d1-mini) May 14, 2024
@jw2013 jw2013 changed the title Palettes: Bad performance on 0.14.1-b3 and later (d1-mini) Palettes: Bad performance on 0.14.* and later May 14, 2024
@softhack007
Copy link
Collaborator

softhack007 commented May 14, 2024

And replacing all ESP8266 and ESP8285 with ESP32 modules is NOT the correct fix.

Well for me that's a debateable (and acceptable) option 😉 I'm not saying everyone has to agree. But here's my personal reasoning:

  • With 600 leds on a single pin, the theoretical max performance would be ~55fps. I've seen esp32 delivering 64 fps on 512 LEDs with one output. It looks like 8266 cannot even get close to this.
  • esp32 are availeable for cheap, plus 8266 will not be supported by espressif in less than 2 years from today (hardware end-of-life)
  • programming for 8266 is like torturing yourself: 8266 has a single tasking framework, it's always low on RAM, and you literally need to invent new hacks every few weeks to keep it working. Additionally, 8266 support sometimes hinders developing new cool stuff on esp32.

So that's my personal perspective as a developer in a small team, and we devs usually do not receive anything in return for our commitment to WLED. At the same time, everybody wants to have a say about "what is the correct way". Sorry you are not the first (or the last) - but I really had to blow off some steam. tl;dr you've hit a nerve.

Feeels better now 🤓 So back to technical...

Technicially, the palettes problem you have discovered seems to affect all platforms. Maybe it's worse on 8266, but esp32 could also benefit from an improvement 👍 so thanks for your investigations.

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

I understand the reasoning from a personal pov, but don't necessarily agree to all points, as my personal requirements might differ a lot. I really appreciate all the work you put into WLED, and all the new features it got so far! Thanks a lot!

I've created a pull request for 0_15, but compared to earlier versions, that branch does not work nicely on ESP8266 (yet).
Therefore I will also create a pull request for 0.14.3, the fix makes it run with >25 FPS again, on the 'ancient' hardware, with 600 LEDs.

One more performance issue with 0.14.3 (might be the same case for 0.15): When the power limiter forces a lower brightness, it loses about 50% of its FPS. I have found the reason already, and a quick hack resolves it, but still working on a clean solution.

Hope that helps a bit!

@vPrapo
Copy link

vPrapo commented May 15, 2024

@softhack007 I want to thank you for all your efforts and I totally respect your opinion.
I agree with you to an extent and yes I would certainly replace old ESP devices with newer ones for better performance and support since they're cheap and worth it.
However, some devices that are not DIY (manufactured) are not easy to mess with or replace, flashing the firmware alone by overwriting the propriety firmware that has no option to OTA is a big hassle and feels a big achievement when done well and safely for e.g some E27 bulbs in the market are built with old ESP devices and they give no choice to easily upgrade the ESP chip or flash into WLED without soldering/de-soldering or so, despite how it's assembled like some are made to not be opened or closed tightly for protection with glue or whatever so there are risks and possibilities to break it or fry components while doing soldering jobs.
So without background in electronics and technical knowledge it's not easy at all to achieve.

Replacing tens of bulbs can cost too much for the whole house and that isn't a practical fix in terms of both convenience and cost.. unless of course to replace only the dead ones, for my case I do have bulbs that are hard to reach and needs very high ladder size that I usually rent and tell the workers nearby for help since it's not safe distance.

I know that many things can be fixed in a hacky way and this isn't very practical or actually need to sacrifice some features to make something else works, I agree this takes time and doesn't help the software as a whole, just certain devices but.. in the same time It's kinda definitive that maxing the possibilities of an old device is challenging and most likely will open the eyes to few things that we are not aware of without facing problems such as new ways of better memory management and optimizations which normally might not come to mind with powerful devices such as esp32 because everything seems to work flawlessly.. unless we are facing issues like this one now that in return bring optimizations to the whole software.

@jw2013 Special thanks for your great find.

I do really appreciate all of your guys efforts.

@robertlipe
Copy link

robertlipe commented May 15, 2024

@softhack007 : "programming for 8266 is like torturing yourself" - totally understood and agreed. Heroic efforts to keep bringing new features to old hardware just has to stop at some point. They're not rewarded. At some point, it just doesn't fit.

At the risk of being one of those that wants a say (I don't think I have any code in this project), I'll offer what's worked for many projects: Pick a point in the project and formally (and loudly) pull the plug. Version numbers are cheap. Make one that counts. Add #if defined esp8266 (or whatever) #error "Here's a nickel kid, get yourself a better computer" and link to the Dilbert cartoon. You can't stop anyone from removing that and trying to build it on their own or forking it, but after that, you can just aggressively close things as 'unsupported platform' and it's no longer YOUR problem. As devs, we've all had do to this for VAX, Win95, NT3, Qt3, SunOS 4, K&R C, i386, Python 2, and other 'OMG, this HAS to live forever' platforms. Even non-free software development doesn't have infinite resources to keep things alive forever.

I get the arguments about e-waste and $3 boards (do yourself a favor and choose replacements with PSRAM.) needing techs (that usually cost > $3) to install them, changes in assembly lines, SKUs, or whatever, but 2016 boards are happiest running 2016 code. It just can't fit forever - whether that's bytes of SRAM, Flash, microseconds in an interrupt handler, jitter for frame refreshes, or whatever. Staying on old code is an option.

Sometimes, we must trim the branches of the shrubs of the gardens we maintain so that overall growth and life can thrive.

Happy Hacking,
Jack Kevorkian

P.S. That said, the analysis and premise of #3979 seems pretty sound...and since a message came in while I was typing, I'll clarify I'm not unsympathetic to that POV, either. You can make tiny changes to old branches (for a little while) that can improve those and hopefully have enough resources that everything isn't the proverbial straw on the camel's back. Need 32 bytes for an extra block? Hopefully you blew the whistle in time to still have it and BEFORE that branch picked up some new feature that they may not need anyway. My fundamental point is that there needs to be a reasonable feature/functionality freeze so new LED support and new JSON support doesn't take those last straws.

@blazoncek
Copy link
Collaborator

As someone with about 20 ESP8266's in my environment be sure I consider 8266 development seriously. But, there is a point in time (or lifecycle) when program can no longer run efficiently on an ancient hardware due to all the bells and whistles it has accumulated in that time.

Consider what features have been added to the code since 0.13.3. The features affecting this issue are mode (AKA effect) blending, palette blending and custom palettes which were inexistent in 0.13.3. If you do not need those features then there is no reason to upgrade, but if you need them you should also consider upgrading your hardware platform if you find performance lacking.

P.S. I am guessing that you are no longer using iPhone 6 (if you ever were; released at the same time as ESP8266) which cost several hundred times more and has long been made obsolete. That's for comparison.

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

@vPrapo , @softhack007 , @robertlipe , @blazoncek , thank you all for sharing your thoughts and comments!

First of all, none of the performance fixes that I work on are related to ESP8266 in any way. But slow hardware in general acts as an early warning system, in case performance gets unnoticedly sacrificed. The fact that @blazoncek added the 'cannot reproduce' label right away further proves that point.

A software upgrade reduces the performance by 50%? My first thought would not be: I need new hardware, NOW.

My personal intentions here are most likely similar to those of @vPrapo: Public art installation with tons of waterproof sealed controller boxes (custom hardware, not cheap). No way those get replaced soon.

That being said, I have been able to fix the performance issue caused by the power limiter, too. Those two updates would make 0.14.3 the best performing version for ESP8266. Will commit this fix in a minute.

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

This fix works by restoring the brightness in a 'smarter' way, similar to what 0.13.* and earlier did.

ORIG:

  • render the scene with _brightness
  • calculate and set new brightness based on power use and budget
  • show scene
  • reset the brightness to _brightness

FIX:

  • render the scene with the last brightness
  • calculate and set new brightness based on power use and budget
  • show scene

ORIG renders each frame with _brightness, and changes all pixels to lower brightness in each call of show(). This creates a worst-case scenario, performance-wise.

FIX only renders the first frame with _brightness, and change all pixels to lower brightness. All subsequent frames would get rendered with the last calculated brightness. It reduces brightness of all pixels immediately if required, and increases the brightness if possible, delayed by one frame.

Let's assume effect Palette, with a color palette and LED setting that would consume more power than available in budget. The internal brightness for all frames remains constant, nearly no loss of performance. Effect breath would be the opposite, but even that one gains more FPS.

Furthermore, the change in BusDigital::setBrightness makes sure, that only decrements in brightness change pixels immediately.

Hope that helps!

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

Just did a final performance test with 0.14.3 (settings attached):

WLED_0.14.3_ESP8266.bin => 9 FPS
WLED_0.14.3_ESP8266_160.bin => 10 FPS
WLED_0.14.3_jwfix_ESP8266.bin => 22 FPS (includes the fixes above)
WLED_0.14.3_jwfix_ESP8266_160.bin => 25 FPS (includes the fixes above + 160MHz setting)

wled_cfg(1).json
wled_presets(1).json

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

For your convenience/testing, please find a compiled binary for ESP8266 (160 MHz) attached.
WLED_0.14.3-jw_ESP8266_160

(maintainer edit: binary file removed, as we cannot verify its integrity)

@softhack007
Copy link
Collaborator

softhack007 commented May 15, 2024

ORIG renders each frame with _brightness, and changes all pixels to lower brightness in each call of show(). This creates a worst-case scenario, performance-wise.

FIX only renders the first frame with _brightness, and change all pixels to lower brightness. All subsequent frames would get rendered with the last calculated brightness. It reduces brightness of all pixels immediately if required, and increases the brightness if possible, delayed by one frame.

@jw2013 Your proposal is (unfortunately) in conflict with design decisions made earlier for 0.14 and 0.15. To achieve better color quality in getPixelColor(), it was decided to let effects render all full brightness, and then do the brightness reduction as a post-process before passing pixels to the LED driver. In 0.15 with per-output ABL, this post-process was moved entirely into the BusManager.

To keep the two topics (ABL and Palettes) separated, I'd propose you either create PR for 0_15 with your proposed changes, or you open a new "enhancement" ticket as a place to discuss and evaluate design options.

Actually the "brightness limiter" is a safety feature and the code is very tricky - so I would even ask if it's worth to touch the ABL code AT ALL - and risk safety of user's equipment - for just gaining 2fps on 8266.
If you disable ABL completely (LED settings), would that also give you the 2fps win on your devices?

@softhack007 softhack007 linked a pull request May 15, 2024 that will close this issue
blazoncek added a commit that referenced this issue May 15, 2024
- fixes #3978
- FX: Firenoise can use selected palette
@blazoncek blazoncek added fixed in source This issue is unsolved in the latest release but fixed in master and removed cannot reproduce Developers are not able reproduce. Might be fixed already, or report is missing important details labels May 15, 2024
@blazoncek
Copy link
Collaborator

Slightly different approach taken to keep it simple.

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

@softhack007 , I haven't checked the ABL code in 0_15 yet, but focused on 0.14.3. Pretty selfish, I know ;-)
Thank you for the hint regarding the design decision, makes absolutely sense imho!

Regarding my ABL patch for 0.14.3, I didn't really touch the ABL code itself, but optimized the logic how it gets applied. My fix might only delay the raise of the brightness, so in fact, it will never use more energy that the original one.

Created some new stats with ABL turned off (on):

  • WLED_0.14.3_ESP8266.bin: 13 (9) FPS
  • WLED_0.14.3_ESP8266_160.bin: 20 (10) FPS
  • WLED_0.14.3_jwfix_ESP8266.bin: 24 (22) FPS
  • WLED_0.14.3_jwfix_ESP8266_160.bin: 27 (25) FPS

Worst impact can been seen with the unpatched 160 MHz version.

@jw2013
Copy link
Author

jw2013 commented May 15, 2024

Slightly different approach taken to keep it simple.

Elegant approach @blazoncek . I thought about something like that too (most of the 'old' strip stuff would actually belong into segments), my fear was that it would use way more memory (one palette object per segment). That was also the reason, why I 'abused' strip._currentPalette for caching.

softhack007 pushed a commit to MoonModules/WLED that referenced this issue May 15, 2024
- fixes Aircoookie#3978
- FX: Firenoise can use selected palette
@valkoh
Copy link

valkoh commented May 18, 2024

  • programming for 8266 is like torturing yourself: 8266 has a single tasking framework, it's always low on RAM, and you literally need to invent new hacks every few weeks to keep it working. Additionally, 8266 support sometimes hinders developing new cool stuff on esp32.

So, give 8266 binaries with limited features, many dont need all the bling that can be crammed there. Even make multiple different binaries where each has some of the heavy stuff but not all. Im agreeing that 8266 should not hinder esp32 possibilities.
Im still running 0.14.0 maybe due to the issue related to this, after installing(haos addon) 0.14.2 on all of my d1 minis were acting weird, some started doing reset circle. Im gonna try .4 on one of the worst acting ones, it was a big hassle when most of the d1's needed to be manually flashed again, my setup uses direct wires soldered to esp pins secured under blobs of hot glue, kinda my own fault hehe.

@jw2013
Copy link
Author

jw2013 commented May 18, 2024

@blazoncek , thank you for fixing the palette issue in 0.14.4!
Could you please also use my fix for the power limiter, it gives another big boost on all platforms.
jw2013@8aa5c95

@blazoncek
Copy link
Collaborator

So, give 8266 binaries with limited features, many dont need all the bling that can be crammed there.

Many do not even know what version do they have let alone features they have unless you strip their feature away and then they come complaining.

Unfortunately limited features binaries are not happening with 0.14 and most likely not with 0.15 as well. But as the code size increases we may see specific builds at some point in the future.

If you need trimmed down 0.14 use custom compile on your own.

@blazoncek
Copy link
Collaborator

Could you please also use my fix for the power limiter

No. ABL as of 0.14 is EOL. It has been moved to bus (output) logic in 0.15 to allow per-output (multiple) limitation.

There is also work with @Makuna to modify NeoPixelBus so that repainting pixels will not be necessary regardless of global buffer.

If you need performance disable ABL and provide adequate power to your LEDs or use global buffer to reduce number of pixel paints.

@blazoncek blazoncek added the workaround The issue contains a workaround label May 19, 2024
@jw2013
Copy link
Author

jw2013 commented May 19, 2024

The patch was meant for 0.14 only. Even if you consider it EOL, it is still in widespread use, and I think many users will already appreciate the release of 0.14.4.

@blazoncek, just to be clear, I don't want to interfere with your 0.15 developments, and understand the design decisions made there. Actually I want you to be able to fully focus on 0.15!

I help fixing 0.14 for now, as it clearly has advantages over 0.13 for older devices, despite its performance issues (that can all be fixed as shown).

@softhack007
Copy link
Collaborator

softhack007 commented May 19, 2024

The patch was meant for 0.14 only. Even if you consider it EOL, it is still in widespread use, and I think many users will already appreciate the release of 0.14.4.

we had "fun" with ABL last summer after 0.14.0-b3, because the function was not working any more (side-effect after upgrading NPB) and we had to alert users for protecting their hardware against overcurrent. Lessons learned - don't touch anything related to ABL, unless you have an important reason and 6 month of beta testing afterwards.


Not sure if I'm repeating myself now:
-> what is the difference in fps - on your hardware - between running 0.14.4 with ABL on, and 0.14.4 when ABL is off?

@Doyle4
Copy link

Doyle4 commented May 19, 2024

@jw2013 Do you have a binary for 8266 with your custom settings at all? I Installed new 14.4 and tried 15.b3 and the 160 also makes my devices slower than the 80, its a newer model also, but 80 build is overall slow performance.

@jw2013
Copy link
Author

jw2013 commented May 19, 2024

@Doyle4, could you please try the binary I uploaded above: #3978 (comment)

(that binary already included my palette and ABL optimizations, 160 MHz)

@jw2013
Copy link
Author

jw2013 commented May 19, 2024

@softhack007, I just ran the tests on your current 0.14.4 release on ESP8266, ABL turned off (on):

WLED_0.14.4_ESP8266.bin: 24 (16) FPS
WLED_0.14.4_ESP8266_160.bin: 27 (19) FPS

The values without ABL match the ones of my versions, so @blazoncek's changes for the palette perform the same.
#3978 (comment)

Without my ABL optimization for 0.14, ABL reduces framerate by 8 FPS, with my patches just by 2 FPS, for both 80 and 160 MHz. Btw, all my benchmarks are easy to reproduce using my cfg.json and presets.json above, no need to connect an actual strip or PSU.

@blazoncek
Copy link
Collaborator

@jw2013 did you try with global buffer enabled?

@jw2013
Copy link
Author

jw2013 commented May 19, 2024

For the 600 LEDs in my case, the global buffer cannot be enabled (LED memory (ERROR: Using over 4000B!))

When I reduce it to 570 LEDs, it works though, giving the same 27 FPS with or without ABL.

Understood, without the global buffer, it needs to call multiple functions per pixel (CPU caching, stack...), while with the global buffer, it's a simple operation on memory.

@Doyle4
Copy link

Doyle4 commented May 20, 2024

@Doyle4, could you please try the binary I uploaded above: #3978 (comment)

(that binary already included my palette and ABL optimizations, 160 MHz)

Installed, 15b3 160 using Hiphotic effect was average 21fps, suing your build Im getting 40!

Screenshot 2024-05-20 at 01 47 55

@softhack007
Copy link
Collaborator

15b3 160 using Hiphotic effect was average 21fps

Please also try with "use global buffer" (LED settings) enabled, using 0.14.4 160 mhz build.

@blazoncek
Copy link
Collaborator

0.15 has the same principle (speed optimisation in ABL) already implemented.

And BTW @jw2013 your patch is incorrect.

@Doyle4
Copy link

Doyle4 commented May 20, 2024

15b3 160 using Hiphotic effect was average 21fps

Please also try with "use global buffer" (LED settings) enabled, using 0.14.4 160 mhz build.

Solid 41fps, set fps to 60 to see if it would increase, it didn't, but thats all good.
Screenshot 2024-05-20 at 20 14 31

EDIT: Flashed 15b3 160 also, without UGB 21fps, with UGB 31fps.

@jw2013
Copy link
Author

jw2013 commented May 20, 2024

@blazoncek, could you please spare some of your valuable time to elaborate, why it is incorrect in your opinion?

@blazoncek
Copy link
Collaborator

@jw2013 & @Doyle4 please test (if you can) #3669 and #3877 with various effect transition/blending styles applied and report (in each respective PR) how well that scales with your ESP8266 configuration as one of them will become mainstream.

@valkoh
Copy link

valkoh commented May 29, 2024

If you need trimmed down 0.14 use custom compile on your own.

How that works? Im used to doing compiles on ESPHome, so thats how far my knowledge goes. Assuming WLED doesnt have a interface similar to it, though would bring a different world to the whole WLED business. I'd drop everything else but the essentials i need.

softhack007 added a commit to softhack007/WLEDMM_work that referenced this issue Aug 15, 2024
commit f8a58fb709f2c5114f4ce05748b231348ba09152
Author: Damian Schneider <[email protected]>
Date:   Sat Jul 6 08:39:26 2024 +0200

    Added 'Color Waves' and 'Pride' to PS Chase

    - PS Chase now has two more options to replace color waves and pride (work in progress, about 95% finished)
    - PS Bouncing Balls now has larger particle size rendering option added (plus some improvements)
    - some cleanup

commit 16b03e7a591b847d15a8d29307a7096862c8e0c2
Author: Damian Schneider <[email protected]>
Date:   Sun Jun 30 17:24:02 2024 +0200

    Huge update, added 1D version of particle system plus many new FX

    **2D FX candidates for replacement**
    - Fireworks 1D -> PS Fireworks (not a 1:1 replacement but similar)
    - Ghost Rider -> PS Ghost Rider
    - Blobs -> PS Blobs
    - Fire 2012 -> PS Fire (note: there is no 1D replacement yet)
    - Rain - 2D -> PS Ballpit, slow setting, no floor (very similar except dots are not fading)

    **1D FX candidates for replacement**
    - Bouncing Balls -> PS bouncing balls
    - Rolling Balls -> PS bouncing balls with 'Rolling' enabled
    - Dancing Shadows -> PS Dancing Shadows
    - Drip -> PS DripDrop
    - Fireworks 1D -> PS Fireworks 1D
    - Fireworks Starburst -> PS Starburst
    - Lighthouse -> PS Chase with 'Color by position', lowest density
    - Popcorn -> PS 1D Spray with disabled bounce
    - Rain: PS DriopDrop, 'Rain' check enabled, no splash, no blur, no gravity
    - Solid Glitter -> PS Sparkler (not worth disabling, only a few bytes)

    Some Notes:
    - Glitter & Sparkle-> could be replaced with PS Sparkler with overlay OR with an additional FX that draws the background first, maybe not possible on ESP8266
    - Juggle could be replaced but will not save much (but would add more options)
    - Pride 2015 could be replaced by adding a 'pride' checkmark to PS Chase, woud save about 1kB
    - Colorwaves -> could be replaced with PS Chase with additional color setting for hue change, similar to pride. Would save another 1kB
    - Theater and Theater rainbow could be dropped -> PS Chase but it will not save much
    - Chase 2 & Chase 3 -> PS Chase (width can not be set as high as originals), share a function with Theater, so all have to be disabled (would save about 600 bytes)
    - 2D handling of some of the 1D replacements will be lost (like drip), I did not check all current FX in 2D
    - Freqmap, Freqwave and Freqmatrix (2.2kB total) could be replaced with a single FX using the PS, would save about 1kB
    - Blurring&Overlay only works if global buffer is enabled
    - All PS effects are frame-time based, there may be significant speed differences to the original effects if they use timers (and if FPS are low)

    Use these #defines to enable/disable PS or FX at compile time:
    WLED_DISABLE_PARTICLESYSTEM2D
    WLED_DISABLE_PARTICLESYSTEM1D
    DISABLE_2D_PS_REPLACEMENTS
    DISABLE_1D_PS_REPLACEMENTS

commit fc6c2dadc47f385db83e6a1f71a5ff7b2f138dc9
Author: Damian Schneider <[email protected]>
Date:   Mon May 27 08:15:22 2024 +0200

    revert files to origin

commit 3903de493d66ebc6f54c4b326d9a954f402b21c5
Merge: 29f75de7 501f988b
Author: Damian Schneider <[email protected]>
Date:   Mon May 27 08:14:52 2024 +0200

    Merge remote-tracking branch 'upstream/0_15' into FXparticleSystemSquash

commit 29f75de7202f4ada4879720c6f844ef18723c8dd
Author: Damian Schneider <[email protected]>
Date:   Mon May 27 07:39:49 2024 +0200

    Bugfix and minor improvements

    - fixed bug in center GEQ
    - added '2D washing machine' mode for particle box
    - improved color-change rate in ghostrider
    - added AR to attractor (experimental, may remove again)

commit 501f988b0f67f63860b22142ff89ef71095a9b4c
Author: Blaz Kristan <[email protected]>
Date:   Sat May 25 20:01:38 2024 +0200

    ESP-NOW usermod hook

commit f3b0906cea8175b7559b8f6b4d809da53dc7a69f
Merge: 9f581c61 904b1f11
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 21:22:35 2024 +0200

    Merge pull request #3993 from gsieben/0_15

    Update wled.h regarding OTA Password

commit 9f581c618186932163bb028d7e2fcce6fdb8a35a
Merge: 31b232d3 bfd1bdfc
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 21:20:47 2024 +0200

    Merge pull request #3994 from gsieben/0_15-Usermod-BME68X-Pull-Request

    Usermod BME68X Sensor Implementation rebased for WLED 0.15

commit 31b232d3f3302be40c3f6d20b3a098b65829d100
Merge: 0bcdc964 77e6a6de
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 21:20:03 2024 +0200

    Merge pull request #3977 from LordMike/feature/aht10_usermod

    Add a usermod for AHT10, AHT15 and AHT20 temperature/humidity sensors

commit 77e6a6de613563417e2597bc737e01071b037fa5
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:23:25 2024 +0200

    Revert .gitignore

commit 85702a8142533cdfe19f7e89a0b4317e7d767f51
Merge: 1dd9c675 0bcdc964
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:21:16 2024 +0200

    Merge branch '0_15' into feature/aht10_usermod

commit 0bcdc9641dbb8c233ddf6cf4b05080e882171f81
Merge: c1fed6d4 19ccff9f
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:17:08 2024 +0200

    Merge pull request #3968 from adamsthws/0_15_battery_usermod_readme

    Update Battery usermod documentation

commit bfd1bdfc6462e63fd38c559b605dd9fc6bc0efa7
Merge: 79ffe021 c1fed6d4
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:14:23 2024 +0200

    Merge branch '0_15' into 0_15-Usermod-BME68X-Pull-Request

commit c1fed6d469aa97df3b23cf39e992cc517693e95c
Merge: 4a7ef070 0df726cd
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:12:03 2024 +0200

    Merge pull request #3986 from LordMike/feature/ina226_usermod

    Add INA226 usermod for reading current and power over i2c

commit 79ffe021e42331d2268824883ba5784f7c821ee7
Author: Gabriel Sieben <[email protected]>
Date:   Tue May 21 11:41:57 2024 +0200

    Update usermod_bme68x.h

    One error message was in German

commit 904b1f114bb4428f1a46795967aa826588bb1a60
Merge: db2cdca7 4a7ef070
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 22:30:28 2024 +0200

    Merge branch 'Aircoookie:0_15' into 0_15

commit 63f481d49890e74cc512c5ccf6da25786e7f1713
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 22:09:20 2024 +0200

    Update wled.h

    Accidentally included changes removed.

commit fc5c19788e6104024c9fd2903475330829c9858c
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:49:05 2024 +0200

    Update usermod_bme68x.h

commit 56e0bde8ab660146d46e2251a0ab9a67871c229a
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:45:01 2024 +0200

    Rebase of the user mode BME68X sensor in WLED 0.15

commit db2cdca71b242a3684d4bdc60adfcdd85c441adc
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:25:08 2024 +0200

    Revert "First implementation of the user mods for the BME68X sensor in WLED 0.15"

    This reverts commit faa2fba6b94ba86a48cd374a4090112f39b3bb6d.

commit faa2fba6b94ba86a48cd374a4090112f39b3bb6d
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:10:25 2024 +0200

    First implementation of the user mods for the BME68X sensor in WLED 0.15

commit f727ea2874452eebbcd3789940d25c26d2965802
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 13:13:40 2024 +0200

    Update wled.h

    OTA_PASS

commit 4a7ef07089e7d6280e1ac686c190293cc38bbf98
Author: Blaž Kristan <[email protected]>
Date:   Mon May 20 12:24:26 2024 +0200

    Fix for #3991

commit 0df726cdabac94a4512aea7d8d44ddec99255b95
Author: Michael Bisbjerg <[email protected]>
Date:   Sat May 18 15:52:01 2024 +0200

    Add note to platformio override sample

commit fae5938b0aec813410d327d617dbddbc1c7fcf51
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 13:01:28 2024 +0200

    Build bump, changelog update

commit 2ec3639900c28cf1bb170b99bfeb42f5c9ce58ac
Merge: 45134046 2aec21a6
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 11:24:18 2024 +0200

    Merge branch 'main' into 0_15

commit 4513404629fc47d7768400fe889e70e0d9bc78b7
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 11:15:16 2024 +0200

    Fix for #3987

commit 13bfda56efa8af56e92456480c35dffb2785a038
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 11:11:40 2024 +0200

    Auto segment creation bugfix
    - additional debug
    - minor optimisation

commit 075c1644077d8d85f3395223fafe57d883381864
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 17 15:03:56 2024 +0200

    Fix bug in triggered measurements

commit dcb5049f97a291b5d50b259df5832b1dea71e27a
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 17 10:47:33 2024 +0200

    Move to individual settings for samples and conversion time

commit d24cf14009ad632b89d4b119e0c093f7010acab8
Author: Michael Bisbjerg <[email protected]>
Date:   Thu May 16 00:06:41 2024 +0200

    Triggered & continuous modes

commit 3d34802ab22ab83ce6ee36f2b19c6594d52d300a
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 23:27:56 2024 +0200

    Initial ina226

commit 2aec21a6d02247389b88a19791e3b6e69a9177f9
Author: Blaz Kristan <[email protected]>
Date:   Wed May 15 15:34:53 2024 +0200

    Palette loading optimisation
    - fixes #3978
    - FX: Firenoise can use selected palette

commit 19ccff9ff1c833c567e9a1915864a828f4e7b51b
Merge: 6b8d8bf7 77ca2ec0
Author: Adam Matthews <[email protected]>
Date:   Wed May 15 22:15:18 2024 +0100

    Merge branch '0_15' into 0_15_battery_usermod_readme

commit 1dd9c6754c569d4113e9b80c15360ad95d88d749
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 21:32:08 2024 +0200

    Cleanup unecessary struct

commit f9467ceaf155b5dcce7add362138eef0074afe23
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 21:26:30 2024 +0200

    Fix state issue on change reporting, add override sample ini

commit f51da4f0c46920711a08825976d8cdfa540b8d61
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 18:56:45 2024 +0200

    Change reporting to be on significant changes

commit 2eff389ffff68824f3fd57b4dd5c5ce3769d2b39
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 18:35:33 2024 +0200

    Handle feedback

    - Reduce some strings
    - Use an unnamed struct to pack the bitfield instead

commit 77ca2ec0e9c7bd4eb9055d8b2dbcfd0635177d11
Author: Blaz Kristan <[email protected]>
Date:   Wed May 15 15:35:14 2024 +0200

    Compiler warning fix

commit 77e6ea8a6f903db998c821c6e83ab3759f6ce4f2
Author: Blaz Kristan <[email protected]>
Date:   Wed May 15 15:34:53 2024 +0200

    Palette loading optimisation
    - fixes #3978
    - FX: Firenoise can use selected palette

commit e33299bbd76374d1798baacaef48449ea1ee4279
Merge: 5f41de89 3cb6b173
Author: Frank <[email protected]>
Date:   Wed May 15 14:22:10 2024 +0200

    Merge pull request #3961 from Brandon502/0_15

    Added Pinwheel Expand 1D ->2D effect mapping mode

commit 74e273274c3cf433e4db9cb5723abc3dab7ed396
Author: Michael Bisbjerg <[email protected]>
Date:   Tue May 14 23:15:59 2024 +0200

    Replace 5 booleans with 1 byte flags field

commit 02bf5902f03fced548f9aaa4f628eb28412ae673
Author: Michael Bisbjerg <[email protected]>
Date:   Tue May 14 22:53:03 2024 +0200

    Add MQTT and HASS support for AHT10

commit 5f41de893833dfd02cc982cce128bf490bd6dd37
Merge: 1ceeed38 60075f6e
Author: Blaž Kristan <[email protected]>
Date:   Tue May 14 19:39:42 2024 +0200

    Merge pull request #3966 from LordMike/feature/bme280_changeable_i2c

    Add changeable i2c address to BME280 usermod

commit f71d839009fc5e539572318fa0983e29da881c5f
Author: Michael Bisbjerg <[email protected]>
Date:   Tue May 14 17:54:43 2024 +0200

    Address comments

commit 3cb6b173163ad3311b8d6063c01c7c1b74dedfd0
Author: Brandon502 <[email protected]>
Date:   Tue May 14 11:46:52 2024 -0400

    Pinwheel fix

commit c0cb677a4cf33a8244344d8269790ad46fdb5cb8
Author: Brandon502 <[email protected]>
Date:   Tue May 14 11:30:33 2024 -0400

    Pinwheel cleanup

commit a5a6a8eaeea513ce3f4fea51bcc054e4d3d62626
Author: Frank <[email protected]>
Date:   Tue May 14 11:30:25 2024 +0200

    pinwheel : fix holes on large matrix, minor code cleanup

    there were still two holes in my 52x52 setup --> added "XL" size for bigger than 50x50 - achieves 18fps on 52x52

commit ecb861de561673618f5493ebb29fb716cbcf4f21
Author: Frank <[email protected]>
Date:   Tue May 14 10:36:50 2024 +0200

    pinwheel code cleanup

    reducing code duplication between sPC and gPC

commit 1d20f18d3f1e09de65ae4cc75e7dca437a9e56bf
Author: Brandon502 <[email protected]>
Date:   Mon May 13 17:43:31 2024 -0400

    Pinwheel bugfix

    Fixed getPixelColor.

commit 68f6b3452e6f68c13fbeee187dab097b2ba8c0fb
Author: Michael Bisbjerg <[email protected]>
Date:   Mon May 13 20:09:31 2024 +0200

    Initial implementation of the AHT10/AHT15/AHT20 sensors

commit 60075f6e8c18dcf96dc7a6caf6ed80f5bb805a52
Author: Michael Bisbjerg <[email protected]>
Date:   Mon May 13 20:22:31 2024 +0200

    Avoid storing the settings of bme280 globally

commit 1d7789f544540b5aa66099c2e54f4adaac09937a
Author: Frank <[email protected]>
Date:   Mon May 13 19:27:41 2024 +0200

    pinwheel bugfixing

    * setPixelColor: ensure that 0/0 is used
    * getPixelColor: accuracy improvements

    unfortunately, "scrolling" audioreactive effects are still not working properly - they end after 1/4 of the circle. Could be due to limited resolution of getPixelColor.

commit bd10a9aa26e21ddef1e900a65cac4383b2cbdd2f
Author: Michael Bisbjerg <[email protected]>
Date:   Mon May 13 18:35:02 2024 +0200

    Change BME280I2C to be reused between configs

commit 1ceeed38bc8a38d10ea7313e781513420daa56ad
Author: Blaz Kristan <[email protected]>
Date:   Mon May 13 14:30:30 2024 +0200

    Another fix for fix :rolleyes:

commit 2e1e917952df85dcb154700623aa7796cc6ae18e
Merge: 9e0b91ac ea83ec49
Author: Brandon502 <[email protected]>
Date:   Sun May 12 17:46:52 2024 -0400

    Merge branch '0_15' of https://github.com/Brandon502/WLED into 0_15

commit 9e0b91ac17f4ad84978be399d7c8f066a4508b85
Author: Brandon502 <[email protected]>
Date:   Sun May 12 17:46:42 2024 -0400

    Pinwheel changes.

    Jump distance for odd rays fixed. Removed holes on rectangular matrices.

commit ea83ec496b923b1d8e44bb3d5e46364abea5a65a
Author: Frank <[email protected]>
Date:   Sun May 12 23:05:58 2024 +0200

    pinwheel - parameter tuning to fix some holes

    fixing holes that appeared during testing
    * at 52x52 (big 296 -> 304)
    * at 24x32 (medium 192 -> 208)
    * at 12x16 (small 72 -> 82)

    ... there is still one hole at 14x16 ... well wtf

commit f26bb26ffad857e49b812843f006bfa5f74947be
Author: Frank <[email protected]>
Date:   Sun May 12 22:35:33 2024 +0200

    Update FX_fcn.cpp

    * minor cleanup, moved prevRay into setPixelColor
    * removed experimental code (too slow)
    * comments cleanup

commit 28348f919bb5bd78f8ce41fc613eeec363e38467
Merge: c84d4c63 04706cfa
Author: Frank <[email protected]>
Date:   Sun May 12 21:30:59 2024 +0200

    Merge branch '0_15' into pr/3961

commit c84d4c637d46fadfa09855fe68465f8db780f68a
Author: Brandon502 <[email protected]>
Date:   Sun May 12 11:52:31 2024 -0400

    Pinwheel Expand 1D Optimization

    Changed method for drawing odd numbered rays.

commit 04706cfa9c68c1855dbd6bbae04da7dc9d657ae5
Author: Blaz Kristan <[email protected]>
Date:   Sun May 12 16:34:07 2024 +0200

    JS fix & warning

commit 3078bea7cce95038bc354acd73caecf9ca7327d7
Author: Frank <[email protected]>
Date:   Sun May 12 13:29:04 2024 +0200

    Pinwheel optimization: do nor repaint "same" pixels in a line

    avoids back to back duplicates within the same line

commit c91e0fc9881d60901938050b99d67db4920bde3b
Merge: 9e468bd0 5183af4e
Author: Frank <[email protected]>
Date:   Sun May 12 13:25:46 2024 +0200

    Merge branch '0_15' into pr/3961

commit 5183af4e8aa70573ce3b0ee04ba079a2db0084be
Author: Blaž Kristan <[email protected]>
Date:   Sun May 12 11:30:57 2024 +0200

    Typo.

commit 1ff5cb0596d4a355a96570a296b5c7f58ba7cf92
Author: Blaž Kristan <[email protected]>
Date:   Sun May 12 11:12:13 2024 +0200

    Experimental parallel I2S support for ESP32
    - increased outputs to 17
    - increased max possible color order overrides
    - use WLED_USE_PARALLEL_I2S during compile

    WARNING: Do not set up more than 256 LEDs per output when using parallel I2S with NeoPixelBus less than 2.9.0

commit 522e5e795774657b8da980ddae727922b3d5679f
Merge: c016dede bc5aadff
Author: Blaž Kristan <[email protected]>
Date:   Sat May 11 21:11:26 2024 +0200

    Merge pull request #3964 from adamsthws/0_15_battery_usermod_init_improvement

    Update Usermod: Battery

commit 9e468bd059510c66bbb99e41ed4855193a9cc05c
Author: Brandon502 <[email protected]>
Date:   Sat May 11 13:57:21 2024 -0400

    Pinwheel Expand 1D Optimizations

    Added small pinwheel size. Adjusts medium and large values.

commit ecc9443677e1c69291138e8bf8f54d524614a144
Author: Frank <[email protected]>
Date:   Sat May 11 14:45:42 2024 +0200

    (0_14 branch only) adding compatibility for building with upstream arduinoFFT 2.xx

    support compilation with new arduinoFFT versions 2.x

commit 6b8d8bf735c3c4e3a04a2302c89c1f1895ea7a0b
Author: Adam Matthews <[email protected]>
Date:   Sat May 11 13:34:35 2024 +0100

    Update Battery usermod documentation

    Improved wiring, installation and calibration instructions.

    Example screenshots added.

    Minor grammar improvements.

    Heading visual consistency improved.

    Improved vertical separation between sections
    (separator lines added).

    Thankyou!

commit 43d024fe429c5f519fb50f80fe75c8d184c64aea
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 10 22:43:55 2024 +0200

    Make BME280 usermod i2c address changeable

commit c016dedea4c74d35d0ce36c35e1b6e96eb711932
Merge: 3682cd6a b9ca2cfe
Author: Blaž Kristan <[email protected]>
Date:   Sat May 11 07:42:09 2024 +0200

    Merge pull request #3965 from LordMike/bugfix/usermod_bme280

commit b9ca2cfe90f18b0d5ebfaa1361d281fb98d7f0dc
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 10 20:55:10 2024 +0200

    Fix missing conversions of bme280 values

    The BME280 usermod uses a multiply-round-divide approach to cap the temperature/humidity/pressure values to some number of decimals. But the divide-part was missing in a few instances.

commit d3492b5b6c38e6a8cb2136bc8d7654a4594b59df
Author: Brandon502 <[email protected]>
Date:   Fri May 10 16:06:37 2024 -0400

    Pinwheel Expand 1D Bug Fix

    Removed holes on 31x31 and 32x32 grids.

commit 3682cd6a5e92dd0fa88d0f660b464d906fd50c8b
Merge: b209b1e4 69da2f4b
Author: Blaž Kristan <[email protected]>
Date:   Fri May 10 21:44:40 2024 +0200

    Merge pull request #3913 from Aircoookie/tm1914

    Tm1914 chip support

commit b209b1e481715716825d6ad2b34f5abb924dee05
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 16:01:47 2024 +0200

    Peek on/off fix

commit 4afed48f58569394f1a71a74d2df26a0b8be7acd
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 15:59:11 2024 +0200

    Use libc trigonometric functions on ESP32 by default
    - use custom (space saving) functions on ESP8266

commit 6a18ce078e3b2f31404d3309b39985638d53fcf4
Author: Brandon502 <[email protected]>
Date:   Thu May 9 20:38:41 2024 -0400

    Pinwheel Expand1D changes

    cosf/sinf changed to cos_t/sin_t. int_fast32_t and int_fast_16_t changed to int.

commit bc5aadff7d73931f971b3d1ee534b7a2d4dc7f0a
Author: Adam Matthews <[email protected]>
Date:   Thu May 9 23:09:45 2024 +0100

    Update Usermod: Battery

    Issue:
    When taking the initial voltage reading after first powering on, voltage hasn't had chance to stabilize so the reading can be inaccurate, which in turn may incorrectly trigger the low-power preset. (Manifests when the user has selected a low read interval and/or is using a capacitor).

    Resolution:
    A non-blocking, fixed 10 second delay has been added to the initial voltage reading to give the voltage time to stabilize.

    This is a reworked version of the (now closed) PR here:
    https://github.com/Aircoookie/WLED/pull/3959

    - Rebased the update for 0_15.

    - Added a constant so the delay can be modified via my_config.h.

    - Small adjustments to make the PR compatible again after the recent restructuring in this PR: (https://github.com/Aircoookie/WLED/pull/3003).

    Thankyou!

commit de89b516dcb8522cd7578acf4b958a83fba140a9
Merge: 4dbe9a70 b88c300d
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 00:04:43 2024 +0200

    Merge branch '0_15' of https://github.com/aircoookie/WLED into 0_15

commit 4dbe9a701596d130ff34157c111abf93f0c29846
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 00:02:28 2024 +0200

    Antialiased line & circle

commit a320f164045c53b4b8454c9b25e792f64fae57ca
Author: Blaz Kristan <[email protected]>
Date:   Thu May 9 23:58:58 2024 +0200

    Real math fix

commit 21e4604424dda3cd8db9c44ed2c90ce3831cb80f
Author: Damian Schneider <[email protected]>
Date:   Thu May 9 21:35:12 2024 +0200

    added center GEQ back in, changed AR behaviour of spray a little

    center GEQ is a mix between the PS equalizer and vortex, tuned for AR. some more tuning may be needed, it can probably be extended and improved a little.

commit 3c5928f8b2792a9dfec18f7c3ff53a714ef1c869
Author: Damian Schneider <[email protected]>
Date:   Thu May 9 14:19:31 2024 +0200

    Added PS source option to emit more than one particle, addes AR to Blobs and Spray

commit da79b93387cb80873d5dc65cd864be866a4b70bf
Author: Brandon502 <[email protected]>
Date:   Tue May 7 18:04:29 2024 -0400

    Added Pinwheel Expand 1D Effect

commit b88c300d0467bd65dd9e58b3ae99977434f70fab
Author: Frank <[email protected]>
Date:   Thu Apr 18 12:57:29 2024 +0200

    audioreactive: workaround for ArduinoFFT bug 93

    This fix works around a problem that was solved in upstream ArduinoFFT 2.0.2

commit b12f20cc48e9e526583044754040382afd24c8a7
Author: Damian Schneider <[email protected]>
Date:   Tue May 7 21:54:02 2024 +0200

    - added WLED_DISABLE_PARTICLESYSTEM option & cleanup & bugfixes

    - cleanup / reformatting
    - fixed volcano movement
    - small bugfix for ESP32 (random() does not work, using random16() )

commit 4502d7ab8ca16bad9d5387de63fe308baa7a6737
Merge: 2458a85c b3206121
Author: Damian Schneider <[email protected]>
Date:   Tue May 7 21:39:29 2024 +0200

    Merge remote-tracking branch 'upstream/0_15' into FXparticleSystemSquash

commit 88372cd516f959db0033644479621f5221aef3b1
Author: Blaz Kristan <[email protected]>
Date:   Tue May 7 16:34:15 2024 +0200

    Brighter peek (ignore strip brightness)

commit b3206121cc63c625e92ff80e3f7d062055e7284d
Merge: 47e1cbda 5bccb5fc
Author: Blaž Kristan <[email protected]>
Date:   Tue May 7 07:35:46 2024 +0200

    Merge pull request #3942 from gaaat98/audioreactive-analog

    Enabled some audioreactive effects for single pixel strips/segments

commit 5bccb5fc422f4f680b6d3720db47c6bac2f11c1e
Author: gaaat98 <[email protected]>
Date:   Tue May 7 00:31:37 2024 +0200

    removed commented checks

commit 47e1cbdaff450ca7169adb1bbb66cef51be89b83
Merge: 2607c44f 52020cbe
Author: Blaž Kristan <[email protected]>
Date:   Mon May 6 20:41:00 2024 +0200

    Merge pull request #3003 from itCarl/usermod-battery-update2023

    Usermod Battery 🔋 Added Support for different battery types, Optimized file structure

commit 2458a85ca10b90890a665790901ae068fb1b48ed
Author: Damian Schneider <[email protected]>
Date:   Mon May 6 19:48:29 2024 +0200

    remove esp_random() as it is not supported on ESP8266

commit 52020cbe269e39dae3493e387bacbd35eefdc92b
Author: Maximilian Mewes <[email protected]>
Date:   Mon May 6 17:46:26 2024 +0200

    CP fix

commit d33651c25bfdc3ab4457c6e95496914fb924bad1
Author: Maximilian Mewes <[email protected]>
Date:   Mon May 6 17:45:02 2024 +0200

    Update setup method

commit 18e9f9c304482e3506e8982805b5df33a2bbf6c4
Author: Maximilian Mewes <[email protected]>
Date:   Mon May 6 17:39:40 2024 +0200

    Rename Battery classes

commit 2607c44fbb577cc549a23a5e0dbaf858c1fd2d80
Author: Frank <[email protected]>
Date:   Mon May 6 11:00:41 2024 +0200

    make objdump work

    Script update based on latest version from Tasmota
    * add support for all esp32 variants
    * add "-C" : Decode (demangle) low-level symbol names into user-level C++ names.

commit a8ad5b1087732753f935394b1057c9974264ba54
Author: Damian Schneider <[email protected]>
Date:   Sun May 5 22:09:47 2024 +0200

    Squashed commit of the following:

    commit ba337abb548c530042713d2d46373d36bfa7204a
    Merge: 0b45f665 3f9a6cae
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 21:57:32 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 0b45f6652a619cdb315d437fb8dd9c0038f4b792
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 21:56:19 2024 +0200

        bugfix, sprayEmit() would not return and get stuck

        - forgot default return value...

    commit 255815605608a7fcacc2aa5264aeefb95d8bb4bb
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 11:19:02 2024 +0200

        code cleanup, removed some unused stuff

    commit ac5399aa26f403dbb0c7ab05163c0bd9d0d60f6b
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 08:18:43 2024 +0200

        Added advanced particle size control and new Blob FX

        - advanced size control allows for growing, shrinking, wobbling
        - render function updated to support asymmetric rendering
        - various code improvements and bugfixes
        - some FX parameter tuning
        - bugfix: removed sli() sei() calls in render function that caused random flickering on S3/C3 (may add that back in but only for ESP8266 to reduce fragmentation)
        - removed some debug / test stuff

    commit 3f9a6cae53889898486dae727bbacebc680d6ee0
    Author: Frank <[email protected]>
    Date:   Sat May 4 14:34:23 2024 +0200

        AR: fix for arduinoFFT 2.x API

        in contrast to previous 'dev' versions, the storage for windowWeighingFactors is now managed internally by the arduinoFFT object.

    commit cd5494fdd2040ba8d6858532b7348b082c345ebb
    Author: Frank <[email protected]>
    Date:   Sat May 4 13:36:56 2024 +0200

        AR pin config: SCK == 1 --> PDM microphone

    commit 5ab1b14d6b32b1aef17ee01b334205d42d98d832
    Merge: fa76431d 379f1813
    Author: Blaž Kristan <[email protected]>
    Date:   Fri May 3 23:25:36 2024 +0200

        Merge pull request #3946 from freakintoddles2/0_15

        Adds an API parameter to allow the user to skip to the next preset in a playlist at any time

    commit 379f1813620a56bb0b3136315feb647fb0c3d45d
    Author: Todd Meyer <[email protected]>
    Date:   Fri May 3 11:51:47 2024 -0700

        Further simplification

    commit dd19aa63d0e15693f0666ea1e33a370677b88450
    Author: Todd Meyer <[email protected]>
    Date:   Fri May 3 08:47:14 2024 -0700

        Forgot F[], added it

    commit 6df3b417a94899fd382708208ced9ab08845826c
    Author: Todd Meyer <[email protected]>
    Date:   Fri May 3 08:30:37 2024 -0700

        Updated based on more feedback

    commit fa76431dd673e5c1a24c75fe7d9348a93e3f22f5
    Author: Blaz Kristan <[email protected]>
    Date:   Fri May 3 16:08:20 2024 +0200

        Changelog update

    commit 6504fb68b6ba3fc49d18594df78812c6e153e9bc
    Author: Blaz Kristan <[email protected]>
    Date:   Fri May 3 15:46:16 2024 +0200

        Minor MQTT optimisation.

    commit 2ff49cf657a322d17ec4fab854d9834ae10a5566
    Author: Blaz Kristan <[email protected]>
    Date:   Fri May 3 15:45:15 2024 +0200

        Fix for #3952
        - included IR optimisations & code rearrangement

    commit fa1aa1fe805aaf5f91bfe6b8f7d237e494ef643c
    Merge: 85b95a29 22f6128b
    Author: Blaž Kristan <[email protected]>
    Date:   Fri May 3 09:56:14 2024 +0200

        Merge pull request #3944 from paspiz85/pas4

        Using brightness in analog clock overlay

    commit 85b95a2940b5c17bf3d37b53ae945bc121f3b1c1
    Merge: 4df936a4 736a8b1b
    Author: Blaž Kristan <[email protected]>
    Date:   Fri May 3 09:53:00 2024 +0200

        Merge pull request #3945 from w00000dy/Webpage-shortcuts

        Add Webpage shortcuts and Fix resizing bug

    commit 5e38039c4dd630d7b4c6841deb5e0b04aa07f573
    Author: Todd Meyer <[email protected]>
    Date:   Thu May 2 14:36:18 2024 -0700

        Updated based on more feedback

    commit 4df936a437a2e643fca724885b336b6bb3034bbd
    Author: Blaz Kristan <[email protected]>
    Date:   Thu May 2 10:33:10 2024 +0200

        Fix for unfortunate prior CRLF coversion.

    commit 736a8b1b80102d2f9b32b8cc88ce5f409eeca116
    Author: Blaz Kristan <[email protected]>
    Date:   Thu May 2 10:31:50 2024 +0200

        Fix for rotating tablet into PC mode.

    commit 22f6128bc47c7ee7349b4f039758bf46962b0eba
    Author: Pasquale Pizzuti <[email protected]>
    Date:   Thu May 2 09:04:07 2024 +0200

        using global brightness

    commit db475b69988567f19c3969d1808c96918924f55e
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:09:17 2024 -0700

        Update playlist.cpp

    commit 6daf7f6322eacdc0ff83756b4da735d02a269fa9
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:07:52 2024 -0700

        Update wled.cpp

        reworked based on PR feedback

    commit 16086c09615d7e8c2e2050c650b9af00b875062c
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:05:26 2024 -0700

        Update wled.h

        reworked based on feedback from original PR

    commit e88c81ad0d6a1ff8c18667facd2b7b326ede2b74
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:04:02 2024 -0700

        Update set.cpp

        reworked based on feedback

    commit a2b9aed40df5bb55eb4f53db72c6871c72c9b30d
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:03:16 2024 -0700

        Update playlist.cpp

        reworked approach based on feedback

    commit caa4fe1ec4f814f89fa2c77ef7405b0935b846ec
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:02:27 2024 -0700

        Update json.cpp

        reworked approach based on feedback

    commit 25fb878e5434dd47b888bd3e5a46176c369ff8c4
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:01:30 2024 -0700

        Update fcn_declare.h

        reworked approach based on feedback

    commit 77167a28546443c1e8be84f0713f40b227a64285
    Author: Damian Schneider <[email protected]>
    Date:   Wed May 1 13:53:59 2024 +0200

        Found and fixed crashes, it was wrongly assigned pointers

    commit 3527144b94b61ba46134e635dd05294c14980b87
    Author: Damian Schneider <[email protected]>
    Date:   Wed May 1 12:08:03 2024 +0200

        Fixed another memory / pointer bug, but there is still one left...

        -also some minor fixes

    commit 06ae14c0d6766239b7776d6f8cadd37c5865eaf7
    Author: Damian Schneider <[email protected]>
    Date:   Wed May 1 07:07:48 2024 +0200

        added 'perpetual' flag to particles

    commit a1d6ffadad852449a825431ad0bb8bba2f7f448d
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:49:52 2024 -0700

        Update json.cpp

        adds support for np boolean parameter to skip to next preset

    commit 3b89814b6935261d65f95059690591f51a0eab5f
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:33:30 2024 -0700

        Update set.cpp

        added new NP command to API to allow user to skip to next preset in a playlist. Example use is win&NP in a preset.

    commit 071e0be445ed012ff9ab1f72347440684eed678f
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:23:43 2024 -0700

        Update fcn_declare.h

        Updated to add the optional skipNext bool to handlePlaylist() which allows people to skip to the next preset when desired

    commit bed364d75e8ecc0f65c43bfb1db4d9a089072158
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:21:40 2024 -0700

        Update playlist.cpp

        Updated to allow a user to optionally skip to the next preset in the playlist anytime they desire.

    commit d2984e9e160f649e0d900761d76240740201a4b6
    Author: Woody <[email protected]>
    Date:   Tue Apr 30 18:57:53 2024 +0200

        add Webpage shortcuts, resolves #2362

    commit fd9570e7826b53a0c59440179bd340f195d0bb6a
    Author: Pasquale Pizzuti <[email protected]>
    Date:   Tue Apr 30 17:52:35 2024 +0200

        using color_fade

    commit ff10130176ff06a81ed09113b6669703583a3c71
    Author: Woody <[email protected]>
    Date:   Tue Apr 30 16:53:47 2024 +0200

        Fix resizing bug
        The bug was that when resizing the window, it always jumped to the Colors tab instead of staying on the currently selected tab.

    commit c7d292a7165e81e0c0429b4f94e3e401b4e3dad0
    Author: Pasquale Pizzuti <[email protected]>
    Date:   Tue Apr 30 14:09:12 2024 +0200

        using brightness in analog clock overlay

    commit 5472f76a3dd08e0e76eb52f17160e639fb43b6ca
    Merge: a6bf5b60 9f99a189
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 30 07:50:44 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit a6bf5b603d9f7e5f4184f01345047da95a0acd1f
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 30 07:41:04 2024 +0200

        added walls to ghostride, fixed some bugs

    commit 33ede416e5e430e70e49cc037f338e8238111492
    Author: Damian Schneider <[email protected]>
    Date:   Mon Apr 29 19:46:19 2024 +0200

        Replaced Ghost Rider FX with PS version

        - new FX is kept close to original animation but added more user settings

    commit 2e0cb3a49fb9dbfa3619c6bbcf31c01a8cd8585d
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 28 19:29:57 2024 +0200

        Fixed some nasty memory bugs, fixed some FX parameters

        - fixed memory alignment bug in PS pointer assignment by making sure only multiples of 4 are allowed for particles and sources
        - added saturation back to particle struct, as it was aligned to 10 bytes anyway.
        - fixed a bug where a null pointer could be accessed
        - fixed rendering out of frame particles if buffer allocation failed
        - improvements on ESP8266

    commit 3eb94ebffa92a0a3f9823537028fe218ce4ddd15
    Merge: 53607d6c 8110259d
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 28 11:30:44 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 53607d6cdb0953af3c330b3d4da74d33eeb949a2
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 28 11:25:57 2024 +0200

        added individual size particle rendering plus some fixes

        - advanced particles can now be rendered to individual sizes. It is computationally intensive but it works well for up to 15 very large particles and more smaller ones
        - added collision handling for individual sizes (walls and collisions)
        - fixed bugs in particlebox
        - fixed fire not transitioning properly (flickering) when frame skip is active
        - removed 'wraparound' function as it can easily be done by casting to an unsigned and then modulo
        - fixed ballpit particles wandering left and right very fast if wrapX is set

    commit 7abc440f90a18538ac277e062c86c7dca4d13615
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 27 13:40:38 2024 +0200

        removed zero inits

        - removed zero initialisations in FX, segment.data is set to zero by alloc function

    commit 54e94ddb91554302d7b5717a01ac99f3b7089970
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 27 13:18:30 2024 +0200

        Bugfixes, improvements and added wall roughness setting

        - fixed bug in PS fuzzy noise which made it asymmetric for some reason, seems to work better now
        - added particle size option to attractor but had to remove speed setting (now fixed emit speed)
        - some parameter tuning of FX
        - improvements to code size in render function
        - added smear option to blurring (not tested much, may be buggy without smear)
        - speed improvement to caldForce_dv, added zero checking.

    commit a22466a852f4aeedfa7a77994c67c0ff016cad37
    Merge: 3386a844 004b1c3e
    Author: Damian Schneider <[email protected]>
    Date:   Fri Apr 26 08:56:07 2024 +0200

        Merge branch 'FXparticleSystem' of https://github.com/DedeHai/WLED into FXparticleSystem

    commit 3386a844eb156a1f82c2d25e67360b74241afbe2
    Author: Damian Schneider <[email protected]>
    Date:   Fri Apr 26 08:55:17 2024 +0200

        added local render blurring, boosting FPS, work in progress

        - changed fast-add function to use pointers
        - added fast-scaling function
        - added simple (but fast) 2D blurring function
        test shows that local blurring of full frame is almost double the speed (40FPS now is 80FPS).
        lots of comments still there

    commit 004b1c3eaa0522ce58219a8d682c35eb2dd399f5
    Merge: e43f3bd5 e83d3cb4
    Author: Damian Schneider <[email protected]>
    Date:   Thu Apr 25 15:50:07 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit e43f3bd5c612379c7004db005cd90e688f2036de
    Author: Damian Schneider <[email protected]>
    Date:   Wed Apr 24 17:33:02 2024 +0200

        bugfix in wrap function and firwork FX

    commit 2e7fbc0310321f223a808a02a2c739adcc658d43
    Author: Damian Schneider <[email protected]>
    Date:   Wed Apr 24 06:39:30 2024 +0200

        debugging going on

    commit 7b68946c023f64dc1dd0da996dfa573b2e303864
    Author: Damian Schneider <[email protected]>
    Date:   Mon Apr 22 18:52:13 2024 +0200

        in the middle of fixing FX to use new PS functions

    commit e01781407734db9c12332b8ee4c37c3977660298
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 20 15:34:16 2024 +0200

        added more tests, non compiling at the moment

    commit 856527b447d19ae4596b0b40ba92d98c87d92cc5
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 20 12:10:24 2024 +0200

        work in progress, added test function to increase particle size, also added wobbling test

    commit 4146ff4233af5b2c48a2f08bc5c4811fbe2a5782
    Merge: 50489f73 d126611e
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 16 19:32:14 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 50489f7364f4f312a940c368dce5fda6316366a0
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 16 19:29:05 2024 +0200

        work in progress, added motion blur and line attracto (non working)

    commit f7337b9b71a792251e65e73459780e5fa733033f
    Merge: 5e2dca35 d18f078b
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 7 13:39:23 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 5e2dca35772dd8376b2d015ff5973897366ab1a3
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 6 07:15:51 2024 +0200

        Fixed Speed limit

        limiting speed was incorrect, leading to overflows. fixed this.
        also fixed bugs in GEQ, removed some debug stuff, added FPS limit to fire (just en experiment)

    commit 0a251aefbe7f50bf071a1ee8e11b1640c163d8d9
    Author: Damian Schneider <[email protected]>
    Date:   Thu Apr 4 17:51:32 2024 +0200

        another huge update, many improvements, fine-tune collision, fire and some other FX

        -removed classic fire render as palette now looks much better
        -tweaked fire parameters to more awesome
        -added (optional) turbulence to fire using perlin-noise
        -ported spray FX to use PS-class
        -now definitely fixed asymmetrical collision issue: do not use bitshifts on negative numbers!
        -changed piling behaviour of particles, full rework. looks way more natural now and works much better
        -changed bouncing behavour: they now bounce at full diameter, making them stay fully in frame when laying on the floor
        -replaced all relevant bitshifts with divisions for higher accuracy throughout the PS
        -added new modes to particle box FX
        -changed a lot of FX parameters (finetuning)
        -changed all config strings to proper settings (matrix only)
        -fixed newly introduced bugs
        -added speedup/slowdown to vortex FX (aka candy, aka rotating sprays)
        -some renaming
        -fixed bugs… lots of bugs
        -merged rendering functions, removed obsolete stuff

    commit 32343eaa757de7656cf0814e9a0f16eabb3feb7d
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 2 20:26:24 2024 +0200

        updated fire, added some functions to PS, ported attractor FX

        - added turbulance to fire (after hours of fine-tuning) it now looks even more awesome
        - added attractor animation back in and improved it with more functionality
        - fixed the attractor function in the PS
        - renamed FX: 'candy' is now called 'vortex'
        - added new force function to apply a force immediately (and handle the timing in the FX)
        - added update function to PS for size update to handle dynamic segment size change
        - made waterfall width dynamic on segment width
        - removed some debug stuff
        - added #defines for maximum number of particles/sprays
        - updated fire parameter to make it look better on ESP8266
        - some little bugfixes

    commit 59f2b9ae98b77b345984c097e79f352ded1abcff
    Author: Damian Schneider <[email protected]>
    Date:   Mon Apr 1 19:04:28 2024 +0200

        more bugfixes, some animation tuning, added volcano back in

        - fixed animation transitions with proper pointer setting in each FX call
        - added color by age setting to particle system
        - maybe fixed collision having a tendency to go to the left
        - fixed bugs in fireworks FX
        - added fire spread width as a slider
        - changed max number of particles and sprays based on some ram calculations
        - some other random fixes

    commit 136f40ff62fb7f0bf4577cbc769f90a741b17c00
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 31 17:42:48 2024 +0200

        More Bugfixes, more converted FX

    commit 5f824c34b3cfdee2703783c06604f041125386d8
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 31 09:50:46 2024 +0200

        many (many!) bugfixes, added fire FX back in (and improved it a lot) added local renderbuffer for huge speed boost

        -lots of bugfixes in Particle system
        -added local rendering buffer (renders to buffer in heap)
        -added fast and accurate color-add function
        -bugfixes in render function
        -added improved 'sticky' particles in collision (unfinished business)
        -added ballpit animation back
        -lots of tweaks to fire FX and fire rendering functions, looks even better now (still unfinished)
        -added palette render option to fire

        still many debug print outputs around, needs cleanup at one point

    commit 03967a95eaebec20bf1b30bcfdb8346e138ba954
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 29 20:25:13 2024 +0100

        put particle system in a class. work in progress.

        another huge update to the particle system.
        went through the whole code, rewrote many of the functions. many improvements over the previous code. fixed many bugs (and even an ancient one in rendering function). spent many hours optimizing the code for speed and usability.
        still a work in progress, debugging is ongoing. more updates to come.

    commit 162bdaa63d24d75831010b428bc6abc6aec8eb56
    Merge: c6d5d3ef 85a51e6c
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 24 13:07:57 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit c6d5d3efa254387702e589df4f413987f106da0f
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 24 12:02:55 2024 +0100

        updated PS Fireworks with many changes and fine-tuning of parameters

        -removed spiral explosions
        -added more versatility to circular explosions
        -removed user selectable amount of rockets
        -tuned explosion size of circular explosions to match random explosions (more or less, may need improvement)
        -changed order of sliders in volcano animation

    commit 500b84724a470f0140fbd74597eb1a09b958f7d0
    Author: Damian Schneider <[email protected]>
    Date:   Sat Mar 23 20:11:48 2024 +0100

        bugfix

    commit 35c21572fdf3b1f2e2aa2fc699e22e64f418f6d9
    Author: Damian Schneider <[email protected]>
    Date:   Sat Mar 23 20:11:23 2024 +0100

        Big update: lots of little fixes and big speed boost on fire animation

        -fixed fire burning more on the left side
        -fixed crash in particle attractor
        -added many improvements for ESP8266
        -improved particle rendering efficiency
        -efficiency improvements in general
        -changed the way fire is rendered, now more than 2x faster
        -re-tuned fire to new rendering, also seperately tuned it for ESP8266
        -changed all random8() to random16() as it runs faster on ESPs
        -some reformating
        -some renaming of effect stuff
        -fine tuning on falling particle effect
        -improvements to collision handling (faster and better)
        -added a (temporary) function for speed tests, will be removed again

    commit 306a850a11c3e3272d2455e3ba2c166dc77e889a
    Author: Damian Schneider <[email protected]>
    Date:   Thu Mar 21 22:42:45 2024 +0100

        slight speed improvements in fire, like 1-2FPS

    commit 913e91025a7d8dcd05496bef0ea34398ffd146f6
    Author: Damian Schneider <[email protected]>
    Date:   Thu Mar 21 15:55:40 2024 +0100

        Particle FX Rename, default parameter tuning, bugfix

        -Now shorter names, 'PS' in front to filter the list
        -Tuned default parameters to make them look better by default
        -Bugfix in particle system (removed duplicate application of velocity)
        -reduced PS fire RAM usage (less particles, less base flames, no noticeable difference)
        -some variable renaming

    commit 7026159da3e87c73952d129a4c923c7f109f862d
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 19 20:17:13 2024 +0100

        Cleanup & Bugfixes plus major improvements for ESP8266

        -added particle reductions for ESP8266 for all FX
        -Removed collisions from Particle Perlin Noise FX, slows things down and does not contribute to a better effect experience
        -lots of optimizations for ESP8266, all FX now work (at least on 160MHz but still slow)
        -Some bugfixes
        -removed unused variables to make compiler happy

    commit ff9d2ebd44544e0883f4c765cc10955bf2b30db5
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 17 21:59:42 2024 +0100

        FX update

        - changed firework exhaust to low saturation
        - updated rotating particle spray animation

    commit a56d888f8d7c3e7253fb1427dff9ad12039410f0
    Author: Damian Schneider <[email protected]>
    Date:   Wed Mar 20 19:39:26 2024 +0100

        added rotating GEQ, work in progress

        -animation works but sliders are too sensitive. need to adjust the ranges

    commit 79917762291bcde032a01d0fea3c738e76acd483
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 17 15:41:46 2024 +0100

        GEQ  FX parameter tuning

    commit ecc64ae03dcf7f619218569145b169eea37d00a8
    Author: Damian Schneider <[email protected]>
    Date:   Sat Mar 16 11:43:22 2024 +0100

        Particle GEQ fixes, it now actually works

    commit 87adbedc71388d0dc035cee4f59a2a7f863ee25e
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 15 20:52:47 2024 +0100

        added particle GEQ effect (untested)

    commit bdfb1a9d22a446764bf0619efb669c3cec735767
    Merge: 3678aa9d 7b366d49
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 21:48:34 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 3678aa9d9f1b32a099b9fe7503021a9e31d27b69
    Merge: ac092181 88b30e7e
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 21:47:28 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit ac0921818542e74f5ded49f56d31df9299aaf834
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 20:45:52 2024 +0100

        cleanup

        removed / added comments

    commit 4930cda17d8518b2c3ac0669888820d4a04f4a8a
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 20:17:02 2024 +0100

        cleanup session

        -removed particle box 'rocking boat' (buggy) and replaced with random sloshing.
        -removed comments
        -changed some variables into 32bit for speed boost on ESP32
        -added link to KB at the top of FX.cpp

    commit 9c6d6f19bea04d274b9bc1a7ecf39f2401cac1cf
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 10 22:35:13 2024 +0100

        cleanup

        -removed wrap_update function, now integrated into move_update
        -added more 'out of bounds' checking in fire functions, may speed it up a little

    commit b99a62feff45e4769ba579ceb0f7474b299dfeb3
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 8 19:23:52 2024 +0100

        removed comments, added comments

    commit 66ac5ac81b6ee25a39482bbe31e9199e8e51ec5a
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 8 18:14:59 2024 +0100

        Revert "fixed touch buttons for ESP32 S2 and S3"

        This reverts commit 09041551862361cd8c7444ca25403f5f96a9077b.

    commit 62a975d687841189e4ef24b5b154f3a3a7fc6779
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 8 18:14:52 2024 +0100

        Revert "some tuning for touch buttons on S2/S3"

        This reverts commit d21ad8e7d1651a96f879d43ef1146a72a6ed8271.

    commit d01a1511cb4f9d2400541e2e8e0d0a8f20cfbe8c
    Author: Damian Schneider <[email protected]>
    Date:   Mon Feb 26 18:20:07 2024 +0100

        add todo

    commit 6740cb69bc61caabdad40451b47744738aced706
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 22 19:16:42 2024 +0100

        chaned rotating spray default parameters

    commit 1a7ef9b0ca7063abd42846b3346d54e5947302d9
    Author: Damian Schneider <[email protected]>
    Date:   Wed Feb 21 20:26:17 2024 +0100

        updated rotating particle spray with more user options

    commit d21ad8e7d1651a96f879d43ef1146a72a6ed8271
    Author: Damian Schneider <[email protected]>
    Date:   Wed Feb 21 18:38:34 2024 +0100

        some tuning for touch buttons on S2/S3

        now better fits the default threshold value of 32

    commit 09041551862361cd8c7444ca25403f5f96a9077b
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 18 15:52:36 2024 +0100

        fixed touch buttons for ESP32 S2 and S3

        touch is implemented differently on S2 and S3, these changes make touch buttons work on S2 and S3

    commit a7759702a761eb2158e2d6a08bb31c94cf3890fd
    Merge: 241b0808 21173dc9
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 18 11:29:00 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 241b08082e98942fae2290658ff02eb3c4247828
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 16:50:16 2024 +0100

        added particle WrapUpdate function, added spray FX, some bugfixes

    commit 11a84c1b2a142d3debaaeb35335079454830a2ec
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 14:23:05 2024 +0100

        removed TODOs

    commit 74ed705b9cb465ba573b6bce35ecaabfd64eeb0d
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 14:19:56 2024 +0100

        updated particle attractor animation parameters and added more user options to perlin noise

    commit 32979e59010831b5011f398dff10777c04c82f2c
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 12:50:20 2024 +0100

        lots of bugfixes

    commit b96ad99e0a99c393e78b672659577a58b9cbe1d7
    Author: Damian Schneider <[email protected]>
    Date:   Tue Feb 13 17:00:42 2024 +0100

        changed particle pile demo into waterfall plus some tweaks

    commit 46aef896b252568c3bd2ea2a40a4d6e89fdbef51
    Author: Damian Schneider <[email protected]>
    Date:   Tue Feb 13 06:47:35 2024 +0100

        Bugfix in particle push, now piling is working again

        particle pile-up did not work correctly, now fixed

    commit dc5c58e98a0d8ec5dd753b8d8c3c0f9f444d90db
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 18:25:37 2024 +0100

        Fixed some bugs in particle system, runs much smoother now

        also tweaked some of the FX

    commit 7c49f886419c0232118c6abc4dcdc70309f94bf9
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 13:32:23 2024 +0100

        removed option for fastcolor add

        it made very little difference in performance, but for ESP8266 it may matter so it is set permanently there. graphically the difference is also very small (sometimes a particle gets brighter or less saturated)

    commit da94d31990a4a7284ed2c7c99fc7eb98023c27b6
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 11:32:07 2024 +0100

        Improved collision handling (faster, less oscillations), changed variables to 32bit for faster calculation

        32bit variables are faster on ESP32, so use them whenever a variable is used a lot, it saves one instruction per access.

    commit 8fe044ee69161b4854cb71a69129bc07155ada3e
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 08:14:34 2024 +0100

        added fix for piling oscillations

        untested, need to verify it works

    commit f1ffbe0cf77866df42482806f85305a15d4ccefd
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 07:35:45 2024 +0100

        improved collision efficiency

        improved efficiency for stackup (pushback), added code to correctly determine direction if particles meed (probably overkill but now its there)

    commit e945faf86e578a26c14130eec94dc43e170eb8ac
    Author: Damian Schneider <[email protected]>
    Date:   Fri Feb 9 20:30:26 2024 +0100

        collision detection is now a function plus some improvements & fixes

    commit d00126bce066521cfeb62be7ef3868db520d4250
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 22:34:36 2024 +0100

        added option to use fast color add, may improve performance a little

        also fixed a bug in fire animation

    commit 7d6965d14c3fcfcc6737ae98cf87bed1c1cfe195
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 21:50:51 2024 +0100

        bugfixes in impact animation

    commit 18c79cedda9a3eaa20b01fd209b2dd3680203c14
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 21:19:30 2024 +0100

        Added saturation to be set for each particle individually

        at the expense of more ram usage, animations now have more options for color control (already used in fireworks now)

    commit a147a4bd97483aaf08b2197f2b740b686a6f8506
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 20:40:21 2024 +0100

        added angle emitter, added fireworks effect using it

    commit 7bc59c6622997013232f9bb6a738db2d64c7aafe
    Merge: 7bcfcb44 6dcd9596
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 18:34:16 2024 +0100

        Merge branch '0_15' into FXparticleSystem

    commit 7bcfcb445af6b617229c94d7fd058521ea472837
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 18:33:00 2024 +0100

        bugfixes, attracot now works

        still unknown, why more than 256 particles are needed in memory allocation to not make it crash, but it works for now

    commit cc98036e3f096d1da0c59e5cce3d1ff96c990fe9
    Author: Damian Schneider <[email protected]>
    Date:   Wed Feb 7 19:48:54 2024 +0100

        added particle attractor, added two new FX but still buggy

        particle attractor animation does not work, somthing wrong with pointer allocation, it worked with static variables

    commit 820d8dd3dca5f1acb6111bb38c8092640256bff2
    Author: Damian Schneider <[email protected]>
    Date:   Tue Feb 6 12:44:48 2024 +0100

        added preliminary functions and FX

    commit 3b8221935c593d0179c5ad629939250835bd6280
    Merge: a7ef020c 00038453
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 12:46:26 2024 +0100

        Merge branch '0_15' into FXparticleSystem

    commit a7ef020cc96898d5e858895e39662e63f9c8b948
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 12:40:37 2024 +0100

        updated particle box and firework effects

        particle box now is more random in random mode (still a work in progress)
        firework is now more configurable by sliders

    commit 520a6d54c618b4c22acc8d2084010b6558ac01ec
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:39:01 2024 +0100

        Update platformio.ini

    commit 6165083f160095e73410bcc3aedce7513cb3b094
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:20:42 2024 +0100

        added latest version of functions

        this somehow also got lost from an earlier commit

    commit c42e759c5d8ccc7a1b793b5d9f6de9a793d1ffdd
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:17:08 2024 +0100

        reformat

    commit 3e8d0790766790f32b40748026c846960739ffa6
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:15:58 2024 +0100

        added collision handling back in

        update from another commit that got lost

    commit c320b0ad80edb72ab09adcc22569f398f9015d86
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:13:54 2024 +0100

        cleanup

    commit 2db3123d9c6e8f85c19cb6736c3a5fb2d4364988
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:04:04 2024 +0100

        removed comments

    commit 45f26169043209d7f9cf7dfdc6bb142fa7ba21bd
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:02:46 2024 +0100

        added particle FX animations

        not yet final version but working

    commit 538ffdbf46abf42e75c261d1a021d0ecf1426543
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 3 10:45:34 2024 +0100

        Adding Particle System functions

        Basic Particle system defining particle structs, some emitters and particle to LED rendering

commit a6e536189c5bc0d3e18b026ff6fcd1682d1cdb8b
Author: Frank <[email protected]>
Date:   Sun May 5 21:56:01 2024 +0200

    output_bin.py : fix for mapfile copy

    The build script was not looking into the right place, so there was never a .map file dropped into build_output/map/

    Builds with the newer arduino-esp32 v2.0.x framework actually generate a .map file that is placed directly next to firmware.bin

commit 3f9a6cae53889898486dae727bbacebc680d6ee0
Author: Frank <[email protected]>
Date:   Sat May 4 14:34:23 2024 +0200

    AR: fix for arduinoFFT 2.x API

    in contrast to previous 'dev' versions, the storage for windowWeighingFactors is now managed internally by the arduinoFFT object.

commit cd5494fdd2040ba8d6858532b7348b082c345ebb
Author: Frank <[email protected]>
Date:   Sat May 4 13:36:56 2024 +0200

    AR pin config: SCK == 1 --> PDM microphone

commit 5ab1b14d6b32b1aef17ee01b334205d42d98d832
Merge: fa76431d 379f1813
Author: Blaž Kristan <[email protected]>
Date:   Fri May 3 23:25:36 2024 +0200

    Merge pull request #3946 from freakintoddles2/0_15

    Adds an API parameter to allow the user to skip to the next preset in a playlist at any time

commit 379f1813620a56bb0b3136315feb647fb0c3d45d
Author: Todd Meyer <[email protected]>
Date:   Fri May 3 11:51:47 2024 -0700

    Further simplification

commit dd19aa63d0e15693f0666ea1e33a370677b88450
Author: Todd Meyer <[email protected]>
Date:   Fri May 3 08:47:14 2024 -0700

    Forgot F[], added it

commit 6df3b417a94899fd382708208ced9ab08845826c
Author: Todd Meyer <[email protected]>
Date:   Fri May 3 08:30:37 2024 -0700

    Updated based on more feedback

commit fa76431dd673e5c1a24c75fe7d9348a93e3f22f5
Author: Blaz Kristan <[email protected]>
Date:   Fri May 3 16:08:20 2024 +0200

    Changelog update

commit 6504fb68b6ba3fc49d18594df78812c6e153e9bc
Author: Blaz Kristan <[email protected]>
Date:   Fri May 3 15:46:16 2024 +0200

    Minor MQTT optimisation.

commit 2ff49cf657a322d17ec4fab854d9834ae10a5566
Author: Blaz Kristan <[email protected]>
Date:   Fri May 3 15:45:15 2024 +0200

    Fix for #3952
    - included IR optimisations & code rearrangement

commit fa1aa1fe805aaf5f91bfe6b8f7d237e494ef643c
Merge: 85b95a29 22f6128b
Author: Blaž Kristan <[email protected]>
Date:   Fri May 3 09:56:14 2024 +0200

    Merge pull request #3944 from paspiz85/pas4

    Using brightness in analog clock overlay

commit 85b95a2940b5c17bf3d37b53ae945bc121f3b1c1
Merge: 4df936a4 736a8b1b
Author: Blaž Kristan <[email protected]>
Date:   Fri May 3 09:53:00 2024 +0200

    Merge pull request #3945 from w00000dy/Webpage-shortcuts

    Add Webpage shortcuts and Fix resizing bug

commit 5e38039c4dd630d7b4c6841deb5e0b04aa07f573
Author: Todd Meyer <[email protected]>
Date:   Thu May 2 14:36:18 2024 -0700

    Updated based on more feedback

commit 4df936a437a2e643fca724885b336b6bb3034bbd
Author: Blaz Kristan <[email protected]>
Date:   Thu May 2 10:33:10 2024 +0200

    Fix for unfortunate prior CRLF coversion.

commit 736a8b1b80102d2f9b32b8cc88ce5f409eeca116
Author: Blaz Kristan <[email protected]>
Date:   Thu May 2 10:31:50 2024 +0200

    Fix for rotating tablet into PC mode.

commit 22f6128bc47c7ee7349b4f039758bf46962b0eba
Author: Pasquale Pizzuti <[email protected]>
Date:   Thu May 2 09:04:07 2024 +0200

    using global brightness

commit db475b69988567f19c3969d1808c96918924f55e
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:09:17 2024 -0700

    Update playlist.cpp

commit 6daf7f6322eacdc0ff83756b4da735d02a269fa9
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:07:52 2024 -0700

    Update wled.cpp

    reworked based on PR feedback

commit 16086c09615d7e8c2e2050c650b9af00b875062c
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:05:26 2024 -0700

    Update wled.h

    reworked based on feedback from original PR

commit e88c81ad0d6a1ff8c18667facd2b7b326ede2b74
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:04:02 2024 -0700

    Update set.cpp

    reworked based on feedback

commit a2b9aed40df5bb55eb4f53db72c6871c72c9b30d
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:03:16 2024 -0700

    Update playlist.cpp

    reworked approach based on feedback

commit caa4fe1ec4f814f89fa2c77ef7405b0935b846ec
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:02:27 2024 -0700

    Update json.cpp

    reworked approach based on feedback

commit 25fb878e5434dd47b888bd3e5a46176c369ff8c4
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:01:30 2024 -0700

    Update fcn_declare.h

    reworked approach based on feedback

commit 5f13fc3c623864551a34f9926317b8e50ac0a73f
Merge: d01542d0 9f99a189
Author: Damian Schneider <[email protected]>
Date:   Wed May 1 14:11:42 2024 +0200

    Merge remote-tracking branch 'upstream/0_15' into FXparticleSystemSquash

commit d01542d0adfd3643d5aecc795316d5f64ac515db
Author: Damian Schneider <[email protected]>
Date:   Wed May 1 14:10:36 2024 +0200

    major bugfix, hopefully resolves all crashes

    - uncought out of bounds memory access in rendering and a bug in pointer assignment caused many hard to track down crashes. should be fixed now.
    - some minor fixes as well

commit a1d6ffadad852449a825431ad0bb8bba2f7f448d
Author: freakintoddles2 <[email protected]>
Date:   Tue Apr 30 16:49:52 2024 -0700

    Update json.cpp

    adds support for np boolean parameter to skip to next preset

commit 3b89814b6935261d65f95059690591f51a0eab5f
Author: freakintoddles2 <[email protected]>
Date:   Tue Apr 30 16:33:30 2024 -0700

    Update set.cpp

    added new NP command to API to allow user to skip to next preset…
@anlosen2020
Copy link

I based on the 0.14.3 source code, using ESP32-S3 hardware. It took me 5 months to understand the code and migrate the entire architecture to ESP-IDF 5.2.1. Currently, the migration is almost complete. At the hardware level, tasks are scheduled and divided by the dual-core CPU, and LED signal port output uses hardware DMA acceleration. With 600 LEDs, in the mode enabled by dblBfr as true, it can achieve around 39 fps. After hardware acceleration, it can reach 50 fps. In the future, I will also try to improve with new approaches to see if the fps can be further increased.

@anlosen2020
Copy link

CPU at 160Mhz With 600 LEDs, Enable (PSRAM Flash SPI speed at 80Mhz)
in BusConfig defCfg = BusConfig() enabled by dblBfr as true, it can achieve around 45 fps.
disable dblBfr it can achieve around 50 fps.
屏幕截图 2024-09-14 195135

CPU at 240Mhz With 600 LEDs, Enable (PSRAM Flash SPI speed at 80Mhz)
in BusConfig defCfg = BusConfig() disable dblBfr , it can achieve around 52.
I believe that the current fps measurement may not be accurate. I will continue to optimize the fps data in the future to achieve higher fps.

@blazoncek
Copy link
Collaborator

@anlosen2020 your comments are pointless as the underlying problem was resolved.
S3 can do 120 FPS in regular build (depending on the particular effect used).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug fixed in source This issue is unsolved in the latest release but fixed in master workaround The issue contains a workaround
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants