Files
ledgrab/RELEASE_NOTES.md
T
alexei.dolgolyov 02cd9d519c
Lint & Test / test (push) Successful in 1m56s
refactor: rename project to LedGrab, split HA integration into separate repo
- 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
2026-04-12 22:45:28 +03:00

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_gain audio 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_metrics value 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_wave color strip source type (ace2471)
  • api_input LED 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.vbs must be ASCII + CRLF, use python.exe (fc8ee34)
  • Launcher: set PYTHONPATH and LEDGRAB_CONFIG_PATH in start-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)
  • pystray is 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 LiveStreamManager instead 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_id instead of palette in effect transient preview (a4a9f6f)

Development / Internal

Build

  • Drop packaging dependency, inline version parsing (d4ffe2e)
  • Fix shell syntax error in smoke_test_imports heredoc (feb91ad)
  • Keep .py sources; smoke test skips uninstalled modules (17c5c02)
  • Stop stripping zeroconf/_services; add import smoke test (fd6776a)
  • Stop stripping numpy.lib/linalg from site-packages (9f34ffb)
  • Normalize non-PEP440 versions, fix .py/compileall ordering, 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.ts into focused modules under color-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