Some checks failed
Lint & Test / test (push) Failing after 30s
Set WLED_RESTART=1 env var on tray restart so __main__.py skips opening a new browser tab — the user already has one open. Add important TODO item to eliminate WLED naming throughout the app (package rename, i18n, build scripts, etc.).
4.6 KiB
4.6 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)
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
- Custom palette editor: replace raw JSON textarea with a proper visual editor (reuse gradient editor pattern with color pickers + position sliders)
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
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 when new data arrives
- Interpolation when incoming LED count differs from strip count
- Last-write-wins from any client (no multi-source blending)
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?