# 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-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: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 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: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: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: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: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 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: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 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: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 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: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-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: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-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: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-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: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 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: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 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 – 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: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: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-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: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 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: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 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-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 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-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 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-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-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 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 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 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-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-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: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-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 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: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 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: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: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: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 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 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: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 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-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: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: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: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-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: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: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 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: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-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 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 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: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: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 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: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: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: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: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 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 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-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 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: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: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-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: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: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 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: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:45 – 23:46 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - af16138 docs: README aktualisieren, Dev-Log/Dateiindex/GoBD-Checklist/Screenshots ins Repo ### Geänderte Dateien - CODEBASE.md | 262 ++++++ - DEVLOG.md | 7808 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - README.md | 782 +++++++++--------- - docs/GOBD_DSGVO_CHECKLIST.md | 64 ++ - resume | 1 + - screenshots/2026-06-12_22-27.png | Bin 0 -> 59929 bytes - screenshots/2026-06-13_00-14.png | Bin 0 -> 125637 bytes - screenshots/2026-06-14_21-59.png | Bin 0 -> 81727 bytes - screenshots/2026-06-14_22-00.png | Bin 0 -> 195105 bytes --- ## 2026-07-03 23:54 – 23:56 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - c274df5 fix(deploy): update.sh synchronisiert systemd-Units bei jedem Deploy ### Geänderte Dateien - update.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-04 00:02 – 00:02 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 04e5b0f fix(security-audit): HTTPS/Port-Checks erkennen nftables Set-Syntax nicht ### Geänderte Dateien - internal/api/admin_security_handlers.go | 33 ++++++++++++++++++++++++++++++--- --- ## 2026-07-04 12:06 – 12:07 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - a739015 docs: GoBD-Checklist auf aktuellen Stand bringen (PROJ-52, PROJ-56c) ### Geänderte Dateien - docs/GOBD_DSGVO_CHECKLIST.md | 4 ++-- --- ## 2026-07-04 12:08 – 12:12 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 6d67a6b docs: GoBD-Checklist auf aktuellen Stand bringen, Spec für PROJ-56c nachtragen ### Geänderte Dateien - docs/GOBD_DSGVO_CHECKLIST.md | 56 ++++++++++++++++++++++++++------------------------------ - features/INDEX.md | 1 + - features/PROJ-56c-cron-purge-markierte-mails.md | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-04 12:13 – 12:14 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 17633cb docs: Migrations-Runbook für Compliance-Erhalt-Check ergänzen (GoBD Punkt 10) ### Geänderte Dateien - docs/GOBD_DSGVO_CHECKLIST.md | 18 +++++++----------- - docs/MIGRATION_RUNBOOK.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-04 12:15 – 12:17 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 45ac685 docs(PROJ-65): Spec für physische Tenant-Trennung im Storage-Layer ### Geänderte Dateien - features/INDEX.md | 3 ++- --- ## 2026-07-04 12:20 – 12:21 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - bd72761 chore: Screenshots aus dem Repo entfernen ### Geänderte Dateien - .gitignore | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - screenshots/2026-06-12_22-27.png | Bin 59929 -> 0 bytes - screenshots/2026-06-13_00-14.png | Bin 125637 -> 0 bytes - screenshots/2026-06-14_21-59.png | Bin 81727 -> 0 bytes - screenshots/2026-06-14_22-00.png | Bin 195105 -> 0 bytes --- ## 2026-07-04 12:23 – 12:25 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 8174456 docs: README auf aktuellen Stand bringen (PROJ-43/52 Deployed, Config-Referenz vervollständigt) ### Geänderte Dateien - README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- --- ## 2026-07-04 — PROJ-46 Deploy auf Produktiv (192.168.1.131) **Breaking Change — Login-Verhalten für Tenant-User geändert:** Tenant-User (`tenant_id` gesetzt) können sich ab sofort nur noch per E-Mail-Adresse einloggen, nicht mehr per Username. Superadmin/System-User (`tenant_id IS NULL`) sind unverändert — für sie funktionieren weiterhin sowohl Username als auch E-Mail. - Betroffen: Web-Login (`/`, `/admin/login`), REST-API-Login (`POST /api/auth/login`) - Nicht betroffen: IMAP-Login (Port 993, PROJ-26) — dort weiterhin Username-basiert (separater Code-Pfad `VerifyPassword`, von PROJ-46 nicht angetastet) - QA: 9/9 Acceptance Criteria bestanden auf 192.168.1.132 (siehe `features/PROJ-46-email-login-tenant-user.md`) - Deploy: `update.sh` auf 131, Backend + Frontend laufen, Smoke-Test bestanden - Betroffene Kunden/Tenants mit abweichendem Username↔E-Mail sollten informiert werden, dass sie künftig ihre E-Mail-Adresse zum Login verwenden müssen (Datenqualitäts-Check vom 2026-06-13 ergab: 0 Username↔E-Mail-Kollisionen, alle Tenant-User haben gültige E-Mail-Adressen hinterlegt) --- ## 2026-07-04 12:58 – 13:04 (6m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - a15fa37 feat(PROJ-65): Physische Tenant-Trennung im Storage-Layer (Hardlink-Ordner) ### Geänderte Dateien - cmd/archivmail/cmd_migrate_tenant_dirs.go | 53 +++++++++++++++++++++++++++++++++++ - cmd/archivmail/cmd_status.go | 25 +++++++++++++++++ - cmd/archivmail/main.go | 3 ++ - docs/GOBD_DSGVO_CHECKLIST.md | 13 ++++----- - features/INDEX.md | 2 +- - features/PROJ-65-physische-tenant-trennung.md | 254 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/storage/storage.go | 14 ++++++++++ - internal/storage/tenant_dirs.go | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-04 13:49 – 13:52 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - ebab716 docs(PROJ-66): Backup-Strategie-Spec anlegen; PROJ-65 Deployed-Status nachziehen ### Geänderte Dateien - features/INDEX.md | 5 +- - features/PROJ-65-physische-tenant-trennung.md | 113 +++++++++++++++++++++++++++++++++++++++-- - features/PROJ-66-backup-strategie.md | 459 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-04 14:06 – 14:10 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - f3a7dea feat(PROJ-66): CLI-Kommandos archivmail backup/restore ### Geänderte Dateien - cmd/archivmail/cmd_backup.go | 227 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - cmd/archivmail/cmd_import.go | 2 ++ - cmd/archivmail/cmd_restore.go | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - cmd/archivmail/main.go | 6 +++++ - deploy/cron.d/archivmail | 11 +++++++++ - features/INDEX.md | 2 +- - features/PROJ-66-backup-strategie.md | 60 ++++++++++++++++++++++++++++++++++++++++++++--- --- ## 2026-07-04 15:11 – 15:13 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 2b70895 feat(PROJ-66): Keyfile-Escrow-Hinweis bei Installation ausgeben ### Geänderte Dateien - features/PROJ-66-backup-strategie.md | 11 +++++++++++ - install.sh | 19 +++++++++++++++++++ --- ## 2026-07-04 15:14 – 15:16 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 55131de fix(PROJ-66): Build-Fehler in printHelp() + -force überschreibt keine Hardlinks ### Geänderte Dateien - cmd/archivmail/cmd_backup.go | 8 ++++++++ - cmd/archivmail/cmd_import.go | 2 +- - features/INDEX.md | 2 +- - features/PROJ-66-backup-strategie.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- --- ## 2026-07-05 18:00 – 18:01 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 3428537 fix(deploy): Manticore-Installer auf aktuelles Paketschema+Version aktualisieren ### Geänderte Dateien - install.sh | 14 +++++++++----- - update.sh | 22 +++++++++++++++++----- --- ## 2026-07-05 18:08 – 18:11 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 4e08523 feat(PROJ-67): Manticore-Upgrade-Pfad für Bestandsinstallationen ### Geänderte Dateien - features/INDEX.md | 5 +++-- - features/PROJ-67-manticore-upgrade-25-zu-27.md | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - install.sh | 33 +++++++++++++++++++++++---------- - update.sh | 41 ++++++++++++++++++++++++++++++++--------- --- ## 2026-07-05 18:12 – 18:16 (4m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - bbefa83 feat(PROJ-67): Manticore-Version dynamisch aus Repo-Packages-Datei lesen ### Geänderte Dateien - install.sh | 49 ++++++++++++++++++++++++++++++++++++------------- - update.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------- --- ## 2026-07-05 19:10 – 19:13 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 8564d7c feat: Versions-Spalte im Dienste-Tab für Superadmin ### Geänderte Dateien - internal/api/admin_services_handlers.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- - src/components/admin/tabs/ServicesTab.tsx | 4 ++++ - src/lib/api/system.ts | 1 + --- ## 2026-07-05 19:28 – 19:50 (22m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 7300a69 fix(PROJ-68): sudo-Provisionierung für Admin-Dienststeuerung ergänzen - 4af0e4a fix: Modulübersicht mit features/INDEX.md synchronisieren, Versions-Spalte ergänzen ### Geänderte Dateien - features/INDEX.md | 5 +++-- - features/PROJ-68-sudo-provisionierung-dienststeuerung.md | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - install.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ - update.sh | 34 ++++++++++++++++++++++++++++++++++ --- ## 2026-07-05 20:02 – 20:10 (8m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - af89794 fix(PROJ-68): CapabilityBoundingSet blockiert sudo trotz korrekter sudoers-Regel ### Geänderte Dateien - features/PROJ-68-sudo-provisionierung-dienststeuerung.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - install.sh | 9 ++++++++- - update.sh | 9 ++++++++- --- ## 2026-07-05 20:17 – 20:18 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - e19f2e5 chore: AppVersion auf 1.0.0 anheben ### Geänderte Dateien - cmd/archivmail/version.go | 26 +++++++++++++------------- --- ## 2026-07-05 21:10 – 21:12 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 4eba165 docs(PROJ-66): Backup & Restore Runbook schreiben ### Geänderte Dateien - docs/BACKUP_RESTORE_RUNBOOK.md | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - features/PROJ-66-backup-strategie.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- --- ## 2026-07-06 11:47 – 11:47 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 8bd02fa docs(PROJ-67,PROJ-68): Deployment-Status auf Deployed setzen ### Geänderte Dateien - DEVLOG.md | 829 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - features/INDEX.md | 2 +- - features/PROJ-67-manticore-upgrade-25-zu-27.md | 157 +++++++++++++++- - features/PROJ-68-sudo-provisionierung-dienststeuerung.md | 111 ++++++++++- --- ## 2026-07-06 12:08 – 12:08 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 3b2a838 feat(PROJ-69): Admin-Dashboard Tab-Gruppierung (2-Ebenen-Navigation) ### Geänderte Dateien - DEVLOG.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - features/INDEX.md | 3 ++- - src/app/admin/page.tsx | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------- --- ## 2026-07-06 12:15 – 13:30 (1h 15m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - e0b0c6d fix: Registrieren-Link auf Startseite entfernen ### Geänderte Dateien - src/app/page.tsx | 3 --- --- ## 2026-07-07 00:25 – 00:43 (18m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - ba0c519 docs(PROJ-70): Implementation Notes für Frontend ergänzen - 4b3a4ef feat(PROJ-70): Frontend für IMAP-Rückholung (Opt-in + Restore-Button) - c00bf27 docs(PROJ-70): Feature-Spec-Datei nachtragen (versehentlich nicht committed) - da79a56 feat(PROJ-70): Self-Service IMAP-Rückholung (Backend) - 7aa63e3 docs(PROJ-70): Feature-Spec IMAP-Rückholung anlegen ### Geänderte Dateien - features/PROJ-70-imap-rueckholung-self-service.md | 26 ++++++++++++++++++++++---- --- ## 2026-07-07 01:22 – 01:27 (4m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 28565f0 docs(PROJ-69,PROJ-70): Deployment-Status auf Deployed setzen ### Geänderte Dateien - features/INDEX.md | 4 ++-- - features/PROJ-69-admin-tabs-gruppierung.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - features/PROJ-70-imap-rueckholung-self-service.md | 25 +++++++++++++++++++------ --- ## 2026-07-07 01:41 – 01:42 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - e221fcf docs(PROJ-70): Message-ID-Erhalt als Acceptance Criterion festhalten ### Geänderte Dateien - features/PROJ-70-imap-rueckholung-self-service.md | 9 +++++++++ --- ## 2026-07-08 11:42 – 11:43 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 9db5eaa feat(PROJ-71): TLS-Pflicht (optional) für eingehenden SMTP-BCC-Kanal ### Geänderte Dateien - config/config.go | 1 + - features/INDEX.md | 3 ++- - features/PROJ-71-smtp-require-tls.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ - internal/smtpd/smtpd.go | 16 +++++++++++++++- - src/components/admin/tabs/AuditTab.tsx | 21 +++++++++++++++++++-- --- ## 2026-07-26 21:50 – 21:52 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - c580a7c fix(PROJ-72): Superadmin kann Passwort/Rolle von Superadmin-Peers nicht ändern ### Geänderte Dateien - internal/api/admin_users_handlers.go | 19 +++++++++++-------- --- ## 2026-07-27 00:04 – 00:08 (4m) **Beschreibung:** Claude Code Session **Projekt:** spesenapp ### Commits - 2e952f1 docs(PROJ-72): Feature-Spec nachtragen + Audit-Log-Härtung für abgelehnte Privilege-Checks ### Geänderte Dateien - features/INDEX.md | 3 ++- - features/PROJ-72-fix-superadmin-peer-patch.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/admin_users_handlers.go | 32 ++++++++++++++++++++++++++++++++ - src/data/features.ts | 1 + --- ## 2026-07-30 23:02 – 23:02 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 5416e7d fix(agents): Deploy-Reihenfolge 132-vor-131 in Subagent-Defs + kaputtes sub-frist Frontmatter ### Geänderte Dateien - .claude/agents/db-migrator.md | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - .claude/agents/devops-deploy.md | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - .claude/agents/mailarchiv-architect.md | 2 +- - .claude/agents/sub-frist.md | 248 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-30 23:03 – 23:03 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 415ac61 docs: DEVLOG aktualisieren ### Geänderte Dateien - DEVLOG.md | 679 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-31 12:36 – 12:36 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 679 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --- ## 2026-07-31 12:36 – 12:36 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 0fa4fad chore: leere DEVLOG-Sessioneinträge entfernen ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-07-31 12:57 – 12:57 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-07-31 12:59 – 12:59 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-07-31 14:19 – 14:20 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-07-31 14:20 – 14:20 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-07-31 14:22 – 14:22 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:38 – 12:38 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:40 – 12:40 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:44 – 12:44 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:45 – 12:45 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:46 – 12:46 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:48 – 12:48 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 12:49 – 12:49 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:26 – 13:26 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:27 – 13:27 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:29 – 13:29 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:30 – 13:31 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:31 – 13:32 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:32 – 13:33 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - DEVLOG.md | 9695 ++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- --- ## 2026-08-05 13:35 – 13:39 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 798cb28 fix: Crash-Robustheit + Performance in Backend und Frontend härten ### Geänderte Dateien - cmd/archivmail/cmd_import.go | 6 +++++- - cmd/archivmail/main.go | 21 ++++++++++++++------- - internal/api/imap_handlers.go | 5 ++++- - internal/api/invite_handlers.go | 8 +++++--- - internal/api/onboarding_handlers.go | 16 +++++++++------- - internal/api/pop3_handlers.go | 5 ++++- - internal/api/upload.go | 18 +++++++++++++++--- - internal/auth/apikey_middleware.go | 10 +++++++++- - internal/imap/scheduler.go | 15 ++++++++++++--- - internal/imapserver/server.go | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------- - internal/index/tenant_worker.go | 14 ++++++++++++++ - internal/index/worker.go | 24 ++++++++++++++++++------ - internal/ocr/worker.go | 14 ++++++++++++++ - internal/safego/safego.go | 32 ++++++++++++++++++++++++++++++++ - internal/smtpd/smtpd.go | 18 +++++++++++++++++- - pkg/mailparser/mbox.go | 44 ++++++++++++++++++++++++++++++++++++-------- - pkg/mailparser/parser.go | 41 +++++++++++++++++++++++++++++++++++------ - src/app/admin/upload/page.tsx | 4 +++- - src/app/error.tsx | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - src/app/mail/[id]/error.tsx | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/mail/[id]/page.tsx | 14 ++++++++++---- - src/app/not-found.tsx | 23 +++++++++++++++++++++++ - src/app/pop3/page.tsx | 2 +- - src/components/admin/tabs/ArchivingRulesTab.tsx | 6 +++--- - src/components/admin/tabs/DashboardTab.tsx | 8 ++++---- - src/components/admin/tabs/ReconciliationCard.tsx | 10 ++++++---- - src/components/admin/tabs/RoutingRulesTab.tsx | 4 ++-- - src/components/admin/tabs/SecurityTab.tsx | 15 ++++++++++----- - src/components/mail/RestoreMailButton.tsx | 5 +++-- - src/components/search/SearchFilterBar.tsx | 2 +- - src/components/search/SearchResultsTable.tsx | 2 +- - src/hooks/useAdminDashboard.ts | 6 +++++- - src/hooks/useImapAccounts.ts | 2 +- - src/hooks/useSavedSearches.ts | 26 ++++++++++++++------------ - src/lib/api/core.ts | 10 +++++++++- --- ## 2026-08-05 13:46 – 13:46 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - cmd/archivmail/cmd_import.go | 6 +++++- - cmd/archivmail/main.go | 21 ++++++++++++++------- - internal/api/imap_handlers.go | 5 ++++- - internal/api/invite_handlers.go | 8 +++++--- - internal/api/onboarding_handlers.go | 16 +++++++++------- - internal/api/pop3_handlers.go | 5 ++++- - internal/api/upload.go | 18 +++++++++++++++--- - internal/auth/apikey_middleware.go | 10 +++++++++- - internal/imap/scheduler.go | 15 ++++++++++++--- - internal/imapserver/server.go | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------- - internal/index/tenant_worker.go | 14 ++++++++++++++ - internal/index/worker.go | 24 ++++++++++++++++++------ - internal/ocr/worker.go | 14 ++++++++++++++ - internal/safego/safego.go | 32 ++++++++++++++++++++++++++++++++ - internal/smtpd/smtpd.go | 18 +++++++++++++++++- - pkg/mailparser/mbox.go | 44 ++++++++++++++++++++++++++++++++++++-------- - pkg/mailparser/parser.go | 41 +++++++++++++++++++++++++++++++++++------ - src/app/admin/upload/page.tsx | 4 +++- - src/app/error.tsx | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - src/app/mail/[id]/error.tsx | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/mail/[id]/page.tsx | 14 ++++++++++---- - src/app/not-found.tsx | 23 +++++++++++++++++++++++ - src/app/pop3/page.tsx | 2 +- - src/components/admin/tabs/ArchivingRulesTab.tsx | 6 +++--- - src/components/admin/tabs/DashboardTab.tsx | 8 ++++---- - src/components/admin/tabs/ReconciliationCard.tsx | 10 ++++++---- - src/components/admin/tabs/RoutingRulesTab.tsx | 4 ++-- - src/components/admin/tabs/SecurityTab.tsx | 15 ++++++++++----- - src/components/mail/RestoreMailButton.tsx | 5 +++-- - src/components/search/SearchFilterBar.tsx | 2 +- - src/components/search/SearchResultsTable.tsx | 2 +- - src/hooks/useAdminDashboard.ts | 6 +++++- - src/hooks/useImapAccounts.ts | 2 +- - src/hooks/useSavedSearches.ts | 26 ++++++++++++++------------ - src/lib/api/core.ts | 10 +++++++++- --- ## 2026-08-05 13:48 – 13:50 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 88cdc3e fix(PROJ-73): Upload-Job-Status bei Panic + nil-Guards nach GetByUsername ### Geänderte Dateien - features/INDEX.md | 8 +++++++- - features/PROJ-73-restliche-crash-haertung.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/auth_handlers.go | 2 +- - internal/api/ediscovery.go | 2 +- - internal/api/export.go | 4 ++-- - internal/api/ocr_handlers.go | 2 +- - internal/api/profile_handlers.go | 6 +++--- - internal/api/restore_handlers.go | 4 ++-- - internal/api/search_handlers.go | 4 ++-- - internal/api/smtpout_handlers.go | 2 +- - internal/api/upload.go | 15 +++++++++++++++ --- ## 2026-08-05 13:51 – 13:58 (6m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 8 +++++++- - features/PROJ-73-restliche-crash-haertung.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/auth_handlers.go | 2 +- - internal/api/ediscovery.go | 2 +- - internal/api/export.go | 4 ++-- - internal/api/ocr_handlers.go | 2 +- - internal/api/profile_handlers.go | 6 +++--- - internal/api/restore_handlers.go | 4 ++-- - internal/api/search_handlers.go | 4 ++-- - internal/api/smtpout_handlers.go | 2 +- - internal/api/upload.go | 15 +++++++++++++++ --- ## 2026-08-05 14:01 – 14:05 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 8 +++++++- - features/PROJ-73-restliche-crash-haertung.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/auth_handlers.go | 2 +- - internal/api/ediscovery.go | 2 +- - internal/api/export.go | 4 ++-- - internal/api/ocr_handlers.go | 2 +- - internal/api/profile_handlers.go | 6 +++--- - internal/api/restore_handlers.go | 4 ++-- - internal/api/search_handlers.go | 4 ++-- - internal/api/smtpout_handlers.go | 2 +- - internal/api/upload.go | 15 +++++++++++++++ --- ## 2026-08-05 14:07 – 14:07 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 075afa0 fix(PROJ-74): Test-/Vet-Signatur-Drift beheben, go build/vet/test wieder grün ### Geänderte Dateien - cmd/archivmail-export/main.go | 8 +++++++- - features/INDEX.md | 2 +- - features/PROJ-73-restliche-crash-haertung.md | 2 ++ - features/PROJ-74-test-suite-signatur-drift.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/api_test.go | 16 +++++++++------ - internal/audit/audit_test.go | 9 ++++---- - internal/auth/auth_test.go | 47 +++++++++++++++++++++++++++++++++++++++--- - internal/storage/storage.go | 7 +++---- - internal/storage/storage_test.go | 21 ++++++++++--------- - internal/userstore/userstore_test.go | 4 ++-- - pkg/mailparser/parser_test.go | 11 +++++++--- --- ## 2026-08-05 14:10 – 14:12 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - cmd/archivmail-export/main.go | 8 +++++++- - features/INDEX.md | 2 +- - features/PROJ-73-restliche-crash-haertung.md | 2 ++ - features/PROJ-74-test-suite-signatur-drift.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/api_test.go | 16 +++++++++------ - internal/audit/audit_test.go | 9 ++++---- - internal/auth/auth_test.go | 47 +++++++++++++++++++++++++++++++++++++++--- - internal/storage/storage.go | 7 +++---- - internal/storage/storage_test.go | 21 ++++++++++--------- - internal/userstore/userstore_test.go | 4 ++-- - pkg/mailparser/parser_test.go | 11 +++++++--- --- ## 2026-08-05 14:15 – 14:18 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - cmd/archivmail-export/main.go | 8 +++++++- - features/INDEX.md | 2 +- - features/PROJ-73-restliche-crash-haertung.md | 2 ++ - features/PROJ-74-test-suite-signatur-drift.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/api/api_test.go | 16 +++++++++------ - internal/audit/audit_test.go | 9 ++++---- - internal/auth/auth_test.go | 47 +++++++++++++++++++++++++++++++++++++++--- - internal/storage/storage.go | 7 +++---- - internal/storage/storage_test.go | 21 ++++++++++--------- - internal/userstore/userstore_test.go | 4 ++-- - pkg/mailparser/parser_test.go | 11 +++++++--- --- ## 2026-08-05 14:53 – 14:55 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - c753528 perf(PROJ-75): Partial Index gegen Seq-Scan in GetUnindexedMails ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-74-test-suite-signatur-drift.md | 2 ++ - features/PROJ-75-db-performance-audit.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/storage/storage.go | 3 ++ --- ## 2026-08-05 14:57 – 15:00 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-74-test-suite-signatur-drift.md | 2 ++ - features/PROJ-75-db-performance-audit.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/storage/storage.go | 3 ++ --- ## 2026-08-05 15:00 – 15:01 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-74-test-suite-signatur-drift.md | 2 ++ - features/PROJ-75-db-performance-audit.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/storage/storage.go | 3 ++ --- ## 2026-08-05 15:02 – 15:02 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-74-test-suite-signatur-drift.md | 2 ++ - features/PROJ-75-db-performance-audit.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/storage/storage.go | 3 ++ --- ## 2026-08-05 15:03 – 15:04 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-74-test-suite-signatur-drift.md | 2 ++ - features/PROJ-75-db-performance-audit.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - internal/storage/storage.go | 3 ++ --- ## 2026-08-05 15:05 – 15:05 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - e59b117 perf(PROJ-77): Admin-Tabs per next/dynamic laden statt statisch importieren - 209fdeb fix(PROJ-76): Mail-HTML-Sanitizing schließt CSS-url()/link/background/srcset ein ### Geänderte Dateien - features/PROJ-77-admin-tabs-dynamic-import.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/admin/page.tsx | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------- - src/components/admin/TabSkeleton.tsx | 22 ++++++++++++++++++++++ --- ## 2026-08-05 15:05 – 15:07 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/PROJ-77-admin-tabs-dynamic-import.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/admin/page.tsx | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------- - src/components/admin/TabSkeleton.tsx | 22 ++++++++++++++++++++++ --- ## 2026-08-05 15:11 – 15:11 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 16bf388 perf(PROJ-78): Suchfeld-Debounce + stabile Callbacks gegen Re-Render-Spam ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 15:21 – 15:23 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 16:40 – 16:43 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 16:47 – 16:47 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 16:47 – 16:47 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 17:08 – 17:08 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 17:08 – 17:24 (15m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 2 +- - features/PROJ-78-search-results-rerender-perf.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/app/search/page.tsx | 2 +- - src/components/search/SearchFilterBar.tsx | 38 +++++++++++++++++++++++++++++++++++--- - src/components/search/SearchResultsTable.tsx | 7 ++++++- - src/hooks/useSearch.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- --- ## 2026-08-05 17:34 – 17:37 (2m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - a2e45b9 chore(PROJ-79): lucide-react Major-Upgrade + npm audit fix + Deploy-Warn-Gate ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 17:39 – 17:39 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 20:45 – 20:45 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 20:46 – 20:46 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 20:48 – 20:48 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 20:51 – 20:51 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 20:51 – 20:54 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/INDEX.md | 3 +- - features/PROJ-79-dependency-major-upgrades.md | 108 ++++++++++++++++++++ - package-lock.json | 651 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- - package.json | 2 +- - update.sh | 5 + --- ## 2026-08-05 20:55 – 21:14 (18m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - d1b4497 fix(PROJ-79): next lint kaputt seit Next-16-Upgrade repariert + 30 Findings gefixt ### Geänderte Dateien - .eslintrc.json | 3 - - eslint.config.mjs | 17 ++ - features/INDEX.md | 12 +- - features/PROJ-73-restliche-crash-haertung.md | 4 +- - features/PROJ-74-test-suite-signatur-drift.md | 4 +- - features/PROJ-75-db-performance-audit.md | 8 +- - features/PROJ-76-mail-html-sanitizing-luecken.md | 4 +- - features/PROJ-77-admin-tabs-dynamic-import.md | 4 +- - features/PROJ-78-search-results-rerender-perf.md | 4 +- - features/PROJ-79-dependency-major-upgrades.md | 160 +++++++++++++++++++ - package-lock.json | 969 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------- - package.json | 6 +- - src/app/admin/login/page.tsx | 5 +- - src/app/forgot-password/page.tsx | 5 +- - src/app/mail/[id]/page.tsx | 1 - - src/app/pop3/page.tsx | 13 +- - src/app/reset-password/page.tsx | 10 +- - src/app/search/page.tsx | 11 +- - src/app/signup/page.tsx | 15 +- - src/app/verify/page.tsx | 25 ++- - src/components/admin/TenantLDAPDialog.tsx | 5 +- - src/components/admin/tabs/ArchivingRulesTab.tsx | 5 +- - src/components/admin/tabs/DSGVOTab.tsx | 5 +- - src/components/admin/tabs/QuotaTab.tsx | 7 +- - src/components/admin/tabs/ReconciliationCard.tsx | 5 +- - src/components/admin/tabs/RetentionTab.tsx | 7 +- - src/components/admin/tabs/RoutingRulesTab.tsx | 5 +- - src/components/admin/tabs/SMTPOutTab.tsx | 7 +- - src/components/settings/TotpSection.tsx | 1 + - src/components/ui/sidebar.tsx | 1 + - src/hooks/use-mobile.tsx | 32 ++-- - src/hooks/useAdminDashboard.ts | 9 +- - src/hooks/useAuth.ts | 5 +- - src/hooks/useImapAccounts.ts | 6 +- - src/hooks/useSavedSearches.ts | 25 ++- - src/hooks/useSearch.ts | 51 ++++-- - src/hooks/useSystemInfo.ts | 3 +- --- ## 2026-08-05 21:19 – 21:23 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - .eslintrc.json | 3 - - eslint.config.mjs | 17 ++ - features/INDEX.md | 12 +- - features/PROJ-73-restliche-crash-haertung.md | 4 +- - features/PROJ-74-test-suite-signatur-drift.md | 4 +- - features/PROJ-75-db-performance-audit.md | 8 +- - features/PROJ-76-mail-html-sanitizing-luecken.md | 4 +- - features/PROJ-77-admin-tabs-dynamic-import.md | 4 +- - features/PROJ-78-search-results-rerender-perf.md | 4 +- - features/PROJ-79-dependency-major-upgrades.md | 160 +++++++++++++++++++ - package-lock.json | 969 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------- - package.json | 6 +- - src/app/admin/login/page.tsx | 5 +- - src/app/forgot-password/page.tsx | 5 +- - src/app/mail/[id]/page.tsx | 1 - - src/app/pop3/page.tsx | 13 +- - src/app/reset-password/page.tsx | 10 +- - src/app/search/page.tsx | 11 +- - src/app/signup/page.tsx | 15 +- - src/app/verify/page.tsx | 25 ++- - src/components/admin/TenantLDAPDialog.tsx | 5 +- - src/components/admin/tabs/ArchivingRulesTab.tsx | 5 +- - src/components/admin/tabs/DSGVOTab.tsx | 5 +- - src/components/admin/tabs/QuotaTab.tsx | 7 +- - src/components/admin/tabs/ReconciliationCard.tsx | 5 +- - src/components/admin/tabs/RetentionTab.tsx | 7 +- - src/components/admin/tabs/RoutingRulesTab.tsx | 5 +- - src/components/admin/tabs/SMTPOutTab.tsx | 7 +- - src/components/settings/TotpSection.tsx | 1 + - src/components/ui/sidebar.tsx | 1 + - src/hooks/use-mobile.tsx | 32 ++-- - src/hooks/useAdminDashboard.ts | 9 +- - src/hooks/useAuth.ts | 5 +- - src/hooks/useImapAccounts.ts | 6 +- - src/hooks/useSavedSearches.ts | 25 ++- - src/hooks/useSearch.ts | 51 ++++-- - src/hooks/useSystemInfo.ts | 3 +- --- ## 2026-08-05 21:28 – 21:36 (8m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - edf6f43 fix: Cert-Renewal-Handler kann /etc/ssl/archivmail nicht beschreiben (systemd-Sandbox) ### Geänderte Dateien - features/PROJ-79-dependency-major-upgrades.md | 8 +++++++- - update.sh | 4 ++-- --- ## 2026-08-05 21:36 – 21:41 (4m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - features/PROJ-79-dependency-major-upgrades.md | 8 +++++++- - update.sh | 4 ++-- --- ## 2026-08-05 21:44 – 21:46 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits - 5c3d38a fix(security): Tracking-Pixel-Blocker lässt Backslash-Varianten von https:// durch ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 21:53 – 21:54 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 21:57 – 21:57 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 21:58 – 21:59 (1m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 22:01 – 22:02 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 22:02 – 22:03 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 22:05 – 22:05 (0m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-05 22:08 – 22:12 (3m) **Beschreibung:** Claude Code Session **Projekt:** archivmail ### Commits Keine Commits in dieser Session. ### Geänderte Dateien - src/app/mail/[id]/page.tsx | 6 +++++- --- ## 2026-08-06 12:15 – 14:44 **Beschreibung:** Claude Code Session – PROJ-79 abgeschlossen (Frontend-Dependency-Major-Upgrades) **Projekt:** archivmail ### Commits - fa8c5dd chore(PROJ-79): @types/node Patch-Update auf ^20.19.43 - 824b24f feat(PROJ-79): tailwindcss v3 -> v4 + tailwind-merge v3 Upgrade - 61c004c docs(PROJ-79): tailwindcss-v4-Deploy auf 132+131 dokumentiert - 4d25b11 feat(PROJ-79): typescript 5 -> 6.0.3, PROJ-79 abgeschlossen ### Zusammenfassung - `@types/node`: Node-Version auf 131/132 verifiziert (v20.19.2, identisch) – kein Sprung auf ^26, nur Patch-Update ^20.19.43. - `tailwindcss` v3→v4 + `tailwind-merge` v3 (gekoppelt) via offiziellem Migrationstool. Codemod-Bug gefunden und gefixt (`variant="outline"` fälschlich zu `outline-solid` umbenannt). Neue Lint-Regel gegen `*-opacity-*`-Utilities ergänzt. Visueller Regressionstest via HTTP/HTML-Sanity-Check (kein Browser-Tool verfügbar). - `eslint` 10 und `typescript` 7 getestet, beide an Ökosystem-Blockern gescheitert (`eslint-plugin-react` bzw. `typescript-eslint` unterstützen die neuen Majors noch nicht) – dokumentiert zurückgestellt, `typescript` auf 6.0.3 angehoben (Zwischenschritt). - Alle Schritte einzeln auf 132 verifiziert, dann auf 131 deployed. Beide Server grün, Health-Checks ok. - PROJ-79 Status auf Deployed gesetzt (features/INDEX.md, Feature-Spec). ---