Dunkles Erscheinungsbild & Theming fuer web/mail-postfach. Baut auf UX-01s offenem Branch auf (feature/ux-01-postfach-ordneransicht, PR #298, noch nicht gemergt) - enthaelt daher UX-01s Commits mit, bis dieser mergt.
Kern-Theming (SHL-01) war schon da; zwei Luecken behoben: hardcoded Border-Farbe in MessageList (parallele Theming-Verletzung) sowie fehlender UI-Toggle (useTheme().toggle existierte, aber nichts rief ihn auf) - neue ThemeToggle-Komponente.
AC1-3 real getestet (42/42 Tests gruen gesamt), inkl. echter WCAG-Kontrastberechnung (17.8:1 / 17.1:1, weit ueber 4.5:1 Minimum) und Reload-Persistenz-Test. Dokumentierte Einschraenkung: kein echter Browser/axe-Audit moeglich (kein laufender Core-Server fuer Login, gleiche Luecke wie bei UX-01), ersetzt durch DOM-basierten Farb-Scan.
Dunkles Erscheinungsbild & Theming fuer web/mail-postfach. Baut auf UX-01s offenem Branch auf (feature/ux-01-postfach-ordneransicht, PR #298, noch nicht gemergt) - enthaelt daher UX-01s Commits mit, bis dieser mergt.
Kern-Theming (SHL-01) war schon da; zwei Luecken behoben: hardcoded Border-Farbe in MessageList (parallele Theming-Verletzung) sowie fehlender UI-Toggle (useTheme().toggle existierte, aber nichts rief ihn auf) - neue ThemeToggle-Komponente.
AC1-3 real getestet (42/42 Tests gruen gesamt), inkl. echter WCAG-Kontrastberechnung (17.8:1 / 17.1:1, weit ueber 4.5:1 Minimum) und Reload-Persistenz-Test. Dokumentierte Einschraenkung: kein echter Browser/axe-Audit moeglich (kein laufender Core-Server fuer Login, gleiche Luecke wie bei UX-01), ersetzt durch DOM-basierten Farb-Scan.
Siehe mail/docs/UX-05-PRUEFPROTOKOLL.md.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick
added 8 commits 2026-10-16 09:12:21 +02:00
Erweitert mail/internal/mailapi (INT-01) um die fuer die Postfach-/
Ordneransicht noetigen Daten, die die bestehende API noch nicht lieferte:
GET /mailboxes (Ordnerbaum aus der mailbox-Facette), mailbox-Filter auf
GET /messages, sowie sender/mailbox in der Listenantwort (Grundlage fuer
Sortierung nach Absender). Reines Durchreichen bereits fertiger
mail/internal/search-Funktionen (Facets/ListByMailbox/SearchWithFilters),
keine neue Suchlogik.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Testinfrastruktur: startet den echten mailapi.Server (echte moduleauth-
Signaturpruefung) als eigenen Prozess auf einem echten TCP-Port, mit
In-Memory-Suchpersistenz und zwei synthetischen Mandanten (einer davon
mit 3000 Nachrichten fuer den Performance-Nachweis). Grundlage fuer den
Frontend-Integrationstest gegen eine echte Backend-API statt eines
fetch()-Mocks. Kein Produktivpfad.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Postfach- und Ordneransicht fuer archivierte Mails (Next.js/React/TS,
@nexarch/shl). Ordnerbaum (aus der flachen Postfachliste der Mail-API
clientseitig aufgebaut), virtualisierte Nachrichtenliste mit Sortierung
nach Datum/Absender/Betreff, Grundsuche. Aufbau nach etabliertem Muster
(web/mail-search fuer die App-Struktur, web/dms-browser fuer Ordnerbaum/
virtualisierte Liste), bewusst schlicht gehalten (Mailpit/MailHog als
Vorbild, nicht die Komplexitaet eines nativen Mailprogramms).
Automatisierte Tests je Akzeptanzkriterium, inkl. eines echten
Backend-Integrationstests (e2e/ux01.e2e.test.ts) gegen den echten
mailapi.Server (mail/cmd/mailpostfach-fixture) mit zwei Mandanten und
einem gleichnamigen Ordner — keine Mandanten-Isolationslogik wird
gemockt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pruefprotokoll: Zielwerte und Ergebnisse je Akzeptanzkriterium und
Pruefung, inkl. Abgrenzung zur Ausgangslage (Backend-API musste fuer
Ordnerbaum/Absender-Sortierung minimal erweitert werden) und offener
Einschraenkung beim manuellen Test (keine Browser-Automatisierung/kein
laufender Core-Server auf dem Entwicklungshost, daher Ersatzpruefung
ueber den echten Backend-Integrationstest).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fix: Trennlinie unter dem Spaltenkopf in MessageList.tsx setzte eine
fest codierte Hex-Farbe (#ccc) statt der zentralen SHL-Theme-Variable
--shl-color-border - einzige Stelle in web/mail-postfach, die am
zentralen Theming-System vorbeibaute.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Manuelle Umschaltflaeche (ThemeToggle) ergaenzt und im Root-Layout
eingehaengt - Akzeptanzkriterium 2 (manuell ueberschreibbar). Bisher
gab es in web/mail-postfach keinen sichtbaren Weg, useTheme().toggle
aus @nexarch/shl auszuloesen, da diese App (wie dms-browser/pdf-viewer/
mail-search) keine Shell-Navigation mit eingebauter Umschaltflaeche
nutzt. Kein neues Theming, nur Anschluss an das zentrale System.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Automatisierte Tests fuer alle drei Akzeptanzkriterien:
- lib/contrast.test.ts: echte WCAG-2.1-AA-Kontrastberechnung (>=4.5:1)
fuer die tatsaechlich verwendete Text/Hintergrund-Kombination in
beiden Erscheinungsbildern.
- components/ThemeToggle.test.tsx: manuelle Umschaltung sowie
Persistenz ueber ein simuliertes Neuladen der Seite (kompletter
Unmount + frischer ThemeProvider), auch gegen eine abweichende
Systempraeferenz.
- app/theme-visual-sample.test.tsx: Postfach-Kernansicht rendert
vollstaendig in beiden Modi, Theme-Variablen korrekt gesetzt, und
automatischer Regressionsschutz gegen lokale Hex-Farben ausserhalb
von var(...)-Fallbacks (genau der vorherige Fehler in MessageList).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pruefprotokoll: Zielwerte und Ergebnisse je Akzeptanzkriterium und
Pflichtpruefung, inkl. Basis-Hinweis (Branch feature/ux-01-postfach-
ordneransicht statt main) und Einschraenkung bei Pruefung 3 (keine
interaktive Browser-Pruefung ohne laufenden Core-Server moeglich,
gleiche Einschraenkung wie in UX-01-PRUEFPROTOKOLL.md dokumentiert).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Dunkles Erscheinungsbild & Theming fuer web/mail-postfach. Baut auf UX-01s offenem Branch auf (feature/ux-01-postfach-ordneransicht, PR #298, noch nicht gemergt) - enthaelt daher UX-01s Commits mit, bis dieser mergt.
Kern-Theming (SHL-01) war schon da; zwei Luecken behoben: hardcoded Border-Farbe in MessageList (parallele Theming-Verletzung) sowie fehlender UI-Toggle (useTheme().toggle existierte, aber nichts rief ihn auf) - neue ThemeToggle-Komponente.
AC1-3 real getestet (42/42 Tests gruen gesamt), inkl. echter WCAG-Kontrastberechnung (17.8:1 / 17.1:1, weit ueber 4.5:1 Minimum) und Reload-Persistenz-Test. Dokumentierte Einschraenkung: kein echter Browser/axe-Audit moeglich (kein laufender Core-Server fuer Login, gleiche Luecke wie bei UX-01), ersetzt durch DOM-basierten Farb-Scan.
Siehe mail/docs/UX-05-PRUEFPROTOKOLL.md.
🤖 Generated with Claude Code
Konflikt in layout.tsx (initialLocale vs ThemeToggle) manuell geloest, direkt in main gemergt und gepusht.
Pull request closed