Eight roadmap features from the 2026-06-19 review, each a full vertical
(backend + tests + frontend + i18n en/ru/zh); ~67 new unit tests:
- automations: SolarRule sunrise/sunset trigger (new utils/solar.py, shared
with the daylight cycle; window logic mirrors TimeOfDayRule)
- ci: best-effort arm64 multi-arch Docker manifest via QEMU + docker manifest
(release.yml; amd64 path untouched, continue-on-error)
- game-integration: wire the orphaned LoLPoller via a LoLPollManager + a shared
runtime_state module (poll lifecycle on enable/CRUD/startup/shutdown)
- ui: color-harmony gradient generator (complementary/analogous/triadic/...)
- effects: audio-reactive palette modulation (new audio_energy_tap; brightness/
saturation modulation across all 12 procedural effects)
- capture: linear-light blending + spatio-temporal dithering, opt-in per
calibration (new utils/linear_light.py, utils/dither.py)
- devices: Nanoleaf extControl v2 per-panel UDP streaming (per_panel mode)
Also bundles the pending 2026-06-18 production-review fixes and other
in-progress work already in the working tree (manual-trigger rule, etc.),
since they share files and could not be cleanly separated.
Gate: ruff + tsc clean; pytest 2654 passed / 2 skipped. The single failing
test (automation manual_trigger handler coverage) is a separate in-progress
item owned elsewhere, intentionally left as-is.
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.