The IMAP parser only extracted Message-ID, so In-Reply-To / References
were never persisted and threadId stayed empty -> conversations never
grouped with real data (verified: 162/162 empty in user's DB).
- ParsedMimeMessage: add inReplyTo + references fields
- MimeStorage::parseMessage: extract In-Reply-To and References headers
- ImapSynchronizer parseFetchResponseBytes: propagate inReplyTo/references,
compute + persist threadId at ingest time (ThreadUtils::extractThreadId)
- MimeStorage::storeMessage: propagate the same headers on MailItem
- scripts/rethread.py: migrate existing DBs by re-reading .eml files
(recovered In-Reply-To/References from raw MIME and recomputed threadId:
149/162 grouped, incl. Nacho x6, Bitar x4, Mariel x3, etc.)
Verified against user's real DB copy.