Skip to content

fix(Fix_unreachable_netservices_v2): v16 compatibility fixes#5589

Closed
Joeboyc2 wants to merge 74 commits into
wled:mainfrom
Joeboyc2:fix/fix-unreachable-netservices-v16-compat
Closed

fix(Fix_unreachable_netservices_v2): v16 compatibility fixes#5589
Joeboyc2 wants to merge 74 commits into
wled:mainfrom
Joeboyc2:fix/fix-unreachable-netservices-v16-compat

Conversation

@Joeboyc2
Copy link
Copy Markdown
Contributor

@Joeboyc2 Joeboyc2 commented May 10, 2026

Summary

Two issues prevent Fix_unreachable_netservices_v2 from building under WLED v16:

  • Missing libArchive: false in library.json — the v16 build system requires "build": {"libArchive": false} in every usermod's library.json. Without it the build fails immediately with ERROR: libArchive=false is missing on usermod(s).

  • serializeConfig() no longer has a no-argument overload — v16 changed serializeConfig() to require a JsonObject parameter. The correct no-argument replacement for saving config to the filesystem is serializeConfigToFS().

Test plan

  • Fix_unreachable_netservices_v2 compiles cleanly in an ESP8266 build environment with both fixes applied
  • Verified serializeConfigToFS() is the correct equivalent — it allocates the JSON document internally and calls serializeConfig(root) + writes to LittleFS

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features

    • Expanded HUB75 LED matrix support with additional hardware configurations
    • Gzipped firmware OTA update validation
    • Usermod palette registration system
    • Web UI pin utility functions for GPIO management
  • Improvements

    • Enhanced DMX input pin handling with better validation
    • Improved palette system architecture with separate usermod/custom palette storage
    • Refined effect behavior and initialization
    • Web UI settings redesigned for better configuration experience
  • Bug Fixes

    • Fixed game-of-life effect update logic
    • Corrected particle effect behaviors
    • IPv6 router advertisement packet buffer management
  • Documentation

    • Comprehensive coding guidelines for C++, ESP-IDF, web UI, and CI/CD workflows

Review Change Stack

netmindz and others added 30 commits March 29, 2026 22:35
Updated instructions for providing references in analysis results.
Eliminates size limit.  Fixes wled#5458
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
replaces the last remaining FastLED.h with fstled_slim.h
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix Alexa/Hue discovery by correcting SSDP response to match UPnP spec
New extended data for usage report
Rather than append a linker file, we edit the upstream supplied ones to
add our section to the binaries.  Works better on all platforms.

Co-Authored-By: Claude <noreply@anthropic.com>
Use readelf instead of nm for great speed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0.16 - Backport dynarray fixes from V5 WIP
…h) (wled#5499)

* use memory aligned allocations, fix bug in FFT magnitude (integer path)
* assign pointer to globals not local copy
- fix PS Sparkler for large setups: need 32bit random position, 16bit is not enough
- fix PS Fireworks 1D: need to `break` if no particles are available or it can lead to stalls on large setups
- do not use collisions by default PS Fuzzy Noise: its very slow on larger setups
Add identifier string for DMX realtime mode
* fix blending style options list filter for iOS
* fix default fallback
Added a guideline to prevent agents from overwriting PR descriptions (see https://github.com/orgs/community/discussions/187027).
some files were a bit behind - make sure the same instructions apply everywhere.
Emphasize the importance of targeting the main branch for PRs.
DedeHai and others added 23 commits May 3, 2026 18:41
Palette display names now follow the format "UMName: palName" (e.g.
"AudioReactive: Audio Responsive Hue") when a usermod supplies a
specific palName, keeping the usermod name as a consistent prefix.
Fallback when palName is nullptr remains "UMName index".

Update AudioReactive palette names to the full descriptive names from
the original WLED-MM port: "Audio Responsive Ratio", "Audio Responsive
Hue", and "Audio Responsive Spectrum".
Since the display format is now "UMName: palName", shorten the palette
names to just "Ratio", "Hue", and "Spectrum" — rendering as
"AudioReactive: Ratio" etc. rather than "AudioReactive: Audio Responsive Ratio".
Move the four HUB75 envs from platformio_override.sample.ini into
platformio.ini (refactored with a shared [hub75] section and extends=
to deduplicate), and gate them behind a release-only config template
so nightly/PR CI keep building only the standard env matrix.

The release workflow now copies platformio_release.ini.template into
place, which extends default_envs with the HUB75 envs.
Free PSRAM (info.psram) can be transiently 0 on PSRAM-capable boards,
which would wrongly reject multi-panel HUB75 setups in the LED settings
validation. Prefer info.psrSz (total PSRAM size) and fall back to
info.psram only if psrSz is unavailable.

Suggested in PR wled#5558 review.
…t-profiles

Add Ethernet profiles for QuinLED Dig-Uno/Quad v4 and Dig-Octa 32-8L v4
…rrent background color when Complete is enabled (wled#5453)

* Fixes issue in Dissolve when a palette has same color pixel as the current background color when Complete mode is enabled

---------

Co-authored-by: Damian Schneider <daedae@gmx.ch>
Two issues prevent this usermod from building under v16:

1. library.json is missing "build": {"libArchive": false}, causing the
   build system to reject it with an error before compilation begins.

2. serializeConfig() no longer has a no-argument overload in v16; the
   correct replacement is serializeConfigToFS() which creates the JSON
   document internally and writes to the filesystem.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 10, 2026

Review Change Stack

Caution

Review failed

The pull request is closed.

Warning

Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 44ac531f-5d5b-4358-b651-67ee22659c73

📥 Commits

Reviewing files that changed from the base of the PR and between 37623ed and 70ceb0d.

⛔ Files ignored due to path filters (5)
  • package-lock.json is excluded by !**/package-lock.json
  • wled00/data/icons-ui/fonts/wled122.svg is excluded by !**/*.svg
  • wled00/data/icons-ui/fonts/wled122.ttf is excluded by !**/*.ttf
  • wled00/data/icons-ui/fonts/wled122.woff is excluded by !**/*.woff
  • wled00/data/icons-ui/fonts/wled122.woff2 is excluded by !**/*.woff2
📒 Files selected for processing (69)
  • .coderabbit.yaml
  • .github/agent-build.instructions.md
  • .github/copilot-instructions.md
  • .github/platformio_release.ini.template
  • .github/workflows/build.yml
  • .github/workflows/nightly.yml
  • .github/workflows/release.yml
  • .github/workflows/usermods.yml
  • .gitignore
  • AGENTS.md
  • CONTRIBUTING.md
  • docs/cicd.instructions.md
  • docs/cpp.instructions.md
  • docs/esp-idf.instructions.md
  • docs/web.instructions.md
  • package.json
  • pio-scripts/dynarray.py
  • pio-scripts/validate_modules.py
  • platformio.ini
  • platformio_override.sample.ini
  • tools/dynarray_espressif32.ld
  • usermods/Fix_unreachable_netservices_v2/library.json
  • usermods/Fix_unreachable_netservices_v2/usermod_Fix_unreachable_netservices.cpp
  • usermods/audioreactive/audio_reactive.cpp
  • wled00/FX.cpp
  • wled00/FX_fcn.cpp
  • wled00/bus_manager.cpp
  • wled00/bus_manager.h
  • wled00/cfg.cpp
  • wled00/colors.cpp
  • wled00/colors.h
  • wled00/const.h
  • wled00/data/common.js
  • wled00/data/cpal/cpal.htm
  • wled00/data/icons-ui/demo-files/demo.css
  • wled00/data/icons-ui/demo.html
  • wled00/data/icons-ui/selection.json
  • wled00/data/icons-ui/style.css
  • wled00/data/index.css
  • wled00/data/index.js
  • wled00/data/pixelforge/pixelforge.htm
  • wled00/data/settings.htm
  • wled00/data/settings_leds.htm
  • wled00/data/settings_pininfo.htm
  • wled00/data/settings_sync.htm
  • wled00/data/settings_um.htm
  • wled00/data/settings_wifi.htm
  • wled00/dmx_input.cpp
  • wled00/dmx_input.h
  • wled00/dynarray.h
  • wled00/e131.cpp
  • wled00/fcn_declare.h
  • wled00/image_loader.cpp
  • wled00/json.cpp
  • wled00/network.cpp
  • wled00/ota_update.cpp
  • wled00/ota_update.h
  • wled00/pin_manager.h
  • wled00/set.cpp
  • wled00/src/dependencies/e131/ESPAsyncE131.cpp
  • wled00/src/dependencies/e131/ESPAsyncE131.h
  • wled00/src/dependencies/espalexa/Espalexa.h
  • wled00/udp.cpp
  • wled00/util.cpp
  • wled00/wled.cpp
  • wled00/wled.h
  • wled00/wled_server.cpp
  • wled00/ws.cpp
  • wled00/xml.cpp

Walkthrough

Adds usermod palette ID space/APIs, HUB75 configs and UI gating, stricter E1.31/DDP parsing with length propagation, gzipped OTA validation/status model, shared UI pin utilities across settings, assorted FX and core tweaks, updated Ethernet options, new build/release workflows and envs, and extensive developer docs and CodeRabbit config.

Changes

WLED v16 Integration Cohort

Layer / File(s) Summary
Contracts, headers, constants
wled00/colors.h, wled00/const.h, wled00/fcn_declare.h, wled00/src/dependencies/e131/ESPAsyncE131.h, wled00/dmx_input.h, wled00/ota_update.h, wled00/dynarray.h, wled00/bus_manager.h, wled00/pin_manager.h, wled00/wled.h
Defines usermod/custom palette ID bases and structs; adds packetLen to E1.31 callback; introduces OTAResultStatus; DMX pins become int8_t with -1 defaults; bumps VERSION to 2605010; exposes usermodPalettes.
E1.31/DDP packet handling
wled00/e131.cpp, wled00/src/dependencies/e131/ESPAsyncE131.cpp, wled00/ws.cpp, wled00/udp.cpp
Propagates packetLen through callbacks; validates DDP bounds, flags, and IDs; tightens E1.31/Art-Net checks; updates WebSocket dispatch; documents DDP sequence number range.
Ethernet boards, DMX, SSDP
wled00/network.cpp, wled00/dmx_input.cpp, wled00/src/dependencies/espalexa/Espalexa.h
Adds QuinLED v4 Ethernet profiles; frees RA pbuf; allows pin 0 and int8_t DMX pins; computes EUI-64 bridgeId for Alexa/Hue SSDP discovery.
OTA status model and gzipped validation
wled00/ota_update.*, wled00/wled_server.cpp
Adds gzipped OTA validation with uzlib decompression; introduces multi-state OTAResultStatus (TryAgain/Replied/Ready); defers HTTP response on TryAgain.
Palette model, APIs, and persistence
wled00/colors.cpp, wled00/FX_fcn.cpp, wled00/util.cpp
Implements usermod palette removal via removeUsermodPalettes(); clamps palette IDs per range; generates display names for usermod/custom; fills custom gaps with gray placeholders.
JSON API: palette info and mode data
wled00/json.cpp, wled00/fcn_declare.h
Extends serializeInfo() and serializePalettes() for usermod palettes; replaces in-memory serializeModeData() with streaming respondModeData(AsyncWebServerRequest*); updates serveJson() routing for /fxda endpoint.
Core FX, image, cfg, bus, logging
wled00/FX.cpp, wled00/image_loader.cpp, wled00/bus_manager.cpp, wled00/cfg.cpp, wled00/set.cpp, wled00/wled.cpp
Multiple small effect tweaks (Dissolve, Candle, Flow, GameOfLife); ESP32C3 GIF block-read yielding; HUB75 driver null-safety; HUB75 config pin-bypass; ESP32 RX pulldown via GPIO API; debug log adjustments.
Usermods: audioreactive and fixes
usermods/audioreactive/audio_reactive.cpp, usermods/Fix_unreachable_netservices_v2/*
Allocates FFT buffers via heap_caps_aligned_calloc; adds SR_DMTYPE_NETWORK_ONLY mode; integrates palette creation via usermodPalettes; adds libArchive: false build config; fixes netservices persistence path.
UI shared pin utilities and pages
wled00/data/common.js, wled00/data/settings_*.htm, wled00/xml.cpp
Centralizes fetchPinInfo(), makePinSelect(), getOwnerName(), getCaps() helpers; integrates into settings pages with conflict resolution and dynamic dropdown rebuilding; appends d.adc GPIO metadata.
UI index: blending, palettes, upgrade report
wled00/data/index.js
Snapshots blending options; fixed-range usermod/custom palette population (255→201 and 200↓); cache validation with pcount; enhanced upgrade telemetry with /json/cfg fetch.
UI palette editor and PixelForge
wled00/data/cpal/cpal.htm, wled00/data/pixelforge/pixelforge.htm
Implements request sequencing (_applySeq) with HTTP fallback queue and rate-limiting; changes external palette/tools URLs to wled.github.io; adjusts PixelForge POST body structure.
UI assets, styles, and settings layout
wled00/data/icons-ui/*, wled00/data/index.css, wled00/data/settings.htm
Adds i-search icon; refreshes font cache hashes; adjusts demo CSS sizing; revises settings loader and CSS layout constraints.
UI network settings: Ethernet dropdown
wled00/data/settings_wifi.htm
Updates Ethernet type options to include QuinLED v4 Uno/Quad (14) and Octa (15) variants.
Build system and CI/release
.github/workflows/*, platformio.ini, .github/platformio_release.ini.template, platformio_override.sample.ini, .gitignore, package.json
Adds release reusable workflow input; Node 24 opt-in; release template and artifact naming; HUB75 environments; ArduinoUZlib ESP8266 dependency; version bump to 16.0.0.
Linker dynarray injection and module validation
pio-scripts/dynarray.py, tools/dynarray_espressif32.ld, pio-scripts/validate_modules.py
Injects dynarray into rodata by patching sections.ld; removes old linker fragment; switches module validation to readelf/DWARF compile-units with sentinel-based usermod counting.
Docs and instruction guides
AGENTS.md, CONTRIBUTING.md, docs/*.instructions.md, .github/*instructions.md
Adds comprehensive C++, ESP-IDF, CI/CD, and Web UI instruction documents; updates contributor guidelines with AI markers and build/IDE links; provides agent-mode build reference.
CodeRabbit review configuration
.coderabbit.yaml
Adds reviewer config with path-scoped rules for C++, web, generated headers, usermods, workflows, and .instructions.md files; disables docstring and unit test finishing touches.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related issues

Possibly related PRs

  • wled/WLED#5548 — Also introduces usermodPalettes and palette ID space changes across colors/json/UI.
  • wled/WLED#5554 — Overlaps on E1.31/DDP packet handling and callback signatures.
  • wled/WLED#5558 — Shares CI/release workflow and HUB75 build/env updates.

Suggested labels

bug, usermod, configuration

Suggested reviewers

  • willmmiles
  • netmindz
  • softhack007
✨ Finishing Touches
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch fix/fix-unreachable-netservices-v16-compat

@Joeboyc2
Copy link
Copy Markdown
Contributor Author

Closing in favour of a conflict-free replacement PR based directly on upstream/main.

@Joeboyc2 Joeboyc2 closed this May 10, 2026
@Joeboyc2 Joeboyc2 deleted the fix/fix-unreachable-netservices-v16-compat branch May 10, 2026 10:06
@coderabbitai coderabbitai Bot added bug usermod usermod related configuration Incorrect configuration or configuration related issue. labels May 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug configuration Incorrect configuration or configuration related issue. usermod usermod related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants