Commit graph

5 commits

Author SHA1 Message Date
Jesko Anschütz
8243eb10c9 Ergaenze Screen-ID-Filter (q=) fuer Uebersicht und Status-API
GET /api/v1/screens/status und GET /status akzeptieren jetzt q=<substring>
zum Filtern der Ergebnisliste nach ScreenID. Der Vergleich ist case-
insensitiv. Leerer Wert bedeutet kein Filter; jeder andere String ist gueltig
(keine Validierung noetig). Die Summary-Counts bleiben unveraendert und
beschreiben weiterhin den gesamten Store-Bestand.

Die Quick-Filter auf /status behalten den aktuellen q-Wert beim Klick, damit
der Textfilter nicht verloren geht wenn man z.B. von "All screens" auf
"Stale reports" wechselt.

Tests: FiltersByScreenIDSubstring, ScreenIDFilterIsCaseInsensitive

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 20:28:01 +01:00
Jesko Anschütz
57e0cdb43c Ergaenze Auto-Refresh auf Detailseite und bereinige Fehlermeldungs-Duplikat
Auto-Refresh auf GET /status/{screenId}:
  screenDetailPageData bekommt RefreshSeconds (wie statusPageData). Das
  Detail-Template rendert das Meta-Tag analog zur Uebersichtsseite mit
  denselben 15 Sekunden, damit ein Screen seinen Zustand (z.B. fresh ->
  stale, connectivity-Wechsel) auch ohne manuellen Reload sichtbar macht.
  Test: meta-refresh-Tag jetzt in TestRouterScreenDetailPageRoute geprueft.

DRY-Refactor: Fehlermeldungen vereinheitlicht:
  overviewQueryErrorMessage und overviewQueryErrorCode sind jetzt in
  playerstatus.go definiert -- dort wo auch die Validierungslogik lebt.
  writeOverviewQueryError delegiert vollstaendig an beide Helper statt
  die Meldungen selbst zu duplizieren. Die vorherige Kopie in statuspage.go
  mit abweichenden Satzendezeichen und Grossschreibung wurde entfernt.
  Beide Fehlerpfade (JSON und HTML) nutzen jetzt exakt dieselben
  Meldungstexte.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 20:16:22 +01:00
Jesko Anschütz
cfab277dc4 Fuege HTML-Detailseite und HTML-Fehlerseite fuer den Status-UI-Pfad hinzu
Drei eng zusammenhaengende Aenderungen in einem Commit, da sie dieselbe
Template-Infrastruktur teilen und gemeinsam die HTML-Diagnoseansicht
abrunden:

1. CSS-Extraktion (Verbesserung, kein Verhalten geaendert)
   Das bisherige Inline-CSS wurde in die Konstante statusPageCSS
   ausgelagert. statusPageCSSBlock injiziert es per String-Konkatenation
   in alle Templates, sodass kein Template-Inheritance-Mechanismus
   benoetigt wird und jede Seite eigenstaendig ausfuehrbar bleibt.

2. GET /status/{screenId} -- neue HTML-Detailseite
   Zeigt den letzten bekannten Datensatz eines einzelnen Screens:
   Derived State, Player-Status, Connectivity und Frische als
   Summary-Cards; Timing- und Endpoints-Details in aufgeraeuemten
   Key-Value-Tabellen. Verlinkung zurueck auf /status und auf den
   bestehenden JSON-Endpunkt. Bei unbekanntem Screen: 404 mit HTML-
   Fehlerseite und Rueck-Link.
   Route: GET /status/{screenId}

3. HTML-Fehlerseite fuer /status bei ungueltigen Query-Parametern
   Bisher lieferte handleStatusPage einen rohen JSON-Fehler, wenn
   z.B. ?stale=banana uebergeben wurde -- inkongruent fuer einen
   HTML-Endpunkt. writeStatusPageQueryError rendert jetzt dasselbe
   statusPageErrorTemplate wie der Not-Found-Fall der Detailseite
   und gibt text/html mit 400 zurueck.

Neue Tests (router_test.go):
- ScreenDetailPageRoute: prueft Inhalt, Links, Content-Type
- ScreenDetailPageNotFound: prueft 404 + HTML + Rueck-Link
- StatusPageRejectsInvalidQueryParams: prueft jetzt auch text/html
  fuer alle Fehlerfaelle

Docs (PLAYER-STATUS-HTTP.md):
- Query-Parameter-Validierung mit erlaubten Werten und Fehlercodes
- Neue /status/{screenId}-Seite und HTML-Fehlerseiten dokumentiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 20:03:24 +01:00
Jesko Anschütz
0b199f9289 Mache Statusseite als Diagnoseansicht nutzbarer
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 19:39:17 +01:00
Jesko Anschütz
bdc77e87e3 Lege erste sichtbare Statusseite an
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 19:19:45 +01:00