All checks were successful
Lint & Test / test (push) Successful in 1m26s
API Input: - Add interpolation mode (linear/nearest/none) for LED count mismatch between incoming data and device LED count - New IconSelect in editor, i18n for en/ru/zh - Mark crossfade as won't-do (client owns temporal transitions) - Mark last-write-wins as already implemented LED Preview: - Fix zone-mode preview parsing composite wire format (0xFE header bytes were rendered as color data, garbling multi-zone previews) - Fix _restoreLedPreviewState to handle zone-mode panels FPS Charts: - Seed target card charts from server metrics-history on first load - Add fetchMetricsHistory() with 5s TTL cache shared across dashboard, targets, perf-charts, and graph-editor - Fix chart padding: pass maxSamples per caller (120 for dashboard, 30 for target cards) instead of hardcoded 120 - Fix dashboard chart empty on tab switch (always fetch server history) - Left-pad with nulls for consistent chart width across targets Dashboard: - Fix metrics row alignment (grid layout with fixed column widths) - Fix FPS label overflow into uptime column
5.1 KiB
5.1 KiB
TODO
IMPORTANT: Remove WLED naming throughout the app
- Rename all references to "WLED" in user-facing strings, class names, module names, config keys, file paths, and documentation
- The app is LedGrab — not tied to WLED specifically. WLED is just one of many supported output protocols
- Audit: i18n keys, page titles, tray labels, installer text, pyproject.toml description, README, CLAUDE.md, context files, API docs
- Rename
wled_controllerpackage → decide on new package name (e.g.ledgrab) - Update import paths, entry points, config references, build scripts, Docker, CI/CD
- Migration required if renaming storage paths or config keys (see data migration policy in CLAUDE.md)
Donation / Open-Source Banner
- Add a persistent but dismissible banner or notification in the dashboard UI informing users that the project is open-source and under active development, and that donations are highly appreciated
- Include a link to the donation page (GitHub Sponsors, Ko-fi, or similar — decide on platform)
- Remember dismissal in localStorage so it doesn't reappear every session
- Add i18n keys for the banner text (
en.json,ru.json,zh.json)
Color Strip Source Improvements
New Source Types
weather— Weather-reactive ambient: maps weather conditions (rain, snow, clear, storm) to colors/animations via APImusic_sync— Beat-synced patterns: BPM detection, energy envelope, drop detection (higher-level than rawaudio)math_wave— Mathematical wave generator: user-defined sine/triangle/sawtooth expressions, superpositiontext_scroll— Scrolling text marquee: bitmap font rendering, static text or RSS/API data source (delayed)
Discuss: home_assistant
Need to research HAOS communication options first (WebSocket API, REST API, MQTT, etc.) before deciding scope.
Deferred
image— Static image sampler (not now)clock— Time display (not now)
Improvements to Existing Sources
effect (now 12 types)
- Add effects: rain, comet, bouncing ball, fireworks, sparkle rain, lava lamp, wave interference
- Custom palette support: user-defined [[pos,R,G,B],...] stops via JSON textarea
gradient
- Noise-perturbed gradient: value noise displacement on stop positions (
noise_perturbanimation type) - Gradient hue rotation:
hue_rotateanimation type — preserves S/V, rotates H - Easing functions between stops: linear, ease_in_out (smoothstep), step, cubic
audio
- New audio source type: band extractor (bass/mid/treble split) — responsibility of audio source layer, not CSS
- Peak hold indicator: global option on audio source (not per-mode), configurable decay time
daylight
- Longitude support for accurate solar position (NOAA solar equations)
- Season awareness (day-of-year drives sunrise/sunset via solar declination)
candlelight
- Wind simulation: correlated flicker bursts across all candles (wind_strength 0.0-2.0)
- Candle type presets: taper (steady), votive (flickery), bonfire (chaotic) — applied at render time
- Wax drip effect: localized brightness dips with fade-in/fade-out recovery
composite
- Allow nested composites (with cycle detection)
- More blend modes: overlay, soft light, hard light, difference, exclusion
- Per-layer LED range masks (optional start/end/reverse on each composite layer)
notification
- Chase effect (light bounces across strip with glowing tail)
- Gradient flash (bright center fades to edges, exponential decay)
- Queue priority levels (color_override = high priority, interrupts current)
api_input
Crossfade transition— won't do: external client owns temporal transitions; crossfading on our side would double-smooth- Interpolation when incoming LED count differs from strip count (linear/nearest/none modes)
- Last-write-wins from any client — already the default behavior (push overwrites buffer)
Architectural / Pipeline
Processing Templates (CSPT)
- HSL shift filter (hue rotation + lightness adjustment)
Color temperature filter— already exists ascolor_correction- Contrast filter
Saturation filter— already existsPixelation filter— already exists aspixelate- Temporal blur filter (blend frames over time)
Transition Engine
Needs deeper design discussion. Likely a new entity type ColorStripSourceTransition that defines how source switches happen (crossfade, wipe, etc.). Interacts with automations when they switch a target's active source.
Deferred
- Global BPM sync (not sure)
- Recording/playback (not now)
- Source preview in editor modal (not needed — overlay preview on devices is sufficient)
Remaining Open Discussion
home_assistantsource — Need to research HAOS communication protocols first- Transition engine — Design as
ColorStripSourceTransitionentity: what transition types? (crossfade, wipe, dissolve?) How does a target reference its transition config? How do automations trigger it?