Releases: morfredus/LEDGarland
Release list
v5.6.4 - Operating Mode Persistence Fix
Release Notes v5.6.4 (2026-02-02)
Valid from version 5.6.4
🐛 Critical Bug Fixes
1. Operating Mode Persistence Restored
Problem: Operating mode (Permanent/Motion Trigger) was not correctly restored at boot, always reverting to permanent mode regardless of saved settings.
Root Cause: NVS (Non-Volatile Storage) type mismatch — the mode was being saved as u8 (unsigned 8-bit) but read back as i32 (signed 32-bit integer), causing data corruption.
Solution: Unified storage and retrieval to use i32 type consistently, ensuring mode persistence across reboots.
Impact: Users can now rely on their chosen operating mode being preserved after power cycling or reboot.
2. ESP32-S3 Mini Pin Mapping Correction
Problem: Motion sensor pin was incorrectly documented as GPIO7 in all documentation files, but the actual hardware uses GPIO2.
Solution: Corrected MOTION_SENSOR_PIN from GPIO7 to GPIO2 across:
Impact: Hardware setup now matches documentation, preventing connection errors for ESP32-S3 Mini users.
📚 Documentation Updates
Physical Button Controls Table
Updated all user documentation with a comprehensive table detailing BOOT button and USER button functionality:
| Button | Action | Function |
|---|---|---|
| BOOT | Short press | Cycle through operating modes |
| BOOT | Long press (2s) | System reboot |
| USER | Short press | Switch garland animation (Manual mode) |
| USER | Long press (2s) | Toggle matrix on/off |
This table is now included in:
- Main README files (README.md / README_FR.md)
- Pin mapping documentation (PIN_MAPPING.md / PIN_MAPPING_FR.md)
🔧 Technical Details
NVS Type Correction
// Before (incorrect)
nvs_set_u8(nvs_handle, "operating_mode", mode); // Save as u8
nvs_get_i32(nvs_handle, "operating_mode", &mode); // Read as i32 ❌
// After (correct)
nvs_set_i32(nvs_handle, "operating_mode", mode); // Save as i32 ✅
nvs_get_i32(nvs_handle, "operating_mode", &mode); // Read as i32 ✅GPIO Mapping (ESP32-S3 Mini)
// board_config.h
#ifdef TARGET_ESP32S3_MINI
#define MOTION_SENSOR_PIN 2 // Previously incorrectly documented as GPIO7
#endif📦 Supported Hardware
This release supports all existing platforms:
- ESP32 Classic (IdeaSpark/DevKitC)
- ESP32 Wroom (DevKit V1)
- ESP32-S3 Mini (esp32s3_mini)
- ESP32-S3 Super Mini (esp32s3_supermini)
All platforms support OLED SSD1306 (I2C) display if connected.
🚀 Installation
PlatformIO
# Update to v5.6.4
git pull origin main
git checkout v5.6.4
pio run -e <your_board> -t uploadReplace <your_board> with:
esp32devkitc(ESP32 Classic)esp32_wroom(ESP32 Wroom)esp32s3_mini(ESP32-S3 Mini)esp32s3_supermini(ESP32-S3 Super Mini)
OTA Update
If OTA is already configured on your device:
pio run -e <your_board> -t upload --upload-port <device_ip>📖 Documentation
- Main README / README français
- Full Changelog / Changelog français
- Pin Mapping Guide / Guide français
- Hardware Guide / Guide français
- Troubleshooting / Dépannage
🙏 Feedback
If you encounter any issues with this release, please open an issue on the project repository with:
- Hardware platform used
- Steps to reproduce
- Serial monitor output (if applicable)
Previous Release: v5.6.3
Full Changelog: CHANGELOG.md
Release v5.6.3 - Documentation Alignment
Release v5.6.3 - Documentation Alignment
What's Changed
Documentation Updates:
- Updated version to 5.6.3 in platformio.ini
- Added CHANGELOG entries for v5.6.3 (English/French)
- Removed all ESP32-C3 HW-675 references from user documentation
- Removed all ST7789/LCD references, replaced with OLED SSD1306 only
- Completely rewrote PIN_MAPPING documentation with accurate per-board GPIO tables
- Updated supported platforms across all docs: ESP32 Classic, Wroom, S3 Mini, S3 Super Mini
- Corrected GPIO mappings in README and all guides
- Updated button logic documentation (single user button with multi-click support)
- Updated TROUBLESHOOTING with current platforms and environment names
- Maintained bilingual parity (English/French) across all documentation
- Preserved historical release notes in RELEASE_v5.2.0 documentation
Supported Platforms
- ESP32 Classic (IdeaSpark)
- ESP32 Wroom (DevKit V1)
- ESP32-S3 Mini
- ESP32-S3 Super Mini
Display Support
- OLED SSD1306 (I2C, 128x64 or 128x32, configurable rotation)
Full Changelog: https://github.com/morfredus/LED-Garland-Anim/blob/main/CHANGELOG.md
v5.6.2 (2026-02-01)
Added
- New PlatformIO environment esp32s3_supermini for ESP32S3 Super Mini with TARGET_ESP32S3_MINI board configuration
- OLED rotation configuration via OLED_ROTATION macro in config.h (U8G2_R0, U8G2_R1, U8G2_R2, U8G2_R3)
Changed
- display_oled.cpp include order to ensure U8G2lib.h is included before config.h
- Documentation version headers and current-version references synchronized to v5.6.2 (README and guides)
v5.6.0
Release v5.6.0
Highlights
- OLED display adaptation for both 128x32 and 128x64 screens, with consistent features and improved layout.
- Animation names are now internationalized (English), with short names for better readability on small screens.
- Radar animation has been completely overhauled for more realistic effects.
- In auto mode, the OLED now displays the current animation name with the "Aut:" prefix, providing clear feedback instead of just "Auto".
- All display logic now uses public getters for the active animation, ensuring robust and maintainable code.
- Documentation updated and synchronized for all features, including hardware guides, quickstart, troubleshooting, and user guides.
- Version numbers updated across all documentation and configuration files.
Bug Fixes
- Fixed double definition of OLED_HEIGHT in config.h.
- Resolved linkage errors by introducing public getters for animation state.
- Improved display logic to always show the correct animation name in auto mode.
Documentation
- All guides and documentation files updated to reflect new features and version 5.6.0.
- English and French documentation synchronized for consistency.
Other
- dev/oled branch merged into main.
- All changes pushed to the main repository.
v5.5.0
v5.5.0 – Radar Animation Overhaul & OLED Improvements
- Major overhaul of the “Radar” matrix animation: now features a single sweeping green ray with a fading trail, just like a real radar.
- Red blips appear only when the ray passes, never close together, and fade out smoothly (max 2–4 per sweep).
- No more random or clustered blips: all are triggered by the sweep for a realistic effect.
- Full support for both 128x64 and 128x32 OLED displays (auto or config selectable).
- All display logic adapts for 128x32: condensed, readable, and clear.
- Automatic short names for modes/animations on small screens.
- All animation and mode names now in English (internationalization).
- Documentation and code harmonized (EN/FR).
- Version and date updated everywhere.
See the full changelog for details.
Full Changelog: v5.4.0...v5.5.0
v5.4.0 – OLED Multi-format & Internationalization
v5.4.0 – OLED Multi-format & Internationalization
- Full support for both 128x32 and 128x64 OLED displays (auto-detection/configurable)
- Display logic fully adapts for 128x32: condensed, readable, and clear
- Automatic short English names for modes and animations on small screens
- All mode and animation names are now in English (internationalization)
- Documentation harmonized (EN/FR), changelogs and guides updated
- Version synchronized across all files and configuration
- Various display and logic improvements
This release marks a major step for hardware compatibility and international readability.
Full Changelog: v5.3.4...v5.4.0
v5.3.4
v5.3.3 - English-only codebase
All user-facing and log messages in the codebase are now in English only (except *_FR.md documentation files).
Web server responses, logs, and comments are fully English.
Version aligned everywhere (platformio.ini, README, CHANGELOG).
See CHANGELOG.md for details.
This release enforces a strict English-only policy for all code and runtime messages, improving internationalization and maintainability.
v5.3.1
🚀 Release v5.3.1
Highlights
- New ESP32 Wroom environment: Added full support for ESP32 Wroom (DevKit V1) with dedicated pin mapping, without changing any existing GPIOs for other boards.
- Third physical button: Added a third button for mode switching. All button functions are now clearly separated (Next animation, Next matrix animation, Mode change).
- OLED UI improvements:
- Smaller font for version display.
- Larger font for IP address (centered, truncated if needed).
- Info lines (Gui, 8x8, Mode) now left-aligned with the value shown immediately after the title (e.g.
Gui: Rainbow), with automatic truncation to fit the screen.
- Documentation parity: All user documentation (EN/FR) and pin mapping files updated and harmonized for v5.3.1, including new board, button mapping, and OLED notes.
- Strict SEMVER and .copilot rules: All changes are versioned, documented, and committed according to repository rules.
Changelog
- Add [env:esp32wroom] to platformio.ini and update board_config.h.
- Update main.cpp and display_oled.cpp for third button and improved OLED display.
- Clean and synchronize README.md, README_FR.md, PIN_MAPPING.md, and PIN_MAPPING_FR.md.
- All user-facing docs reflect v5.3.1 and new features.
- All code and documentation changes are committed and tagged.
This release brings hardware expansion, better user experience, and full documentation parity.
Full Changelog: v5.3.0...v5.3.1
v5.3.0
🖥️ Improved OLED UI & Consistent Display (v5.3.0)
New Features & Improvements
-
Project name and version now on two centered lines (OLED)
- The project name and version are now displayed on two separate, centered lines—both vertically and horizontally—on both the main and boot OLED screens.
- This greatly improves readability and aesthetics, with no more visual overlap.
-
Version shifted 1 pixel lower
- The version text is now shifted 1 pixel lower to avoid overlapping with the top color band on the OLED.
-
Full consistency between main and boot screens
- The boot screen now uses exactly the same centered layout as the main screen.
Documentation
- Changelogs (EN/FR), user guides, and README files updated to reflect these UI changes.
- See display_oled.cpp for the display logic.