838c95484d
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
8.2 KiB
8.2 KiB
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_modetoggle (39b0554) - Nanoleaf extControl v2 per-panel UDP streaming (
per_panelmode) (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_docsflag (default off) to view/docs,/redoc, and/openapi.jsonwithout 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_statscopy, MQTT discovery lock,reactive_modeLiteral, 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 |