Some checks failed
Lint & Test / test (push) Failing after 33s
Composite layers now support optional start/end LED range (toggleable) and reverse flag, making composite a superset of mapped source. Layers are collapsible with animated expand/collapse and consistent 0.85rem font sizing. Delete button restyled as ghost icon button. Also includes minor dashboard CSS overflow fixes.
5.0 KiB
5.0 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 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?