-
LedGrab v0.8.1
StableBuild Android APK / build-android (push) Failing after 11sBuild Release / create-release (push) Successful in 6sBuild Release / build-docker (push) Successful in 2m57sBuild Release / build-linux (push) Successful in 1m49sBuild Release / build-windows (push) Successful in 3m35sBuild Release / publish-release (push) Successful in 2sreleased this
2026-05-28 23:36:03 +03:00 | 62 commits to master since this releasev0.8.1 (2026-05-28)
User-facing changes
Features
Multi-broker MQTT devices
- The device editor now shows an MQTT broker picker for
device_type=mqtt(in both the add-device and device-settings modals), wired into load / save / validate / dirty-check / clone. An empty selection means "first available broker" mqtt_source_idis now threaded end-to-end throughDeviceCreate/DeviceUpdate/DeviceResponseand the device routes; the referenced broker is validated on create and update (a5effba)
Schema-driven wiring-graph editor
- The visual graph editor now renders ports and edges generically from a backend-served schema (
GET /api/v1/graph/schema) instead of hard-coding the connectable-field topology in two places — so client and server can no longer drift - New
GET /api/v1/graphreturns the full nodes + edges + validation topology, andGET /api/v1/graph/dependents/{kind}/{id}reports what references an entity (a5effba)
Aggregated snapshot endpoint
- New
GET /api/v1/snapshotreturns all output targets (with processing state + metrics), devices (with brightness), the source / preset / clock lists, and the system block in a single response — collapsing the Home Assistant integration's previous ~2N+M request fan-out into one round trip ?include=fetches only a subset of sections, and an excluded section also skips its server-side work (e.g. cold-cache hardware brightness probes or the blocking NVML performance query) (a5effba)
Bug Fixes
- Graceful shutdown no longer hangs: uvicorn's graceful-shutdown wait is now bounded (
GRACEFUL_SHUTDOWN_TIMEOUT, shared by the desktop, Android, and demo launchers). A lingering events WebSocket (which the browser auto-reconnects) used to keep connections from draining, so the lifespan shutdown never ran — leaving LED targets lit and blocking process exit. Ctrl+C / OS shutdown with the UI open now reliably stops targets and checkpoints the DB (a5effba) - Device update error codes:
update_deviceno longer masks an intentional 4xx (e.g. an unknownmqtt_source_idor failed group validation) as a generic 500 (a5effba)
Development / Internal
Backend
- Wiring-graph schema engine (
api/graph_schema.py): a pure, unit-tested module that is the single source of truth for which reference fields connect which entity kinds; builds the topology and performs dependency lookup plus cycle / dangling-reference detection without booting the app or any store. The route layer only gathers serialized entities and delegates (a5effba) - Structured access log: a new middleware emits one structured line per request, attributing it to the authenticated token's friendly label (the key name, never the secret) so traffic can be traced to a client (e.g.
homeassistantvsandroid). uvicorn's own access log is disabled to avoid duplicate lines (a5effba) - Shared
validate_mqtt_source_exists(_mqtt_validation.py) deduplicates the MQTT-source existence check between the device and output-target routes (a5effba)
Frontend
- Service-worker refresh for the new bundle (a5effba)
Tests
- New suites: graph routes + schema engine, snapshot routes, access-log middleware,
mqtt_source_iddevice regressions, and the bounded-shutdown entrypoint. Full suite: 1614 passing (a5effba)
All Commits (1)
Hash Message Author a5effba feat: aggregated snapshot + wiring-graph APIs, MQTT device brokers alexei.dolgolyov Downloads
Platform File Description Windows (installer) LedGrab-v0.8.1-setup.exeInstall with Start Menu shortcut, optional autostart, uninstaller Windows (portable) LedGrab-v0.8.1-win-x64.zipUnzip anywhere, run LedGrab.bat Linux LedGrab-v0.8.1-linux-x64.tar.gzExtract, run ./run.sh Android LedGrab-v0.8.1-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.8.1 docker run -d --name ledgrab -p 8080:8080 -v ledgrab-data:/app/data git.dolgolyov-family.by/alexei.dolgolyov/ledgrab:v0.8.1First-time setup
- Change the default API key in .
- Open http://localhost:8080 and add your LED devices.
- See for detailed configuration.
Downloads
- The device editor now shows an MQTT broker picker for