Skip to content

fix(ui): Zeitauswahl-Labels (1W·2W·1M·3M·1J) + Onboarding-Dismiss CSP-fest#178

Merged
gerfru merged 4 commits into
mainfrom
fix/timerange-labels-onboarding-dismiss
Jun 9, 2026
Merged

fix(ui): Zeitauswahl-Labels (1W·2W·1M·3M·1J) + Onboarding-Dismiss CSP-fest#178
gerfru merged 4 commits into
mainfrom
fix/timerange-labels-onboarding-dismiss

Conversation

@gerfru

@gerfru gerfru commented Jun 9, 2026

Copy link
Copy Markdown
Owner

1 · Zeitauswahl-Labels

Die kryptischen Tageszahlen 7T…365T durch brand-konforme Kompakt-Token ersetzt: 1W · 2W · 1M · 3M · 1J (Apple-/Fitbit-Stil — recherchiert: Apple Health nutzt D/W/M/6M/Y, Garmin daily/7-day/4-week/1-year, niemand zeigt rohe „365").

  • data-days (7/14/30/90/365) unverändertdashboard.js liest nur dataset.days, nie den Text.
  • aria-label („7 Tage" …) unverändert → Screenreader weiterhin vollständig.

2 · Onboarding-Hinweis ließ sich nicht wegklicken (Bug)

Root-Cause: Box wurde per Inline-style="display:none" geschaltet (Template + onboarding.js). Das homelab-gateway erzwang per zweitem CSP-Header style-src 'self' → Inline-Styles blockiert → Box blieb sichtbar und ✕ wirkungslos.

Fix (defense-in-depth): Toggle jetzt per CSS-Klasse .is-hidden aus dem externen Stylesheet → funktioniert unabhängig vom CSP. (Die eigentliche CSP-Kollision wird zusätzlich im homelab-gateway behoben — die PulseBase-Route reicht nun den App-eigenen nonce-CSP durch, statt ihn zu überschreiben.)

Risiko

Rein visuell + 1 Klassen-Toggle. Kein JS-API-Change, keine neuen Tailwind-Utilities (.is-hidden ist Custom-CSS). Kein Tailwind-Rebuild nötig.

🤖 Generated with Claude Code

gerfru and others added 4 commits June 9, 2026 22:01
…-fest

1) Zeitauswahl: kryptische Tageszahlen (7T…365T) durch brand-konforme
   Kompakt-Token ersetzt (Apple/Fitbit-Stil): 1W·2W·1M·3M·1J. data-days
   und aria-labels bleiben unverändert → dashboard.js (liest nur dataset.days)
   und Screenreader nicht betroffen.

2) Onboarding-Hinweis ließ sich nicht wegklicken: Template + onboarding.js
   schalteten die Box per Inline-style="display:none". Unter strengem CSP
   (style-src 'self', wie es das Gateway erzwang) werden Inline-Styles
   blockiert → Box blieb sichtbar und ✕ wirkungslos. Jetzt Toggle per
   CSS-Klasse .is-hidden aus dem externen Stylesheet → funktioniert
   unabhängig vom CSP (defense-in-depth zum Gateway-Fix).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-style umstellen

Spiegelt den Fix in onboarding.js: Sichtbarkeit wird per .is-hidden-Klasse
geschaltet (CSP-fest), nicht mehr per style.display. Fixture nutzt jetzt
class=is-hidden wie das echte Template; Assertions prüfen classList.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Die Zeitauswahl + Sync liefen auf max-w-7xl (1280px), die Hero Card aber auf
960px (.hero-card-wrap). Dadurch saß 1W links neben der Hero-Kante und der
Sync-Status ragte rechts darüber hinaus → asymmetrisch. Toolbar bekommt jetzt
denselben .hero-card-wrap → bündig mit der Hero Card.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nde Flucht

Bisher: Hero auf 960px (.hero-card-wrap), alles andere auf max-w-7xl (1280px)
→ Hero schmaler als Toolbar/Tabs/Karten, Kanten fluchteten nicht.

Jetzt eine gemeinsame Breite für Header, Toolbar, Hero und Karten via
Custom-Container .dash-shell (1024px, nah an der nativen Hero-Breite → Hero
bleibt balanciert, Karten rücken enger = ruhiger). hero-card-wrap verliert
seine 960px-Deckelung und füllt die Shell. Custom-CSS statt Tailwind-Utility
(max-w-5xl/6xl fehlen im Build) → kein tailwind-build nötig.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gerfru gerfru merged commit f9c5630 into main Jun 9, 2026
12 checks passed
@gerfru gerfru deleted the fix/timerange-labels-onboarding-dismiss branch June 9, 2026 20:25
gerfru added a commit that referenced this pull request Jun 12, 2026
…-fest (#178)

* fix(ui): Zeitauswahl-Labels (1W·2W·1M·3M·1J) + Onboarding-Dismiss CSP-fest

1) Zeitauswahl: kryptische Tageszahlen (7T…365T) durch brand-konforme
   Kompakt-Token ersetzt (Apple/Fitbit-Stil): 1W·2W·1M·3M·1J. data-days
   und aria-labels bleiben unverändert → dashboard.js (liest nur dataset.days)
   und Screenreader nicht betroffen.

2) Onboarding-Hinweis ließ sich nicht wegklicken: Template + onboarding.js
   schalteten die Box per Inline-style="display:none". Unter strengem CSP
   (style-src 'self', wie es das Gateway erzwang) werden Inline-Styles
   blockiert → Box blieb sichtbar und ✕ wirkungslos. Jetzt Toggle per
   CSS-Klasse .is-hidden aus dem externen Stylesheet → funktioniert
   unabhängig vom CSP (defense-in-depth zum Gateway-Fix).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(js): onboarding-Test auf Klassen-Toggle (is-hidden) statt Inline-style umstellen

Spiegelt den Fix in onboarding.js: Sichtbarkeit wird per .is-hidden-Klasse
geschaltet (CSP-fest), nicht mehr per style.display. Fixture nutzt jetzt
class=is-hidden wie das echte Template; Assertions prüfen classList.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(ui): View-Toolbar auf Hero-Breite (960px) ausrichten

Die Zeitauswahl + Sync liefen auf max-w-7xl (1280px), die Hero Card aber auf
960px (.hero-card-wrap). Dadurch saß 1W links neben der Hero-Kante und der
Sync-Status ragte rechts darüber hinaus → asymmetrisch. Toolbar bekommt jetzt
denselben .hero-card-wrap → bündig mit der Hero Card.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(ui): einheitliche Content-Breite (.dash-shell 1024px) — durchgehende Flucht

Bisher: Hero auf 960px (.hero-card-wrap), alles andere auf max-w-7xl (1280px)
→ Hero schmaler als Toolbar/Tabs/Karten, Kanten fluchteten nicht.

Jetzt eine gemeinsame Breite für Header, Toolbar, Hero und Karten via
Custom-Container .dash-shell (1024px, nah an der nativen Hero-Breite → Hero
bleibt balanciert, Karten rücken enger = ruhiger). hero-card-wrap verliert
seine 960px-Deckelung und füllt die Shell. Custom-CSS statt Tailwind-Utility
(max-w-5xl/6xl fehlen im Build) → kein tailwind-build nötig.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant