thats-me/frontend/test/vitest
Kevin Adametz ab23c9f4ef Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder
Auf dem Testserver lief die App beim Scrollen langer Timelines in ein 429:
nach jeder Scroll-Pause ging sofort ein PUT /settings raus, und jedes
sichtbare Vorschaubild zählte auf dasselbe Limit von 300/min. Danach
blieben Bilder leer und "Einstellungen konnten nicht gespeichert werden"
erschien.

Backend: Medien-Reads bekommen einen eigenen Limiter (media, 1200/min),
POST /client-logs nimmt Warnungen und Fehler der App an (client-logs,
30/min) und schreibt sie in den täglichen Kanal `client`; Exceptions
tragen user_id, path und method im Kontext.

Frontend: Einstellungen gehen frühestens 1,5 s nach der letzten Änderung
und nur bei geändertem Inhalt zum Server, 429/Netzfehler werden still mit
Backoff wiederholt, nur eine Ablehnung wird gemeldet. Bilder laufen durch
ein Gate (6 parallel, Retry-After, 3 Versuche) und fallen auf einen
Platzhalter statt auf einen kaputten Pfad zurück. Neuer clientLog-Service
mit IndexedDB-Puffer, Dedupe und Batch-Versand, globaler Fehlerfang im
Boot, Protokoll im Entwickler-Tab. Drei pulsierende Punkte statt weißer
Fläche in Timeline-Punkt, Key Image und Medienkacheln.

Dokumentation in documentation/logging.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-25 09:31:35 +00:00
..
audio-wav.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
auth-session.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
brand.spec.js Hintergründe: 15 kuratierte Bilder statt Testfotos 2026-09-25 09:31:09 +00:00
calendar-date.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
client-log.spec.js Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
components-feedback.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
components-timeline-nav.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
components-timeline.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
events-autosave.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
events-draft.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
events-media.spec.js Hintergründe: 15 kuratierte Bilder statt Testfotos 2026-09-25 09:31:09 +00:00
events-offline.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
events-user-context.spec.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
helpers.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
image-cache.spec.js Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
settings-persist.spec.js Client-Logging, getrennte Rate-Limits und Ladezustand für Bilder 2026-09-25 09:31:35 +00:00
setup.js Frontend: Offline-Warteschlange, PWA, Event-Panel und Markenauftritt 2026-09-25 07:00:35 +00:00
wave-presets.spec.js Hintergründe: 15 kuratierte Bilder statt Testfotos 2026-09-25 09:31:09 +00:00