Skip to content

Releases: sebolber/HomeAssistantProtokollcenter

0.25.0

Choose a tag to compare

@sebolber sebolber released this 09 May 17:45
4bdeae6
Merge pull request #1 from sebolber/claude/knx-homeassistant-analysis…

Release v0.24.0 — Phase 8 + Anbindungs-Audit

Choose a tag to compare

@sebolber sebolber released this 03 May 20:10
6e8c340

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 topN oder ein hardcoded Wert die Card-Auswahl).
  • 📈 Source-Detail bei langen Perioden vollständig — bei Auswahl > 48 h liest compute_source_detail jetzt 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_source für Source-Filter bei großen Findings-Tabellen.
  • 🧹 API-HygieneMttrView entfernt (DRY mit stats-extended), websocket_api-Dependency aus Manifest gestrichen, WebhookDetailView.GET mit dokumentierter Begründung erhalten.

Backend-API-Änderungen (backwards-kompatibel)

  • GET /api/messagehub/knx-stats/bus-health akzeptiert jetzt einen limit-Query-Parameter (1..500, default 20). Konsumenten ohne limit bekommen weiterhin 20 GAs.
  • GET /api/messagehub/mttr entferntmttr_per_source ist Teil von /api/messagehub/stats-extended.
  • PUT /api/messagehub/remediation-hooks/{id} neu — Edit + Pause/Aktivieren-Toggle.
  • DELETE /api/messagehub/heartbeats/{source} und PATCH /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}/test jetzt 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

Choose a tag to compare

@sebolber sebolber released this 03 May 18:23
5ab8912
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

Choose a tag to compare

@sebolber sebolber released this 03 May 08:12
46d1276
0.18.0

Release 0.18.0 — UX + Stability

0.15.1

Choose a tag to compare

@sebolber sebolber released this 03 May 05:53
80099f9
feat(stats-knx): Inline-TopN-Filter (10/25/50/100/200, default 25) au…

0.15.0

Choose a tag to compare

@sebolber sebolber released this 03 May 05:36
da694d2
fix(manifest): loggers-Feld hinzufuegen — Integration im HA-Log-UI si…

V0.14.0

Choose a tag to compare

@sebolber sebolber released this 03 May 04:34
a108baa
release(0.14.0): Bump manifest + CHANGELOG + Backlog-Update fuer Iter…

V0.13.0

Choose a tag to compare

@sebolber sebolber released this 02 May 19:40
1b83fd6
fix(api): KNX-Stats-Views Burst/Buslast/Health/Sicherheits-Audit regi…

Message Hub v0.12.9

Choose a tag to compare

@sebolber sebolber released this 02 May 19:13
c94870d
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.

Choose a tag to compare

@sebolber sebolber released this 02 May 13:59
4bccda7

[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 erwartet Callable[[Telegram], None] und ruft
    callback.callback(telegram) ohne await auf. Unsere
    async def _on_telegram(...) lieferte nur eine Coroutine,
    die mit RuntimeWarning: 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.