Performance (LED hot path, allocation-free per-frame):
- Adalight: dedicated single-worker tx executor (avoids asyncio.to_thread
overhead), pre-allocated wire buffer + uint8 scratch, header struct
precomputed. New tests cover header format, buffer reuse, non-contiguous
input, and brightness scaling.
- DDP: pre-built struct.Struct for the 10-byte header, allocation-free
send buffer + memoryview emit path. New tests cover RGB/RGBW packets,
sequence/PUSH semantics, and multi-packet fragmentation.
- Calibration: precomputed Phase 3 skip-LED resampling (floor/ceil indices,
fractional weights, take/blend scratch buffers) — per-frame work is now
np.take + in-place blend, no allocations.
- WLED target processor: matching hot-path tightening.
Tutorials:
- Sub-tab switching, breadcrumb header, and prepare/switchSubTab hooks
so a tour can open/close the dashboard customize panel and resolve
targets behind sub-tabs.
- New steps for integrations tab, dashboard customize panel (presets,
global, sections, perf cells), targets, scenes, sync-clocks.
- en/ru/zh locales updated with the new tour strings.
Dashboard layout:
- Structural deep-equal so the "modified" indicator reflects truth after
a user edits then reverts, instead of a stale flag.
UI polish:
- Mod-card / modal markup pass across ~33 modal templates and the
tutorial overlay partial.
- appearance.css, modal.css, tutorials.css refresh.
Tooling:
- Add .mcp.json with code-review-graph MCP server config so the graph
tools are available to the team out of the box.