toLocaleDateString → toLocaleString mit dateStyle+timeStyle, zeigt
jetzt z.B. "11.05.2026, 00:05" statt nur "11.05.2026".
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Zweite Zeile unter dem Betreff zeigt Manticore-Snippet
mit <b>-Highlights, gerendert via dangerouslySetInnerHTML
ueber sanitizeSnippet
- Quellen-Badge je match_field (Subject, Body, PDF-Anhang,
Dateiname, Absender, Empfaenger) als kleines Tailwind-Pill
- Nur sichtbar wenn das Backend ein snippet zurueckliefert
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Auditoren haben keine eigenen Mails — Labels machen für sie keinen Sinn.
Die Sidebar (inkl. "+ Neues Label") wird jetzt nur noch für Rollen
mit eigenen Mails angezeigt (user, domain_admin, superadmin).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Backend: neue Routen POST /api/upload + GET /api/upload/{jobID}/progress (nur Auth, kein Admin)
- api.ts: uploadMailFilesUser + getUploadProgressUser für /api/upload
- search/page.tsx: Importieren-Button + Upload-Dialog mit Drag-and-Drop, Fortschrittsanzeige und automatischer Suchlisten-Aktualisierung nach Import
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- seedDefaultUsers: generiert kryptographisch zufällige Passwörter (crypto/rand)
statt hartkodiertes "archivmailrockz" — Passwörter werden einmalig im Terminal
angezeigt und können danach nicht wiederhergestellt werden
- generateJTI: verwendet crypto/rand (16 Byte, hex) statt time.UnixNano XOR deadbeef
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- GET /api/export/pdf/{id}: PDF-Generierung (stdlib, kein ext. Paket)
- POST /api/export/zip: Streaming-ZIP mit manifest.csv, Anhänge optional
- Max. 500 Mails pro Export, Zugriffscheck per Rolle
- Audit-Log für jeden Export
- Frontend: PDF-Button in Mail-Ansicht
- Frontend: Checkboxen + ZIP-Export-Dialog in Suchergebnissen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Systemauslastungs-Sektion wird immer gerendert (nicht nur bei Erfolg)
- Fehlermeldung wenn /api/admin/system/stats nicht erreichbar ist
- Feature-Status auf In Review gesetzt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>