• v0.9.0 838c95484d

    LedGrab v0.9.0
    Build Release / create-release (push) Successful in 4s
    Build Android APK / build-android (push) Failing after 22s
    Build Release / build-linux (push) Successful in 2m54s
    Build Release / build-windows (push) Successful in 4m50s
    Build Release / build-docker (push) Successful in 6m34s
    Build Release / publish-release (push) Successful in 4s
    Stable

    alexei.dolgolyov released this 2026-06-23 14:48:51 +03:00 | 0 commits to master since this release

    v0.9.0 (2026-06-23)

    A large feature release: a full activity/audit log, two roadmap batches of
    capture and smart-light improvements, per-pixel control for LIFX/Hue/Nanoleaf,
    and new outbound integrations (webhooks + Home Assistant MQTT discovery).

    Features

    Activity Log

    • Persistent activity/audit log: storage model with migration, recorder with
      actor context and retention, and event instrumentation across four
      categories (1ac4a0f, 726f39e, 25c613c)
    • REST API for list / export / settings / clear (4a09275)
    • Activity tab with smart filtering, live updates, and export, plus a
      dashboard widget and settings panel (9a0137f, 6e1dd21)

    Per-pixel smart lights

    • LIFX multizone (SetExtendedColorZones) and Tile per-pixel streaming,
      auto-detected on connect with single-colour fallback (39b0554)
    • Philips Hue gradient-lightstrip mapping: Entertainment v2 frames keyed by
      channel id, with a hue_gradient_mode toggle (39b0554)
    • Nanoleaf extControl v2 per-panel UDP streaming (per_panel mode) (6745e25)

    Capture & effects

    • Linear-light blending and spatio-temporal dithering, opt-in per calibration (6745e25)
    • Audio-reactive palette modulation across all 12 procedural effects (6745e25)
    • Color-harmony gradient generator (complementary / analogous / triadic / …) (6745e25)

    Automations & integrations

    • Solar sunrise/sunset automation trigger (new utils/solar.py) (6745e25)
    • Outbound webhook automation action (Discord / IFTTT / Zapier / Node-RED),
      SSRF-gated at save and fire time (39b0554)
    • Home Assistant MQTT auto-discovery: read-only binary sensors per automation,
      availability via birth/will, with cleanup on disable/delete (39b0554)
    • League of Legends poller wired via a LoLPollManager + shared runtime state (6745e25)
    • auth.expose_docs flag (default off) to view /docs, /redoc, and
      /openapi.json without a token; all real endpoints stay protected (126d8f2)

    Bug Fixes

    • Pre-release review hardening: solar timezone crash, webhook header CRLF,
      MQTT topic-prefix injection, thread-safe get_stats copy, MQTT discovery
      lock, reactive_mode Literal, and calibration-modal accessibility (0c096db)
    • Comprehensive review fixes across security, concurrency, performance,
      Android, and UI (17dd2e0)
    • Activity Log polish: accessible export menu, i18n placeholders, dashboard
      section reconciliation, column alignment, ticking time, and no spinner
      flash on instant filtering (3dd1ac3, ff1ff06, 77284e8, ae74cca, 077c99c)

    Development / Internal

    CI/Build

    • Best-effort arm64 multi-arch Docker manifest via QEMU + docker manifest
      (amd64 path untouched) (6745e25)

    Chores

    • Activity Log feature plan/subplan scaffold, post-merge cleanup, and context
      graduated into CLAUDE.md (1afe7d6, e584235)

    Tests: ~180 new unit tests added across the activity log, roadmap features,
    and integrations. Release gate green: ruff + tsc + build clean,
    pytest 2739 passed / 2 skipped.


    All Commits
    Hash Message Author
    0c096db fix: address pre-release review findings (2026-06-23) alexei.dolgolyov
    39b0554 feat: roadmap round two (2026-06-23) — per-pixel smart-lights + integrations alexei.dolgolyov
    6745e25 feat: roadmap batch (2026-06-19) — solar/linear-light/dither/nanoleaf + integrations alexei.dolgolyov
    126d8f2 feat(auth): add auth.expose_docs flag to view API docs without a token alexei.dolgolyov
    e584235 chore(activity-log): post-merge cleanup + graduate context to CLAUDE.md alexei.dolgolyov
    077c99c fix(activity-log): no spinner flash on instant filtering alexei.dolgolyov
    ae74cca fix(activity-log): UI polish - accessible export menu, i18n placeholders, zero-result spinner fix alexei.dolgolyov
    77284e8 fix(activity-log): dashboard section reconciliation + activity column alignment alexei.dolgolyov
    ff1ff06 fix(activity-log): post-test polish - localize descriptions, dashboard widget, ticking time alexei.dolgolyov
    3dd1ac3 fix(activity-log): final-review fixes - crosslink keys + sanitize parity alexei.dolgolyov
    6e1dd21 feat(activity-log): phase 6 - dashboard widget + settings panel + docs alexei.dolgolyov
    9a0137f feat(activity-log): phase 5 - Activity tab (smart filtering, live updates, export) alexei.dolgolyov
    4a09275 feat(activity-log): phase 4 - REST API (list/export/settings/clear) alexei.dolgolyov
    25c613c feat(activity-log): phase 3 - event instrumentation (4 categories) alexei.dolgolyov
    726f39e feat(activity-log): phase 2 - recorder, actor context, retention, lifecycle alexei.dolgolyov
    1ac4a0f feat(activity-log): phase 1 - storage model, migration, repository alexei.dolgolyov
    1afe7d6 chore(activity-log): scaffold feature plan and phase subplans alexei.dolgolyov
    17dd2e0 fix: resolve comprehensive review findings (security, concurrency, perf, Android, UI) alexei.dolgolyov

    Downloads

    Platform File Description
    Windows (installer) LedGrab-v0.9.0-setup.exe Install with Start Menu shortcut, optional autostart, uninstaller
    Windows (portable) LedGrab-v0.9.0-win-x64.zip Unzip anywhere, run LedGrab.bat
    Linux LedGrab-v0.9.0-linux-x64.tar.gz Extract, run ./run.sh
    Android LedGrab-v0.9.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.9.0
    docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/ledgrab:v0.9.0
    

    First-time setup

    1. Change the default API key in .
    2. Open http://localhost:8080 and add your LED devices.
    3. See for detailed configuration.
    Downloads