FastLED: monthly activity digest¶
What landed on FastLED's main branch, month by month. External-context reference (like the v1/v2/MoonLight inventories), a factual log of a friend repo's releases, not MoonLight's own history or roadmap. Newest month on top. The reusable prompt that generates these digests lives in index.md.
October 2026 (up to 3.10.6)¶
Released 3.10.6 (2026-10-04), cut from master, the first published release since 3.10.4 in June. It carries the July to September work: the color pipeline at the output path, the slim bridge drivers, Pico 2 W WiFi and Bluetooth, the minimp3 decoder. The three days before it are release blockers: seven "Release blocker" issues (#4684 through #4690) opened on the 3rd and closed on the 4th, mostly toolchain pins.
Fixed
- ESP32-P4: the PARLIO driver keeps its data pins driven while its transmit unit is re-created, and LCD_RGB folds frames into 12-bit-wide lines (#4669, still open for the P4 loopback capture).
- ESP32-C6: the PARLIO loopback capture accepts a 1-LED frame, closing the "1-LED strip produces no output" report (#4609).
- LPC845: interrupt-driven UART receive ends the lost RPC replies, and printf and the channel manager are no longer linked on small tiers.
- Tiny AVR parts (ATtiny, ATmega8) no longer overflow SRAM in the example sweep, and the ESP32 IDF 3.3 toolchain compiles again.
- Binary dithering is its own module that can be compiled out, and the dither state is initialized under
NO_DITHERING.
October 2026 (3.10.6 to 3.10.7)¶
Released 3.10.7 (2026-10-10), cut from master. The week is one memory sweep: a user measured a Lolin D32 sketch at 2.5x the flash of 3.10.3 under 3.10.6 (#4707, 443 KB more flash and 8 KB more RAM), the maintainer opened a per-board reduction tracker (#4737, ten child issues) and a regressions tracker (#4801), and 3.10.7 is the result.
New
- Code a sketch cannot use is no longer linked: the FlexIO clockless pipeline in SPI-only sketches, the I2S clockless peripheral on esp32dev, the ADC driver unless
fl::analogReadis used, the WiFi stack unlessfl::netis used (1.3 KB of RAM on esp32dev), RGBW conversion in RGB-only sketches, ArduinoSerialon AVR unless the sketch uses it, and the task scheduler in driver wait loops. - The release notes give the deltas against 3.10.6-era master: esp32dev Blink 5.2 KB less flash and 1.9 KB less RAM, esp32dev APA102 15.9 KB and 2.2 KB less, esp32s3 APA102 16.6 KB and 0.7 KB less; Uno Blink static RAM is 118 bytes, below 3.10.3.
- Teensy 4: the ObjectFLED DMA buffer is sized to the frame instead of a fixed 38.4 KB, the I2S audio-input buffers are allocated on first use, and the Channel API no longer registers every driver up front (72 KB of RAM1, #4708).
- Teensy 4: an ISR-streamed FlexPWM receive and FlexIO transmit ring, verified with a 1000-LED loopback, and a platform-neutral early-boot watchdog guard so a board stuck in setup recovers before USB is up.
FL_NO_EXCEPTis now a realnoexcepton ESP targets rather than a no-op macro (the change behind the C3/C6 compile failure fixed later this month).- Non-release builds default to errors-only logging.
Fixed
- 3.10.6 failed to link on the Arduino UNO R4 WiFi (duplicate
FileSystem::beginSd, #4704), and in-place upgrades over 3.10.5 link again. fl::aligned_allochonors the requested alignment on AVR, ESP8266 and ARM instead of returning plainmalloc.- Teensy 4 WS2812 loopback decode mismatches across FlexPWM, FlexIO and ObjectFLED.
- The AVR power limiter drops its 64-bit math, and legacy white settings survive the channel encoder.
- WASM preview: strips are placed relative to the shared screen bounds instead of each strip's own minimum, screen maps with an unset diameter render, and tall layouts no longer size the canvas past the texture limit.
October 2026 (3.10.7 to 3.10.8)¶
Released 3.10.8 (2026-10-17), cut from master, a compatibility fix for the two releases before it.
Fixed
- Plain
memset,memcpy,memmoveandfreeonCRGBpointers compile again, andstd::sortandstd::reverseno longer collide with FastLED's generic functions; 3.10.6 and 3.10.7 had made these ambiguous, which "affects a LOT of code in the wild" (#4827, and #4826 for PlatformIO). Bare calls that found FastLED's algorithms through argument-dependent lookup now need thefl::qualifier. - SD file error overrides match their
noexceptcontract on ESP32, the other 3.10.7 PlatformIO failure. - The ESP32 Arduino 4 / ESP-IDF 6 release candidate builds the Test example, and the Mega (ATmega2560) joins the build matrix.
October 2026 (post-3.10.8)¶
No further release in October (3.10.9 followed on 2026-11-01). Two threads: the ESP32 platform layer is cut loose from the Arduino core piece by piece, and the ESP8266 gets a week of native drivers.
New
- ESP32: clocked SPI chipsets (APA102, SK9822, WS2801) get a real DMA burst instead of one polling transaction per byte, closing a 2024 report (#1609), and an explicitly chosen SPI host is honored for clocked LEDs, so output no longer depends on
addLedsorder (#4864). - ESP32: Arduino's SPI and LittleFS are optional providers, an unused
Serial0stays out of stock Arduino-ESP32 images (#4892), the native UART console stays out of output-only builds, the legacy RMT4 backend is selectable again with nonblocking output, and IDF 4.4 capabilities are normalized so RMT and WiFi are no longer silently disabled. - ESP8266: native HSPI output for clocked chipsets (APA102 had been bit-banged at 1.4 Mbit/s, #4925, and the 2022 "too slow data rate for dotstar" report #1443 closes with it), an I2S output engine, an I2S-based
fl::RxChannelinput, a UART WS2812 engine selected asBus::UART, OTA through ArduinoOTA, automatic embedded LittleFS, andfl::Bus::AUTOresolving on the chip. - The
FASTLED_ESP8266_UART,FASTLED_ALL_PINS_HARDWARE_SPIandFL_ESP8266_EMBEDDED_FSdefines are retired in favor of template selection, and a lint flags any new driver-enabling define. - Pull requests get a per-target memory usage report, and a no-Serial Blink scorecard per board is recorded as the new footprint baseline (#4760).
- The fastled.io documentation site moved to its own repository and the generated
gh-pageshistory is purged from the main repo, so a clone no longer fetches about 500 MB of generated pages (#4878).
Fixed
- 3.10.7 and 3.10.8 fail to compile on ESP32-C3 and C6 ("different exception specifier", #4869, #4924, #4964): fixed on master with a lint so it cannot return, shipping in 3.10.9.
- Arduino Nano ESP32 compiles again (pin functions are shielded from the board's pin remap macros, #4914), and the remaining compile warnings from #4837 are cleared.
- AVR Uno:
Servo.handFastLED.htogether no longer collide on the Timer1 vector (#4836). - ESP32: an idle SPI bus or a cached RMT channel whose pin another driver took is rebuilt rather than losing the pin (#4905, #4907), and the S3 loopback capture no longer stops at 200 edges.
- ESP32-S3: discovery JSON serialization no longer crashes under a constrained heap.
fl::unordered_mapkeeps about 1 KB of rehash scratch off the stack, which overflowed the ESP8266's 4 KB loop stack.- The never-used ESP-DSP FFT adapter is removed; the tested FFT stays.
Watching
- The flash regression against 3.10.3 is not closed: #4707 (2.5x on 3.10.6) stays open with the optimization parked on a checkpoint branch (#4771), and a 3.10.8 measurement still shows 107% more flash and 37% more RAM (#4870).
- A proposal to replace Arduino-ESP32's startup on stock cores so
Serial0is never linked (#4911) awaits a maintainer decision, and an audit to retire the legacy SPI output paths where the Channel API is the default (#4928) is open. - ESP32-P4: PARLIO emits nothing and LCD_RGB capture truncates in the loopback bench (#4669) is still open.
- The proposed "FastLED Reciprocal License" (#4046) is still open;
LICENSEon master is still MIT.
Auditability: 179 commits on origin/master with author-date 2026-10-01..2026-10-31 via git log --first-parent (newest 5bf59bfa19, oldest 696faa1de4; the first-parent view counts 176 by committer date), split at the three releases cut from master: 30 up to 3.10.6 (ebf8c2823c, published 2026-10-04), 54 to 3.10.7 (6062bee6f2, 2026-10-10), 23 to 3.10.8 (d7402f1294, 2026-10-17), 72 after. Issues via search/issues for repo:FastLED/FastLED+is:issue+created:2026-10-01..2026-10-31 (140 opened) and repo:FastLED/FastLED+is:issue+closed:2026-10-01..2026-10-31 (122 closed); only user-facing ones surfaced, and many are the project's own tracking issues. Releases via repos/FastLED/FastLED/releases (3.10.6, 3.10.7 and 3.10.8 in October, 3.10.9 on 2026-11-01). The 3.10.6 release notes on GitHub are a cumulative changelog reaching back to 2025 and are not used as the October record. Internal study/CI/test/lint/refactor commits are omitted.
September 2026¶
No release cut this month (3.10.4, 2026-06-16, remains the published release; master's manifest and the unreleased 3.10.5 tag are unchanged in meaning), so the month is not split. The month is dominated by the color pipeline reaching the output path, a family of "slim bridge" driver conversions across many boards, and the Raspberry Pi Pico family being hardened on real hardware.
New
- The profiled color pipeline now runs when a strip is shown: a channel bound to a color profile gets datasheet-aware color, gamut mapping for RGB, RGBW and two-white (RGBWW) strips, and an RGBW target-white override.
- Managed strips get temporal dithering and chipset-aware quantization: APA102 and SK9822 solve their 5-bit brightness field and color together, LPD8806 and LPD6803 quantize once at wire width, and HD108 and the 16-bit encoders now take the full device drive instead of an 8-bit value widened by a gamma table.
- The power limiter understands the new pipeline: it charges for the drive actually solved, for the extra white diode on RGBW strips, and can report when it lowers brightness.
.fledfiles can declare their source color, and the video builder can write it.- Clocked
addLeds<>strips on SAMD21/SAMD51, Teensy 4 (ObjectFLED), and ESP32 RMT4 and clockless SPI go through the shared "slim bridge" controller, with similar conversions tracked for STM32, nRF52, AVR, LPC and others. - New chipsets: TM1908 and OSTW2020C1E (both long-standing requests).
- A libm-free
fl::expaccurate to 1 ulp on every target, a float-free fixed-point cube root and 3x3 inverse, and a faster Q16.16 divide on cores with a hardware divider. - ARMv8-A builds now dispatch to the existing NEON SIMD backend.
- MoodRing example is rebuilt as a listener plus painter with continuous blending.
- MP3: the fixed-point minimp3 decoder gets a faster IMDCT, is verified on real hardware, and no longer clamps samples to 1.0.
- Browser/WASM preview shows real loop and render frame rates, and falls back to main-thread rendering when the browser lacks WebGL2 offscreen canvas.
fl::getEmbeddedFs()can be backed by a real directory on the host.- Native
fetch()sends the request's method, headers and body. - An opt-in boot-loop escape for the ESP32 bootloader.
- A
bash releaseworkflow tags and publishes releases on merge.
Fixed
- 1-D Perlin noise now has a gradient in every hash bucket (open since 2018, #1114).
- Raspberry Pi Pico: strips on independent PIO blocks transmit concurrently, data pins idle low, PIO/DMA/pin contention is reported rather than failing silently, resources are released when a controller is destroyed (open since 2020, #1471), and the UART baud ceiling follows the real peripheral clock.
- Pico 2 W: the hang in WiFi connect on the 7th peer cycle (#4173) and several steps of the over-the-air update flow (#3956) are fixed.
- The bit-bang driver no longer stretches every WS2812 bit with a constant per-byte overhead (#4203).
- HD-class chipset encoders no longer halve the strip (#4321), and the rgb16 adapter yields the pixel rather than the correction.
- Screenmap files no longer publish an unset-diameter sentinel or write a made-up pin into every v2 segment (#3322).
- Large floats no longer print as -21474836.48.
- Palette cross-fade at zero budget or zero opacity, JSON writer nesting depth, and frame-timer overflow are all bounded.
- Windows builds of the new
fetch()compile cleanly, and STM32 register names no longer collide with CMSIS macros. - The ATmega8/8A are put in the tiny-memory tier, and ATtiny85 builds compile out the dither power reserve.
Watching
- The proposed MIT to "FastLED Reciprocal License" change (#4046) is still open; the
LICENSEfile on master is still MIT. - The color pipeline phases are largely closed out this month (P1, P6, P7, P8, P9 issues #4035, #4040 through #4043 all closed), with a review burndown (#4156) closed too.
- CI cost is under study: a 20-minute Linux unit job (#4529) and cutting routine Actions usage (#4543) are open, and the full example sweep moved to nightly.
Auditability: 375 commits on origin/master with author-date 2026-09-01..2026-09-30 via git log --first-parent (range 4c3c3e9... newest ec0a0f35ef, oldest a530181a8f; the first-parent view counts 386 by committer date). Issues via search/issues for repo:FastLED/FastLED+is:issue+created:2026-09-01..2026-09-30 (172 opened) and repo:FastLED/FastLED+is:issue+closed:2026-09-01..2026-09-30 (201 closed); only user-facing ones surfaced, and many are the project's own tracking issues. No versioned release published in September (repos/FastLED/FastLED/releases, latest 3.10.4). Internal study/CI/test/lint/refactor commits are omitted.
August 2026¶
No release cut this month (3.10.4, 2026-06-16, remains the published release, with the 3.10.5 tag on master unreleased), so the month is not split. Three threads dominate: filling in long-standing chipset and board gaps from very old issues, bringing the Raspberry Pi Pico 2 W online with WiFi and Bluetooth, and replacing the MP3 decoder.
New
- On-chip flash storage works at last: sketches can read and write files on an ESP32 without an SD card, through a new
fl::getEmbeddedFs(). - Raspberry Pi Pico 2 W gains WiFi (CYW43) and Bluetooth LE, plus a device-to-device over-the-air update flow.
- ESP32 sketches can now pick which SPI bus (SPI2 or SPI3) each strip uses, so two clocked strips can run on separate buses.
- New chipsets: WS2818, LC8816E (RGBW), MY9221 (12-channel, as used on Grove chainable RGB modules), TM1812 in five-channel RGBWW mode, and HD107S as an alias.
- New platforms: Chipintelli CI13XX (RISC-V), and Teknic ClearCore / SAME53 boards.
- Non-addressable analog RGB LEDs get a real driver:
addLeds<ANALOG, RED_PIN, GREEN_PIN, BLUE_PIN>()with 500 Hz PWM, and brightness, color correction, and temperature applied like any other strip. - Optional Oklab color blending (
fl::blend_oklab) for smoother, more natural-looking fades than plain channel blending. - Pixel buffers can be saved and loaded as JSON, with a worked ESP32 flash-storage example.
- ESP8266 sketches can override the clockless wait time with
FASTLED_ESP8266_CLOCKLESS_WAIT_TIME. - The MoodRing example is split out on its own and reworked so kick, snare, and downbeat each do something visually distinct instead of all just changing speed.
- MP3 playback switches to the minimp3 decoder and now decodes in fixed point by default, which is faster on chips without a floating-point unit. The old Helix decoder is gone, along with its license restrictions.
Fixed
FastLED.clear()andclearData()only cleared the first strip of a parallel controller, which also made power limiting under-count. Open since 2020.rgb2hsv_approximate()no longer overflows and returns wrong hues on some colors. Open since 2020.- ESP32: software SPI clock toggling no longer stomps on other pins changing at the same time.
- ESP32: strip reset timing now follows each chipset's own datasheet value rather than a fixed one.
- ESP32: selecting the legacy RMT4 backend on ESP-IDF 5 now gives one clear error instead of a build failure, and C2/C3/S2 fall back to bit-bang for clocked chipsets instead of failing.
- ESP8266: Arduino
D0-D8pin constants are no longer remapped twice, and example default pins moved off pins that conflict with serial. - SAMD51 builds, broken since 3.10.4, compile again; SAMD boards use native SERCOM for hardware SPI; the Adafruit QT Py M0 onboard NeoPixel pin and the Metro M4 board alias are recognized.
- Seeed XIAO nRF52840 Plus/Sense Plus builds work under the Mbed core.
- Teensy: builds fixed across the range (3.x
F_CPU_ACTUAL, Teensy 4 SD card SPI, parallel output line masks), and Teensy 3.x/LC now emit a warning that the hardware is end-of-life and unvalidated. - AVR: ATmega644A hardware SPI pins added, and examples no longer default to the serial TX pin.
FastLED.wait()with no arguments now waits until output actually finishes instead of timing out early.- Video playback no longer crashes on zero-sized frames.
- GS1903 strips get their own timing instead of borrowing WS2812's.
- Browser/WASM preview: asset loading is bounded and verified, so a stalled download no longer hangs the sketch forever.
Watching
- A proposed license change from MIT to a new "FastLED Reciprocal License 1.0" is under discussion (#4046, #4047, #4048). Nothing has changed yet: master is still MIT. Under the proposal, shipping a product with modified FastLED would require publishing those modifications.
- A large "profiled color pipeline" design is being planned in ten tracked phases (#4032 through #4044), aiming at datasheet-accurate color, gamut mapping, and float-free fixed-point output.
- The open report that
show()'s refresh throttle takes an unconditional deep yield (#3762) is still unresolved.
Auditability: 195 first-parent commits on master with author-date 2026-08-01..2026-08-31, via git log --first-parent --since=2026-08-01 --until=2026-09-01 origin/master. Issues via gh api "search/issues?q=repo:FastLED/FastLED+is:issue+created:2026-08-01..2026-08-31&per_page=100" (102 opened) and the same with closed:2026-08-01..2026-08-31 (187 closed). The great majority of both are the project's own phase, meta, and CI trackers, so only user-facing ones are surfaced above. No versioned release was published in August (latest published release remains 3.10.4 from June; the 3.10.5 tag is an ancestor of master but has no GitHub release), so no month split.
July 2026¶
No release cut this month (3.10.4, 2026-06-16, remains the latest), so the month is not split. Two big threads: finishing the Raspberry Pi Pico driver family, and cutting the ESP32 platform loose from the Arduino core.
New
- Raspberry Pi Pico / RP2040: automatic parallel PIO output finally works for real, 2/4/8 strips driven from one PIO program, with a single-lane fallback for mixed layouts.
- Raspberry Pi Pico gains fixed-function SPI+DMA drivers, a UART DMA driver, and a public hardware-SPI routing API.
- WS2814 RGBW strips are now a first-class chipset with datasheet timing.
- Classic ESP32 gains a second I2S bank, up to 32 parallel strip outputs, plus a second UART output lane.
- FastLED can be built as a plain ESP-IDF project with no Arduino core at all: IDF's own time, serial, SPI, LEDC and heap calls are now the default on ESP32, with Arduino only as an opt-in fallback.
- Classic ESP32 also gains an I2S-based signal capture backend (reading WS2812 data in), alongside the existing RMT and LPC845 capture paths.
- LPC845 now defaults to its UART DMA output path.
- Screenmaps can describe EL wire and EL panel shapes; a new HydroPack example drives two EL panels from a microphone beat detector.
fl::printf/snprintfaccept a generic{}placeholder.
Fixed
- ESP8266:
addLeds()no longer watchdog-resets when GPIO12 (D6) is used with P9813. rgb2hsv_approximate()no longer turns orange into green; CHSV values now compare by field instead of by their RGB rendering.- TM1829 timing (FLIP + wait time) restored after a refactor dropped it.
- SK9822/APA102 on the classic
addLedspath now emit correct all-ones end clocks. - ESP32 I2S clock divider no longer silently truncates, which could produce wrong strip timing.
m0clocklessbrightness scaling was broken and always output zero.- Teensy 4.x SPI drivers no longer depend on the Arduino
SPIlibrary; Renesas boards no longer pull in an I2S header they don't have. - WASM/browser preview: microphone capture recovers after the user cancels access, and the default renderer works again.
Watching
- Report that RGBW output has been broken since 3.10.3 (#3622, closed) fed the month's RGBW colorimetry cleanups.
- An open thread (#3762) blames an unconditional deep yield in
show()'s refresh throttle for a long-standing frame-timing regression, no fix shipped yet. - A port to the WCH CH32V003 (48 MHz, 2 KB RAM) is proposed (#3755).
Auditability: 212 first-parent commits on master with author-date 2026-07-01..2026-07-31. Issues via search/issues for repo:FastLED/FastLED+is:issue+created:2026-07-01..2026-07-31 (110 opened) and closed:2026-07-01..2026-07-31 (106 closed); the great majority are the project's own phase/meta bring-up trackers for RP2040, LPC845 and the classic-ESP32 I2S driver, plus CI and linter work, only the user-facing ones are surfaced above. No versioned release published in July, so no month split.
June 2026 (up to 3.10.4)¶
Released 3.10.4 (2026-06-16), cut from master.
New
- STM32: Arduino UNO Q board support.
- New NXP LPC8xx family drivers land (LPC804 PLU, LPC845 bit-bang + PWM/DMA-to-GPIO, LPC11xx), early bring-up, bench-validated.
- Unified
fl::WatchdogAPI with real hardware implementations across platforms (ESP32, Teensy 4, AVR, Apollo3, RP2040, STM32) plus a non-allocating reset/crash-classification helper. - Wave simulation: opt-in 9-point isotropic Laplacian (smoother 2D waves), exposed as a UI toggle in several example sketches.
- ScreenMap gains a v2 schema (auto-detected), and a new
.fledcontainer format for video/screenmaps thatFxSdCardcan load. - FFT now auto-detects ESP-DSP on ESP32 (no opt-in macro needed).
Fixed
- RGBW colorimetric path reworked: native LED gamut + D65 as the default source, improved strict/boosted solvers, corrected dual- and 3-channel solving.
- ESP32: reliable streaming for SPI strips over ~680 LEDs; ESP32-C6 routes Serial to HWCDC with non-blocking writes and rejects USB-serial pins for LED output.
- Teensy Audio selection fixed on low-memory boards; nRF52 now honors configured SPI data rates.
- LuminescentGrand example: corrected serpentine column wiring/orientation.
June 2026 (post-3.10.4)¶
New
- Teensy 4.x LED driver bring-up: ObjectFLED and FlexIO parallel output engines plus a new LPUART-based WS2812 driver (inverted-TX + eDMA), and FlexPWM-based RX capture.
- New WS2812-style RX capture path on classic ESP32 (RMT4) and LPC845 (SCT+DMA).
- ARM Cortex-M DSP-extension SIMD backend wired up for Teensy 3.x/4.x (faster scale/blend on those chips).
Fixed
- SM16824E chipset timing corrected to match the datasheet.
- RGBW gamut configuration is now kept per strip.
- Fixed a memory leak in the chunked
fl::dequecontainer.
Note: the bulk of June's ~481 commits were internal (LPC bring-up scaffolding, the AutoResearch hardware-test harness, a Python→Rust C++ linter migration, RPC/JSON size-and-speed tuning, and test-file splits) and are not user-visible. Notable issue traffic was dominated by the Teensy driver and LPC845 bring-up trackers; a user-reported "multi strip problem" (#3340) was triaged and closed, and a deque refactor briefly broke a macOS-arm64 audio unit test (#3286, fixed same month).
Auditability: 481 commits with author-date in 2026-06-01..2026-06-30 on master (first-parent/merged view); split at the 3.10.4 release (published 2026-06-16, an ancestor of master). Issues reviewed via search/issues for created:2026-06-01..2026-06-30 and closed:2026-06-01..2026-06-30 (~50 each); user-facing ones folded in above, the remainder were internal bring-up/CI/linter trackers.
May 2026¶
Summarized from 150 first-parent commits on master, 2026-05-01 … 2026-05-31.
New
- New Channels API for managing multiple LED drivers at once, a
fl::Bustype,FastLED.add<Bus>(...),fl::enableAllDrivers(), andFastLED.setExclusiveDriver(...), with a diagnostic that warns when a strip's driver doesn't match its bus. (The month's biggest effort.) - RGBW / RGBWW color: proper colorimetric RGB→RGBW conversion with a lookup table, color-temperature (CCT) control, and an RGB+CCT mode.
- ESP32-P4 gains a SIMD (PIE) acceleration backend for faster pixel processing.
Faster
- Big speedups to the ESP32-P4 PARLIO parallel driver, encoding and transmission now overlap, and a chipset-aware encode path is ~5× faster than before.
- ESP32-P4 "Wave8" output ~1.2–2× faster via new transpose and lookup-table paths.
Hardware & build
- Builds cleanly on ESP-IDF 6, and can now be used as a standalone ESP-IDF component.
- ESP32 OTA support fixed (adds the required update/mDNS dependencies).
- Fixes for several boards: nRF52 Xiao BLE Sense and other nRF52 variants, ESP8266 / STM32 / ESP32-C3 / Teensy 4 / UNO R4 WiFi build issues, and ESP32-S3 LCD-clockless ISR safety.
Fixed
- RGBW driver no longer kept a dangling pointer to its color profile (could crash or corrupt output).
- AVR boards no longer try to compile RGBWW examples that overflow their memory.
April 2026¶
Summarized from 237 first-parent commits on master, 2026-04-01 … 2026-04-30.
New
- Audio "silence gate" across the audio-reactive features, tempo, spectral metrics, and the Vibe effect now fade out cleanly when the input goes quiet instead of reacting to noise.
- Audio FFT can run on the ESP-DSP hardware backend (faster spectrum analysis on ESP32).
- ESP32-S3 LCD driver gains ISR-driven chunked DMA output (smoother large-strip output); coroutine tasks can be pinned to a chosen core.
- RMT receive (reading signals in) gains DMA streaming; a long-strip SPI bug (#2254) fixed.
Fixed
- ESP32-S3 LCD-clockless GPIO crash; SPI bus ownership/buffer-reuse issues when switching drivers.
- Board fixes: Teensy 4.1 pins 40–54, Arduino Due (sam3x8e), ESP8266 register-name clash, Digispark ATtiny85.
March 2026¶
Summarized from 444 first-parent commits on master, 2026-03-01 … 2026-03-31.
- Mostly an internal stability and build-correctness month (sanitizer fixes, WASM build speed, IWYU/PCH hygiene), little user-facing.
- Fixed: AVR builds (replaced defaulted
noexceptwith explicit implementations in container types); ESP32-C3/C5 and Teensy build breakages; printf/Arduino-compatibility shim; an audio-path bug.
February 2026¶
Summarized from 516 first-parent commits on master, 2026-02-01 … 2026-02-28.
- Fixed (broad platform-stability month): AVR math bugs (left-shifts wider than AVR's 16-bit int;
PROGMEMLUT reads), ESP32-C6 dual-mode async/sync SPI, ESP32 WROOM + mbedTLS, ESP8266, Teensy LC, UART compiler issues, RGBW mode, and the UCS chipset preamble. - HTTP-server / loopback networking pieces stabilised; OTA validation fixed.
January 2026¶
Summarized from 582 first-parent commits on master, 2026-01-01 … 2026-01-31.
- A heavy stability-hardening month, most of the work was fixing memory and initialization bugs surfaced by sanitizers (ASan/LSan/UBSan): use-after-free, memory leaks, static-initialization-order issues, shared-pointer errors.
- Fixed (user-visible): a crash in power management; RP2350 system defines not being included; an ISR error where an int was read as a bool; i2s/LCD-CAM.
December 2025¶
Summarized from 392 first-parent commits on master, 2025-12-01 … 2025-12-31.
New
- PARLIO driver maturation (ESP32 parallel output): streaming support, up to 16 lanes, larger per-channel LED counts, background DMA buffer worker, and a low-level hardware abstraction layer, plus many alignment/timing fixes (the "1-bit shift" buffer-boundary bug).
- Validation / proof-of-life framework: hardware-in-the-loop validation, an ESP32 watchdog (with a USB-disconnect fix), and a result banner.
- New
Potentiometerclass (hysteresis + calibration); 16-bit PWM pin support (setPwm16); per-channel gain on the HD108 chipset;Serialgainsprintf. - Signal receive (RX) gains raw edge-time capture and a safe sketch-halt.
November 2025¶
Summarized from 528 first-parent commits on master, 2025-11-01 … 2025-11-30.
New
- Channels / ChannelBusManager foundation: a unified, priority-based driver manager with fallback, centralized SPI driver registration, and a new ChannelEngine-based SPI driver + RMT4 driver for ESP32 IDF 4.x. (Start of the multi-driver architecture that continues through to May.)
- PARLIO gains a runtime-configurable multi-channel driver with auto-select (and dropped ESP32-S3, which uses LCD instead).
- New UCS7604 controller; a generic clockless waveform generator; video playback support.
- Audio-reactive effects expand, downbeat-darkness effect, AnimartrixRing audio reactivity, configurable UI audio.
- WASM web preview moves to dedicated worker threads (drops Asyncify) with incremental/PCH build speedups.
- Experimental RISC-V interrupt support.
October 2025¶
Summarized from 1,185 first-parent commits on master, 2025-10-01 … 2025-10-31.
New
- RP2040 automatic parallel output using the standard FastLED API.
- Per-platform ESP32 clockless controllers + configurable ESP32/ESP8266 timing; nanosecond timing support for ARM K66/KL26; SPI chipset controllers split into their own headers.
- Fallback OTA implementation for ESP-IDF < 4.0.
- PARLIO strategic buffer-breaking at color boundaries.
- 8-bit math optimized for ATtiny; math template/float overloads; a beat-detection
AudioProcessorfacade. - New "advanced effects" and "LED cookbook" documentation chapters.
September 2025 (post-3.10.3)¶
Summarized from 162 first-parent commits on master, 2025-09-21 … 2025-09-30 (after the 3.10.3 release on the 20th).
New
- WASM web-preview overhaul: Three.js-based tile rendering, instanced LED rendering, SharedArrayBuffer zero-copy frames, a background-worker async controller, and an improved video recorder (native
captureStream, 60 FPS, better MP4 compatibility). - New hardware-accelerated ezWS2812 GPIO + SPI drivers for Silicon Labs MGM240 / EFR32MG24 (MG24) boards.
- Codec support: progressive JPEG decoding (4 ms time budget), and metadata parsing for GIF/JPEG/MPEG1.
- Bilinear interpolation for upscaling effects;
FxNoiseRinglow-memory mode. - README/wiring guidance for high-parallel LED setups (incl. ObjectFLED parallel capacity).