Skip to content

Conversation

@netmindz
Copy link
Member

@netmindz netmindz commented Jun 22, 2025

Update all builds to be using the V4 ESP-IDF, no more V3

Summary by CodeRabbit

  • New Features

    • Added support for HUB75 matrix LED panels and new board configurations.
    • Introduced new usermods, including ARTIFX effects, weather visualization, MCU temperature reporting, LDR dusk/dawn automation, and auto playlist switching based on audio.
    • Enhanced 2D drawing, anti-aliasing, and fast-path optimizations for LED effects.
    • Added new audio module support and improved I2S handling.
    • Expanded effect and palette options, and increased hardware and usermod limits.
  • Bug Fixes

    • Improved pin management, error handling, and robustness in usermods and core functions.
    • Fixed typos, clarified documentation, and corrected configuration key handling.
    • Enhanced memory allocation and resource cleanup in matrix and bus management.
  • Documentation

    • Updated and added numerous README files for new and existing usermods.
    • Revised main README and changelog to reflect MoonModules fork and new features.
    • Improved installation and configuration instructions across usermods.
  • Refactor

    • Centralized I2C pin management and refactored usermod base class usage.
    • Moved method implementations out-of-line for better maintainability in rotary encoder UI.
  • Style

    • Corrected spelling and grammar throughout comments and documentation.
  • Chores

    • Updated dependencies and package metadata.
    • Changed project license from MIT to EUPL-1.2.
    • Enhanced .gitignore and workflow configurations.
    • Removed deprecated or obsolete files and usermods.
  • Tests

    • No changes directly affecting test code.
  • Revert

    • Removed legacy or redundant usermods and documentation files.

softhack007 and others added 30 commits October 14, 2024 21:52
This line wasn't the causing the problem I'm chasing ...
Apparently the C3 can not convert negative floats to uint8_t directly, casting it into an int first fixes it.
avoid holes by using drawLine when there is a gap
Only matripix is not working correctly on arc. Effect starts at the end of the strip and use gPC to fill to beginning.
 preset loading was always resetting errorFlag to NO_ERROR.
Changed so only preset-related error are reset.
* limit drift, so we don't drift away too far
* added "show Center" = small crosshair
* added soft blur (faster) and strong blur (slower)
Expand1D Arc - No holes, and filling the complete panel
with fix for missing pixel on 8x32 and similar ratios.
speedup for 1D->2D mapping
actually its just a minor speedup, at least with -O2
Only use palette math when text with color gradient is needed
always redraw background for each frame
scrolling text - FPS with 3 digitis
colored bursts - apply gamma correction  when fading
the "smooth" variant was sometimes producing XY positions outside the canvas.
Fix for LED and Scenes uncontrollable using Alexa.
Weird behavior regarding to the device names and shared scenes fixed with this.

Seen in issue Aircoookie/Espalexa#228 and fixed from @ams-hh
Tested by myself and works just fine. Created second pull request here because the library seems to be a bit different from the official Espalexa repo.

---------
Co-authored-by: Frank <91616163+softhack007@users.noreply.github.com>
Co-authored-by: Blaz Kristan <blaz@kristan-sp.si>
similar to -ffast-math, but still supports NaN and infinites (needed for sunrise/sunset calculations)

10%-20% faster on -S3
softhack007 and others added 27 commits January 16, 2025 14:48
* use a more meaningful max universes limit of 112 (safe up to 128x128 pixels)
* accept more universes, but only track sequences for the configures max universes
* made e131LastSequenceNumber[] local (its only used in e131.cpp)
* move "progress()" into FX.h so the compiler can inline it
* removed redundant checks in  currentBri()
Seems like a 10 microsecond delay on boards like the ESP32-P4 may not be enough, causing some issues with UDP audio sync being delayed or appearing "buffered".  Oddly 10 microseconds was fine with the ESP32 and ESP32-S3, so it may also be an underlying IDF v5.3 change. 

Practically, 10 microseconds or 100 microseconds isn't a real difference when we're dealing in frames per second.
* isValid() -> isOk()
* removed unneeded "lastBus != nullptr" checks
* re-enable lastBus optimization in getPixelColor() and getPixelColorRestored()
* remove duplicate checks for _valid== true from busses (already done at BusManager level)
* use bitmask operations in getBitFromArray, setBitInArray
* make currentBri "const"
fix for a corner case that might lead to unexpected math overflow
* moving color_blend, color_add, and color_fade to a seperate file, to allow the compiler to inline the functions.

* inlining slightly increases firmware size - original non-inline functions get used on 8266, or when WLEDMM_SAVE_FLASH is defined.
Art-Net Improvements and Other Fixes
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 22, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This update delivers a major refactor and feature expansion across the codebase, introducing new usermods, optimizing 2D LED matrix and segment handling, and adding support for additional hardware (e.g., HUB75 matrices, new ESP32 boards). Core LED and color manipulation code is optimized for ESP32 fast path builds, and memory management is improved. Several usermods are added or refactored, while some legacy or redundant usermods and documentation are removed. The build system, configuration, and documentation are updated to reflect the MoonModules fork and new licensing under EUPL-1.2.

Changes

File(s) / Group Change Summary
LICENSE, readme.md, package.json, .github/FUNDING.yml, ... Licensing changed to EUPL-1.2; project branding, URLs, badges, and funding updated for MoonModules fork; documentation revised accordingly.
boards/esp32_16MB.json, boards/esp32_16MB-poe.json, ... Added new ESP32 board definitions for 16MB flash, PoE, and ESP32-S3 variants.
wled00/FX.h, wled00/FX_2Dfcn.cpp, wled00/colorTools.hpp, ... Major refactor and optimization of 2D segment, matrix, and color manipulation code; new fast/slow path logic; added support for higher framerates and new effect modes; memory management improved.
wled00/bus_manager.cpp, wled00/bus_manager.h, wled00/bus_wrapper.h Added HUB75 matrix support, bit array utilities, bus caching, and Art-Net output parameters; improved bus and pin management; debug output enhanced.
wled00/const.h, wled00/colors.cpp Expanded palette, usermod, and error code definitions; increased resource limits; optimized color blending, addition, and gamma correction.
wled00/button.cpp, wled00/cfg.cpp, wled00/alexa.cpp Improved preset/playlist handling, analog input robustness, and configuration serialization; minor bugfixes and debug output.
.gitignore, requirements.txt, CHANGELOG.md, CONTRIBUTING.md Ignore patterns refined; dependencies updated; changelog and contributing guidelines expanded.
.github/ISSUE_TEMPLATE/*, .github/workflows/wled-ci.yml Issue templates updated for MoonModules context; workflow uses updated actions and artifact handling.
pio-scripts/build-html.py, pio-scripts/output_bins.py, ... Build scripts updated for HTML asset management, environment detection, and artifact renaming.
usermods/artifx/, usermods/usermod_v2_games/, ... New usermods added: ARTI-FX interpreter, games (Pong, IMU test, 3D cube), weather forecast visualization, auto playlist, LDR dusk/dawn, MCU temperature, ANIMartRIX, and more.
usermods/audioreactive/audio_source.h, usermods/mpu6050_imu/* AudioReactive usermod refactored for new I2S chip support and configuration; IMU usermod improved for robustness and debug output.
usermods/BH1750_v2/, usermods/BME280_v2/, usermods/Battery/*, ... Sensor usermods refactored for global I2C pin management, improved MQTT, and configuration handling; minor bugfixes and spelling corrections.
usermods/usermod_v2_four_line_display/, usermods/usermod_v2_mode_sort/, ... Legacy or redundant usermods and documentation removed (e.g., Four Line Display, Mode Sort, Rotary Encoder UI v2).
usermods/usermod_v2_rotary_encoder_ui_ALT/* Rotary Encoder UI alternative refactored for out-of-line method definitions, improved pin handling, and robustness.
usermods//readme.md, usermods//.h, usermods//*.cpp Numerous documentation and comment typo fixes, clarifications, and minor improvements throughout usermods.

Possibly related PRs

  • wled/WLED#4651: Removes the particle system memory manager and refactors particle memory and rendering to use local segment data buffers, similar to memory management and rendering changes in this PR.
  • wled/WLED#4658: Refactors Segment and WS2812FX classes for segment layers and effect transitions, including gamma correction and palette management, closely related to the core segment and effect system changes here.
  • wled/WLED#4669: Adjusts usermod build configuration and build script validation, relevant to this PR’s changes to usermod build integration and metadata.
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@netmindz netmindz closed this Jun 22, 2025
@netmindz netmindz deleted the mdev-v4-only branch July 2, 2025 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.