Releases: sebolber/HomeAssistantProtokollcenter
Releases · sebolber/HomeAssistantProtokollcenter
Release list
0.25.0
Release v0.24.0 — Phase 8 + Anbindungs-Audit
Highlights für die User
- 🎯 Top-N-Selektoren wirken endlich — Trend / Bursts / Long-Term / Sicherheits-Audit / Bus-Gesundheit / Heatmap zeigen jetzt tatsächlich so viele Einträge wie ausgewählt (vorher überschrieb das globale
topNoder ein hardcoded Wert die Card-Auswahl). - 📈 Source-Detail bei langen Perioden vollständig — bei Auswahl > 48 h liest
compute_source_detailjetzt aus dem 365-Tage-Counter statt aus der 48-h-Live-Slice. Geräte-KPIs für 7-Tages-/30-Tages-/Jahres-Sicht sind nicht länger drastisch unter-erfasst. - 🔍 Channel-Test-Knopf, MQTT-Edit, Heartbeat-Lifecycle, Remediation-Edit/Toggle, Findings-Unack — Sprint 1+2 des Anbindungs-Audits schließt 6 fehlende UI-Pfade.
- 🔗 Deep-Linking via URL-Hash —
#stats/findings?source=1.1.42& Co. sind jetzt direkt bookmarkbar. - ⚡ Performance — Single-Item-Refresh nach Status-Wechsel (statt Full-List-Reload), neuer Index
idx_knx_findings_sourcefür Source-Filter bei großen Findings-Tabellen. - 🧹 API-Hygiene —
MttrViewentfernt (DRY mit stats-extended),websocket_api-Dependency aus Manifest gestrichen,WebhookDetailView.GETmit dokumentierter Begründung erhalten.
Backend-API-Änderungen (backwards-kompatibel)
GET /api/messagehub/knx-stats/bus-healthakzeptiert jetzt einenlimit-Query-Parameter (1..500, default 20). Konsumenten ohnelimitbekommen weiterhin 20 GAs.GET /api/messagehub/mttrentfernt —mttr_per_sourceist Teil von/api/messagehub/stats-extended.PUT /api/messagehub/remediation-hooks/{id}neu — Edit + Pause/Aktivieren-Toggle.DELETE /api/messagehub/heartbeats/{source}undPATCH /api/messagehub/heartbeats/{source}neu — Lifecycle-Verwaltung.PUT /api/messagehub/mqtt-topics/{id}jetzt UI-getrieben (Endpoint stand seit Iter 83 bereit).POST /api/messagehub/channels/{id}/testjetzt UI-getrieben (Endpoint stand seit Iter 88 bereit, rate-limited 3/min/Channel).DELETE /api/messagehub/knx-stats/acknowledge/{ga}jetzt im Findings-UI verbunden (Ack zurücknehmen).
Migration
0028_knx_findings_source_index.sql— idempotent (CREATE INDEX IF NOT EXISTS), kein Daten-Eingriff.
Quality-Gates
- pytest: 1086 grün (+13 seit v0.23.0)
- vitest: 280 grün (+8 seit v0.23.0)
- typecheck: clean · build: bundle in
frontend_dist/
Iterationen (17 saubere Conventional Commits seit v0.23.0)
| Iter | Bereich | Commit |
|---|---|---|
| topn-1 | Trend-Card respektiert topNTrend |
22da5b4 |
| topn-2 | Bursts/Long-Term/Sensitive Card-limit |
bf173db |
| topn-3 | Bus-Health Backend liest limit aus Query |
a00add7 |
| K | Counter-basierter Source-Aggregat-Pfad (> 48 h) | fd0ed30 |
| topn-4 | Heatmap-UI-Top-N-Selektor | a88b0d1 |
| Idx | Index idx_knx_findings_source |
74605ca |
| F-001 | Channel-Test-Knopf | ee6bc78 |
| F-002 | MQTT-Topic-Edit | 4b409e7 |
| F-003 | MttrView entfernt |
6a923cb |
| F-004 | Findings-Ack zurücknehmen | 616c989 |
| F-005 | Heartbeat-Lifecycle | 8061c4b |
| F-006 | Remediation-Hook-Edit + Toggle | be81738 |
| F-007 | WebhookDetailView.GET dokumentiert beibehalten |
a1ae0f2 |
| F-008 | Single-Item-Refresh nach Status-Wechsel | c8c8742 |
| F-009 | websocket_api-Dependency entfernt |
66cd68f |
| F-010 | Deep-Linking via URL-Hash | c3b4edb |
| F-011 | Typisierter KNX-GA-Export-URL-Helfer | 2918e33 |
Falls du den kompletten CHANGELOG-Block als Release-Body willst (ist deutlich detaillierter, ~210 Zeilen), liegt er 1:1 in CHANGELOG.md zwischen ## [0.24.0] und ## [0.23.0]. Sobald du den Tag pushst, extrahiert release.yml ihn automatisch als Release-Notes — du musst dann nichts manuell einfügen.
0.20.0
docs(audit): Uebergabe-Prompt fuer Folge-Session Selbst-erklaerender Prompt unter docs/20260503/uebergabe-prompt.md, mit dem eine neue Claude-Code-Session sofort handlungsfaehig wird: - Repo-Kontext, Test-Counts, Pflicht-Lektuere - Konventionen (TDD, Quality-Gates, Conventional Commits, Sicherheit- Pyramide) - Backlog mit empfohlener Reihenfolge (Sprint A: TopN-1..4, Sprint B: Iter K + Index, Out-of-scope: F4/F9/F10 xknx-blocked) - Setup-Notizen (pytest mit uv tool, Frontend-npm, Docker-Constraint, Hash-State-Leakage zwischen Vitest-Tests) - Code-Stellen-Map fuer Backend + Frontend + Tests - Beispiel-Iteration (TopN-1 als Pseudocode-Vorlage) - Quick-Reference fuer haeufige Befehle Damit ist die Wissens-Uebergabe nach Abschluss der Audit-Iter +1..+11 dokumentiert und reproduzierbar. https://claude.ai/code/session_014aWdTzrJ5PnS9AHaBKc1ox
Refactoring
0.18.0 Release 0.18.0 — UX + Stability
0.15.1
0.15.0
V0.14.0
V0.13.0
Message Hub v0.12.9
ux(frontend): Sentence-Case + sortierbare Top-Geraete-Tabelle (Iter 57) User-Feedback aus Screenshot-Review: ALL-CAPS-Headers wirken laut, Top-Geraete-Tabelle hat keine Sortier-Pfeile. - text-transform: uppercase entfernt aus stats-knx-view (th, kpi-label, filter-label) und knx-addresses-view (th). letter-spacing: 0.02em bleibt als dezente Differenzierung. Liest sich ruhiger und bleibt trotzdem sichtbar als "Header". - Top-Geraete-Tabelle: drei sortierbare Spalten (Geraet, GAs, Telegramme) mit Click-Handler und Sort-Pfeil (▲/▼). Default: count desc (haeufigste oben). Toggle bei gleichem Key, sonst Switch mit Default-Direction desc fuer Counts, asc fuer Strings. - Pure Frontend-Sortierung (in-memory) — kein Backend-Roundtrip pro Klick. _topBySource bleibt der API-State, gerendert wird eine sortierte Kopie. Sustainability/Professional: Sortier-State ist bewusst nicht in localStorage persistiert — User-Erwartung ist "Default = haeufigste oben". Wer eine andere Sortierung will, sortiert sich's neu. Tests: +2 Frontend (Tabelle hat 3 sortierbare Headers + Default-Pfeil "▼" im Telegramme-Header; Klick auf Geraet-Header sortiert nach String asc). Iteration: 57
Kritischer Hotfix: KNX-Telegramme kamen nicht mehr in den Nachrichten an.
[0.10.2] – 2026-05-02
Kritischer Hotfix: KNX-Telegramme kamen nicht mehr in den Nachrichten an.
Behoben
- xknx-Callback war
async def, xknx ruft aber sync auf.
xknx 3.15.0 erwartetCallable[[Telegram], None]und ruft
callback.callback(telegram)ohneawaitauf. Unsere
async def _on_telegram(...)lieferte nur eine Coroutine,
die mitRuntimeWarning: coroutine was never awaited
verworfen wurde — Telegramme verschwanden ohne Spur im Log. - Fix: Sync-Wrapper, der
hass.async_create_task(...)aufruft. - Regressionstest prueft per
inspect.iscoroutinefunction(),
dass der bei xknx registrierte Callback NICHT async ist.