requireAuth hat den Benutzer mit einer ausgeschriebenen Spaltenliste geladen,
in der theme und theme_mode fehlten. GET /api/auth/me antwortete deshalb mit
null, und der ThemeProvider hat das beim Neuladen als "nichts gewaehlt"
gelesen: die Anzeige fiel auf perinco/System zurueck und hat den
localStorage-Zwischenspeicher gleich mit ueberschrieben. Direkt nach dem Klick
und nach dem Anmelden sah es richtig aus, weil PATCH /me den geaenderten Wert
selbst zurueckgibt und der Login SELECT * benutzt - nur das Neuladen nicht.
Dazu ein Test, der die Spaltenliste mit den Feldern von publicUser()
vergleicht, damit ein neues Benutzerfeld nicht wieder still verloren geht.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>