-
LedGrab v0.6.0
StableBuild Release / create-release (push) Successful in 3sBuild Android APK / build-android (push) Failing after 3m52sBuild Release / build-linux (push) Successful in 5m20sBuild Release / build-docker (push) Successful in 6m20sBuild Release / build-windows (push) Successful in 7m7sreleased this
2026-05-01 19:11:15 +03:00 | 141 commits to master since this releasev0.6.0 (2026-05-01)
This release adds device-event notifications (snack + Web Notifications), a daylight/timezone-aware streaming pipeline with a new camera engine, a redesigned Targets surface built on the dashboard's mod-card system, a tighter LED hot path with allocation-free per-frame work, and a revamped Release Notes overlay with clickable asset downloads. Plus a wide pass of modal, toolbar, and settings polish across the WebUI.
Features
- Device event notifications — configurable per-event channel matrix (none / snack / OS / both) for target online/offline, new WLED/serial discovery, and devices going missing. Backed by a long-running mDNS browser + 10 s serial poller, a startup-grace / flap-debounce / bulk-coalesce pipeline, and a new Notifications tab in Settings (en/ru/zh). (8aa3a32)
- Daylight + timezone streaming — new
daylight_settingsmodule anddaylight-tzfrontend helper expand the daylight stream's behavior; capture path additions land alongside a new camera engine test suite. (fdac26b) - Targets cards migrated to the mod-card system — LED targets and HA Light targets now share the dashboard's instrument-readout vocabulary (mod-head / mod-leds / mod-metrics / mod-foot, kebab menu, badges, chips, patch indicator). LED preview, FPS sparkline, and pipeline metrics preserved via an
extraHtmlescape hatch. (233b463) - Target pipeline as a compact strip + chip row — drops the legacy "Pipeline details" collapsible block; an always-visible 4 px segmented timing bar (extract / map / smooth / send for video, read / fft / render / send for audio) sits above an inline chip row showing total ms / frames / keepalives, animating smoothly between samples. (51eebf2)
- Targets metrics aligned with the dashboard — FPS sparkline now lives inside the FPS cell, Uptime gets a clock icon, Errors gets ok/warning by count, FPS readout adopts the dashboard
current/target avg N.Nshape, and the grid sizes so values like1m 43sno longer truncate at typical desktop widths. (9067db2) - Release Notes overlay v2 — new masthead with display-font title, tag/published/pre-release chip strip, and close/external actions; markdown body fuzzy-matches
<code>filenames to release assets and renders clickable download links with per-asset descriptions (Windows installer/portable/msi, Linux tarball/AppImage/deb/rpm, macOS dmg/pkg, Android apk/aab, iOS ipa). Checksum/signature side-files are hidden. (9d4a534) - Tutorials expansion — sub-tab switching, breadcrumb header, and prepare/switchSubTab hooks let tours open/close the dashboard customize panel and resolve targets behind sub-tabs; new steps for integrations, dashboard customize panel (presets / global / sections / perf cells), targets, scenes, and sync-clocks (en/ru/zh). (797b806)
- Cards / settings / modal / toolbar polish — reworked mod-card colors, sections, channel-stripe styling, hairline borders, and signal-flow animation on running cards; multiselect bulk toolbar gets explicit Select-all / Deselect-all icons with luxury-gradient toolbar styling; Settings tabs are now icon-only (no overflow at any locale); modal exit animation gains symmetric fadeOut + slideDown keyframes with reduced-motion support; locale picker collapses to EN / RU / ZH; snack toast adopts a glass background with per-type accent. (a56569b)
- Suppress browser auto-open on Windows login — when "Start with Windows" is enabled, the autostart shortcut now passes
--autostartso the WebUI tab no longer pops on every login. Manual launches and the installer's "Launch LedGrab" finish-page action are unchanged. (de13f44) - Simpler segment payloads —
SegmentPayload.startdefaults to 0 andlengthdefaults to "the rest of the strip from start". A single segment with onlymode+colornow fills the entire strip — no morelength: 9999magic value clients had to pass. (1c9acc5) - About panel now houses the author + contact details that previously lived in a global app footer, freeing up vertical space across every page (en/ru/zh
donation.about_authorkey added). (816a27d)
Performance
- LED hot path is allocation-free per-frame: Adalight gets a dedicated single-worker tx executor, pre-allocated wire buffer, uint8 scratch, and a precomputed header struct; DDP gets a pre-built
struct.Structand memoryview emit path; calibration precomputes Phase 3 skip-LED resampling so per-frame work is nownp.take+ in-place blend; the WLED target processor gets a matching tightening. (797b806)
Bug Fixes
- Audio-source modal preserves device on refresh — refresh button moved into the label row (no more overflow past the Source panel edge); selection is restored by matching on
(index, loopback)first with a trimmed-name fallback for OS-side reindexing; the EntitySelect trigger now syncs so the visible label matches the underlying<select>in edit mode. (0980cf4) - PWA meta tag — add the standard
mobile-web-app-capabletag while keeping the Apple variant for iOS Safari, since Chrome deprecatedapple-mobile-web-app-capable. (8e109f3)
Development / Internal
CI/Build
- Add
workflow_dispatchand skip lint/test on release commits (release.yml already runs in parallel; manual dispatch covers re-runs on demand). (033c1f6)
Tests
- New
test_camera_enginesuite covers the new capture path. (fdac26b) - Adalight + DDP tests cover header format, buffer reuse, non-contiguous input, brightness scaling, RGB/RGBW packets, sequence/PUSH semantics, and multi-packet fragmentation. (797b806)
- 13 new tests for the device-event notifications backend (full suite still 899 passing). (8aa3a32)
conftestpre-creates the test DB somain.py's legacy-data migration no longer shovels the user's production DB into the test temp dir;test_preferences_notificationswipes its own setting at the start of the defaults test (was relying on isolation it never enforced). (9d4a534)
Tooling
.mcp.jsonchecked in with code-review-graph MCP server config so the graph tools are available out of the box. (797b806)
All Commits
Hash Message Author 0980cf4 fix(ui): audio-source modal — preserve device on refresh, relocate refresh action alexei.dolgolyov fdac26b feat: daylight tz, camera engine, value stream + modal/UI polish alexei.dolgolyov 816a27d refactor(ui): drop app footer, move author info to About panel alexei.dolgolyov 797b806 feat: LED hot-path perf, tutorials expansion, modal markup polish alexei.dolgolyov 9d4a534 feat(ui): release notes overlay v2 + settings/streams/dashboard polish alexei.dolgolyov 51eebf2 feat(ui): redesign target pipeline as compact strip + chip row alexei.dolgolyov 9067db2 feat(ui): align Targets metric cells with dashboard pattern alexei.dolgolyov 233b463 feat(ui): migrate Targets cards to mod-card system alexei.dolgolyov de13f44 feat(autostart): suppress browser auto-open on Windows login alexei.dolgolyov 1c9acc5 feat(api-input): make SegmentPayload start/length optional alexei.dolgolyov a56569b feat(ui): cards redesign + settings, modal, toolbar polish alexei.dolgolyov 8aa3a32 feat(notifications): device event notifications (snack + Web Notifications) alexei.dolgolyov 8e109f3 fix(pwa): add mobile-web-app-capable meta tag alexei.dolgolyov 033c1f6 ci: add workflow_dispatch and skip lint/test on release commits alexei.dolgolyov Downloads
Platform File Description Windows (installer) LedGrab-v0.6.0-setup.exeInstall with Start Menu shortcut, optional autostart, uninstaller Windows (portable) LedGrab-v0.6.0-win-x64.zipUnzip anywhere, run LedGrab.bat Linux LedGrab-v0.6.0-linux-x64.tar.gzExtract, run ./run.sh Android LedGrab-v0.6.0-android-release.apkSideload 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.6.0 docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/ledgrab:v0.6.0First-time setup
- Change the default API key in .
- Open http://localhost:8080 and add your LED devices.
- See for detailed configuration.
Downloads