• v0.4.0 d467eb5dae

    LedGrab v0.4.0
    Build Release / create-release (push) Successful in 3s
    Build Android APK / build-android (push) Successful in 5m57s
    Build Release / build-linux (push) Successful in 5m44s
    Build Release / build-docker (push) Successful in 7m51s
    Lint & Test / test (push) Successful in 8m59s
    Build Release / build-windows (push) Successful in 8m51s
    Stable

    alexei.dolgolyov released this 2026-04-21 19:41:40 +03:00 | 181 commits to master since this release

    v0.4.0 (2026-04-21)

    This release introduces a full Android TV app that embeds the Python server via Chaquopy, with boot-time autostart, root-based screen capture, and a watchdog. New device support includes BLE LED controllers (SP110E, Triones, Zengge, Govee), Android USB-serial Adalight/AmbiLED controllers, and a Group device type for combining multiple devices. Metrics now include battery and thermal-zone readings with a dashboard temperature chart. Devices get a new per-provider typed configuration model, and the project has been renamed from led-grab to LedGrab with the Home Assistant integration split into a separate repository.

    Features

    Android TV App

    • Android TV app embedding Python server via Chaquopy (8574424)
    • Boot-time autostart, capture watchdog, versionCode derived from git (b3775b2)
    • Root-based screen capture bypassing MediaProjection (5fcb9f8)

    Devices

    • BLE LED controller support — SP110E, Triones, Zengge, Govee (2b5dac2)
    • Android USB-serial support for Adalight/AmbiLED controllers (7fcb8dd)
    • Group device type for combining multiple devices (4940007)
    • Per-provider typed device configs (phases 1–4) (d3a6416)

    Metrics

    • Battery + thermal-zone readings with dashboard temperature chart (ecae05d)

    Sources

    • Support nesting for composite color strip sources (cc9900d)

    Project

    • Rename project to LedGrab; split Home Assistant integration into a separate repository (02cd9d5)

    Bug Fixes

    • SP110E vendor handshake + Windows/bleak robustness (45f93fd)
    • Coerce BindableFloat fps to int when snapshotting scenes (580bd69)
    • Add autocomplete attributes to credential inputs (488df98)
    • Register pattern-templates API route; responsive toolbar overflow menu (38f73ba)
    • HA Light Target cards no longer flicker on every poll cycle (83ceaed)
    • EntitySelect now shows the selected value in weather/processed CSS editors (d3cd48e)
    • Bundle bettercam/dxcam/windows-capture in the Windows installer (92585e7)
    • Launcher: set TCL_LIBRARY/TK_LIBRARY for embedded Python (0e09eaf)
    • Comprehensive security, stability, and code quality audit (123da1b)

    Development / Internal

    CI/Build

    • Android multi-ABI APK pipeline + pydantic-core wheel rebuild (151cea3)
    • Add Android APK row to release downloads table (2477e00)
    • Decouple Android release attach; add workflow_dispatch to release.yml (524e422)
    • Android: fix wheels find-links URL on Linux CI (5d6310f)
    • Android: fix missing python symlink parent; restrict to release tags (7ef17c1)

    Refactoring

    • Route ESP-NOW client through SerialTransport (928d626)
    • MetricsProvider abstraction with Android /proc backend (546b24d)
    • Move build scripts to build/ directory (a0b65e3)

    Documentation

    • Update TODO and frontend context docs (e678e55)

    All Commits
    Hash Message Author
    524e422 ci: decouple android release attach, add workflow_dispatch to release.yml alexei.dolgolyov
    5d6310f fix(android): make wheels find-links URL work on Linux CI alexei.dolgolyov
    7ef17c1 ci(android): fix missing python symlink parent, restrict to release tags alexei.dolgolyov
    b3775b2 feat(android): boot-time autostart, capture watchdog, versionCode from git alexei.dolgolyov
    45f93fd fix(devices): SP110E vendor handshake + Windows/bleak robustness alexei.dolgolyov
    2b5dac2 feat(devices): BLE LED controller support (SP110E/Triones/Zengge/Govee) alexei.dolgolyov
    d3a6416 refactor(devices): per-provider typed configs (phases 1-4) alexei.dolgolyov
    123da1b fix: comprehensive security, stability, and code quality audit alexei.dolgolyov
    5fcb9f8 feat(android): root-based screen capture bypassing MediaProjection alexei.dolgolyov
    928d626 refactor(devices): route ESP-NOW client through SerialTransport alexei.dolgolyov
    580bd69 fix(scenes): coerce BindableFloat fps to int when snapshotting alexei.dolgolyov
    7fcb8dd feat(devices): Android USB-serial support for Adalight/AmbiLED controllers alexei.dolgolyov
    ecae05d feat(metrics): battery + thermal-zone readings with dashboard temp chart alexei.dolgolyov
    546b24d refactor(metrics): MetricsProvider abstraction with Android /proc backend alexei.dolgolyov
    488df98 fix(frontend): add autocomplete attrs to credential inputs alexei.dolgolyov
    2477e00 ci: add Android APK row to release downloads table alexei.dolgolyov
    151cea3 ci: Android multi-ABI APK pipeline + pydantic-core wheel rebuild alexei.dolgolyov
    8574424 feat: Android TV app embedding Python server via Chaquopy alexei.dolgolyov
    a0b65e3 refactor: move build scripts to build/ directory alexei.dolgolyov
    02cd9d5 refactor: rename project to LedGrab, split HA integration into separate repo alexei.dolgolyov
    38f73ba fix: register pattern-templates API route; add responsive toolbar overflow menu alexei.dolgolyov
    e678e55 docs: update TODO and frontend context docs alexei.dolgolyov
    83ceaed fix: HA Light Target cards flickering on every poll cycle alexei.dolgolyov
    d3cd48e fix: EntitySelect not showing selected value in weather/processed CSS editors alexei.dolgolyov
    cc9900d feat: support nesting for composite color strip sources alexei.dolgolyov
    4940007 feat: add Group device type for combining multiple devices alexei.dolgolyov
    92585e7 fix(build): bundle bettercam/dxcam/windows-capture in installer alexei.dolgolyov
    0e09eaf fix(launcher): set TCL_LIBRARY/TK_LIBRARY for embedded Python alexei.dolgolyov

    Downloads

    Platform File Description
    Windows (installer) LedGrab-v0.4.0-setup.exe Install with Start Menu shortcut, optional autostart, uninstaller
    Windows (portable) LedGrab-v0.4.0-win-x64.zip Unzip anywhere, run LedGrab.bat
    Linux LedGrab-v0.4.0-linux-x64.tar.gz Extract, run ./run.sh
    Android LedGrab-v0.4.0-android-release.apk Sideload on Android 7.0+ (API 24+) — TV boxes, Fire TV, phones, tablets. arm64-v8a / x86_64 / x86
    Docker See below docker pull + docker run

    After starting, open http://localhost:8080 in your browser.

    Docker

    docker pull git.dolgolyov-family.by/alexei.dolgolyov/ledgrab:v0.4.0
    docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/ledgrab:v0.4.0
    

    First-time setup

    1. Change the default API key in config/default_config.yaml
    2. Open http://localhost:8080 and discover your WLED devices
    3. See INSTALLATION.md for detailed configuration
    Downloads
  • v0.3.0 adfc39f9d1

    LedGrab v0.3.0
    Build Release / create-release (push) Successful in 3s
    Build Release / build-linux (push) Successful in 1m23s
    Build Release / build-docker (push) Successful in 2m19s
    Lint & Test / test (push) Successful in 3m10s
    Build Release / build-windows (push) Successful in 3m29s
    Stable

    alexei.dolgolyov released this 2026-04-08 12:41:28 +03:00 | 210 commits to master since this release

    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 WLED_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 WLED_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

    Downloads

    Platform File Description
    Windows (installer) LedGrab-v0.3.0-setup.exe Install with Start Menu shortcut, optional autostart, uninstaller
    Windows (portable) LedGrab-v0.3.0-win-x64.zip Unzip anywhere, run LedGrab.bat
    Linux LedGrab-v0.3.0-linux-x64.tar.gz Extract, run ./run.sh
    Docker See below docker pull + docker run

    After starting, open http://localhost:8080 in your browser.

    Docker

    docker pull git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed:v0.3.0
    docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed:v0.3.0
    

    First-time setup

    1. Change the default API key in config/default_config.yaml
    2. Open http://localhost:8080 and discover your WLED devices
    3. See INSTALLATION.md for detailed configuration
    Downloads
  • v0.2.2 85b886abf8

    LedGrab v0.2.2
    Build Release / create-release (push) Successful in 4s
    Build Release / build-linux (push) Successful in 2m27s
    Lint & Test / test (push) Successful in 3m20s
    Build Release / build-docker (push) Successful in 3m13s
    Build Release / build-windows (push) Successful in 3m59s
    Stable

    alexei.dolgolyov released this 2026-03-25 22:43:53 +03:00 | 277 commits to master since this release

    v0.2.2 (2025-03-25)

    Features

    • Add 4 built-in gradients, searchable gradient picker, cleaner modal titles (a5e7a4e)

    All Commits
    Hash Message Author
    a5e7a4e feat: add 4 built-in gradients, searchable gradient picker, cleaner modal titles alexei.dolgolyov

    Downloads

    Platform File Description
    Windows (installer) LedGrab-v0.2.2-setup.exe Install with Start Menu shortcut, optional autostart, uninstaller
    Windows (portable) LedGrab-v0.2.2-win-x64.zip Unzip anywhere, run LedGrab.bat
    Linux LedGrab-v0.2.2-linux-x64.tar.gz Extract, run ./run.sh
    Docker See below docker pull + docker run

    After starting, open http://localhost:8080 in your browser.

    Docker

    docker pull git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed:v0.2.2
    docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed:v0.2.2
    

    First-time setup

    1. Change the default API key in config/default_config.yaml
    2. Open http://localhost:8080 and discover your WLED devices
    3. See INSTALLATION.md for detailed configuration
    Downloads
  • v0.2.1 7da5084337

    LedGrab v0.2.1
    Build Release / create-release (push) Successful in 1s
    Build Release / build-docker (push) Successful in 37s
    Lint & Test / test (push) Successful in 2m15s
    Build Release / build-linux (push) Successful in 1m50s
    Build Release / build-windows (push) Successful in 3m24s
    Stable

    alexei.dolgolyov released this 2026-03-25 13:20:05 +03:00 | 283 commits to master since this release

    Downloads

    Platform File Description
    Windows (installer) LedGrab-v0.2.1-setup.exe Install with Start Menu shortcut, optional autostart, uninstaller
    Windows (portable) LedGrab-v0.2.1-win-x64.zip Unzip anywhere, run LedGrab.bat
    Linux LedGrab-v0.2.1-linux-x64.tar.gz Extract, run ./run.sh
    Docker See below docker pull + docker run

    After starting, open http://localhost:8080 in your browser.

    Docker

    docker pull git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed:v0.2.1
    docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed:v0.2.1
    

    First-time setup

    1. Change the default API key in config/default_config.yaml
    2. Open http://localhost:8080 and discover your WLED devices
    3. See INSTALLATION.md for detailed configuration
    Downloads