diff --git a/CODEBASE.md b/CODEBASE.md new file mode 100644 index 0000000..ae44ead --- /dev/null +++ b/CODEBASE.md @@ -0,0 +1,262 @@ +# archivmail — Dateiindex + +> Vollständiger Überblick aller Dateien und ihrer Funktion. Stand: 2026-03-31. + +--- + +## Konfigurationsdateien (Root) + +- `go.mod` — Go-Moduldefinition (pgx, imap, smtp, jwt, ldap, crypto, yaml) +- `go.sum` — Go-Dependency-Lockfile +- `package.json` — Next.js/Node.js Projektdefinition (React, Tailwind, shadcn/ui) +- `package-lock.json` — npm-Lockfile +- `tsconfig.json` — TypeScript-Konfiguration +- `components.json` — shadcn/ui Konfiguration (Alias-Pfade, Style) +- `docker-compose.yml` — Docker-Komposedatei für lokale Entwicklung +- `config.test.yml` — Test-Konfiguration +- `CLAUDE.md` — Projektdokumentation für Claude (Architektur, Konventionen) +- `CODEBASE.md` — Dieser Dateiindex +- `DEVLOG.md` — Entwicklungslog +- `.eslintrc.json` — ESLint-Konfiguration + +--- + +## cmd/ — Go-Einstiegspunkte + +### cmd/archivmail/ +- `main.go` — HTTP-API-Server: initialisiert Storage, Index, Auth, SMTP-Daemon, IMAP-Server, Audit, Mailer, Tenants, Labels, TokenStore +- `cmd_import.go` — `archivmail import`: EML/MBOX-Import mit --file/--dir/--recursive/--dry-run +- `cmd_export.go` — `archivmail export`: Export als EML/MBOX mit Filtern +- `cmd_import_piler.go` — `archivmail import-piler`: Import aus piler-Archiven +- `cmd_migrate_tenants.go` — `archivmail migrate-tenants`: E-Mails zu Mandanten-Index migrieren +- `version.go` — AppVersion + Modul-Versionen + +### cmd/archivmail-export/ +- `main.go` — Standalone-Export-Tool (alle Mails → EML-Verzeichnis) + +### cmd/archivmail-import/ +- `main.go` — Standalone-Import-Tool (EML-Batch mit Indexierung) + +--- + +## internal/ — Interne Go-Pakete + +### internal/api/ +- `server.go` — Server-Struct, alle Routen, Middleware (auth, tenant, requireRole) +- `auth_handlers.go` — Login, Logout, Passwort-Änderung, TOTP-Init/Verify +- `onboarding_handlers.go` — Signup, Email-Verifikation, Forgot-Password, Reset-Password (PROJ-28) +- `invite_handlers.go` — Einladungslinks erstellen + prüfen (PROJ-28) +- `totp_handlers.go` — TOTP-Enrollment und Verification +- `search_handlers.go` — GET /api/search: Fulltext-Suche mit Paginierung +- `mail_handlers.go` — GET /api/mails/{id}: Mail-Abruf, Attachments, Raw +- `admin_handlers.go` — User-CRUD, Audit-Log, Health, Version +- `quota_handlers.go` — Tenant-Quota GET/SET, Usage-Abfrage (PROJ-29) +- `retention_handlers.go` — Retention-Policy, Purge (PROJ-34) +- `import_handlers.go` — Batch-Mail-Upload mit Progress-Tracking (Job-ID) +- `export.go` — Export-Endpoint (EML/ZIP) +- `dashboard_handlers.go` — System-Statistiken: Storage, Mails, Uptime, Aktivität +- `cert_handlers.go` — TLS-Zertifikat-Verwaltung +- `imap_settings_handlers.go` — IMAP-Modus-Konfiguration pro Tenant +- `label_handlers.go` — Label-CRUD + Auto-Rules +- `ldap_sync.go` — LDAP-Benutzer-Synchronisation +- `ldap_tenants.go` — Per-Tenant-LDAP-Endpoints (PROJ-23) +- `profile_handlers.go` — GET/PATCH /api/profile +- `version_handlers.go` — GET /api/version +- `upload.go` — Upload-Job-Management + +### internal/auth/ +- `auth.go` — JWT-Issuing, bcrypt-Passwort-Hashing, LDAP-Fallback, Tenant-Kontext +- `totp.go` — TOTP (RFC 6238), QR-Code-Generierung + +### internal/audit/ +- `audit.go` — Audit-Logger: DB + Flat-File, alle sicherheitsrelevanten Ereignisse + +### internal/storage/ +- `storage.go` — AES-256-GCM-Dateispeicher + PostgreSQL-Metadaten, SHA-256-Dedup +- `quota.go` — CheckQuota() mit 60s-Cache, ErrQuotaExceeded (PROJ-29) +- `storage_stats.go` — MailActivityStats(), StorageEstimateStats() + +### internal/index/ +- `index.go` — Indexer-Interface + Factory (Xapian, Stub) +- `xapian.go` — Xapian-CGO-Wrapper (Volltext-Index) +- `xapian_stub.go` — Stub für Builds ohne Xapian +- `worker.go` — Async Index-Worker (Queue) +- `tenant_manager.go` — TenantIndexManager (Pro-Tenant-Indizes) +- `tenant_worker.go` — Tenant-aware Index-Worker + +### internal/imap/ +- `store.go` — IMAP-Account-Store (verschlüsselte Credentials) +- `client.go` — IMAP-Client (Verbindung, Fetch) +- `importer.go` — IMAP-Importer (Sync → Storage) +- `scheduler.go` — Periodischer IMAP-Sync + +### internal/imapserver/ +- `server.go` — IMAP4-Archive-Server (Read-Only, PROJ-26) + +### internal/pop3/ +- `store.go` — POP3-Account-Store +- `client.go` — POP3-Client +- `importer.go` — POP3-Importer + +### internal/smtpd/ +- `smtpd.go` — SMTP-Daemon: eingehende Mails → Storage + Index, Tenant-Routing + +### internal/ldapauth/ +- `client.go` — LDAP-Authentifizierung gegen AD/OpenLDAP + +### internal/ldapconfig/ +- `store.go` — Globale LDAP-Konfiguration (verschlüsselt) +- `tenant_store.go` — Per-Tenant-LDAP-Konfiguration (PROJ-23) + +### internal/mailer/ +- `mailer.go` — SMTP-Out-Client via net/smtp (TLS + STARTTLS), kein externer Dependency +- `templates.go` — HTML+Text-Templates: Verify, Reset, Invite, AlreadyRegistered + +### internal/userstore/ +- `userstore.go` — User-CRUD: Create, CreateInactive, Activate, GetByEmail, SetPassword, VerifyPassword, Update, Delete, List + +### internal/tenantstore/ +- `store.go` — Tenant-CRUD + Domains, IMAP-Modus, Retention-Days, Logo +- `quota.go` — SetQuota(), GetQuota(), GetUsage() (PROJ-29) + +### internal/labelstore/ +- `store.go` — Label-CRUD + Auto-Rules (From/To/Subject-basiert) + +### internal/tokenstore/ +- `store.go` — auth_tokens: Create (32-Byte random, SHA-256), Use (einmalig), Peek, Cleanup (PROJ-28) + +--- + +## pkg/ — Öffentliche Pakete + +### pkg/mailparser/ +- `parser.go` — RFC 5822 Parser: From, To, CC, Subject, Body (Text+HTML), Attachments +- `mbox.go` — MBOX-Splitter + +--- + +## config/ +- `config.go` — YAML-Konfiguration: ServerConfig (fqdn), APIConfig, StorageConfig, DatabaseConfig, SMTPConfig, SMTPOutConfig, IndexConfig, AuditConfig, IMAPServerConfig + +--- + +## src/app/ — Next.js Seiten (App Router) + +- `layout.tsx` — Root-Layout: Navbar, Theme-Provider, Toaster +- `page.tsx` — Login: Username/Passwort, Links zu Signup + Forgot-Password +- `signup/page.tsx` — Self-Service Registrierung (+ Invite-Token-Support) +- `verify/page.tsx` — Email-Verifikation via Token +- `forgot-password/page.tsx` — Passwort-Reset-Anfrage +- `reset-password/page.tsx` — Neues Passwort setzen via Token +- `search/page.tsx` — Fulltext-Suche mit Filtern, Pagination, Labels +- `mail/[id]/page.tsx` — Mail-Detail: Headers, Body, Attachments +- `settings/page.tsx` — Profil, Passwort, TOTP, Labels, IMAP/POP3 +- `imap/page.tsx` — IMAP-Account-Konfiguration +- `pop3/page.tsx` — POP3-Account-Konfiguration +- `admin/page.tsx` — Admin-Dashboard (Multi-Tab) +- `admin/upload/page.tsx` — Batch-Mail-Import mit Progress + +--- + +## src/components/ + +### src/components/ui/ (shadcn/ui Primitive) +`button`, `input`, `card`, `dialog`, `alert`, `alert-dialog`, `toast`, `toaster`, `sonner`, `select`, `checkbox`, `radio-group`, `switch`, `tabs`, `accordion`, `table`, `form`, `label`, `textarea`, `dropdown-menu`, `popover`, `tooltip`, `breadcrumb`, `pagination`, `badge`, `separator`, `scroll-area`, `skeleton`, `command`, `sheet`, `sidebar`, `navigation-menu`, `avatar`, `progress`, `collapsible` + +### src/components/ (Business-Komponenten) +- `navbar.tsx` — Top-Navigation mit Logo, User-Menu, Theme-Toggle +- `UserNav.tsx` — User-Dropdown (Profil, Settings, Logout) +- `theme-toggle.tsx` — Light/Dark-Mode Toggle +- `theme-provider.tsx` — next-themes Provider +- `LabelList.tsx` — Label-Navigation +- `LabelPicker.tsx` — Label-Picker Dropdown +- `page-skeleton.tsx` — Loading-Skeleton + +### src/components/admin/ +- `ModulesTab.tsx` — Feature-Module-Übersicht +- `UserDialogs.tsx` — Create/Edit/Delete User Dialogs +- `TenantLDAPDialog.tsx` — LDAP-Konfiguration für Mandant + +### src/components/admin/tabs/ +- `DashboardTab.tsx` — System-Stats, Uptime, Mail-Aktivität, Storage-Prognose +- `UsersTab.tsx` — User-CRUD mit Rollen +- `TenantsTab.tsx` — Mandanten-CRUD + Domains +- `LDAPTab.tsx` — Globale LDAP-Konfiguration +- `TenantLDAPTab.tsx` — Per-Tenant-LDAP +- `LabelsTab.tsx` — Label + Auto-Rules Verwaltung +- `AuditTab.tsx` — Audit-Log Viewer +- `RetentionTab.tsx` — GoBD-Retention pro Tenant (PROJ-34) +- `QuotaTab.tsx` — Storage-Quota pro Tenant mit Usage-Balken (PROJ-29) +- `SecurityTab.tsx` — Security-Audit + Fixes +- `CertTab.tsx` — TLS-Zertifikat-Verwaltung +- `IMAPSettingsTab.tsx` — IMAP-Modus-Einstellung +- `ImportTab.tsx` — Batch-Import-Tool +- `ServicesTab.tsx` — Service-Status (SMTP, IMAP, POP3) + +--- + +## src/lib/ + +### src/lib/api/ +- `index.ts` — Re-Export aller API-Funktionen (Kompatibilität) +- `core.ts` — HTTP-Client mit Credentials, Error-Handling +- `users.ts` — User-API: getUsers, createUser, updateUser, deleteUser, TOTP +- `mail.ts` — Mail-API: searchEmails, getMail, downloadAttachment, IMAP/POP3 +- `system.ts` — System-API: getHealth, getStats, getServices, getAuditLog, Labels, Certs +- `tenants.ts` — Tenant-API: CRUD, Domains, Logo, LDAP, Quota (PROJ-29) +- `ldap.ts` — LDAP-API: getLDAPConfig, saveLDAPConfig, testLDAP, syncLDAP + +### src/lib/ +- `auth-cache.ts` — Client-side Auth-Cache (localStorage, TTL) +- `utils.ts` — classname merging, Datums-Formatierung + +--- + +## src/hooks/ +- `useAuth.ts` — Aktueller User + login/logout +- `useLDAPConfig.ts` — Globale LDAP-Konfiguration +- `useTenantLDAPConfig.ts` — Per-Tenant-LDAP +- `useTenantUsers.ts` — Benutzer eines Mandanten +- `use-toast.ts` — Toast-Benachrichtigungen +- `use-mobile.tsx` — Responsive-Breakpoint (768px) + +--- + +## features/ — Feature-Spezifikationen + +| ID | Datei | Thema | +|----|-------|-------| +| PROJ-1 | `PROJ-1-authentifizierung-und-rollen.md` | JWT-Auth, RBAC | +| PROJ-2 | `PROJ-2-import-eml-mbox.md` | EML/MBOX-Import | +| PROJ-3 | `PROJ-3-import-imap.md` | IMAP-Sync | +| PROJ-4 | `PROJ-4-import-smtp.md` | SMTP-Daemon | +| PROJ-5 | `PROJ-5-speicherung-und-indexierung.md` | AES-256-GCM Storage, Xapian | +| PROJ-6 | `PROJ-6-volltext-suche.md` | Volltext-Suche | +| PROJ-7 | `PROJ-7-email-ansicht.md` | Mail-Viewer | +| PROJ-8 | `PROJ-8-imap-auto-sync.md` | IMAP-Scheduler | +| PROJ-9 | `PROJ-9-ordner-und-labels.md` | Labels + Auto-Rules | +| PROJ-10 | `PROJ-10-admin-bereich.md` | Admin-Panel | +| PROJ-11 | `PROJ-11-audit-log.md` | Audit-Logging | +| PROJ-12 | `PROJ-12-export.md` | EML/MBOX-Export | +| PROJ-13 | `PROJ-13-rest-api-crm.md` | REST-API für CRM | +| PROJ-14 | `PROJ-14-import-pop3.md` | POP3-Import | +| PROJ-15 | `PROJ-15-cli-import-export.md` | CLI-Tools | +| PROJ-16 | `PROJ-16-ldap-active-directory.md` | LDAP/AD-Integration | +| PROJ-17 | `PROJ-17-system-dashboard.md` | System-Dashboard | +| PROJ-18 | `PROJ-18-integritaetspruefung.md` | SHA-256-Integrity-Check | +| PROJ-19 | `PROJ-19-import-piler.md` | piler-Migration | +| PROJ-20 | `PROJ-20-nutzer-loeschung.md` | GoBD-konforme Löschung | +| PROJ-21 | `PROJ-21-multi-tenancy.md` | Multi-Tenancy | +| PROJ-22 | `PROJ-22-ldap-webgui.md` | LDAP-Web-GUI | +| PROJ-23 | `PROJ-23-tenant-ldap-pro-mandant.md` | Per-Tenant-LDAP | +| PROJ-24 | `PROJ-24-totp-zwei-faktor.md` | TOTP-2FA | +| PROJ-25 | `PROJ-25-user-profil-einstellungen.md` | User-Profil | +| PROJ-26 | `PROJ-26-imap-server-schnittstelle.md` | IMAP-Archive-Server | +| PROJ-27 | `PROJ-27-container-ready.md` | Docker-Support | +| PROJ-28 | `PROJ-28-self-service-onboarding.md` | Signup, Verify, Password-Reset | +| PROJ-29 | `PROJ-29-tenant-quotas.md` | Tenant-Quotas | +| PROJ-30 | `PROJ-30-bleve-migration.md` | Xapian → Manticore | +| PROJ-31 | `PROJ-31-billing-subscriptions.md` | Billing (geplant) | +| PROJ-32 | `PROJ-32-message-id-dedup.md` | Message-ID-Dedup | +| PROJ-33 | `PROJ-33-imap-modus-shared-personal.md` | IMAP Shared/Personal | +| PROJ-34 | `PROJ-34-retention-policy.md` | GoBD-Retention | diff --git a/DEVLOG.md b/DEVLOG.md new file mode 100644 index 0000000..36b813e --- /dev/null +++ b/DEVLOG.md @@ -0,0 +1,7808 @@ +# archivmail – Dev Log + +## 2026-03-28 22:25 – 22:33 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** timemaster + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-28 22:34 – 22:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-28 22:34 – 22:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-28 22:34 – 22:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 14:12 – 14:14 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 22:53 – 22:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 22:55 – 22:56 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 22:57 – 22:58 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:02 – 23:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:05 – 23:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:07 – 23:08 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:10 – 23:10 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:13 – 23:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:14 – 23:14 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:19 – 23:20 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:21 – 23:21 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:21 – 23:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:26 – 23:26 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-30 23:41 – 23:41 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:05 – 00:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:11 – 00:11 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:14 – 00:15 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:17 – 00:17 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:21 – 00:21 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:24 – 00:25 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:27 – 00:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:28 – 00:32 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:33 – 00:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:34 – 00:35 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:37 – 00:38 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:40 – 00:41 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:43 – 00:45 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:46 – 00:46 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:49 – 00:49 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:55 – 00:55 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 00:57 – 00:59 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 01:05 – 01:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/ldapauth/client.go | 152 ++++++++++++++++++++++++---- +- src/components/admin/tabs/LDAPTab.tsx | 23 ++++- +- src/components/admin/tabs/TenantLDAPTab.tsx | 23 ++++- +- src/lib/api/index.ts | 1 + +- src/lib/api/ldap.ts | 8 ++ + +--- +## 2026-03-31 01:07 – 01:16 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- cb31c48 fix: version → AppVersion in cmd_import.go (Build-Fehler nach 0.9.1-Umbenennung) +- 4f7a7d6 feat: App-Version 0.9.1 + Modulversionsnummern +- 64433aa fix(SEC-29): Rollen-Trennung Admins/Auditoren, domain_auditor Rolle + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- + +--- +## 2026-03-31 01:16 – 01:16 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- + +--- +## 2026-03-31 01:18 – 01:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- + +--- +## 2026-03-31 01:20 – 01:22 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- + +--- +## 2026-03-31 01:24 – 01:24 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- + +--- +## 2026-03-31 01:25 – 01:27 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- + +--- +## 2026-03-31 01:27 – 01:30 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- b6856af feat(PROJ-32): Message-ID-basierte Duplikatserkennung + +### Geänderte Dateien +- cmd/archivmail/main.go | 7 +- +- cmd/archivmail/version.go | 2 +- +- config/config.go | 9 +- +- features/INDEX.md | 5 +- +- internal/api/retention_handlers.go | 18 ++++ +- internal/api/server.go | 3 + +- internal/storage/storage.go | 173 +++++++++++++++++++++++++++++---- +- src/app/admin/page.tsx | 1 + +- src/components/admin/tabs/UsersTab.tsx | 12 +++ + +--- +## 2026-03-31 01:30 – 01:30 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 7 +- +- cmd/archivmail/version.go | 2 +- +- config/config.go | 9 +- +- features/INDEX.md | 5 +- +- internal/api/retention_handlers.go | 18 ++++ +- internal/api/server.go | 3 + +- internal/storage/storage.go | 173 +++++++++++++++++++++++++++++---- +- src/app/admin/page.tsx | 1 + +- src/components/admin/tabs/UsersTab.tsx | 12 +++ + +--- +## 2026-03-31 01:33 – 01:33 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 7 +- +- cmd/archivmail/version.go | 2 +- +- config/config.go | 9 +- +- features/INDEX.md | 5 +- +- internal/api/retention_handlers.go | 18 ++++ +- internal/api/server.go | 3 + +- internal/storage/storage.go | 173 +++++++++++++++++++++++++++++---- +- src/app/admin/page.tsx | 1 + +- src/components/admin/tabs/UsersTab.tsx | 12 +++ + +--- +## 2026-03-31 01:34 – 09:28 (7h 54m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 7 +- +- cmd/archivmail/version.go | 2 +- +- config/config.go | 9 +- +- features/INDEX.md | 5 +- +- internal/api/retention_handlers.go | 18 ++++ +- internal/api/server.go | 3 + +- internal/storage/storage.go | 173 +++++++++++++++++++++++++++++---- +- src/app/admin/page.tsx | 1 + +- src/components/admin/tabs/UsersTab.tsx | 12 +++ + +--- +## 2026-03-31 09:29 – 09:44 (15m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 7 +- +- cmd/archivmail/version.go | 2 +- +- config/config.go | 9 +- +- features/INDEX.md | 5 +- +- internal/api/retention_handlers.go | 18 ++++ +- internal/api/server.go | 3 + +- internal/storage/storage.go | 173 +++++++++++++++++++++++++++++---- +- src/app/admin/page.tsx | 1 + +- src/components/admin/tabs/UsersTab.tsx | 12 +++ + +--- +## 2026-03-31 09:44 – 09:47 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 8d0f685 feat(PROJ-33): IMAP UID-Stabilität + Shared/Personal-Modus + +### Geänderte Dateien +- cmd/archivmail/main.go | 2 +- +- cmd/archivmail/version.go | 26 ++-- +- internal/api/imap_settings_handlers.go | 61 ++++++++++ +- internal/api/server.go | 4 + +- internal/imapserver/server.go | 99 +++++++++------ +- internal/storage/storage.go | 88 ++++++++++++++ +- internal/tenantstore/store.go | 22 ++++ +- src/app/admin/page.tsx | 10 ++ +- src/components/admin/tabs/IMAPSettingsTab.tsx | 166 ++++++++++++++++++++++++++ + +--- +## 2026-03-31 09:47 – 09:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 2 +- +- cmd/archivmail/version.go | 26 ++-- +- internal/api/imap_settings_handlers.go | 61 ++++++++++ +- internal/api/server.go | 4 + +- internal/imapserver/server.go | 99 +++++++++------ +- internal/storage/storage.go | 88 ++++++++++++++ +- internal/tenantstore/store.go | 22 ++++ +- src/app/admin/page.tsx | 10 ++ +- src/components/admin/tabs/IMAPSettingsTab.tsx | 166 ++++++++++++++++++++++++++ + +--- +## 2026-03-31 09:48 – 09:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 2 +- +- cmd/archivmail/version.go | 26 ++-- +- internal/api/imap_settings_handlers.go | 61 ++++++++++ +- internal/api/server.go | 4 + +- internal/imapserver/server.go | 99 +++++++++------ +- internal/storage/storage.go | 88 ++++++++++++++ +- internal/tenantstore/store.go | 22 ++++ +- src/app/admin/page.tsx | 10 ++ +- src/components/admin/tabs/IMAPSettingsTab.tsx | 166 ++++++++++++++++++++++++++ + +--- +## 2026-03-31 09:48 – 09:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 2 +- +- cmd/archivmail/version.go | 26 ++-- +- internal/api/imap_settings_handlers.go | 61 ++++++++++ +- internal/api/server.go | 4 + +- internal/imapserver/server.go | 99 +++++++++------ +- internal/storage/storage.go | 88 ++++++++++++++ +- internal/tenantstore/store.go | 22 ++++ +- src/app/admin/page.tsx | 10 ++ +- src/components/admin/tabs/IMAPSettingsTab.tsx | 166 ++++++++++++++++++++++++++ + +--- +## 2026-03-31 09:49 – 09:51 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 27040ff feat(PROJ-28): FQDN + smtp_out Konfiguration + +### Geänderte Dateien +- cmd/archivmail/main.go | 5 +++++ +- cmd/archivmail/version.go | 4 ++-- +- config/config.go | 19 ++++++++++++++++--- +- internal/imapserver/server.go | 8 ++++++-- +- src/components/navbar.tsx | 42 ++++++++++++++++++++++++------------------ + +--- +## 2026-03-31 09:52 – 09:52 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 5 +++++ +- cmd/archivmail/version.go | 4 ++-- +- config/config.go | 19 ++++++++++++++++--- +- internal/imapserver/server.go | 8 ++++++-- +- src/components/navbar.tsx | 42 ++++++++++++++++++++++++------------------ + +--- +## 2026-03-31 09:52 – 09:52 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 5 +++++ +- cmd/archivmail/version.go | 4 ++-- +- config/config.go | 19 ++++++++++++++++--- +- internal/imapserver/server.go | 8 ++++++-- +- src/components/navbar.tsx | 42 ++++++++++++++++++++++++------------------ + +--- +## 2026-03-31 09:53 – 09:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 5 +++++ +- cmd/archivmail/version.go | 4 ++-- +- config/config.go | 19 ++++++++++++++++--- +- internal/imapserver/server.go | 8 ++++++-- +- src/components/navbar.tsx | 42 ++++++++++++++++++++++++------------------ + +--- +## 2026-03-31 09:54 – 10:05 (11m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 842640c fix: Superadmin wird direkt zu /admin weitergeleitet + +### Geänderte Dateien +- src/app/page.tsx | 10 ++++++---- +- src/app/search/page.tsx | 9 ++++++++- + +--- +## 2026-03-31 10:06 – 10:06 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/page.tsx | 10 ++++++---- +- src/app/search/page.tsx | 9 ++++++++- + +--- +## 2026-03-31 10:16 – 10:18 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 5f0c7a7 feat(PROJ-27): Docker-Support + install.sh v2.0 (native + Docker-Modus) + +### Geänderte Dateien +- .dockerignore | 30 ++ +- Dockerfile | 37 ++ +- Dockerfile.web | 31 ++ +- config/config.docker.yml.example | 57 +++ +- docker-compose.yml | 54 +++ +- features/INDEX.md | 8 +- +- install.sh | 770 +++++++++++++++++++++++++++------------ +- scripts/deploy.sh | 31 ++ +- scripts/webhook-hooks.json | 32 ++ + +--- +## 2026-03-31 10:27 – 10:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .dockerignore | 30 ++ +- Dockerfile | 37 ++ +- Dockerfile.web | 31 ++ +- config/config.docker.yml.example | 57 +++ +- docker-compose.yml | 54 +++ +- features/INDEX.md | 8 +- +- install.sh | 770 +++++++++++++++++++++++++++------------ +- scripts/deploy.sh | 31 ++ +- scripts/webhook-hooks.json | 32 ++ + +--- +## 2026-03-31 10:30 – 10:37 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 5bbf6d0 feat(PROJ-34): Retention-Tab + pro-Mandant Aufbewahrungsfristen + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- cmd/archivmail/version.go | 6 +- +- internal/api/retention_handlers.go | 50 ++++++ +- internal/api/server.go | 14 +- +- internal/storage/storage.go | 13 +- +- internal/tenantstore/store.go | 44 ++++- +- src/app/admin/page.tsx | 8 + +- src/components/admin/tabs/RetentionTab.tsx | 279 +++++++++++++++++++++++++++++ + +--- +## 2026-03-31 10:37 – 10:44 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 58bcfb1 feat: Dashboard-Metriken nach Mailpiler-Vorbild (Uptime, Aktivität, Prognose) + +### Geänderte Dateien +- cmd/archivmail/version.go | 2 +- +- internal/api/dashboard_handlers.go | 33 +++++++++-- +- internal/storage/storage_stats.go | 88 ++++++++++++++++++++++++++++++ +- src/components/admin/tabs/DashboardTab.tsx | 88 +++++++++++++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 17 ++++++ + +--- +## 2026-03-31 10:44 – 10:51 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- ebc9e27 fix(PROJ-34): Mandanten-Retention ist Opt-in — kein globaler Lock für Mandanten +- 4aadf7a fix: retention_handlers.go — getSession/audlog.Log-Signatur korrigiert + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 10:58 – 10:58 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 11:02 – 11:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 11:04 – 11:04 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 11:05 – 11:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 11:07 – 20:43 (9h 36m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 20:44 – 20:44 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 20:44 – 20:44 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 20:45 – 20:46 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 20:47 – 20:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 15 +++++++++------ +- src/components/admin/tabs/RetentionTab.tsx | 25 +++++++++---------------- + +--- +## 2026-03-31 20:49 – 21:21 (32m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7930b85 feat(PROJ-29): Tenant-Quotas & Usage-Limits + +### Geänderte Dateien +- internal/api/quota_handlers.go | 119 ++++++++++++++++ +- internal/api/server.go | 5 + +- internal/storage/quota.go | 94 +++++++++++++ +- internal/storage/storage.go | 7 +- +- internal/tenantstore/quota.go | 73 ++++++++++ +- internal/tenantstore/store.go | 14 +- +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/QuotaTab.tsx | 244 +++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 3 + +- src/lib/api/tenants.ts | 29 ++++ + +--- +## 2026-03-31 21:21 – 21:21 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/quota_handlers.go | 119 ++++++++++++++++ +- internal/api/server.go | 5 + +- internal/storage/quota.go | 94 +++++++++++++ +- internal/storage/storage.go | 7 +- +- internal/tenantstore/quota.go | 73 ++++++++++ +- internal/tenantstore/store.go | 14 +- +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/QuotaTab.tsx | 244 +++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 3 + +- src/lib/api/tenants.ts | 29 ++++ + +--- +## 2026-03-31 21:22 – 21:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/quota_handlers.go | 119 ++++++++++++++++ +- internal/api/server.go | 5 + +- internal/storage/quota.go | 94 +++++++++++++ +- internal/storage/storage.go | 7 +- +- internal/tenantstore/quota.go | 73 ++++++++++ +- internal/tenantstore/store.go | 14 +- +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/QuotaTab.tsx | 244 +++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 3 + +- src/lib/api/tenants.ts | 29 ++++ + +--- +## 2026-03-31 21:22 – 21:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/quota_handlers.go | 119 ++++++++++++++++ +- internal/api/server.go | 5 + +- internal/storage/quota.go | 94 +++++++++++++ +- internal/storage/storage.go | 7 +- +- internal/tenantstore/quota.go | 73 ++++++++++ +- internal/tenantstore/store.go | 14 +- +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/QuotaTab.tsx | 244 +++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 3 + +- src/lib/api/tenants.ts | 29 ++++ + +--- +## 2026-03-31 21:23 – 21:54 (31m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4583262 feat(PROJ-28): Self-Service Onboarding — Signup, Verify, Password Reset, Invites + +### Geänderte Dateien +- cmd/archivmail/main.go | 24 ++++ +- internal/api/invite_handlers.go | 106 ++++++++++++++++ +- internal/api/onboarding_handlers.go | 234 ++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 28 +++++ +- internal/mailer/mailer.go | 152 +++++++++++++++++++++++ +- internal/mailer/templates.go | 65 ++++++++++ +- internal/tokenstore/store.go | 154 ++++++++++++++++++++++++ +- internal/userstore/userstore.go | 51 ++++++++ +- src/app/forgot-password/page.tsx | 88 ++++++++++++++ +- src/app/page.tsx | 8 ++ +- src/app/reset-password/page.tsx | 125 +++++++++++++++++++ +- src/app/signup/page.tsx | 134 +++++++++++++++++++++ +- src/app/verify/page.tsx | 63 ++++++++++ + +--- +## 2026-03-31 21:56 – 21:56 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 24 ++++ +- internal/api/invite_handlers.go | 106 ++++++++++++++++ +- internal/api/onboarding_handlers.go | 234 ++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 28 +++++ +- internal/mailer/mailer.go | 152 +++++++++++++++++++++++ +- internal/mailer/templates.go | 65 ++++++++++ +- internal/tokenstore/store.go | 154 ++++++++++++++++++++++++ +- internal/userstore/userstore.go | 51 ++++++++ +- src/app/forgot-password/page.tsx | 88 ++++++++++++++ +- src/app/page.tsx | 8 ++ +- src/app/reset-password/page.tsx | 125 +++++++++++++++++++ +- src/app/signup/page.tsx | 134 +++++++++++++++++++++ +- src/app/verify/page.tsx | 63 ++++++++++ + +--- +## 2026-03-31 21:57 – 21:58 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 24 ++++ +- internal/api/invite_handlers.go | 106 ++++++++++++++++ +- internal/api/onboarding_handlers.go | 234 ++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 28 +++++ +- internal/mailer/mailer.go | 152 +++++++++++++++++++++++ +- internal/mailer/templates.go | 65 ++++++++++ +- internal/tokenstore/store.go | 154 ++++++++++++++++++++++++ +- internal/userstore/userstore.go | 51 ++++++++ +- src/app/forgot-password/page.tsx | 88 ++++++++++++++ +- src/app/page.tsx | 8 ++ +- src/app/reset-password/page.tsx | 125 +++++++++++++++++++ +- src/app/signup/page.tsx | 134 +++++++++++++++++++++ +- src/app/verify/page.tsx | 63 ++++++++++ + +--- +## 2026-03-31 21:58 – 21:59 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 24 ++++ +- internal/api/invite_handlers.go | 106 ++++++++++++++++ +- internal/api/onboarding_handlers.go | 234 ++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 28 +++++ +- internal/mailer/mailer.go | 152 +++++++++++++++++++++++ +- internal/mailer/templates.go | 65 ++++++++++ +- internal/tokenstore/store.go | 154 ++++++++++++++++++++++++ +- internal/userstore/userstore.go | 51 ++++++++ +- src/app/forgot-password/page.tsx | 88 ++++++++++++++ +- src/app/page.tsx | 8 ++ +- src/app/reset-password/page.tsx | 125 +++++++++++++++++++ +- src/app/signup/page.tsx | 134 +++++++++++++++++++++ +- src/app/verify/page.tsx | 63 ++++++++++ + +--- +## 2026-03-31 22:00 – 22:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7371a73 fix(SEC): Signup-Enumeration durch Always-Send-Email schließen + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:04 – 22:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:05 – 22:08 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:19 – 22:20 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:20 – 22:26 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:26 – 22:26 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:26 – 22:27 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:27 – 22:27 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:28 – 22:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 14 ++++++++++++-- +- internal/mailer/templates.go | 18 ++++++++++++++++++ + +--- +## 2026-03-31 22:30 – 22:40 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- c1a9004 feat(PROJ-28): SMTP-Out Relay — DB-Konfiguration + Admin-Tab + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 22:53 – 22:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 22:53 – 22:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 22:55 – 22:55 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 22:57 – 22:58 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:00 – 23:02 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:02 – 23:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:06 – 23:06 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:07 – 23:19 (12m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:22 – 23:41 (18m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:42 – 23:42 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 23 +++ +- internal/api/server.go | 13 ++ +- internal/api/smtpout_handlers.go | 118 ++++++++++++ +- internal/mailer/mailer.go | 31 +++- +- internal/smtpoutconfig/store.go | 205 ++++++++++++++++++++ +- src/app/admin/page.tsx | 7 + +- src/components/admin/tabs/SMTPOutTab.tsx | 309 +++++++++++++++++++++++++++++++ + +--- +## 2026-03-31 23:45 – 23:49 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- acc0d93 feat: getrennte Login-Seiten für User (/), Admins (/admin/login) + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 104 +++++++++++++++++++++++++++++++++++++++++++ +- src/app/admin/page.tsx | 2 +- +- src/app/page.tsx | 12 +++-- +- src/hooks/useAuth.ts | 6 +-- + +--- +## 2026-03-31 23:50 – 23:51 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 104 +++++++++++++++++++++++++++++++++++++++++++ +- src/app/admin/page.tsx | 2 +- +- src/app/page.tsx | 12 +++-- +- src/hooks/useAuth.ts | 6 +-- + +--- +## 2026-03-31 23:52 – 23:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 104 +++++++++++++++++++++++++++++++++++++++++++ +- src/app/admin/page.tsx | 2 +- +- src/app/page.tsx | 12 +++-- +- src/hooks/useAuth.ts | 6 +-- + +--- +## 2026-03-31 23:54 – 23:56 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- d7b0150 fix(ui): Mandanten-Tabelle — Slug unter Name, LDAP-Host anzeigen, Slug-Spalte entfernt + +### Geänderte Dateien +- src/components/admin/tabs/TenantsTab.tsx | 16 ++++++++++++---- + +--- +## 2026-03-31 23:59 – 00:01 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/TenantsTab.tsx | 16 ++++++++++++---- + +--- +## 2026-04-01 00:02 – 00:23 (24h 21m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- d01df2a fix: Debug-Logging entfernt, tenant_domains auf 132 wiederhergestellt +- caac522 debug: erweitertes LDAP-Logging (upsert + success) +- 5c3a9b5 debug: temporäres LDAP-Logging für Fehlerdiagnose + +### Geänderte Dateien +- internal/auth/auth.go | 15 +-------------- + +--- +## 2026-04-02 00:30 – 00:31 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/auth/auth.go | 15 +-------------- + +--- +## 2026-04-02 00:34 – 00:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/auth/auth.go | 15 +-------------- + +--- +## 2026-04-02 00:35 – 00:36 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/auth/auth.go | 15 +-------------- + +--- +## 2026-04-02 00:37 – 00:42 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- e90d588 fix: UpsertLDAPUser — email-basierter Match vor Insert + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 00:42 – 00:43 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 00:52 – 00:53 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 00:54 – 00:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 00:57 – 00:58 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 00:58 – 00:59 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 01:00 – 01:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 01:00 – 01:02 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 01:04 – 01:04 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 01:05 – 01:07 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 01:17 – 23:30 (22h 12m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 23:31 – 23:40 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 23:41 – 23:41 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 23:42 – 23:49 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 23:49 – 23:54 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 23:56 – 23:56 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-02 23:57 – 23:59 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:02 – 00:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:04 – 00:08 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:11 – 00:13 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:16 – 00:19 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:22 – 00:30 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:33 – 00:39 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:40 – 00:42 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 00:44 – 20:50 (20h 05m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 20:54 – 20:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 20:57 – 20:59 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/userstore/userstore.go | 22 +++++++++++++++++++++- + +--- +## 2026-04-03 21:00 – 21:29 (28m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7efccda chore: Manticore als Standard — Xapian-Referenzen entfernt +- b568c73 fix(PROJ-30): Stemmer stem_de → lemmatize_de_all (Manticore 25.0.0 MySQL-Protokoll) +- 825e4db fix(PROJ-30): ListFolders — c.Client statt c uebergeben (imap.Conn vs *imapclient.Client) +- 0969f76 fix(PROJ-30): imapclient.New — Rueckgabewert an go-imap/v2 beta.8 API anpassen +- a93a843 feat(PROJ-30): Xapian → Manticore Search Migration + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 313 +++++++++++++++++++++++++++++++++ +- .claude/agents/manticore-admin.md | 113 ++++++++++++ +- CLAUDE.md | 14 +- + +--- +## 2026-04-03 21:31 – 21:31 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 313 +++++++++++++++++++++++++++++++++ +- .claude/agents/manticore-admin.md | 113 ++++++++++++ +- CLAUDE.md | 14 +- + +--- +## 2026-04-03 21:34 – 21:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 313 +++++++++++++++++++++++++++++++++ +- .claude/agents/manticore-admin.md | 113 ++++++++++++ +- CLAUDE.md | 14 +- + +--- +## 2026-04-03 21:34 – 21:37 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 36d8db1 chore: go.sum für go-sql-driver/mysql aktualisiert + +### Geänderte Dateien +- go.mod | 5 +++-- +- go.sum | 27 ++++++++++++++++++++++----- + +--- +## 2026-04-03 21:39 – 01:14 (3h 35m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- go.mod | 5 +++-- +- go.sum | 27 ++++++++++++++++++++++----- + +--- +## 2026-04-04 01:15 – 01:17 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- go.mod | 5 +++-- +- go.sum | 27 ++++++++++++++++++++++----- + +--- +## 2026-04-04 01:18 – 01:21 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/search_handlers.go | 55 +++++++++++++++++++++++++++++++++-------- +- internal/auth/auth.go | 11 +++++++++ + +--- +## 2026-04-04 01:22 – 01:23 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/search_handlers.go | 55 +++++++++++++++++++++++++++++++++-------- +- internal/auth/auth.go | 11 +++++++++ + +--- +## 2026-04-04 01:28 – 01:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- features/INDEX.md | 2 +- +- internal/api/admin_handlers.go | 12 +++++++++++ +- internal/api/quota_handlers.go | 46 +++++++++++++++++++++++++++++++++++++++--- +- internal/api/server.go | 2 ++ +- internal/smtpd/smtpd.go | 10 +++++++++ +- internal/storage/quota.go | 11 ++++++---- +- internal/tenantstore/quota.go | 11 ++++++---- + +--- +## 2026-04-04 01:28 – 01:31 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- features/INDEX.md | 2 +- +- internal/api/admin_handlers.go | 12 +++++++++++ +- internal/api/quota_handlers.go | 46 +++++++++++++++++++++++++++++++++++++++--- +- internal/api/server.go | 2 ++ +- internal/smtpd/smtpd.go | 10 +++++++++ +- internal/storage/quota.go | 11 ++++++---- +- internal/tenantstore/quota.go | 11 ++++++---- + +--- +## 2026-04-04 01:34 – 01:41 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- ecd5ed3 fix(PROJ-30): cmd import-piler — Manticore-Backend support +- 44bff14 fix(PROJ-30): cmd import — Manticore-Backend support (wie cmd_reindex) + +### Geänderte Dateien +- cmd/archivmail/cmd_import_piler.go | 30 +++++++++++++++++++++++------- + +--- +## 2026-04-04 01:45 – 01:49 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- ab7d6ad fix: Datumsparser — mehr RFC-2822-Varianten, kein time.Now() Fallback + +### Geänderte Dateien +- internal/storage/storage.go | 12 ++++++++++-- +- pkg/mailparser/parser.go | 31 +++++++++++++++++++++++++++++-- + +--- +## 2026-04-04 01:49 – 01:50 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 12 ++++++++++-- +- pkg/mailparser/parser.go | 31 +++++++++++++++++++++++++++++-- + +--- +## 2026-04-04 01:52 – 01:52 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/storage/storage.go | 12 ++++++++++-- +- pkg/mailparser/parser.go | 31 +++++++++++++++++++++++++++++-- + +--- +## 2026-04-04 01:53 – 01:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 896f8dc chore: PROJ-29 + PROJ-30 als Deployed markiert + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-30-bleve-migration.md | 132 ++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-04 01:54 – 01:55 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-30-bleve-migration.md | 132 ++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-04 01:55 – 01:58 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-30-bleve-migration.md | 132 ++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-04 02:00 – 02:01 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-30-bleve-migration.md | 132 ++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-04 02:01 – 02:04 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- e1f25f2 fix(security): emailsFromHeader fail-closed, domain_auditor-Block, Manticore-Tabellenvalidierung + +### Geänderte Dateien +- internal/api/search_handlers.go | 23 +++++++++++++---------- +- internal/index/manticore.go | 17 +++++++++++++++-- + +--- +## 2026-04-04 02:05 – 02:06 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7e1e58e feat(PROJ-35): Spec — OCR & Anhang-Volltext-Indexierung + +### Geänderte Dateien +- features/INDEX.md | 2 + +- features/PROJ-35-ocr-anhang-volltext.md | 159 ++++++++++++++++++++++++++++++++ + +--- +## 2026-04-04 02:07 – 10:44 (8h 37m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- c8ab4af chore: PROJ-9 als Deployed markiert +- 0307521 fix(PROJ-9): Superadmin-Tenant-NULL, GET admin/labels, from_domain-Allowlist + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 4 ++-- + +--- +## 2026-04-04 19:09 – 19:09 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 4 ++-- + +--- +## 2026-04-04 19:12 – 19:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 4 ++-- + +--- +## 2026-04-04 19:28 – 19:29 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 4 ++-- + +--- +## 2026-04-04 19:31 – 19:37 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 994e5d1 feat: auditor sieht Mails ohne Tenant-Zuordnung + +### Geänderte Dateien +- internal/api/export.go | 41 +++++++++++++++++++++---- +- internal/api/search_handlers.go | 67 +++++++++++++++++++++++++++++++++++------ +- internal/storage/storage.go | 49 ++++++++++++++++++++++++++++++ + +--- +## 2026-04-04 19:49 – 19:51 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 48cfb7c fix: auditor immer globalen Index nutzen, tenant_id ignorieren + +### Geänderte Dateien +- internal/api/search_handlers.go | 6 ++++-- + +--- +## 2026-04-04 19:53 – 19:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/search_handlers.go | 6 ++++-- + +--- +## 2026-04-04 20:41 – 20:43 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- bde2919 fix: Manticore als Standard-Backend, Xapian-Cleanup in update.sh + +### Geänderte Dateien +- cmd/archivmail/main.go | 2 +- +- internal/index/index.go | 5 +++-- +- update.sh | 6 ++++++ + +--- +## 2026-04-04 20:45 – 20:45 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 2 +- +- internal/index/index.go | 5 +++-- +- update.sh | 6 ++++++ + +--- +## 2026-04-04 20:45 – 21:00 (14m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 2900187 chore: Xapian/Bleve-Reste aus install.sh, setup.sh und smoke_test.sh entfernen + +### Geänderte Dateien +- install.sh | 51 +++++++++++++++++++++++++++++++++------------------ +- setup.sh | 11 +++++------ +- smoke_test.sh | 6 +++--- + +--- +## 2026-04-04 21:00 – 21:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 23dbab1 chore: überflüssigen REPO_URL-Guard im Docker-Installer entfernen + +### Geänderte Dateien +- install.sh | 6 ------ + +--- +## 2026-04-04 21:01 – 21:03 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 6 ------ + +--- +## 2026-04-04 21:08 – 21:08 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 6 ------ + +--- +## 2026-04-04 21:10 – 21:11 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 6 ------ + +--- +## 2026-04-04 21:11 – 21:13 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 0db2324 fix(ui): Label-Sidebar für auditor/domain_auditor ausblenden + +### Geänderte Dateien +- src/app/search/page.tsx | 4 +++- + +--- +## 2026-04-04 21:11 – 21:13 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 0db2324 fix(ui): Label-Sidebar für auditor/domain_auditor ausblenden + +### Geänderte Dateien +- src/app/search/page.tsx | 4 +++- + +--- +## 2026-04-04 21:16 – 21:17 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4d1bdb6 fix(ui): rollenbasierte Navigation + domain_auditor-Support + +### Geänderte Dateien +- src/components/UserNav.tsx | 19 +++++++++++++++---- +- src/components/navbar.tsx | 6 +++--- +- src/hooks/useAuth.ts | 5 +++-- + +--- +## 2026-04-04 21:19 – 21:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/UserNav.tsx | 19 +++++++++++++++---- +- src/components/navbar.tsx | 6 +++--- +- src/hooks/useAuth.ts | 5 +++-- + +--- +## 2026-04-04 21:22 – 21:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/UserNav.tsx | 19 +++++++++++++++---- +- src/components/navbar.tsx | 6 +++--- +- src/hooks/useAuth.ts | 5 +++-- + +--- +## 2026-04-04 21:24 – 21:32 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- fdb25cb feat: Labels-Feature vollständig entfernen (PROJ-9) + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-04 21:36 – 21:36 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-04 21:38 – 21:38 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-04 21:41 – 21:41 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-04 21:42 – 21:42 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-04 22:05 – 01:01 (2h 56m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-05 01:02 – 01:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-05 01:10 – 01:18 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +- +- cmd/archivmail/version.go | 3 +- +- features/INDEX.md | 2 +- +- features/PROJ-9-ordner-und-labels.md | 2 +- +- internal/api/label_handlers.go | 445 -------------------------------- +- internal/api/search_handlers.go | 41 --- +- internal/api/server.go | 2 - +- internal/imapserver/server.go | 52 +--- +- internal/index/index.go | 1 - +- internal/labelstore/store.go | 376 --------------------------- +- src/app/admin/page.tsx | 132 ---------- +- src/app/mail/[id]/page.tsx | 29 --- +- src/app/search/page.tsx | 22 +- +- src/components/LabelList.tsx | 308 ---------------------- +- src/components/LabelPicker.tsx | 141 ---------- +- src/components/admin/tabs/LabelsTab.tsx | 282 -------------------- +- src/lib/api/index.ts | 15 -- +- src/lib/api/mail.ts | 2 - +- src/lib/api/system.ts | 93 ------- + +--- +## 2026-04-05 01:19 – 01:22 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 27d45f5 feat(PROJ-36,PROJ-37): gzip-Kompression + Attachment-Deduplication + +### Geänderte Dateien +- cmd/archivmail/cmd_export.go | 7 ++- +- cmd/archivmail/cmd_import.go | 7 ++- +- cmd/archivmail/cmd_import_piler.go | 7 ++- +- cmd/archivmail/cmd_reindex.go | 7 ++- +- cmd/archivmail/main.go | 9 +-- +- config/config.go | 2 +- +- features/INDEX.md | 4 +- +- internal/storage/attachments.go | 109 ++++++++++++++++++++++++++++++++++ +- internal/storage/compress.go | 56 ++++++++++++++++++ +- internal/storage/storage.go | 116 ++++++++++++++++++++++++++++--------- + +--- +## 2026-04-05 01:22 – 01:27 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_export.go | 7 ++- +- cmd/archivmail/cmd_import.go | 7 ++- +- cmd/archivmail/cmd_import_piler.go | 7 ++- +- cmd/archivmail/cmd_reindex.go | 7 ++- +- cmd/archivmail/main.go | 9 +-- +- config/config.go | 2 +- +- features/INDEX.md | 4 +- +- internal/storage/attachments.go | 109 ++++++++++++++++++++++++++++++++++ +- internal/storage/compress.go | 56 ++++++++++++++++++ +- internal/storage/storage.go | 116 ++++++++++++++++++++++++++++--------- + +--- +## 2026-04-05 01:28 – 01:36 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 956b5b6 feat(PROJ-36): archivmail recompress — Nachkomprimierung bestehender Mails + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_recompress.go | 62 ++++++++++++++ +- cmd/archivmail/main.go | 3 + +- internal/storage/recompress.go | 180 +++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-05 01:36 – 01:36 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_recompress.go | 62 ++++++++++++++ +- cmd/archivmail/main.go | 3 + +- internal/storage/recompress.go | 180 +++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-05 01:38 – 01:38 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_recompress.go | 62 ++++++++++++++ +- cmd/archivmail/main.go | 3 + +- internal/storage/recompress.go | 180 +++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-05 19:37 – 19:38 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_recompress.go | 62 ++++++++++++++ +- cmd/archivmail/main.go | 3 + +- internal/storage/recompress.go | 180 +++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-05 19:50 – 19:53 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_recompress.go | 62 ++++++++++++++ +- cmd/archivmail/main.go | 3 + +- internal/storage/recompress.go | 180 +++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-05 20:00 – 20:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_recompress.go | 62 ++++++++++++++ +- cmd/archivmail/main.go | 3 + +- internal/storage/recompress.go | 180 +++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-04-05 20:01 – 20:20 (19m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 887548a fix(PROJ-38): getThread + ThreadMail/ThreadResponse in api/index.ts re-exportieren +- b252172 feat(PROJ-26,PROJ-38): IMAP LDAP-Auth + Mail-Threading + +### Geänderte Dateien +- src/lib/api/index.ts | 3 +++ + +--- +## 2026-04-05 20:27 – 20:38 (11m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 2bab612 chore: Modulname github.com/archivmail → archivmail +- eb48081 feat(PROJ-38): rethread — rückwirkendes Mail-Threading + +### Geänderte Dateien +- cmd/archivmail-export/main.go | 6 +++--- +- cmd/archivmail-import/main.go | 8 ++++---- +- cmd/archivmail/cmd_export.go | 8 ++++---- +- cmd/archivmail/cmd_import.go | 8 ++++---- +- cmd/archivmail/cmd_import_piler.go | 6 +++--- +- cmd/archivmail/cmd_migrate_tenants.go | 4 ++-- +- cmd/archivmail/cmd_recompress.go | 4 ++-- +- cmd/archivmail/cmd_reindex.go | 8 ++++---- +- cmd/archivmail/cmd_rethread.go | 4 ++-- +- cmd/archivmail/main.go | 34 +++++++++++++++++----------------- +- go.mod | 2 +- +- internal/api/admin_handlers.go | 6 +++--- +- internal/api/api_test.go | 14 +++++++------- +- internal/api/auth_handlers.go | 2 +- +- internal/api/dashboard_handlers.go | 6 +++--- +- internal/api/export.go | 6 +++--- +- internal/api/imap_settings_handlers.go | 2 +- +- internal/api/import_handlers.go | 8 ++++---- +- internal/api/invite_handlers.go | 8 ++++---- +- internal/api/ldap_sync.go | 6 +++--- +- internal/api/ldap_tenants.go | 10 +++++----- +- internal/api/onboarding_handlers.go | 8 ++++---- +- internal/api/profile_handlers.go | 2 +- +- internal/api/quota_handlers.go | 6 +++--- +- internal/api/retention_handlers.go | 2 +- +- internal/api/search_handlers.go | 8 ++++---- +- internal/api/server.go | 28 ++++++++++++++-------------- +- internal/api/smtpout_handlers.go | 6 +++--- +- internal/api/thread_handlers.go | 4 ++-- +- internal/api/totp_handlers.go | 4 ++-- +- internal/api/upload.go | 4 ++-- +- internal/audit/audit_test.go | 2 +- +- internal/auth/auth.go | 6 +++--- +- internal/auth/auth_test.go | 4 ++-- +- internal/imap/importer.go | 6 +++--- +- internal/imapserver/server.go | 12 ++++++------ +- internal/index/index_test.go | 2 +- +- internal/mailer/mailer.go | 2 +- +- internal/pop3/importer.go | 6 +++--- +- internal/smtpd/smtpd.go | 4 ++-- +- internal/storage/attachments.go | 2 +- +- internal/storage/rethread.go | 2 +- +- internal/storage/storage.go | 2 +- +- internal/storage/storage_test.go | 2 +- +- internal/userstore/userstore_test.go | 2 +- +- pkg/mailparser/parser_test.go | 2 +- + +--- +## 2026-04-05 20:46 – 20:46 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail-export/main.go | 6 +++--- +- cmd/archivmail-import/main.go | 8 ++++---- +- cmd/archivmail/cmd_export.go | 8 ++++---- +- cmd/archivmail/cmd_import.go | 8 ++++---- +- cmd/archivmail/cmd_import_piler.go | 6 +++--- +- cmd/archivmail/cmd_migrate_tenants.go | 4 ++-- +- cmd/archivmail/cmd_recompress.go | 4 ++-- +- cmd/archivmail/cmd_reindex.go | 8 ++++---- +- cmd/archivmail/cmd_rethread.go | 4 ++-- +- cmd/archivmail/main.go | 34 +++++++++++++++++----------------- +- go.mod | 2 +- +- internal/api/admin_handlers.go | 6 +++--- +- internal/api/api_test.go | 14 +++++++------- +- internal/api/auth_handlers.go | 2 +- +- internal/api/dashboard_handlers.go | 6 +++--- +- internal/api/export.go | 6 +++--- +- internal/api/imap_settings_handlers.go | 2 +- +- internal/api/import_handlers.go | 8 ++++---- +- internal/api/invite_handlers.go | 8 ++++---- +- internal/api/ldap_sync.go | 6 +++--- +- internal/api/ldap_tenants.go | 10 +++++----- +- internal/api/onboarding_handlers.go | 8 ++++---- +- internal/api/profile_handlers.go | 2 +- +- internal/api/quota_handlers.go | 6 +++--- +- internal/api/retention_handlers.go | 2 +- +- internal/api/search_handlers.go | 8 ++++---- +- internal/api/server.go | 28 ++++++++++++++-------------- +- internal/api/smtpout_handlers.go | 6 +++--- +- internal/api/thread_handlers.go | 4 ++-- +- internal/api/totp_handlers.go | 4 ++-- +- internal/api/upload.go | 4 ++-- +- internal/audit/audit_test.go | 2 +- +- internal/auth/auth.go | 6 +++--- +- internal/auth/auth_test.go | 4 ++-- +- internal/imap/importer.go | 6 +++--- +- internal/imapserver/server.go | 12 ++++++------ +- internal/index/index_test.go | 2 +- +- internal/mailer/mailer.go | 2 +- +- internal/pop3/importer.go | 6 +++--- +- internal/smtpd/smtpd.go | 4 ++-- +- internal/storage/attachments.go | 2 +- +- internal/storage/rethread.go | 2 +- +- internal/storage/storage.go | 2 +- +- internal/storage/storage_test.go | 2 +- +- internal/userstore/userstore_test.go | 2 +- +- pkg/mailparser/parser_test.go | 2 +- + +--- +## 2026-04-05 20:49 – 20:58 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4f366a3 fix(PROJ-39): exportEDiscovery in api/index.ts re-exportieren +- 963a324 fix(PROJ-39): sanitizeFilename-Konflikt beheben — in ediscovery.go umbenannt +- a82e854 feat(PROJ-39): eDiscovery Export + Feature-Specs PROJ-40–43 + +### Geänderte Dateien +- src/lib/api/index.ts | 1 + + +--- +## 2026-04-05 20:59 – 20:59 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/lib/api/index.ts | 1 + + +--- +## 2026-04-05 21:02 – 21:12 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 9298216 feat(PROJ-40,PROJ-41): Prometheus Metriken + Dashboard Zeitreihe + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-05 21:14 – 00:04 (2h 49m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:04 – 00:05 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:06 – 00:06 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:16 – 00:16 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:18 – 00:18 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:20 – 00:20 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:21 – 00:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:23 – 00:25 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:26 – 00:31 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:31 – 00:37 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 00:41 – 10:49 (10h 07m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 10:49 – 10:50 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 10:51 – 10:51 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 10:51 – 10:52 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 10:53 – 10:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- config/config.go | 7 +++ +- internal/api/dashboard_handlers.go | 26 +++++++++ +- internal/api/metrics_handlers.go | 92 ++++++++++++++++++++++++++++++ +- internal/api/server.go | 30 ++++++---- +- internal/storage/storage.go | 15 +++++ +- internal/storage/storage_stats.go | 67 ++++++++++++++++++++++ +- src/app/admin/page.tsx | 8 ++- +- src/components/admin/tabs/DashboardTab.tsx | 59 ++++++++++++++++++- +- src/lib/api/index.ts | 2 + +- src/lib/api/system.ts | 9 +++ + +--- +## 2026-04-06 10:53 – 10:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 3b05e94 feat(PROJ-13,PROJ-42): REST API v1 + Gespeicherte Suchanfragen + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 345 +++++++++++---------------------- +- .claude/agents/manticore-admin.md | 59 ++++-- +- CLAUDE.md | 4 +- +- features/INDEX.md | 8 +- +- internal/api/apikey_handlers.go | 198 +++++++++++++++++++ +- internal/api/saved_search_handlers.go | 131 +++++++++++++ +- internal/api/server.go | 22 +++ +- internal/api/v1_handlers.go | 309 +++++++++++++++++++++++++++++ +- internal/auth/apikey_middleware.go | 181 +++++++++++++++++ +- internal/storage/apikeys.go | 47 +++++ +- internal/storage/saved_searches.go | 76 ++++++++ +- internal/storage/storage.go | 56 ++++++ +- src/app/search/page.tsx | 180 ++++++++++++++++- +- src/lib/api/index.ts | 7 + +- src/lib/api/saved_searches.ts | 28 +++ + +--- +## 2026-04-06 10:54 – 10:56 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 345 +++++++++++---------------------- +- .claude/agents/manticore-admin.md | 59 ++++-- +- CLAUDE.md | 4 +- +- features/INDEX.md | 8 +- +- internal/api/apikey_handlers.go | 198 +++++++++++++++++++ +- internal/api/saved_search_handlers.go | 131 +++++++++++++ +- internal/api/server.go | 22 +++ +- internal/api/v1_handlers.go | 309 +++++++++++++++++++++++++++++ +- internal/auth/apikey_middleware.go | 181 +++++++++++++++++ +- internal/storage/apikeys.go | 47 +++++ +- internal/storage/saved_searches.go | 76 ++++++++ +- internal/storage/storage.go | 56 ++++++ +- src/app/search/page.tsx | 180 ++++++++++++++++- +- src/lib/api/index.ts | 7 + +- src/lib/api/saved_searches.ts | 28 +++ + +--- +## 2026-04-06 11:04 – 11:09 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 2a91f6e fix: IMAP-Serveradresse dynamisch aus Backend laden + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-04-06 11:12 – 11:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-04-06 11:18 – 11:19 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-04-06 11:23 – 11:24 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-04-06 11:32 – 11:34 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-04-06 14:17 – 14:30 (12m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 12:48 – 12:50 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:05 – 13:06 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:11 – 13:14 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:14 – 13:15 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:39 – 13:44 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:45 – 13:45 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:46 – 13:47 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:50 – 13:51 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 13:52 – 13:53 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 20:11 – 20:11 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 20:12 – 20:13 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 20:16 – 20:16 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 20:17 – 21:35 (1h 17m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 21:36 – 21:41 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 21:50 – 21:50 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 21:50 – 21:51 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 21:52 – 21:53 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 21:57 – 21:58 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 22:00 – 22:06 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/server.go | 1 + +- internal/api/system_info_handler.go | 18 ++++++++++++++++ +- src/app/settings/page.tsx | 43 +++++++++++++++++++++++++++++++++---- +- src/lib/api/index.ts | 2 ++ +- src/lib/api/system.ts | 10 +++++++++ + +--- +## 2026-05-08 22:07 – 22:36 (29m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 6d835ae fix(PROJ-35): OCR Tempdir auf storage_dir umleiten +- a252ad6 fix(PROJ-35): OCR Boot-Resume drosselt nach Queue-Kapazitaet +- 0bda210 feat(PROJ-35): OCR & Anhang-Volltext-Indexierung + +### Geänderte Dateien +- cmd/archivmail/cmd_ocr_reprocess.go | 2 ++ +- cmd/archivmail/main.go | 3 +++ +- internal/ocr/ocr.go | 23 +++++++++++++++++++++-- + +--- +## 2026-05-08 22:37 – 22:54 (16m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- d71d20d fix(PROJ-35): hashMailID maskiert Top-Bit für positive int64 +- 7ba677e fix(PROJ-35): hashMailID liefert int64 statt uint64 + +### Geänderte Dateien +- internal/index/manticore.go | 20 ++++++++++---------- + +--- +## 2026-05-08 22:57 – 22:58 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/index/manticore.go | 20 ++++++++++---------- + +--- +## 2026-05-08 22:59 – 23:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/index/manticore.go | 20 ++++++++++---------- + +--- +## 2026-05-08 23:02 – 23:03 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/index/manticore.go | 20 ++++++++++---------- + +--- +## 2026-05-08 23:07 – 23:11 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 88e9d0c docs(PROJ-35): Status auf Deployed + Bekannte Pitfalls dokumentiert + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-35-ocr-anhang-volltext.md | 45 +++++++++++++++++++++++---------- + +--- +## 2026-05-08 23:38 – 23:39 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-35-ocr-anhang-volltext.md | 45 +++++++++++++++++++++++---------- + +--- +## 2026-05-08 23:40 – 23:42 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-35-ocr-anhang-volltext.md | 45 +++++++++++++++++++++++---------- + +--- +## 2026-05-08 23:43 – 22:13 (46h 29m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-35-ocr-anhang-volltext.md | 45 +++++++++++++++++++++++---------- + +--- +## 2026-05-10 22:13 – 22:15 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-35-ocr-anhang-volltext.md | 45 +++++++++++++++++++++++---------- + +--- +## 2026-05-10 22:16 – 22:17 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-35-ocr-anhang-volltext.md | 45 +++++++++++++++++++++++---------- + +--- +## 2026-05-10 22:18 – 22:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/search/page.tsx | 48 +++++++++++++++++++++++++++++++++++++++++------- + +--- +## 2026-05-10 22:19 – 22:21 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- a44fd1a feat(PROJ-44): ocr_status/ocr_chars in MailDetail + v1 API +- 62a130d feat(PROJ-44): GET /api/mails/{id}/ocr-text + Audit-Event +- 7b75433 feat(PROJ-44): Snippet + match_field fuer Suche, GetAttachmentText +- 5078830 feat(PROJ-44): ocr_chars-Spalte + SetOCRResult-Helper + +### Geänderte Dateien +- internal/api/search_handlers.go | 11 +++++++++++ +- internal/api/v1_handlers.go | 8 ++++++++ + +--- +## 2026-05-10 22:21 – 23:02 (40m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 5e1a51b fix(PROJ-44): SNIPPET via SELECT statt CALL SNIPPETS (Go MySQL-Treiber-Kompatibilitaet) +- bb71ef2 fix(PROJ-44): snippet + match_field in enrichedHit-Struct und JSON-Response verdrahten +- a4fe2c6 fix(PROJ-44): CALL SNIPPETS entfernt Options-Args (Manticore 25 akzeptiert exakt 3) +- 032892b fix(PROJ-44): IMAP+POP3 Live-Import triggert OCR-Worker + +### Geänderte Dateien +- internal/index/manticore_snippet.go | 14 ++++++-------- + +--- +## 2026-05-10 23:04 – 23:14 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 16013e8 fix(PROJ-44): OCR-Tenant-Routing nutzt kanonische DB-tenant_id + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-10 23:15 – 09:40 (10h 25m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 09:45 – 09:47 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 09:53 – 09:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 09:55 – 10:04 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 10:04 – 10:08 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 10:08 – 10:25 (16m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 10:26 – 10:35 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 10:37 – 10:44 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 10:44 – 10:45 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/ocr_handlers.go | 17 ++++++++++++----- +- internal/ocr/worker.go | 19 ++++++++++++++++--- + +--- +## 2026-05-11 10:48 – 10:54 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4151b6f feat(PROJ-45): IMAP Per-Folder UID-Tracking + UIDVALIDITY-Check + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 10:59 – 11:00 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 11:01 – 11:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 11:05 – 11:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 11:06 – 11:06 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 11:10 – 11:10 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 11:12 – 11:33 (20m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 13:18 – 13:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 13:19 – 13:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 13:20 – 13:21 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 1 + +- internal/imap/folder_state.go | 122 ++++++++++++++++++++++++++++++++++ +- internal/imap/folder_state_test.go | 82 +++++++++++++++++++++++ +- internal/imap/scheduler.go | 130 ++++++++++++++++++++++++++++++++----- +- internal/imap/store.go | 19 ++++++ + +--- +## 2026-05-11 13:32 – 14:56 (1h 24m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 726dd78 fix(PROJ-4): SMTP tenant routing: header fallback for BCC journaling +- 799c828 feat(PROJ-45): IMAP per-folder UID-tracking, UIDVALIDITY-check + reindex OCR protection + +### Geänderte Dateien +- internal/smtpd/smtpd.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++--- + +--- +## 2026-05-11 14:57 – 15:02 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/smtpd/smtpd.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++--- + +--- +## 2026-05-11 20:36 – 20:46 (10m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 1f7e02d fix(build): turbopack.root explizit setzen, verhindert Warning bei multiplen lockfiles +- 33539d2 fix(ui): Uhrzeit in Datumsspalte der Suchergebnisse anzeigen + +### Geänderte Dateien +- next.config.ts | 3 +++ + +--- +## 2026-05-11 20:48 – 20:51 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- next.config.ts | 3 +++ + +--- +## 2026-05-11 22:27 – 22:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- next.config.ts | 3 +++ + +--- +## 2026-05-11 23:27 – 23:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- next.config.ts | 3 +++ + +--- +## 2026-05-11 23:30 – 23:31 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- next.config.ts | 3 +++ + +--- +## 2026-05-11 23:31 – 23:50 (19m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 8d950b4 fix(mailparser): Deutsche Wochentagsabkürzungen im Date-Header parsen +- a1c4e59 fix: Date-Parsing-Fallback für nicht-standard MTA-Datumsformate + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-12 00:16 – 00:18 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 22:59 – 23:06 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 23:07 – 23:08 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 23:08 – 23:12 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 23:12 – 23:15 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 23:16 – 23:20 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 23:52 – 23:54 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-05-28 23:55 – 23:55 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- fa9f777 fix(sec): Authorization-Bypässe und Path-Traversal schließen, Xapian-Doku bereinigen + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++----------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------ + +--- +## 2026-05-28 23:56 – 23:56 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++----------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------ + +--- +## 2026-05-28 23:56 – 00:00 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++----------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------ + +--- +## 2026-05-29 00:01 – 00:01 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++----------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------ + +--- +## 2026-05-29 17:52 – 17:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++++-------------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------- + +--- +## 2026-05-29 17:53 – 17:55 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++++-------------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------- + +--- +## 2026-05-29 17:55 – 18:01 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- README.md | 48 ++++++++++++++++++++++-------------------------- +- config.test.yml | 4 ++-- +- internal/api/cert_handlers.go | 7 +++++++ +- internal/api/server.go | 4 ++-- +- internal/api/v1_handlers.go | 13 ++++++------- + +--- +## 2026-05-29 18:02 – 18:07 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 15a5da3 feat(PROJ-13): OpenAPI 3.0 Spec + GET /api/v1/docs Endpoint + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-44-ocr-gui-integration.md | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/openapi.yaml | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 1 + +- internal/api/v1_docs_handler.go | 17 ++++++++++ + +--- +## 2026-05-29 18:08 – 18:09 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-44-ocr-gui-integration.md | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/openapi.yaml | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 1 + +- internal/api/v1_docs_handler.go | 17 ++++++++++ + +--- +## 2026-05-29 18:16 – 18:23 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- f32f83f fix(PROJ-28): Invite-Token Pflicht bei Signup — TOCTOU + Enumeration-Leak schließen + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 77 +++++++++++++++++++++++++++++++++++++++++++++-------------------------------- +- src/app/signup/page.tsx | 26 +++++++++++++++++++------- + +--- +## 2026-05-29 18:23 – 18:23 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/onboarding_handlers.go | 77 +++++++++++++++++++++++++++++++++++++++++++++-------------------------------- +- src/app/signup/page.tsx | 26 +++++++++++++++++++------- + +--- +## 2026-06-12 20:59 – 21:26 (26m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- a3bab16 fix(imap): IMAP/POP3-Import in korrekten Tenant-Index schreiben + +### Geänderte Dateien +- cmd/archivmail/main.go | 4 ++-- +- internal/imap/importer.go | 9 +++++---- +- internal/pop3/importer.go | 9 +++++---- + +--- +## 2026-06-12 21:40 – 21:41 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 4 ++-- +- internal/imap/importer.go | 9 +++++---- +- internal/pop3/importer.go | 9 +++++---- + +--- +## 2026-06-12 21:44 – 21:45 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 4 ++-- +- internal/imap/importer.go | 9 +++++---- +- internal/pop3/importer.go | 9 +++++---- + +--- +## 2026-06-12 21:48 – 21:49 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 4 ++-- +- internal/imap/importer.go | 9 +++++---- +- internal/pop3/importer.go | 9 +++++---- + +--- +## 2026-06-12 22:04 – 22:04 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 4 ++-- +- internal/imap/importer.go | 9 +++++---- +- internal/pop3/importer.go | 9 +++++---- + +--- +## 2026-06-12 22:06 – 22:07 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 4 ++-- +- internal/imap/importer.go | 9 +++++---- +- internal/pop3/importer.go | 9 +++++---- + +--- +## 2026-06-12 22:08 – 22:12 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- f82e3eb feat: Admin-/Auditor-Login-Link auf Startseite + +### Geänderte Dateien +- src/app/page.tsx | 3 +++ + +--- +## 2026-06-12 22:20 – 22:24 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/page.tsx | 3 +++ + +--- +## 2026-06-12 22:25 – 22:26 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/page.tsx | 3 +++ + +--- +## 2026-06-12 22:31 – 22:31 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/page.tsx | 3 +++ + +--- +## 2026-06-12 22:33 – 22:41 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- d07e650 fix(tenants): NULL-Scan-Fehler in tenantstore.List() beheben + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:43 – 22:45 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:46 – 22:46 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:46 – 22:47 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:57 – 22:57 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:58 – 22:58 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:59 – 22:59 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 22:59 – 23:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 23:07 – 23:08 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 23:09 – 23:09 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 23:15 – 23:19 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 23:22 – 23:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/tenantstore/store.go | 4 ++-- + +--- +## 2026-06-12 23:22 – 23:26 (4m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 730099d fix(sec): Cross-Tenant-IDOR bei IMAP-Konten schließen + +### Geänderte Dateien +- internal/api/import_handlers.go | 34 +++++++++++++++++++++++++++++++++- +- internal/imap/store.go | 19 ++++++++++++------- + +--- +## 2026-06-12 23:27 – 23:28 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/import_handlers.go | 34 +++++++++++++++++++++++++++++++++- +- internal/imap/store.go | 19 ++++++++++++------- + +--- +## 2026-06-12 23:29 – 23:32 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 501ee8f fix(sec): Cross-Tenant-IDOR bei POP3-Konten schließen + +### Geänderte Dateien +- internal/api/import_handlers.go | 7 ++++++- +- internal/pop3/store.go | 25 ++++++++++++++++--------- + +--- +## 2026-06-12 23:32 – 23:42 (10m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/import_handlers.go | 7 ++++++- +- internal/pop3/store.go | 25 ++++++++++++++++--------- + +--- +## 2026-06-12 23:43 – 23:45 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 0ecde0c feat(cli): archivmail update — Wrapper für update.sh + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_update.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-12 23:46 – 23:51 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_update.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-12 23:52 – 23:52 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_update.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-12 23:54 – 23:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_update.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-12 23:55 – 00:01 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- bc82854 feat: archivmail status CLI mit Healthcheck für PostgreSQL, Manticore und Storage + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-13 00:02 – 00:23 (20m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-13 00:25 – 00:25 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-13 00:26 – 00:26 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-13 00:29 – 00:36 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-13 00:37 – 00:37 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 +++++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ + +--- +## 2026-06-13 13:12 – 13:12 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 + + +--- +## 2026-06-13 13:14 – 13:17 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 5 ++ +- cmd/archivmail/cmd_status.go | 186 +++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 + + +--- +## 2026-06-13 13:17 – 13:19 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- cca27c6 feat: mobile Responsiveness für Suche und Mail-Detailansicht + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 13:28 – 13:29 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 13:30 – 13:31 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:06 – 16:14 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:23 – 16:30 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:30 – 16:32 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:35 – 16:36 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:38 – 16:38 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:41 – 16:42 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 16:50 – 16:56 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 18:42 – 18:45 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 18:47 – 18:55 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 18:59 – 18:59 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 18:59 – 19:01 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 19:04 – 19:10 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- src/app/mail/[id]/page.tsx | 7 ++++--- +- src/app/search/page.tsx | 32 +++++++++++++++++++------------- + +--- +## 2026-06-13 19:17 – 19:51 (33m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7e41759 feat(PROJ-48): Audit-Log Unveränderbarkeit (Trigger, append-only Logfile, Healthcheck) + +### Geänderte Dateien +- cmd/archivmail/cmd_status.go | 23 ++++++++++++++++ +- cmd/archivmail/main.go | 2 +- +- config.test.yml | 6 ++++ +- config/config.go | 14 ++++++++++ +- features/INDEX.md | 9 +++++- +- internal/audit/audit.go | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- +- internal/audit/audit_test.go | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-06-13 19:51 – 19:55 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- dc9e11f chore(PROJ-48): Status auf Deployed setzen + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 19:55 – 20:11 (16m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- e1ed4e5 chore(PROJ-49): Status auf Deployed setzen +- 46096db feat(PROJ-49): Verschlüsselungspflicht at-rest sichtbar machen (Healthcheck & Warnung) + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 20:12 – 20:19 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7c08ebe docs(PROJ-51): Tech Design für Retention-Kategorien (inkl. minimaler PROJ-43-Basis) + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 20:27 – 20:27 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 20:27 – 20:33 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 20:34 – 20:38 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 20:46 – 20:52 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 507dee6 feat(PROJ-51): Aufbewahrungsfristen nach Dokumentenart (Retention-Kategorien) + +### Geänderte Dateien +- cmd/archivmail/cmd_status.go | 36 ++++++++ +- cmd/archivmail/main.go | 11 ++- +- config/config.docker.yml.example | 5 ++ +- config/config.go | 5 +- +- features/INDEX.md | 2 +- +- internal/api/archiving_rules_handlers.go | 137 +++++++++++++++++++++++++++++++ +- internal/api/search_handlers.go | 14 ++++ +- internal/api/server.go | 5 ++ +- internal/storage/retention_rules.go | 379 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/storage/storage.go | 27 +++--- +- src/app/admin/page.tsx | 7 ++ +- src/app/mail/[id]/page.tsx | 31 +++++++ +- src/components/admin/tabs/ArchivingRulesTab.tsx | 459 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/archiving_rules.ts | 61 ++++++++++++++ +- src/lib/api/index.ts | 13 +++ +- src/lib/api/mail.ts | 4 + + +--- +## 2026-06-13 20:52 – 21:09 (16m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 7ac0391 fix(PROJ-51): retain_until_source nicht für Endbenutzer, WARN-Status in CLI + +### Geänderte Dateien +- cmd/archivmail/cmd_status.go | 5 +++++ +- internal/api/search_handlers.go | 4 +++- + +--- +## 2026-06-13 21:10 – 21:12 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- a87d2c8 docs(PROJ-51): Status auf Deployed setzen + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 21:38 – 21:41 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 1c52181 docs(PROJ-50): Tech Design für DSGVO-Löschersuchen für Mail-Inhalte + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 21:45 – 21:45 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 21:46 – 21:46 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 21:48 – 21:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 21:51 – 21:52 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 21:56 – 21:58 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- + +--- +## 2026-06-13 22:00 – 22:01 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- b73ef55 fix: archivmail.service benötigt CAP_NET_ADMIN für Firewall-Aktivierung + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-13 22:02 – 22:09 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-13 22:28 – 21:58 (23h 30m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-14 22:01 – 22:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-14 22:02 – 22:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-14 22:03 – 22:04 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-14 22:11 – 22:12 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-14 22:13 – 22:32 (18m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4c20a00 fix(PROJ-53): TypeScript-Build-Fehler durch fehlendes list_page_size in LoginResponse +- 472ba6a feat(PROJ-53): Konfigurierbare Listenanzahl pro Seite + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 2 +- +- src/app/page.tsx | 2 +- +- src/lib/api/users.ts | 1 + + +--- +## 2026-06-14 22:37 – 22:37 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 2 +- +- src/app/page.tsx | 2 +- +- src/lib/api/users.ts | 1 + + +--- +## 2026-06-14 22:38 – 22:45 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 2 +- +- src/app/page.tsx | 2 +- +- src/lib/api/users.ts | 1 + + +--- +## 2026-06-14 22:48 – 22:49 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 2 +- +- src/app/page.tsx | 2 +- +- src/lib/api/users.ts | 1 + + +--- +## 2026-06-14 22:50 – 22:51 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/login/page.tsx | 2 +- +- src/app/page.tsx | 2 +- +- src/lib/api/users.ts | 1 + + +--- +## 2026-06-14 22:52 – 23:01 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 776dee8 fix(PROJ-54): Listenansicht/Pagination für Rolle "user" korrigieren + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- internal/api/search_handlers.go | 34 ++++++++++++++-------------------- + +--- +## 2026-06-14 23:07 – 23:07 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- internal/api/search_handlers.go | 34 ++++++++++++++-------------------- + +--- +## 2026-06-14 23:08 – 23:11 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- internal/api/search_handlers.go | 34 ++++++++++++++-------------------- + +--- +## 2026-06-14 23:12 – 23:12 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 62693fa chore: npm audit fix — Dependency-Updates für picomatch/Next.js-Advisories + +### Geänderte Dateien +- package-lock.json | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------- + +--- +## 2026-06-14 23:17 – 23:17 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- package-lock.json | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------- + +--- +## 2026-06-14 23:19 – 23:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- package-lock.json | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------- + +--- +## 2026-06-14 23:21 – 23:21 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- package-lock.json | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------- + +--- +## 2026-06-14 23:24 – 23:25 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- package-lock.json | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------- + +--- +## 2026-06-14 23:26 – 23:27 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4a8b896 docs(PROJ-53, PROJ-54): Status auf Deployed setzen + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- features/PROJ-53-konfigurierbare-listenanzahl.md | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- features/PROJ-54-fix-listenansicht-total.md | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-06-14 23:35 – 23:35 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 ++-- +- features/PROJ-53-konfigurierbare-listenanzahl.md | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- features/PROJ-54-fix-listenansicht-total.md | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +--- +## 2026-06-21 21:48 – 22:39 (50m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 92e5743 fix(PROJ-55): Tenant-Isolation für Rolle "auditor" + Audit-Log korrigieren + +### Geänderte Dateien +- features/INDEX.md | 3 +- +- features/PROJ-55-fix-auditor-tenant-isolation.md | 308 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/admin_handlers.go | 5 ++ +- internal/api/apikey_handlers.go | 2 + +- internal/api/archiving_rules_handlers.go | 1 + +- internal/api/auth_handlers.go | 3 + +- internal/api/dashboard_handlers.go | 15 +++- +- internal/api/dsgvo_handlers.go | 3 + +- internal/api/ediscovery.go | 39 +++++++++- +- internal/api/export.go | 14 +++- +- internal/api/imap_settings_handlers.go | 1 + +- internal/api/invite_handlers.go | 1 + +- internal/api/ldap_sync.go | 2 + +- internal/api/ldap_tenants.go | 14 ++++ +- internal/api/ocr_handlers.go | 7 +- +- internal/api/onboarding_handlers.go | 3 + +- internal/api/profile_handlers.go | 2 + +- internal/api/quota_handlers.go | 1 + +- internal/api/retention_handlers.go | 1 + +- internal/api/saved_search_handlers.go | 2 + +- internal/api/search_handlers.go | 45 ++++++++--- +- internal/api/smtpout_handlers.go | 2 + +- internal/api/thread_handlers.go | 23 ++++++ +- internal/api/totp_handlers.go | 4 + +- internal/api/v1_handlers.go | 12 +++ +- internal/audit/audit.go | 38 ++++++++- +- internal/imap/scheduler.go | 1 + +- internal/imapserver/server.go | 1 + + +--- +## 2026-06-21 22:43 – 22:47 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- f55a40c chore: Manticore-Reindex aus update.sh entfernen + +### Geänderte Dateien +- update.sh | 24 +++++------------------- + +--- +## 2026-06-21 22:57 – 22:59 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- d80a5d8 chore: echten HTTP-Health-Check statt nur systemd-Status in update.sh + +### Geänderte Dateien +- update.sh | 22 +++++++++++++++++++--- + +--- +## 2026-06-21 23:02 – 23:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- update.sh | 22 +++++++++++++++++++--- + +--- +## 2026-06-21 23:04 – 23:05 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- update.sh | 22 +++++++++++++++++++--- + +--- +## 2026-06-21 23:12 – 23:12 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- update.sh | 22 +++++++++++++++++++--- + +--- +## 2026-06-21 23:15 – 23:16 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- update.sh | 22 +++++++++++++++++++--- + +--- +## 2026-06-21 23:16 – 23:41 (24m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 1d27dc2 refactor: große API-Handler-Dateien in fokussierte Module aufteilen +- 6d3ca7f chore: ungenutzten Frontend-Code entfernen + +### Geänderte Dateien +- internal/api/admin_handlers.go | 702 --------------------------------------------------- +- internal/api/admin_security_handlers.go | 240 ++++++++++++++++++ +- internal/api/admin_services_handlers.go | 170 +++++++++++++ +- internal/api/admin_status_handlers.go | 58 +++++ +- internal/api/admin_users_handlers.go | 260 +++++++++++++++++++ +- internal/api/{import_handlers.go => imap_handlers.go} | 242 ------------------ +- internal/api/import_helpers.go | 16 ++ +- internal/api/ldap_handlers.go | 439 ++++++++++++++++++++++++++++++++ +- internal/api/ldap_tenants.go | 924 -------------------------------------------------------------------- +- internal/api/pop3_handlers.go | 243 ++++++++++++++++++ +- internal/api/tenant_domain_handlers.go | 78 ++++++ +- internal/api/tenant_handlers.go | 216 ++++++++++++++++ +- internal/api/tenant_helpers.go | 23 ++ +- internal/api/tenant_logo_handlers.go | 205 +++++++++++++++ + +--- +## 2026-06-21 23:41 – 00:10 (29m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- ef83174 docs(PROJ-55): Live-Verifikation auf 132 dokumentieren + +### Geänderte Dateien +- features/PROJ-55-fix-auditor-tenant-isolation.md | 15 +++++++++++++-- + +--- +## 2026-06-22 00:11 – 00:13 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- ce197a3 docs(PROJ-55): Status auf Deployed setzen + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-55-fix-auditor-tenant-isolation.md | 4 ++-- + +--- +## 2026-06-22 11:07 – 11:07 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-55-fix-auditor-tenant-isolation.md | 4 ++-- + +--- +## 2026-06-22 11:17 – 11:29 (11m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- a55faf7 chore: Frontend-Seiten in Komponenten/Hooks aufteilen + +### Geänderte Dateien +- src/app/admin/page.tsx | 911 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------ +- src/app/imap/page.tsx | 811 ++++++++++++++-------------------------------------------------------------------------------------------- +- src/app/search/page.tsx | 857 +++++++++++++++++++--------------------------------------------------------------------------------------------- +- src/app/settings/page.tsx | 629 +++-------------------------------------------------------------------------------- +- src/components/imap/ImapAccountCard.tsx | 182 ++++++++++++++++++++++++ +- src/components/imap/ImapAccountDialog.tsx | 206 +++++++++++++++++++++++++++ +- src/components/imap/ImapDeleteDialog.tsx | 47 +++++++ +- src/components/imap/ImapEditDialog.tsx | 147 ++++++++++++++++++++ +- src/components/search/ExportDialogs.tsx | 245 +++++++++++++++++++++++++++++++++ +- src/components/search/SearchFilterBar.tsx | 270 ++++++++++++++++++++++++++++++++++++ +- src/components/search/SearchResultsTable.tsx | 187 +++++++++++++++++++++++++ +- src/components/settings/DisplaySection.tsx | 68 +++++++++ +- src/components/settings/ImapSection.tsx | 93 +++++++++++++ +- src/components/settings/PasswordSection.tsx | 86 ++++++++++++ +- src/components/settings/ProfileSection.tsx | 59 ++++++++ +- src/components/settings/TotpSection.tsx | 200 +++++++++++++++++++++++++++ +- src/hooks/useAdminAudit.ts | 35 +++++ +- src/hooks/useAdminCert.ts | 71 ++++++++++ +- src/hooks/useAdminDashboard.ts | 86 ++++++++++++ +- src/hooks/useAdminSecurity.ts | 55 ++++++++ +- src/hooks/useAdminServices.ts | 46 +++++++ +- src/hooks/useAdminTenants.ts | 171 +++++++++++++++++++++++ +- src/hooks/useAdminUpload.ts | 58 ++++++++ +- src/hooks/useAdminUsers.ts | 169 +++++++++++++++++++++++ +- src/hooks/useImapAccounts.ts | 334 ++++++++++++++++++++++++++++++++++++++++++++ +- src/hooks/useMailUpload.ts | 77 +++++++++++ +- src/hooks/usePasswordChange.ts | 54 ++++++++ +- src/hooks/useProfileSettings.ts | 89 ++++++++++++ +- src/hooks/useSavedSearches.ts | 163 ++++++++++++++++++++++ +- src/hooks/useSearch.ts | 101 ++++++++++++++ +- src/hooks/useSystemInfo.ts | 29 ++++ +- src/hooks/useTenantLogos.ts | 124 +++++++++++++++++ +- src/hooks/useTotpSettings.ts | 108 +++++++++++++++ + +--- +## 2026-06-22 13:16 – 13:17 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/page.tsx | 911 ++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------- +- src/app/imap/page.tsx | 811 ++++++++++++++++------------------------------------------------------------------------------------------------------ +- src/app/search/page.tsx | 857 +++++++++++++++++++++-------------------------------------------------------------------------------------------------------- +- src/app/settings/page.tsx | 629 ++++---------------------------------------------------------------------------------------- +- src/components/imap/ImapAccountCard.tsx | 182 +++++++++++++++++++++++++++ +- src/components/imap/ImapAccountDialog.tsx | 206 ++++++++++++++++++++++++++++++ +- src/components/imap/ImapDeleteDialog.tsx | 47 +++++++ +- src/components/imap/ImapEditDialog.tsx | 147 ++++++++++++++++++++++ +- src/components/search/ExportDialogs.tsx | 245 ++++++++++++++++++++++++++++++++++++ +- src/components/search/SearchFilterBar.tsx | 270 ++++++++++++++++++++++++++++++++++++++++ +- src/components/search/SearchResultsTable.tsx | 187 ++++++++++++++++++++++++++++ +- src/components/settings/DisplaySection.tsx | 68 ++++++++++ +- src/components/settings/ImapSection.tsx | 93 ++++++++++++++ +- src/components/settings/PasswordSection.tsx | 86 +++++++++++++ +- src/components/settings/ProfileSection.tsx | 59 +++++++++ +- src/components/settings/TotpSection.tsx | 200 +++++++++++++++++++++++++++++ +- src/hooks/useAdminAudit.ts | 35 ++++++ +- src/hooks/useAdminCert.ts | 71 +++++++++++ +- src/hooks/useAdminDashboard.ts | 86 +++++++++++++ +- src/hooks/useAdminSecurity.ts | 55 ++++++++ +- src/hooks/useAdminServices.ts | 46 +++++++ +- src/hooks/useAdminTenants.ts | 171 +++++++++++++++++++++++++ +- src/hooks/useAdminUpload.ts | 58 +++++++++ +- src/hooks/useAdminUsers.ts | 169 +++++++++++++++++++++++++ +- src/hooks/useImapAccounts.ts | 334 +++++++++++++++++++++++++++++++++++++++++++++++++ +- src/hooks/useMailUpload.ts | 77 ++++++++++++ +- src/hooks/usePasswordChange.ts | 54 ++++++++ +- src/hooks/useProfileSettings.ts | 89 +++++++++++++ +- src/hooks/useSavedSearches.ts | 163 ++++++++++++++++++++++++ +- src/hooks/useSearch.ts | 101 +++++++++++++++ +- src/hooks/useSystemInfo.ts | 29 +++++ +- src/hooks/useTenantLogos.ts | 124 ++++++++++++++++++ +- src/hooks/useTotpSettings.ts | 108 ++++++++++++++++ + +--- +## 2026-06-22 14:07 – 14:21 (14m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 4dbf27c feat(PROJ-56): Last-Entzerrung für OCR und IMAP-Sync + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +++++++++--- +- config/config.docker.yml.example | 16 ++++++++++++++++ +- config/config.go | 41 +++++++++++++++++++++++++++++++++++++++++ +- features/INDEX.md | 3 ++- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/imap/scheduler.go | 38 +++++++++++++++++++++++++++++++++++++- +- internal/ocr/worker.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- + +--- +## 2026-06-22 14:22 – 14:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +++++++++--- +- config/config.docker.yml.example | 16 ++++++++++++++++ +- config/config.go | 41 +++++++++++++++++++++++++++++++++++++++++ +- features/INDEX.md | 3 ++- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/imap/scheduler.go | 38 +++++++++++++++++++++++++++++++++++++- +- internal/ocr/worker.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- + +--- +## 2026-06-22 14:23 – 14:24 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 12 +++++++++--- +- config/config.docker.yml.example | 16 ++++++++++++++++ +- config/config.go | 41 +++++++++++++++++++++++++++++++++++++++++ +- features/INDEX.md | 3 ++- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/imap/scheduler.go | 38 +++++++++++++++++++++++++++++++++++++- +- internal/ocr/worker.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- + +--- +## 2026-06-22 14:28 – 14:30 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 12c4dc7 docs(PROJ-56): Test-Deployment auf 192.168.1.132 dokumentieren + +### Geänderte Dateien +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 6 +++++- + +--- +## 2026-06-22 14:32 – 14:35 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- be48a99 docs(PROJ-56): Status auf Deployed setzen + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-22 23:14 – 23:14 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-23 01:26 – 01:29 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** timemaster + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 13:13 – 13:14 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 13:16 – 13:17 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 13:18 – 13:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 13:20 – 13:20 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 13:22 – 13:29 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 13:56 – 13:57 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 14:15 – 14:16 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 14:25 – 14:26 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 14:31 – 14:38 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 2 +- +- features/PROJ-56-last-entzerrung-hintergrundjobs.md | 4 ++-- + +--- +## 2026-06-24 14:45 – 14:46 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- dba9939 feat(PROJ-56): OCR-Pausenfenster per SIGHUP-Reload statt Restart + +### Geänderte Dateien +- cmd/archivmail/main.go | 30 ++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 ++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ +- install.sh | 1 + +- internal/ocr/worker.go | 38 ++++++++++++++++++++++++++------------ + +--- +## 2026-06-24 14:52 – 15:02 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 30 ++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 ++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ +- install.sh | 1 + +- internal/ocr/worker.go | 38 ++++++++++++++++++++++++++------------ + +--- +## 2026-06-24 15:03 – 15:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 30 ++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 ++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ +- install.sh | 1 + +- internal/ocr/worker.go | 38 ++++++++++++++++++++++++++------------ + +--- +## 2026-06-24 15:04 – 15:04 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 30 ++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 ++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ +- install.sh | 1 + +- internal/ocr/worker.go | 38 ++++++++++++++++++++++++++------------ + +--- +## 2026-06-24 15:06 – 15:07 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 30 ++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 ++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ +- install.sh | 1 + +- internal/ocr/worker.go | 38 ++++++++++++++++++++++++++------------ + +--- +## 2026-06-24 15:07 – 15:07 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/main.go | 30 ++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 ++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ +- install.sh | 1 + +- internal/ocr/worker.go | 38 ++++++++++++++++++++++++++------------ + +--- +## 2026-06-24 15:32 – 15:41 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- d826fe1 chore(PROJ-56): Cron-Dateien nach mailpiler-Vorbild konsolidieren + +### Geänderte Dateien +- deploy/cron.d/archivmail | 31 +++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 -------------------- + +--- +## 2026-06-24 15:43 – 15:59 (16m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- deploy/cron.d/archivmail | 31 +++++++++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-pause | 20 -------------------- + +--- +## 2026-06-24 16:00 – 16:00 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 586af24 feat(PROJ-56c): GoBD-Retention-Purge als Cron-Job + Delete()-Konsistenzfix + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_purge.go | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ +- deploy/cron.d/archivmail | 7 ++++++- +- internal/storage/storage.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- + +--- +## 2026-06-24 16:03 – 16:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_purge.go | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ +- deploy/cron.d/archivmail | 7 ++++++- +- internal/storage/storage.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- + +--- +## 2026-06-24 16:04 – 16:06 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_purge.go | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 3 +++ +- deploy/cron.d/archivmail | 7 ++++++- +- internal/storage/storage.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- + +--- +## 2026-06-24 16:19 – 16:40 (20m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- b3ff8e6 feat(PROJ-56c): Purge-Cron löscht nur explizit markierte Mails + +### Geänderte Dateien +- cmd/archivmail/cmd_purge.go | 22 +++++++++++++--------- +- internal/api/retention_handlers.go | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 4 ++++ +- internal/storage/mark_deletion.go | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/storage/storage.go | 14 ++++++++++++++ +- src/components/admin/tabs/RetentionTab.tsx | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + +--- +## 2026-06-24 16:49 – 16:51 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_purge.go | 22 +++++++++++++--------- +- internal/api/retention_handlers.go | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 4 ++++ +- internal/storage/mark_deletion.go | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/storage/storage.go | 14 ++++++++++++++ +- src/components/admin/tabs/RetentionTab.tsx | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + +--- +## 2026-06-24 16:53 – 16:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_purge.go | 22 +++++++++++++--------- +- internal/api/retention_handlers.go | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 4 ++++ +- internal/storage/mark_deletion.go | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/storage/storage.go | 14 ++++++++++++++ +- src/components/admin/tabs/RetentionTab.tsx | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + +--- +## 2026-06-24 16:55 – 16:55 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_purge.go | 22 +++++++++++++--------- +- internal/api/retention_handlers.go | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 4 ++++ +- internal/storage/mark_deletion.go | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/storage/storage.go | 14 ++++++++++++++ +- src/components/admin/tabs/RetentionTab.tsx | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + +--- +## 2026-06-24 16:57 – 17:03 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 69c120a feat(PROJ-56d): archivmail import um --tenant Flag erweitert + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 20 ++++++++++++++++---- +- cmd/archivmail/cmd_import_piler.go | 4 ++-- + +--- +## 2026-06-24 17:16 – 17:25 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 20 ++++++++++++++++---- +- cmd/archivmail/cmd_import_piler.go | 4 ++-- + +--- +## 2026-06-24 17:26 – 17:50 (23m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 20 ++++++++++++++++---- +- cmd/archivmail/cmd_import_piler.go | 4 ++-- + +--- +## 2026-06-24 18:11 – 18:12 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 20 ++++++++++++++++---- +- cmd/archivmail/cmd_import_piler.go | 4 ++-- + +--- +## 2026-06-24 18:15 – 18:20 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 20 ++++++++++++++++---- +- cmd/archivmail/cmd_import_piler.go | 4 ++-- + +--- +## 2026-06-24 18:23 – 22:38 (4h 15m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 20 ++++++++++++++++---- +- cmd/archivmail/cmd_import_piler.go | 4 ++-- + +--- +## 2026-06-24 22:46 – 22:48 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 76655f7 fix(PROJ-57): UTF-8-Encoding für Mails mit Nicht-UTF-8-Charset korrigieren + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- +- cmd/archivmail/cmd_import_piler.go | 2 +- +- cmd/archivmail/cmd_ocr_reprocess.go | 2 +- +- cmd/archivmail/cmd_purge.go | 2 +- +- cmd/archivmail/cmd_reindex.go | 2 +- +- cmd/archivmail/cmd_status.go | 2 +- +- cmd/archivmail/main.go | 2 +- +- config/config.go | 2 +- +- go.mod | 2 +- +- internal/api/server.go | 2 +- +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-06-24 22:48 – 22:49 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 2 +- +- cmd/archivmail/cmd_import_piler.go | 2 +- +- cmd/archivmail/cmd_ocr_reprocess.go | 2 +- +- cmd/archivmail/cmd_purge.go | 2 +- +- cmd/archivmail/cmd_reindex.go | 2 +- +- cmd/archivmail/cmd_status.go | 2 +- +- cmd/archivmail/main.go | 2 +- +- config/config.go | 2 +- +- go.mod | 2 +- +- internal/api/server.go | 2 +- +- pkg/mailparser/parser.go | 24 ++++++++++++++++++++++++ + +--- +## 2026-06-24 22:53 – 23:08 (15m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- fae274f feat(PROJ-58): Indexierung + OCR optional als Cron-Batch statt Dauerbetrieb + +### Geänderte Dateien +- cmd/archivmail/cmd_import.go | 1 + +- cmd/archivmail/cmd_index_pending.go | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- cmd/archivmail/main.go | 80 +++++++++++++++++++++++++++++++++----------- +- config/config.docker.yml.example | 14 ++++++++ +- config/config.go | 14 ++++++++ +- deploy/cron.d/archivmail | 24 ++++++++++++++ +- features/INDEX.md | 4 ++- +- features/PROJ-57-utf8-encoding-fix.md | 33 +++++++++++++++++++ +- features/PROJ-58-cron-batch-index-ocr.md | 64 ++++++++++++++++++++++++++++++++++++ +- internal/storage/storage.go | 36 ++++++++++++++++++++ + +--- +## 2026-06-24 23:15 – 23:16 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- c91eeac docs(PROJ-58): batch_mode für Neuinstallationen standardmäßig aktivieren + +### Geänderte Dateien +- config/config.docker.yml.example | 20 ++++++++++++-------- +- features/PROJ-58-cron-batch-index-ocr.md | 3 +++ + +--- +## 2026-06-24 23:29 – 23:33 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- config/config.docker.yml.example | 20 ++++++++++++-------- +- features/PROJ-58-cron-batch-index-ocr.md | 3 +++ + +--- +## 2026-06-24 23:53 – 23:59 (6m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 46502ab fix(PROJ-58): Lockfile gegen überlappende Cron-Batch-Läufe + update.sh synct Cron-Dateien + +### Geänderte Dateien +- deploy/cron.d/archivmail | 11 +++++++++-- +- deploy/cron.d/archivmail-index-pending.sh | 25 +++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-reprocess.sh | 21 +++++++++++++++++++++ +- features/PROJ-58-cron-batch-index-ocr.md | 6 ++++++ +- update.sh | 9 +++++++++ + +--- +## 2026-06-25 00:01 – 00:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- deploy/cron.d/archivmail | 11 +++++++++-- +- deploy/cron.d/archivmail-index-pending.sh | 25 +++++++++++++++++++++++++ +- deploy/cron.d/archivmail-ocr-reprocess.sh | 21 +++++++++++++++++++++ +- features/PROJ-58-cron-batch-index-ocr.md | 6 ++++++ +- update.sh | 9 +++++++++ + +--- +## 2026-06-25 00:02 – 00:04 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 043520e chore(PROJ-59): tote Xapian-Reste aus config.docker.yml.example entfernen + +### Geänderte Dateien +- config/config.docker.yml.example | 5 ++--- + +--- +## 2026-06-25 00:06 – 00:14 (7m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 5f63bfe chore(PROJ-60): Xapian-Legacy-Backend vollständig aus dem Code entfernt + +### Geänderte Dateien +- cmd/archivmail-export/main.go | 2 +- +- cmd/archivmail-import/main.go | 2 +- +- cmd/archivmail/cmd_export.go | 2 +- +- cmd/archivmail/cmd_import.go | 2 +- +- cmd/archivmail/cmd_import_piler.go | 2 +- +- cmd/archivmail/cmd_reindex.go | 2 +- +- internal/api/api_test.go | 4 ++-- +- internal/index/index.go | 23 +++++++++++++++------- +- internal/index/index_test.go | 178 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +- internal/index/tenant_manager.go | 3 ++- +- internal/index/worker.go | 4 ++-- +- internal/index/xapian.go | 149 --------------------------------------------------------------------------------------------------------------------------------------------- +- internal/index/xapian_stub.go | 9 --------- +- internal/index/xapian_wrapper.cpp | 223 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +- internal/index/xapian_wrapper.h | 37 ----------------------------------- + +--- +## 2026-06-25 00:17 – 00:23 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- cmd/archivmail-export/main.go | 2 +- +- cmd/archivmail-import/main.go | 2 +- +- cmd/archivmail/cmd_export.go | 2 +- +- cmd/archivmail/cmd_import.go | 2 +- +- cmd/archivmail/cmd_import_piler.go | 2 +- +- cmd/archivmail/cmd_reindex.go | 2 +- +- internal/api/api_test.go | 4 ++-- +- internal/index/index.go | 23 +++++++++++++++------- +- internal/index/index_test.go | 178 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +- internal/index/tenant_manager.go | 3 ++- +- internal/index/worker.go | 4 ++-- +- internal/index/xapian.go | 149 --------------------------------------------------------------------------------------------------------------------------------------------- +- internal/index/xapian_stub.go | 9 --------- +- internal/index/xapian_wrapper.cpp | 223 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +- internal/index/xapian_wrapper.h | 37 ----------------------------------- + +--- +## 2026-06-25 00:24 – 00:35 (11m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 3638747 fix(PROJ-61): Cross-Tenant Stored XSS via Mandanten-Logo behoben (Sicherheitsbug) + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-61-fix-tenant-logo-xss-idor.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/ldap_tenants.go | 2 +- +- internal/api/tenant_logo_handlers.go | 24 +++++++++++++++++------- + +--- +## 2026-06-25 00:37 – 00:38 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-61-fix-tenant-logo-xss-idor.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/ldap_tenants.go | 2 +- +- internal/api/tenant_logo_handlers.go | 24 +++++++++++++++++------- + +--- +## 2026-06-25 00:40 – 00:44 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-61-fix-tenant-logo-xss-idor.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/ldap_tenants.go | 2 +- +- internal/api/tenant_logo_handlers.go | 24 +++++++++++++++++------- + +--- +## 2026-06-25 00:47 – 00:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-61-fix-tenant-logo-xss-idor.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/ldap_tenants.go | 2 +- +- internal/api/tenant_logo_handlers.go | 24 +++++++++++++++++------- + +--- +## 2026-06-25 01:11 – 01:53 (42m) +**Beschreibung:** Claude Code Session +**Projekt:** agents + +### Commits +- 7c02860 fix(PROJ-62): Cross-Tenant IDOR bei POP3-Konto-Löschung/-Import behoben (Sicherheitsbug) + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-62-fix-pop3-tenant-idor.md | 39 +++++++++++++++++++++++++++++++++++++++ +- internal/api/pop3_handlers.go | 8 ++++++++ + +--- +## 2026-06-25 01:54 – 01:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-62-fix-pop3-tenant-idor.md | 39 +++++++++++++++++++++++++++++++++++++++ +- internal/api/pop3_handlers.go | 8 ++++++++ + +--- +## 2026-06-25 01:58 – 09:46 (7h 47m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-62-fix-pop3-tenant-idor.md | 39 ++++++++++++++++++++++++++++++++ +- internal/api/pop3_handlers.go | 8 +++++++ + +--- +## 2026-06-25 09:46 – 09:48 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 3 ++- +- features/PROJ-62-fix-pop3-tenant-idor.md | 39 ++++++++++++++++++++++++++++++++ +- internal/api/pop3_handlers.go | 8 +++++++ + +--- +## 2026-06-25 09:48 – 09:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- c1338f6 chore(PROJ-60): Xapian-Reste aus Dockerfile, Makefile und Doku entfernen + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 09:49 – 09:49 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 09:49 – 09:50 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 10:03 – 10:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 10:41 – 10:42 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 10:42 – 10:43 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 10:45 – 10:45 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-25 10:50 – 10:51 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-29 10:10 – 10:11 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-29 10:12 – 10:20 (8m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-29 10:37 – 10:37 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-29 10:37 – 10:49 (11m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-29 11:34 – 11:35 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-29 11:37 – 11:38 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-30 12:42 – 12:48 (5m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-30 14:32 – 14:33 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- Dockerfile | 14 +++++--------- +- Makefile | 12 ++++++------ +- docs/PRD.md | 2 +- +- docs/api-v1.md | 4 ++-- + +--- +## 2026-06-30 14:37 – 14:37 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- dcb8831 fix(PROJ-63): Defense-in-Depth Tenant-Scope-Härtung der Admin-Endpunkte + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 15:20 – 15:20 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 15:20 – 15:21 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 15:22 – 15:23 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 15:26 – 15:27 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 17:33 – 18:14 (41m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 18:15 – 18:15 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- .claude/agents/mailarchiv-architect.md | 31 ++++++++++++++++++++++++++++++- +- .claude/agents/manticore-admin.md | 9 +++++++++ +- features/INDEX.md | 3 ++- +- internal/api/tenant_domain_handlers.go | 16 ++++++++++++++++ +- internal/api/tenant_handlers.go | 21 +++++++++++++++++++++ +- internal/api/tenant_logo_handlers.go | 10 ++++++++++ + +--- +## 2026-06-30 18:15 – 18:17 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** Trad-Bot + +### Commits +- 0552ce4 fix(PROJ-50): Cross-Tenant-Lücke + Fehlerbehandlung in DSGVO-Handlern behoben + +### Geänderte Dateien +- internal/api/dsgvo_handlers.go | 43 +++++++++++++++++++++++++++++++++++++------ +- internal/storage/dsgvo_requests.go | 37 ++++++++++++++++++++++++++++++++++--- + +--- +## 2026-06-30 19:34 – 19:34 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 261a954 feat(PROJ-50): Admin-Tab "DSGVO-Anfragen" implementiert + +### Geänderte Dateien +- src/app/admin/page.tsx | 16 ++++ +- src/components/admin/tabs/DSGVOTab.tsx | 532 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/dsgvo.ts | 83 ++++++++++++++++++ +- src/lib/api/index.ts | 16 ++++ + +--- +## 2026-06-30 19:51 – 19:53 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/app/admin/page.tsx | 16 ++++ +- src/components/admin/tabs/DSGVOTab.tsx | 532 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/dsgvo.ts | 83 ++++++++++++++++++ +- src/lib/api/index.ts | 16 ++++ + +--- +## 2026-06-30 19:55 – 19:57 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 681d81c chore: Installer auf Debian 13 (trixie) als Mindestanforderung festlegen + +### Geänderte Dateien +- install.sh | 56 ++++++++++++++++++++++++++++++++++++-------------------- +- update.sh | 7 +++---- + +--- +## 2026-06-30 19:58 – 19:59 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 909a3b0 chore: update.sh OS-versions-agnostisch machen (Debian 14+ safe) + +### Geänderte Dateien +- update.sh | 53 +++++++++++++++++++++++++++++++++++++++++------------ + +--- +## 2026-06-30 20:02 – 20:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 5e7ae6e fix: Manticore-Architektur in install.sh dynamisch (arm64-Unterstützung) + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-30 20:11 – 20:12 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-30 20:12 – 20:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-30 20:14 – 20:14 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- install.sh | 5 +++-- + +--- +## 2026-06-30 20:16 – 20:18 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 0ccbd5b fix(mailparser): kaputte/truncated Multipart-Mails partiell indexieren statt scheitern + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 20:20 – 20:21 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 20:22 – 20:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 20:47 – 20:47 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 21:01 – 21:01 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 21:02 – 21:02 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 21:03 – 21:05 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 21:53 – 21:57 (3m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-06-30 23:13 – 23:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:02 – 22:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:03 – 22:04 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:07 – 22:09 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:09 – 22:09 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:11 – 22:11 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:11 – 22:12 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:13 – 22:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:13 – 22:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:13 – 22:13 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:15 – 22:15 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:17 – 22:20 (2m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:22 – 22:22 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- pkg/mailparser/parser.go | 20 ++++++++------------ + +--- +## 2026-07-03 22:23 – 22:23 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- b286352 fix(PROJ-64): Session-Invalidation bei Passwort-Change + Datei-Permissions gehärtet + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:26 – 22:26 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:28 – 22:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:28 – 22:28 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:29 – 22:29 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:30 – 22:30 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:31 – 22:31 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:39 – 22:39 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:39 – 22:40 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:40 – 22:41 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:44 – 22:46 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:48 – 22:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 7 ++++--- +- features/PROJ-64-session-invalidation-file-permissions.md | 40 ++++++++++++++++++++++++++++++++++++++++ +- internal/api/totp_handlers.go | 6 ++++++ +- internal/auth/auth.go | 15 +++++++++++++++ +- internal/storage/attachments.go | 4 ++-- +- internal/storage/storage.go | 6 +++--- +- internal/userstore/userstore.go | 27 ++++++++++++++++++++++++++- + +--- +## 2026-07-03 22:48 – 22:48 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 99e4c1b fix(security): Fail-closed Tenant-Filter in v1-Suche + SMTP-Out-Key-Kette gehärtet +- be93614 feat(PROJ-52): Vollständigkeits-Reconciliation (Zähl-Report Mailserver vs. Archiv) + +### Geänderte Dateien +- internal/api/v1_handlers.go | 22 ++++++++++++++++++++++ +- internal/smtpoutconfig/store.go | 4 ++++ + +--- +## 2026-07-03 22:52 – 22:52 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/v1_handlers.go | 22 ++++++++++++++++++++++ +- internal/smtpoutconfig/store.go | 4 ++++ + +--- +## 2026-07-03 22:53 – 22:53 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- internal/api/v1_handlers.go | 22 ++++++++++++++++++++++ +- internal/smtpoutconfig/store.go | 4 ++++ + +--- +## 2026-07-03 22:53 – 22:54 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- e91206c chore(PROJ-52): Cron-Job für Reconciliation in /etc/cron.d/archivmail ergänzen + +### Geänderte Dateien +- deploy/cron.d/archivmail | 9 +++++++++ + +--- +## 2026-07-03 22:55 – 22:56 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- deploy/cron.d/archivmail | 9 +++++++++ + +--- +## 2026-07-03 22:57 – 22:57 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- deploy/cron.d/archivmail | 9 +++++++++ + +--- +## 2026-07-03 23:03 – 23:03 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- deploy/cron.d/archivmail | 9 +++++++++ + +--- +## 2026-07-03 23:04 – 23:06 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 804cd62 fix(PROJ-50): DSGVO-Tab lädt nicht — API-Contract-Mismatch Frontend/Backend + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:19 – 23:19 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:22 – 23:23 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:24 – 23:24 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:24 – 23:24 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:25 – 23:25 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:29 – 23:30 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:32 – 23:33 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:33 – 23:33 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:34 – 23:35 (1m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- src/components/admin/tabs/DSGVOTab.tsx | 19 +++++++++++++------ +- src/lib/api/dsgvo.ts | 19 ++++++++++++------- + +--- +## 2026-07-03 23:36 – 23:37 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +- 767373b feat(PROJ-46): E-Mail als primärer Login-Identifier für Tenant-User + +### Geänderte Dateien +- features/INDEX.md | 4 +- +- features/PROJ-43-archivierungsregeln.md | 112 +++++++++++++++++++++++++++++++++ +- features/PROJ-46-email-login-tenant-user.md | 100 ++++++++++++++++++++++++++++++ +- internal/api/rules_handlers.go | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 8 +++ +- internal/auth/auth.go | 4 +- +- internal/imap/importer.go | 23 +++++-- +- internal/smtpd/smtpd.go | 39 ++++++++++++ +- internal/storage/storage.go | 2 + +- internal/storage/tenant_routing_rules.go | 383 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/userstore/userstore.go | 73 ++++++++++++++++++++++ +- internal/userstore/userstore_test.go | 68 +++++++++++++++++++++ +- src/app/admin/login/page.tsx | 4 +- +- src/app/admin/page.tsx | 6 ++ +- src/app/page.tsx | 10 +-- +- src/components/admin/tabs/RoutingRulesTab.tsx | 564 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 17 ++++++ +- src/lib/api/routing_rules.ts | 94 ++++++++++++++++++++++++++++ + +--- +## 2026-07-03 23:38 – 23:39 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 +- +- features/PROJ-43-archivierungsregeln.md | 112 +++++++++++++++++++++++++++++++++ +- features/PROJ-46-email-login-tenant-user.md | 100 ++++++++++++++++++++++++++++++ +- internal/api/rules_handlers.go | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 8 +++ +- internal/auth/auth.go | 4 +- +- internal/imap/importer.go | 23 +++++-- +- internal/smtpd/smtpd.go | 39 ++++++++++++ +- internal/storage/storage.go | 2 + +- internal/storage/tenant_routing_rules.go | 383 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/userstore/userstore.go | 73 ++++++++++++++++++++++ +- internal/userstore/userstore_test.go | 68 +++++++++++++++++++++ +- src/app/admin/login/page.tsx | 4 +- +- src/app/admin/page.tsx | 6 ++ +- src/app/page.tsx | 10 +-- +- src/components/admin/tabs/RoutingRulesTab.tsx | 564 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 17 ++++++ +- src/lib/api/routing_rules.ts | 94 ++++++++++++++++++++++++++++ + +--- +## 2026-07-03 23:43 – 23:43 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 +- +- features/PROJ-43-archivierungsregeln.md | 112 +++++++++++++++++++++++++++++++++ +- features/PROJ-46-email-login-tenant-user.md | 100 ++++++++++++++++++++++++++++++ +- internal/api/rules_handlers.go | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 8 +++ +- internal/auth/auth.go | 4 +- +- internal/imap/importer.go | 23 +++++-- +- internal/smtpd/smtpd.go | 39 ++++++++++++ +- internal/storage/storage.go | 2 + +- internal/storage/tenant_routing_rules.go | 383 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/userstore/userstore.go | 73 ++++++++++++++++++++++ +- internal/userstore/userstore_test.go | 68 +++++++++++++++++++++ +- src/app/admin/login/page.tsx | 4 +- +- src/app/admin/page.tsx | 6 ++ +- src/app/page.tsx | 10 +-- +- src/components/admin/tabs/RoutingRulesTab.tsx | 564 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 17 ++++++ +- src/lib/api/routing_rules.ts | 94 ++++++++++++++++++++++++++++ + +--- +## 2026-07-03 23:44 – 23:44 (0m) +**Beschreibung:** Claude Code Session +**Projekt:** archivmail + +### Commits +Keine Commits in dieser Session. + +### Geänderte Dateien +- features/INDEX.md | 4 +- +- features/PROJ-43-archivierungsregeln.md | 112 +++++++++++++++++++++++++++++++++ +- features/PROJ-46-email-login-tenant-user.md | 100 ++++++++++++++++++++++++++++++ +- internal/api/rules_handlers.go | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/api/server.go | 8 +++ +- internal/auth/auth.go | 4 +- +- internal/imap/importer.go | 23 +++++-- +- internal/smtpd/smtpd.go | 39 ++++++++++++ +- internal/storage/storage.go | 2 + +- internal/storage/tenant_routing_rules.go | 383 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- internal/userstore/userstore.go | 73 ++++++++++++++++++++++ +- internal/userstore/userstore_test.go | 68 +++++++++++++++++++++ +- src/app/admin/login/page.tsx | 4 +- +- src/app/admin/page.tsx | 6 ++ +- src/app/page.tsx | 10 +-- +- src/components/admin/tabs/RoutingRulesTab.tsx | 564 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- src/lib/api/index.ts | 17 ++++++ +- src/lib/api/routing_rules.ts | 94 ++++++++++++++++++++++++++++ + +--- diff --git a/README.md b/README.md index f1bc170..0b47b0e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # archivmail -Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Mails über SMTP (BCC-Journaling), IMAP oder Datei-Upload, speichert sie verschlüsselt, indexiert sie für Volltextsuche und stellt sie über eine Web-Oberfläche zur Verfügung. +Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Mails über SMTP (BCC-Journaling), IMAP, POP3 oder Datei-Upload, speichert sie verschlüsselt, indexiert sie für Volltextsuche (inkl. OCR) und stellt sie über eine Web-Oberfläche zur Verfügung. --- @@ -10,25 +10,34 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma - [Architektur](#architektur) - [Voraussetzungen](#voraussetzungen) - [Installation](#installation) +- [Update](#update) - [Konfiguration](#konfiguration) - [Systemd-Dienste](#systemd-dienste) - [Funktionen im Detail](#funktionen-im-detail) - [Authentifizierung & Rollen](#authentifizierung--rollen) + - [Multi-Tenancy (Mandanten)](#multi-tenancy-mandanten) - [SMTP-Eingang (BCC-Journaling)](#smtp-eingang-bcc-journaling) - [IMAP-Import & Auto-Sync](#imap-import--auto-sync) - - [EML/MBOX Web-Upload](#emlmbox-web-upload) + - [POP3-Import](#pop3-import) + - [EML/MBOX Web-Upload & CLI-Import](#emlmbox-web-upload--cli-import) + - [Mailpiler Migration](#mailpiler-migration) - [Speicherung & Verschlüsselung](#speicherung--verschlüsselung) - - [Volltext-Suche](#volltext-suche) + - [Volltext-Suche & OCR](#volltext-suche--ocr) - [E-Mail-Ansicht](#e-mail-ansicht) - [E-Mail-Export](#e-mail-export) + - [eDiscovery Export](#ediscovery-export) + - [DSGVO-Löschersuchen](#dsgvo-löschersuchen) + - [Retention-Policy & GoBD-Compliance](#retention-policy--gobd-compliance) - [Admin-Dashboard](#admin-dashboard) - [Audit-Log](#audit-log) - [Integritätsprüfung](#integritätsprüfung) - - [CLI Import & Export](#cli-import--export) - - [Mailpiler Migration](#mailpiler-migration) + - [LDAP / Active Directory](#ldap--active-directory) + - [TOTP Zwei-Faktor-Authentifizierung](#totp-zwei-faktor-authentifizierung) + - [IMAP-Server-Schnittstelle (Read-Only)](#imap-server-schnittstelle-read-only) + - [Prometheus Metriken](#prometheus-metriken) + - [Tenant-Voll-Export CLI](#tenant-voll-export-cli) - [REST API](#rest-api) - [In Entwicklung](#in-entwicklung) -- [Update](#update) --- @@ -37,24 +46,41 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma | Funktion | Status | |----------|--------| | Authentifizierung & Rollen (Admin / Auditor / User) | ✅ Deployed | +| TOTP Zwei-Faktor-Authentifizierung (2FA) | ✅ Deployed | +| Multi-Tenancy (Mandantenfähigkeit) | ✅ Deployed | +| LDAP / Active Directory Anbindung (global + pro Mandant) | ✅ Deployed | | SMTP-Eingang via BCC-Journaling | ✅ Deployed | | IMAP-Import manuell & automatischer Sync | ✅ Deployed | -| EML/MBOX Web-Upload (Admin) | ✅ Deployed | +| POP3-Import | ✅ Deployed | +| EML/MBOX Web-Upload & CLI-Import | ✅ Deployed | +| Mailpiler → archivmail Migration | ✅ Deployed | | AES-256-GCM verschlüsselte Speicherung | ✅ Deployed | -| Manticore Search Volltext-Indexierung (async) | ✅ Deployed | -| Volltext-Suche mit Filtern & Sortierung | ✅ Deployed | +| gzip-Kompression der Speicherobjekte | ✅ Deployed | +| Attachment-Deduplication (Hash-basiert) | ✅ Deployed | +| Message-ID-basierte Duplikatserkennung | ✅ Deployed | +| Manticore Search Volltext-Indexierung | ✅ Deployed | +| Volltext-Suche mit Filtern, Sortierung & Hervorhebung | ✅ Deployed | +| OCR & Anhang-Volltext-Indexierung (Tesseract + pdftotext) | ✅ Deployed | +| E-Mail-Threading (In-Reply-To / References) | ✅ Deployed | | E-Mail-Ansicht mit HTML-Sandbox | ✅ Deployed | | E-Mail-Export als EML / PDF / ZIP | ✅ Deployed | -| Admin-Dashboard (CPU, RAM, Disk, Archiv-Stats) | ✅ Deployed | -| Audit-Log (Suche, Login, Import, Export) | ✅ Deployed | +| eDiscovery Export (ZIP + Metadaten-CSV) | ✅ Deployed | +| DSGVO-Löschersuchen (Adress-basiert, GoBD-konform) | ✅ Deployed | +| Retention-Policy (Löschsperre, Aufbewahrungsfristen nach Dokumentenart) | ✅ Deployed | | SHA-256 Integritätsprüfung | ✅ Deployed | -| CLI: `archivmail import` / `export` | ✅ Deployed | -| Mailpiler → archivmail Migration | ✅ Deployed | -| Dienste-Verwaltung im Admin-Bereich | ✅ Deployed | -| Ordner- & Label-Verwaltung | 🔄 In Progress | -| POP3-Import | 🔄 In Progress | -| REST API für externe Anbindung (CRM) | 🔄 In Progress | -| LDAP / Active Directory | 🔄 In Progress | +| Audit-Log (unveränderbar, dual-write PostgreSQL + Flat-File) | ✅ Deployed | +| Admin-Dashboard (CPU, RAM, Disk, Archiv-Stats, Zeitreihe) | ✅ Deployed | +| Verschlüsselungsstatus-Healthcheck (PROJ-49) | ✅ Deployed | +| Gespeicherte Suchanfragen | ✅ Deployed | +| IMAP-Server-Schnittstelle (Read-Only Archivzugriff) | ✅ Deployed | +| Prometheus Metriken & Health-Check | ✅ Deployed | +| Tenant-Quotas & Usage-Limits | ✅ Deployed | +| Tenant-Voll-Export per CLI | ✅ Deployed | +| Self-Service Onboarding (Sign-up, Passwort-Reset) | ✅ Deployed | +| REST API für externe CRM-Anbindung | ✅ Deployed | +| CLI: `archivmail import` / `export` / `reindex` | ✅ Deployed | +| Automatische Archivierungsregeln (SMTP/IMAP-Routing) | 🔄 Planned | +| Vollständigkeits-Reconciliation (Zähl-Report) | 🔄 Planned | --- @@ -66,20 +92,22 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma │ │ Postfix BCC ──┤── SMTP-Daemon (Port 2525) │ IMAP-Server ──┤── IMAP-Importer + Scheduler │──► PostgreSQL - Web-Upload ──┤── HTTP API (Port 8080) │ (Metadaten) + POP3-Server ──┤── POP3-Importer │ (Metadaten, Benutzer, + Web-Upload ──┤── HTTP API (Port 8080) │ Audit-Log, Tenants) │ │ │ │ ▼ │──► /var/archivmail/store - │ Async Index Worker │ (AES-256-GCM) - │ │ │ - │ ▼ │──► Manticore Search (Port 9306) - │ Manticore Index │ (Volltext-Index) + │ Async Index Worker │ (AES-256-GCM, gzip) + │ OCR-Batch-Cron │ + │ │ │──► Manticore Search (9306) + │ ▼ │ (Volltext-Index, OCR) + │ Manticore Index │ └─────────────────────────────────────┘ ▲ │ /api/* ┌─────────────────────────────────────┐ │ Next.js Frontend (Port 3000) │ │ / /search /mail/[id] /admin │ - │ /imap │ + │ /imap /profile │ └─────────────────────────────────────┘ ``` @@ -87,22 +115,28 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma | Komponente | Technologie | Beschreibung | |------------|-------------|--------------| -| Backend | Go 1.24 | REST API, SMTP-Daemon, IMAP-Importer, Storage, Indexierung | +| Backend | Go 1.24 (CGO_ENABLED=0) | REST API, SMTP-Daemon, IMAP/POP3-Importer, Storage, Indexierung | | Frontend | Next.js 16 (TypeScript) | Web-Oberfläche, Tailwind CSS, shadcn/ui | -| Datenbank | PostgreSQL | Metadaten, Benutzer, Audit-Log, Session-Blacklist | -| Volltextsuche | Manticore Search | BM25-Ranking, Wildcards, Feldpräfixe | -| Speicherung | Dateisystem | AES-256-GCM verschlüsselt, SHA-256 Integrität | +| Datenbank | PostgreSQL | Metadaten, Benutzer, Audit-Log, Session-Blacklist, Tenants | +| Volltextsuche | Manticore Search | BM25-Ranking, Wildcards, Feldpräfixe, OCR-Text | +| Speicherung | Dateisystem | AES-256-GCM verschlüsselt + gzip komprimiert, SHA-256 Integrität | --- ## Voraussetzungen -**Server:** -- Debian 12 / Ubuntu 22.04 oder neuer -- Go ≥ 1.24 (CGO_ENABLED=0, keine C-Abhängigkeiten) -- Node.js ≥ 20 +**Betriebssystem:** +- **Debian 13 (trixie)** — Mindestanforderung für Neuinstallationen +- Debian 14+ wird durch automatische Go-Installation aus upstream unterstützt + +**Abhängigkeiten:** +- Go ≥ 1.24 (wird automatisch von `install.sh` / `update.sh` aus dl.google.com installiert) +- Node.js ≥ 20 + npm - PostgreSQL ≥ 14 -- Manticore Search ≥ 6.x +- Manticore Search ≥ 6.x (wird automatisch installiert) +- Tesseract OCR + poppler-utils (optional, für OCR-Funktion) + +**Architektur:** amd64 und arm64 werden unterstützt **Ports (Standard):** - `8080` – HTTP API (Backend) @@ -113,17 +147,13 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma ## Installation -### Automatisch (empfohlen) +### Erstinstallation (empfohlen) ```bash -curl -fsSL https://gitea.perlbach24.de/scripte/archivmail/raw/branch/main/update.sh | bash +curl -fsSL https://gitea.perlbach24.de/scripte/archivmail/raw/branch/main/install.sh | bash ``` -Das Skript: -1. Klont/aktualisiert den Quellcode -2. Baut Backend (Go, CGO_ENABLED=0) und Frontend (Next.js) -3. Stoppt Dienste, spielt Binaries ein, startet Dienste neu -4. Führt Datenbankmigrationen durch und reindexiert Manticore +Das Skript prüft Voraussetzungen (Debian 13), installiert alle Abhängigkeiten (Go, Manticore Search, Node.js, PostgreSQL, Tesseract), richtet Systemd-Dienste ein und gibt am Ende die initialen Zugangsdaten aus. ### Manuell @@ -175,7 +205,7 @@ smtp: domain: "archivmail.firma.de" allowed_ips: - 127.0.0.1 - - 192.168.1.0/24 # Postfix-Server-IP(s) + - 192.168.1.0/24 api: bind: ":8080" @@ -185,6 +215,10 @@ index: backend: manticore manticore_dsn: "manticore@tcp(127.0.0.1:9306)/" batch_size: 100 + batch_mode: true + +ocr: + batch_mode: true EOF # AES-256 Schlüssel generieren @@ -194,6 +228,28 @@ chmod 600 /etc/archivmail/keyfile --- +## Update + +```bash +# Auf dem Server als root: +bash /opt/archivmail/update.sh + +# Oder direkt von Gitea: +curl -fsSL https://gitea.perlbach24.de/scripte/archivmail/raw/branch/main/update.sh | bash +``` + +Das Update-Skript: +1. Prüft und installiert Go ≥ 1.24 automatisch aus upstream (OS-versionsunabhängig) +2. Aktualisiert Quellcode aus Gitea +3. Baut Backend (CGO_ENABLED=0) und Frontend (Next.js standalone) +4. Stoppt Dienste, spielt Binaries ein +5. Startet Dienste und prüft HTTP-Health (`/api/health`) + +> **Hinweis:** Ein Reindex ist nur nach Schema-Änderungen am Index nötig: +> `archivmail reindex --config /etc/archivmail/config.yml` + +--- + ## Konfiguration ### Vollständige Konfigurationsreferenz @@ -201,7 +257,7 @@ chmod 600 /etc/archivmail/keyfile ```yaml server: api_port: 8080 # HTTP-API Port - smtp_port: 2525 # SMTP-Eingang Port (Fallback wenn smtp.bind nicht gesetzt) + smtp_port: 2525 # SMTP-Eingang Port database: host: 127.0.0.1 @@ -214,26 +270,30 @@ database: storage: store_path: /var/archivmail/store # Haupt-Mailspeicher (AES-256-GCM) astore_path: /var/archivmail/astore # Anhang-Speicher - keyfile: /etc/archivmail/keyfile # 32-Byte AES-Schlüsseldatei (siehe Hinweis unten) + keyfile: /etc/archivmail/keyfile # 32-Byte AES-Schlüsseldatei smtp: enabled: true - bind: ":2525" # TCP-Adresse zum Lauschen - domain: "archivmail" # EHLO-Domainname + bind: ":2525" + domain: "archivmail" tls_cert: "" # Pfad zum TLS-Zertifikat (leer = kein TLS) - tls_key: "" # Pfad zum TLS-Schlüssel - max_size_mb: 50 # Maximale E-Mail-Größe in MB - allowed_ips: # Nur diese IPs dürfen zustellen + tls_key: "" + max_size_mb: 50 + allowed_ips: - 127.0.0.1 api: bind: ":8080" - secret: "" # JWT-Signaturschlüssel (mind. 32 Zeichen, zufällig) + secret: "" # JWT-Signaturschlüssel (mind. 32 Zeichen) index: - backend: manticore # manticore (Standard) - manticore_dsn: "manticore@tcp(127.0.0.1:9306)/" # Manticore Search DSN - batch_size: 100 # Dokumente pro Index-Batch + backend: manticore + manticore_dsn: "manticore@tcp(127.0.0.1:9306)/" + batch_size: 100 + batch_mode: true # Indexierung als Cron-Batch statt Dauerbetrieb + +ocr: + batch_mode: true # OCR als Cron-Batch statt Dauerbetrieb audit: log_path: /var/log/archivmail/audit.log @@ -248,22 +308,15 @@ logging: ## Systemd-Dienste -Das System läuft mit zwei Systemd-Units: - | Dienst | Beschreibung | Port | |--------|--------------|------| | `archivmail` | Go-Backend (API + SMTP + IMAP-Scheduler) | 8080, 2525 | | `archivmail-web` | Next.js-Frontend | 3000 | ```bash -# Status prüfen systemctl status archivmail archivmail-web - -# Logs journalctl -u archivmail -f journalctl -u archivmail-web -f - -# Neustart systemctl restart archivmail archivmail-web ``` @@ -273,22 +326,29 @@ systemctl restart archivmail archivmail-web ### Authentifizierung & Rollen -**Rollen:** +**Globale Rollen:** | Rolle | Rechte | |-------|--------| -| `admin` | Vollzugriff: Benutzer verwalten, IMAP einrichten, Dienste steuern, alles suchen/exportieren | +| `superadmin` | Vollzugriff inkl. Mandantenverwaltung und globaler LDAP-Konfiguration | +| `admin` | Benutzer & IMAP verwalten, alle E-Mails suchen/exportieren, Dashboard | | `auditor` | Audit-Log lesen, alle E-Mails suchen und exportieren | -| `user` | Nur eigene E-Mails suchen und lesen (Matching auf E-Mail-Adresse) | +| `user` | Nur eigene E-Mails (Matching auf E-Mail-Adresse) suchen und lesen | + +**Mandanten-Rollen (Multi-Tenant):** + +| Rolle | Rechte | +|-------|--------| +| `domain_admin` | Admin-Rechte innerhalb eines Mandanten | +| `domain_auditor` | Auditor-Rechte innerhalb eines Mandanten | **Sicherheit:** - Passwörter mit bcrypt (Cost 12) - Sessions als httpOnly SameSite=Strict Cookie (`archivmail_session`) -- JWT mit zufälligem JTI (kryptografische Entropie, 16 Byte) +- JWT mit kryptografischem JTI (16 Byte Entropie) - Token-Blacklist in PostgreSQL (Logout invalidiert Token sofort) - Rate-Limiting: max. 5 Fehlversuche in 15 Minuten → HTTP 429 -- Login-Versuche in `login_attempts`-Tabelle protokolliert -- Letzter Login wird gespeichert (`last_login_at`) +- TOTP 2FA optional pro Benutzer aktivierbar **Erstmalige Einrichtung:** @@ -306,11 +366,37 @@ Beim ersten Start werden automatisch zwei Benutzer mit zufälligen Passwörtern --- +### Multi-Tenancy (Mandanten) + +archivmail unterstützt vollständige Mandantentrennung. Jeder Mandant hat: +- Eigene Benutzer und Rollen (`domain_admin`, `domain_auditor`) +- Eigene IMAP/POP3-Verbindungen +- Eigenes Logo (mit XSS-sicherer Validierung) +- Eigene Domain-Zuordnungen +- Eigene LDAP-Konfiguration +- Eigenes Speicher-Quota (optional) + +**API-Endpunkte:** +``` +GET /api/admin/tenants # Alle Mandanten auflisten +POST /api/admin/tenants # Mandant anlegen +GET /api/admin/tenants/{id} # Mandant details +PATCH /api/admin/tenants/{id} # Mandant bearbeiten +DELETE /api/admin/tenants/{id} # Mandant löschen +GET /api/admin/tenants/{id}/users # Benutzer eines Mandanten +GET /api/admin/tenants/{id}/domains # Domains eines Mandanten +POST /api/admin/tenants/{id}/domains # Domain hinzufügen +DELETE /api/admin/tenants/{id}/domains/{d} # Domain entfernen +POST /api/admin/tenants/{id}/logo # Logo hochladen +DELETE /api/admin/tenants/{id}/logo # Logo löschen +``` + +--- + ### SMTP-Eingang (BCC-Journaling) Der eingebettete SMTP-Daemon empfängt E-Mails von Postfix (oder anderem MTA) über BCC-Weiterleitung. -**Funktionsweise:** ``` Absender → Postfix → Empfänger │ @@ -322,60 +408,45 @@ Absender → Postfix → Empfänger **Postfix-Konfiguration (`/etc/postfix/main.cf`):** ``` -# Alle ausgehenden Mails archivieren: always_bcc = archiv@archivmail-host - -# Oder granular per Nutzer: -sender_bcc_maps = hash:/etc/postfix/sender_bcc ``` **Sicherheit:** -- Kein SMTP AUTH – Vertrauen ausschließlich über IP-Allowlist -- IP-Allowlist in `smtp.allowed_ips` konfigurieren +- Kein SMTP AUTH — Vertrauen ausschließlich über IP-Allowlist (`smtp.allowed_ips`) - 250 OK erst nach erfolgreicher Speicherung (kein Datenverlust) - 250 OK auch bei Duplikaten (Postfix stellt nicht erneut zu) -- Maximale E-Mail-Größe konfigurierbar (`smtp.max_size_mb`, Standard: 50 MB) -- Optionale TLS/STARTTLS-Unterstützung (`smtp.tls_cert` / `smtp.tls_key`) - -**API-Endpunkt:** -``` -GET /api/admin/smtp/status -``` +- Optionale TLS/STARTTLS-Unterstützung --- ### IMAP-Import & Auto-Sync -E-Mails von IMAP-Postfächern importieren – einmalig (Altbestände) oder automatisch als Hintergrundjob. +E-Mails von IMAP-Postfächern importieren — einmalig (Altbestände) oder automatisch als Hintergrundjob. **Verbindung einrichten (Web-UI unter `/imap`):** | Feld | Beschreibung | |------|--------------| -| Name | Bezeichnung der Verbindung | | Host / Port | IMAP-Server-Adresse | | TLS | `ssl` (IMAPS), `starttls`, `none` | -| Benutzername / Passwort | IMAP-Zugangsdaten (Passwort AES-256-GCM verschlüsselt in DB) | -| Ausgeschlossene Ordner | Ordner die nicht importiert werden | - -**Sync-Intervall:** - -| Wert | Verhalten | -|------|-----------| -| 0 | Automatischer Sync deaktiviert | -| 5–1440 | Sync alle N Minuten (Hintergrund-Goroutine) | +| Benutzername / Passwort | IMAP-Zugangsdaten (AES-256-GCM verschlüsselt in DB) | +| Modus | `shared` (gemeinsames Archiv) oder `personal` (Nutzer-zugeordnet) | +| Ausgeschlossene Ordner | Kommagetrennte Liste | **Inkrementeller Sync:** -- UID-basiert: Nur neue Nachrichten seit letztem Sync werden heruntergeladen -- Exponentielles Backoff bei Fehlern: 1s → 60s → 300s (3 Versuche) -- Duplikat-Erkennung via Content-Hash +- UID-basiert mit UIDVALIDITY-Check: Nur neue Nachrichten seit letztem Sync +- Pro-Ordner UID-Tracking in `imap_folder_state`-Tabelle +- Exponentielles Backoff bei Fehlern +- Jitter bei gleichzeitigen Sync-Jobs (Last-Entzerrung) + +**Sync-Modus:** `shared` (alle Mails zentral) oder `personal` (Mail-Adresse Matching auf Benutzer) **API-Endpunkte:** ``` GET /api/imap # Verbindungen auflisten POST /api/imap # Neue Verbindung anlegen DELETE /api/imap/{id} # Verbindung löschen -PATCH /api/imap/{id} # Sync-Intervall ändern +PATCH /api/imap/{id} # Konto aktualisieren POST /api/imap/test # Verbindung testen + Ordner auflisten POST /api/imap/{id}/import # Vollständigen Import starten GET /api/imap/{id}/progress # Import-Fortschritt abfragen @@ -384,84 +455,100 @@ POST /api/imap/{id}/sync # Manuellen inkrementellen Sync auslösen --- -### EML/MBOX Web-Upload +### POP3-Import -E-Mails direkt über die Admin-Oberfläche hochladen (Tab „Import" unter `/admin`). - -**Unterstützte Formate:** -- `.eml` – einzelne RFC-2822 E-Mail -- `.mbox` – MBOX-Datei mit beliebig vielen E-Mails - -**Ablauf:** -1. Dateien per Drag-and-Drop oder Datei-Dialog hochladen -2. Backend startet Hintergrund-Import-Job, gibt sofort `job_id` zurück -3. Frontend pollt alle 1,5 Sekunden den Fortschritt -4. Abschlussbericht: Importiert / Übersprungen (Duplikate) / Fehler +E-Mails von POP3-Servern importieren (einmalig oder manuell ausgelöst). **API-Endpunkte:** ``` -POST /api/admin/upload # Multipart-Upload starten -GET /api/admin/upload/{jobID}/progress # Fortschritt abfragen +GET /api/pop3 # Verbindungen auflisten +POST /api/pop3 # Verbindung anlegen +DELETE /api/pop3/{id} # Verbindung löschen +POST /api/pop3/test # Verbindung testen +POST /api/pop3/{id}/import # Import starten +GET /api/pop3/{id}/progress # Fortschritt abfragen ``` --- +### EML/MBOX Web-Upload & CLI-Import + +**Web-Upload** (Admin-Bereich → Tab „Import"): +- `.eml` — einzelne RFC-2822 E-Mail +- `.mbox` — MBOX-Datei mit beliebig vielen E-Mails +- Hintergrund-Import mit Fortschrittsanzeige (Polling alle 1,5s) + +**CLI-Import:** +```bash +archivmail import --file /pfad/zur/datei.eml +archivmail import --file /pfad/zur/datei.mbox +archivmail import --dir /pfad/zum/verzeichnis --recursive +archivmail import --dir /pfad/ --dry-run # Simulation +archivmail import --dir /pfad/ --json # JSON-Ausgabe +``` + +**CLI-Export:** +```bash +archivmail export --out /export/ +archivmail export --out /export/archiv.mbox --format mbox +archivmail export --out /export/ \ + --from absender@firma.de \ + --date-from 2024-01-01 \ + --date-to 2024-12-31 \ + --query "Rechnung" +``` + +--- + +### Mailpiler Migration + +Vollständige Migration eines bestehenden mailpiler-Archivs nach archivmail. + +```bash +# Auto-Modus (pilerexport → direct als Fallback) +archivmail import-piler --config /etc/archivmail/config.yml + +# Direkt aus Store-Verzeichnis (ohne laufendes mailpiler) +archivmail import-piler \ + --method direct \ + --store-dir /var/piler/store \ + --key-file /var/piler/store/piler.key + +# Probe-Lauf +archivmail import-piler --dry-run --json +``` + +Unterstützt: AES-256-CBC Entschlüsselung, zlib Dekomprimierung, verschiedene mailpiler-Versionen. + +--- + ### Speicherung & Verschlüsselung -Alle E-Mails werden verschlüsselt auf dem Dateisystem gespeichert. - **Verschlüsselung:** - Algorithmus: AES-256-GCM (authentifizierte Verschlüsselung) -- Schlüssel: 32-Byte-Datei (`keyfile` in Konfiguration) +- Schlüssel: 32-Byte-Datei (`keyfile`) - Nonce: 12 Byte, kryptografisch zufällig, pro E-Mail neu generiert -- Dateiformat: `[12-Byte Nonce][verschlüsselte Daten]` -> **Wichtig (GoBD, PROJ-49):** `storage.keyfile` ist technisch optional — fehlt es, -> startet der Dienst weiter, speichert E-Mails dann aber **unverschlüsselt**. Für -> produktive, GoBD-konforme Installationen ist `storage.keyfile` quasi-pflicht und -> sollte immer gesetzt sein. Ist keine (gültige, 32 Byte große) Schlüsseldatei -> konfiguriert, gibt archivmail beim Start eine deutliche WARN-Zeile aus, und -> sowohl `archivmail status` (Eintrag „Encryption") als auch das Admin-Dashboard -> zeigen den Status `disabled` an. +**Kompression:** +- E-Mails werden vor der Verschlüsselung gzip-komprimiert +- Anhänge Hash-basiert dedupliziert (gleicher Inhalt → eine Datei) -**Datei-ID / Integrität:** +**Integrität:** - Jede E-Mail erhält als ID den SHA-256-Hash des Klartexts -- Duplikat-Erkennung: gleicher Hash → gleiche Datei, Speicherung übersprungen -- ID dient gleichzeitig als Integritätsnachweis +- Duplikat-Erkennung via Content-Hash und Message-ID -**PostgreSQL-Metadaten (`emails`-Tabelle):** - -| Spalte | Typ | Beschreibung | -|--------|-----|--------------| -| `id` | TEXT PK | SHA-256 Hash des E-Mail-Rohtexts | -| `from_addr` | TEXT | Absender | -| `to_addrs` | TEXT[] | Empfänger | -| `subject` | TEXT | Betreff | -| `message_id` | TEXT | RFC-2822 Message-ID | -| `mail_date` | TIMESTAMPTZ | Sendedatum | -| `size_bytes` | INTEGER | Größe in Bytes | -| `has_attachments` | BOOLEAN | Hat Anhänge | -| `stored_at` | TIMESTAMPTZ | Archivierungszeitpunkt | -| `indexed_at` | TIMESTAMPTZ | Indexierungszeitpunkt (NULL = ausstehend) | -| `verify_ok` | BOOLEAN | Letztes Integritätsprüfungsergebnis | -| `verified_at` | TIMESTAMPTZ | Zeitpunkt der letzten Prüfung | - -**Async Index Worker:** -- Eingehende E-Mails werden sofort gespeichert -- Indexierung erfolgt asynchron über einen Go-Channel (Queue-Größe: 1000) -- Backfill beim Start: Nicht indexierte E-Mails werden nachindexiert +> **GoBD-Hinweis (PROJ-49):** Fehlt die Schlüsseldatei, speichert archivmail E-Mails +> **unverschlüsselt** und gibt beim Start eine WARN-Zeile aus. `archivmail status` +> und das Admin-Dashboard zeigen den Verschlüsselungsstatus (`enabled` / `disabled`) an. --- -### Volltext-Suche - -Suche über alle archivierten E-Mails per Manticore Search unter `/search`. +### Volltext-Suche & OCR **Suchfelder:** -- Freitext (durchsucht Betreff, Body, Absender, Empfänger, Anhangsnamen) -- Absender-Filter (`from`) -- Empfänger-Filter (`to`) -- Zeitraum (`date_from` / `date_to`, ISO 8601: `2024-01-01`) +- Freitext (Betreff, Body, Absender, Empfänger, CC, BCC, Anhangsnamen, OCR-Text) +- Absender / Empfänger / CC / BCC-Filter +- Zeitraum (`date_from` / `date_to`) - Nur Mails mit Anhängen (`has_attachment`) - Sortierung: `date_desc` (Standard), `date_asc`, `relevance` @@ -474,13 +561,22 @@ Rechn* # Wildcard @subject Urlaubsantrag # Feldsuche Betreff ``` -**Paginierung:** 25 Ergebnisse pro Seite (konfigurierbar via `page_size`) +**OCR (Anhang-Volltext-Indexierung):** +- PDF, TIFF, PNG, JPEG: automatische OCR mit Tesseract +- PDF: Text-Extraktion via pdftotext (bevorzugt gegenüber OCR) +- OCR-Text wird in Manticore Search indexiert und ist volltext-durchsuchbar +- Status pro Mail: `pending` / `done` / `failed` / `not_applicable` +- Download des extrahierten OCR-Texts als .txt-Datei +- Läuft als Cron-Batch (konfigurierbar via `ocr.batch_mode`) -**Rollenfilter:** -- `user`: sieht nur E-Mails an/von der eigenen E-Mail-Adresse -- `admin` / `auditor`: sieht alle E-Mails +**Gespeicherte Suchanfragen:** +``` +GET /api/saved-searches # Liste +POST /api/saved-searches # Speichern +DELETE /api/saved-searches/{id} # Löschen +``` -**API-Endpunkt:** +**API:** ``` GET /api/search?q=...&from=...&to=...&date_from=...&date_to=...&has_attachment=true&sort=date_desc&page=1&page_size=25 ``` @@ -489,103 +585,137 @@ GET /api/search?q=...&from=...&to=...&date_from=...&date_to=...&has_attachment=t ### E-Mail-Ansicht -Vollständige Darstellung einer archivierten E-Mail unter `/mail/[id]`. +Vollständige Darstellung unter `/mail/[id]`. -**Funktionen:** -- HTML-Body original dargestellt in `