Some checks failed
Lint & Test / test (push) Failing after 27s
Integer-math implementations with pre-allocated scratch buffers. IconSelect picker updated with 10 blend modes. i18n for en/ru/zh.
115 lines
5.0 KiB
Markdown
115 lines
5.0 KiB
Markdown
# 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_controller` package → 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 API
|
|
- [ ] **`music_sync`** — Beat-synced patterns: BPM detection, energy envelope, drop detection (higher-level than raw `audio`)
|
|
- [ ] **`math_wave`** — Mathematical wave generator: user-defined sine/triangle/sawtooth expressions, superposition
|
|
- [ ] **`text_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)
|
|
|
|
- [x] Add effects: rain, comet, bouncing ball, fireworks, sparkle rain, lava lamp, wave interference
|
|
- [x] Custom palette support: user-defined [[pos,R,G,B],...] stops via JSON textarea
|
|
|
|
### `gradient`
|
|
|
|
- [x] Noise-perturbed gradient: value noise displacement on stop positions (`noise_perturb` animation type)
|
|
- [x] Gradient hue rotation: `hue_rotate` animation type — preserves S/V, rotates H
|
|
- [x] 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`
|
|
|
|
- [x] Longitude support for accurate solar position (NOAA solar equations)
|
|
- [x] Season awareness (day-of-year drives sunrise/sunset via solar declination)
|
|
|
|
### `candlelight`
|
|
|
|
- [x] Wind simulation: correlated flicker bursts across all candles (wind_strength 0.0-2.0)
|
|
- [x] Candle type presets: taper (steady), votive (flickery), bonfire (chaotic) — applied at render time
|
|
- [x] Wax drip effect: localized brightness dips with fade-in/fade-out recovery
|
|
|
|
### `composite`
|
|
|
|
- [ ] Allow nested composites (with cycle detection)
|
|
- [x] More blend modes: overlay, soft light, hard light, difference, exclusion
|
|
- [x] Per-layer LED range masks (optional start/end/reverse on each composite layer)
|
|
|
|
### `notification`
|
|
|
|
- [x] Chase effect (light bounces across strip with glowing tail)
|
|
- [x] Gradient flash (bright center fades to edges, exponential decay)
|
|
- [x] 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)
|
|
|
|
- [x] HSL shift filter (hue rotation + lightness adjustment)
|
|
- [x] ~~Color temperature filter~~ — already exists as `color_correction`
|
|
- [x] Contrast filter
|
|
- [x] ~~Saturation filter~~ — already exists
|
|
- [x] ~~Pixelation filter~~ — already exists as `pixelate`
|
|
- [x] 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
|
|
|
|
1. **`home_assistant` source** — Need to research HAOS communication protocols first
|
|
2. **Transition engine** — Design as `ColorStripSourceTransition` entity: what transition types? (crossfade, wipe, dissolve?) How does a target reference its transition config? How do automations trigger it?
|