02cd9d519c
Lint & Test / test (push) Successful in 1m56s
- Rename Python package: wled_controller -> ledgrab - Rename env var prefix: WLED_ -> LEDGRAB_ (with auto-migration for old vars) - Rename localStorage key: wled_api_key -> ledgrab_api_key (with migration) - Rename HA integration domain: wled_screen_controller -> ledgrab - Update all imports, build scripts, Docker, installer, config, docs - Remove HA integration (moved to ledgrab-haos-integration repo) - Remove hacs.json (belongs in HA repo now) - Add startup warning for users with old WLED_ env vars - All tests pass (715/715), ruff clean, tsc clean, frontend builds
19 KiB
19 KiB
v0.3.0 (2026-04-08)
This release brings a major expansion of integrations and source types: Home Assistant (with light output targets), a unified Integrations tab, processed audio sources with 11 DSP filters, multi-instance MQTT, a game integration system, BindableFloat for universal value-source binding, and many new value source types. Plus a much-improved build and launcher on Windows.
Features
Home Assistant Integration
- Home Assistant integration with WebSocket connection, automation conditions, and UI (2153dde)
- HA light output targets — cast LED colors to Home Assistant lights (cb9289f)
- Entity picker for HA light mapping — searchable EntitySelect for light entities (324a308)
- HA light target live color preview — per-entity swatches via WebSocket (40751fe)
- HA source cards use health-dot indicators (e7c9a56)
Integrations & Tabs
- New Integrations tab and responsive icon-only tabs (b7da4ab)
- Multi-instance MQTT — refactored from global config to entity model (c59107c)
- Game integration system (492bdb9)
Audio
- Processed audio sources — audio filter framework (86a9d34)
- 11 audio filters implemented (eb94066)
- Processed audio source model + runtime filter integration (353c090, ab43578)
- Frontend audio processing templates + source type cleanup (5534639, 1ce0dc6)
- Music sync viz modes and
auto_gainaudio filter (b04978a)
Value Sources
- BindableFloat — universal value source binding for all scalar properties (8a17bb5)
- New value source types: HA entity, gradient map, strip extract (384362c)
system_metricsvalue source type (b6713be)- Color value source test visualization (f6c25cd)
- HA value source test — raw value axis + behavior IconSelect (0a87371)
- Value source card crosslinks + gradient_map test shows input value (4b7a8d7)
Sources & Assets
- Asset-based image/video sources, notification sounds, UI improvements (e2e1107)
math_wavecolor strip source type (ace2471)api_inputLED interpolation; fixes for LED preview, FPS charts, dashboard layout (3e0bf85)- Custom file drop zone for asset upload modal (f61a020)
UI & UX
- Card glare effect on dashboard and perf chart cards (ce53ca6)
- System theme option + toast timer overlap fix (db5008a)
- Donation banner, About tab, settings UI improvements (f3d07fc)
- Custom app icon for shortcuts and installer (5f70302)
Runtime
- Port busy check before starting the server (ea812bb)
Bug Fixes
- Tray: replace tkinter messagebox with Win32
MessageBoxW(d037a2e) - Launcher:
start-hidden.vbsmust be ASCII + CRLF, usepython.exe(fc8ee34) - Launcher: set
PYTHONPATHandLEDGRAB_CONFIG_PATHinstart-hidden.vbs(e262a8b) - Weather CSS card shows empty source name after hard refresh (6e8b159)
- Replace HA test icon with refresh; make automation rules collapsible (edc6d27)
pystrayis a core dependency on Windows (no longer optional extra) (99460a8)- Audio tree structure, filter i18n, IconSelect for filter options (af2c89c)
- Reference check before deleting audio processing template (d04192f)
- Device card header layout — URL badge overflow and hide button gap (11d5d6b)
- KC color strip test preview uses
LiveStreamManagerinstead of raw engine (a9e6e8c) - Composite layer opacity/brightness widgets + CSS layout (78ce6c8)
- HA light target — brightness source,
transition=0, dashboard type label (381ee75) - Rename HA Lights → Home Assistant, HA Light Targets → Light Targets (89d1b13)
- Command palette actions and automation condition button (c0853ce)
- Show template name instead of ID in filter list and card badges (be4c98b)
- Clip graph node title and subtitle to prevent overflow (dca2d21)
- Replace emoji with SVG icons on weather and daylight cards (53986f8)
- Send
gradient_idinstead of palette in effect transient preview (a4a9f6f)
Development / Internal
Build
- Drop
packagingdependency, inline version parsing (d4ffe2e) - Fix shell syntax error in
smoke_test_importsheredoc (feb91ad) - Keep
.pysources; smoke test skips uninstalled modules (17c5c02) - Stop stripping
zeroconf/_services; add import smoke test (fd6776a) - Stop stripping
numpy.lib/linalgfrom site-packages (9f34ffb) - Normalize non-PEP440 versions, fix
.py/compileallordering, wipe NSIS payload dirs (b5842e6)
CI
- Add manual build workflow for testing artifacts (fb98e6e)
- Use sparse checkout for release notes in release workflow (9fcfdb8)
Refactoring
- Split
color-strips.tsinto focused modules undercolor-strips/folder (7a9c368) - Key colors targets → CSS source type; HA target improvements (3e6760f)
- Move Weather and Home Assistant sources to Integrations tree group (3c2efd5)
Tests
- Isolate tests from production database (992495e)
- Processed audio sources: phase 7 testing and polish + phase 8 design review (ce1f484, 6b0e4e5)
Chores
- Remove processed-audio-sources plan files (89990f8)
- Remove python3.11 version pin from pre-commit config (f345687)
All Commits (63)
| Hash | Message |
|---|---|
| d037a2e | fix(tray): replace tkinter messagebox with Win32 MessageBoxW |
| fc8ee34 | fix(launcher): start-hidden.vbs must be ASCII + CRLF, use python.exe |
| e262a8b | fix(launcher): set PYTHONPATH and LEDGRAB_CONFIG_PATH in start-hidden.vbs |
| d4ffe2e | refactor: drop packaging dependency, inline version parsing |
| feb91ad | fix(build): fix shell syntax error in smoke_test_imports heredoc |
| 17c5c02 | fix(build): keep .py sources + make smoke test skip uninstalled modules |
| fd6776a | fix(build): stop stripping zeroconf/_services + add import smoke test |
| 9f34ffb | fix(build): stop stripping numpy.lib/linalg from site-packages |
| b5842e6 | fix(build): normalize non-PEP440 versions, fix .py/compileall ordering, wipe NSIS payload dirs |
| 7a9c368 | refactor: split color-strips.ts into focused modules under color-strips/ folder |
| ce53ca6 | feat: add card glare effect to dashboard and perf chart cards |
| b04978a | feat: add music sync viz modes and auto_gain audio filter |
| 6e8b159 | fix: weather CSS card shows empty source name after hard refresh |
| ace2471 | feat: add math_wave color strip source type |
| edc6d27 | fix: replace HA test icon with refresh, make automation rules collapsible |
| b7da4ab | feat: add Integrations tab and responsive icon-only tabs |
| 99460a8 | fix: make pystray a core dependency on Windows instead of optional extra |
| 89990f8 | chore: remove processed-audio-sources plan files |
| af2c89c | fix: audio tree structure, filter i18n, and IconSelect for filter options |
| d04192f | fix: add reference check before deleting audio processing template |
| 992495e | fix: isolate tests from production database |
| 6b0e4e5 | feat(processed-audio-sources): phase 8 - frontend design consistency review |
| ce1f484 | feat(processed-audio-sources): phase 7 - testing and polish |
| 1ce0dc6 | feat(processed-audio-sources): phase 6 - frontend source type cleanup |
| 5534639 | feat(processed-audio-sources): phase 5 - frontend audio processing templates |
| ab43578 | feat(processed-audio-sources): phase 4 - runtime filter integration |
| 353c090 | feat(processed-audio-sources): phase 3 - processed audio source model |
| eb94066 | feat(processed-audio-sources): phase 2 - implement 11 audio filters |
| 86a9d34 | feat(processed-audio-sources): phase 1 - audio filter framework |
| c59107c | feat: refactor MQTT from global config to multi-instance entity model |
| e7c9a56 | feat: HA source cards use health-dot indicators |
| 492bdb9 | feat: game integration system |
| b6713be | feat: system_metrics value source type |
| db5008a | feat: system theme option + fix toast timer overlap |
| 4b7a8d7 | feat: value source card crosslinks + gradient_map test shows input value |
| f6c25cd | feat: color value source test visualization |
| 0a87371 | feat: HA value source test — raw value axis + behavior IconSelect |
| 11d5d6b | fix: device card header layout — URL badge overflow and hide button gap |
| 384362c | feat: new value source types (HA entity, gradient map, strip extract) + UI fixes |
| ea812bb | feat: check if port is busy before starting the server |
| a9e6e8c | fix: KC color strip test preview — use LiveStreamManager instead of raw engine |
| 78ce6c8 | fix: composite layer opacity/brightness widgets + CSS layout |
| 8a17bb5 | feat: BindableFloat — universal value source binding for all scalar properties |
| 5f70302 | feat: use custom app icon for shortcuts and installer |
| 40751fe | feat: HA light target live color preview — per-entity swatches via WebSocket |
| 381ee75 | fix: HA light target — brightness source, transition=0, dashboard type label |
| 3e6760f | refactor: key colors targets → CSS source type, HA target improvements |
| 89d1b13 | fix: rename HA Lights → Home Assistant, HA Light Targets → Light Targets |
| 324a308 | feat: entity picker for HA light mapping — searchable EntitySelect for light entities |
| cb9289f | feat: HA light output targets — cast LED colors to Home Assistant lights |
| fb98e6e | ci: add manual build workflow for testing artifacts |
| 3c2efd5 | refactor: move Weather and Home Assistant sources to Integrations tree group |
| 2153dde | feat: Home Assistant integration — WebSocket connection, automation conditions, UI |
| f3d07fc | feat: donation banner, About tab, settings UI improvements |
| f61a020 | feat: custom file drop zone for asset upload modal; fix review issues |
| f345687 | chore: remove python3.11 version pin from pre-commit config |
| e2e1107 | feat: asset-based image/video sources, notification sounds, UI improvements |
| c0853ce | fix: improve command palette actions and automation condition button |
| 3e0bf85 | feat: add api_input LED interpolation; fix LED preview, FPS charts, dashboard layout |
| be4c98b | fix: show template name instead of ID in filter list and card badges |
| dca2d21 | fix: clip graph node title and subtitle to prevent overflow |
| 53986f8 | fix: replace emoji with SVG icons on weather and daylight cards |
| a4a9f6f | fix: send gradient_id instead of palette in effect transient preview |
| 9fcfdb8 | ci: use sparse checkout for release notes in release workflow |