Files
ledgrab/RELEASE_NOTES.md
T
alexei.dolgolyov 5ef6ac1317
Build Release / create-release (push) Successful in 3s
Build Android APK / build-android (push) Failing after 3m52s
Build Release / build-linux (push) Successful in 5m20s
Build Release / build-docker (push) Successful in 6m20s
Build Release / build-windows (push) Successful in 7m7s
chore: release v0.6.0
2026-05-01 19:11:15 +03:00

9.9 KiB

v0.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_settings module and daylight-tz frontend 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 extraHtml escape 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.N shape, and the grid sizes so values like 1m 43s no 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 --autostart so 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 payloadsSegmentPayload.start defaults to 0 and length defaults to "the rest of the strip from start". A single segment with only mode + color now fills the entire strip — no more length: 9999 magic 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_author key 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.Struct and memoryview emit path; calibration precomputes Phase 3 skip-LED resampling so per-frame work is now np.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-capable tag while keeping the Apple variant for iOS Safari, since Chrome deprecated apple-mobile-web-app-capable. (8e109f3)

Development / Internal

CI/Build

  • Add workflow_dispatch and skip lint/test on release commits (release.yml already runs in parallel; manual dispatch covers re-runs on demand). (033c1f6)

Tests

  • New test_camera_engine suite 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)
  • conftest pre-creates the test DB so main.py's legacy-data migration no longer shovels the user's production DB into the test temp dir; test_preferences_notifications wipes its own setting at the start of the defaults test (was relying on isolation it never enforced). (9d4a534)

Tooling

  • .mcp.json checked 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