Commit graph

29 commits

Author SHA1 Message Date
DonVoo
9f5cc59af7 Stabilize mail identity: canonical hash, index drift, HTML panic
Behebt drei Fehler derselben Klasse: an jeder Stelle wurde derselbe Wert
zweimal berechnet, statt einmal berechnet und weitergereicht - und die
beiden Berechnungen liefen auseinander.

1. Instabiler Ersatzschluessel (bug-hashkey-instabil.md)
   Mails ohne Message-ID bekamen sha256 ueber die IMAP-Rohbytes, der
   Reindex hashte dieselbe Mail ueber die mbox-gespeicherten Bytes
   (>From-Quoting, andere Zeilenenden) -> zwei Schluessel, 4.024
   Doppel-Eintraege in copied.
   Fix: canonicalMessageBytes() bringt beide Seiten auf eine Form
   (>From zurueckdrehen, CRLF->LF, Trailing-Newlines weg). Alle Pfade
   (Index, Migration, Viewer, Dedup) nutzen dieselbe Funktion.
   body_sha256 in copied + mbox_index, UNIQUE erweitert.

2. Index-Drift (bug-index-drift.md)
   Der plain-mbox-Reader las nach Datei-Position statt nach dem
   gespeicherten file_offset. Weil SQLITE_BUSY (busy_timeout=0) je
   Ordner einen Index-Eintrag verschluckt hatte, war ab dieser Luecke
   alles um 1 verschoben: Klick auf Mail X zeigte Mail X+1.
   Betroffen genau die 6 Ordner mit Busy-Fehler beim Rettungslauf.
   Fix: busy_timeout=10000, Lesen ueber file_offset, --reindex --rebuild.

3. HTML-Vorschau-Panic (bug-htmltotext-panic.md)
   replaceCaseInsensitive/stripHTMLBlock indizierten mit Offsets aus
   strings.ToLower(s) in s - ToLower ist nicht byte-laengen-erhaltend
   (z.B. U+0130). ~0,1% der Mails brachten die Vorschau zum Absturz.
   Fix: asciiFoldIndex() sucht direkt auf den Original-Bytes; zusaetzlich
   Rohtext-Fallback, damit keine archivierte Mail unsichtbar wird.

Weiter: Archiv-zuerst-Reihenfolge (mbox_done/target_done) - ein
sterbendes Ziel kostet keine Archiv-Kopie mehr; Dedup vergleicht
zusaetzlich den Inhalt und schuetzt byte-verschiedene Varianten.

WICHTIG: Die 62.073 alten Alias-Zeilen in copied bleiben bewusst
erhalten. Sie sehen wie Muell aus, sind aber die Zeilen, auf die der
alte Schluessel matcht - ein Loeschen wuerde Mails erneut in fremde
Postfaecher kopieren.

Verifiziert: go test ./... gruen; 58.051 Archivmails, 0 ohne
copied-Zeile; Drift 0 ueber alle 69 Ordner; 2.000 HTTP-Stichproben
ueber 8 Ordner: 0 falsche Zuordnung, 0 Panics; Watcher 220 + 60 Mails
archived=0 target=0 errors=0. Live als Image fix-identity2-20260716.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 13:22:27 +02:00
DonVoo
e63a513cff Fix mailbox UI sorting and target layout 2026-07-15 00:14:54 +02:00
DonVoo
e612896e06 Add optional zstd mbox archives 2026-07-14 20:20:30 +02:00
DonVoo
a17d2c8a2c Use header-only IMAP lists 2026-07-14 18:23:31 +02:00
DonVoo
21aa6e39e1 Document review fixes and harden mail actions 2026-07-14 05:22:26 +02:00
DonVoo
dee6dd8cd8 Add modal mail preview 2026-07-13 09:39:29 +02:00
DonVoo
31419696df Simplify archive preview header 2026-07-13 07:58:35 +02:00
DonVoo
8d2838aea7 Decouple archive mailboxes from accounts 2026-07-13 02:28:38 +02:00
DonVoo
0bb49019b6 Show current user in top bar 2026-07-13 02:04:50 +02:00
DonVoo
cff776dc8c Add archive mailbox selector 2026-07-12 17:18:56 +02:00
DonVoo
422308e7e6 Show archive folder counts 2026-07-12 17:06:58 +02:00
DonVoo
07d8ab257f Use icon for pane toggle 2026-07-06 15:24:36 +02:00
DonVoo
fa9edca3bd Move pane toggle buttons beside dropdowns 2026-07-06 15:12:55 +02:00
DonVoo
d2f0383796 Enable initial target pane toggle 2026-07-06 15:01:47 +02:00
DonVoo
771e1a6fc0 Show pane selector on initial viewer 2026-07-06 14:55:23 +02:00
DonVoo
8dae098659 Add source and target pane selectors 2026-07-06 14:45:08 +02:00
DonVoo
a4eee37ab9 Add manual target drag and drop 2026-07-06 11:02:29 +02:00
DonVoo
ffa28f6182 Read target mailbox for audit pane 2026-07-06 07:41:41 +02:00
DonVoo
cc15771262 Label left tree as source mbox 2026-07-06 06:58:25 +02:00
DonVoo
3849cc75cc Use neutral original labels in viewer 2026-07-06 06:34:21 +02:00
DonVoo
cebb6e6ab2 Use source labels in viewer requests 2026-07-06 00:14:13 +02:00
DonVoo
c771db0d94 Hide internal account names from viewer links 2026-07-06 00:08:27 +02:00
DonVoo
2467437c5c Show source label in message list header 2026-07-06 00:07:16 +02:00
DonVoo
167ba9577d Separate original and target account choices 2026-07-06 00:02:44 +02:00
DonVoo
f455da54af Show target dropdown before message selection 2026-07-05 23:53:12 +02:00
DonVoo
d69e7afa82 Move target account selection to target pane 2026-07-05 23:44:53 +02:00
DonVoo
c5d761db98 Add viewer search and dual pane 2026-07-05 23:24:00 +02:00
DonVoo
955c1e0f92 Add mbox viewer panes 2026-07-05 21:45:15 +02:00
DonVoo
91e52aecd0 Initial Email-Forwarder scaffold 2026-07-05 17:58:25 +02:00