Development - #768
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughInbound and imported messages now use a unified thread resolver. ChangesInbound threading
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant SMTPClient
participant InboundMTA
participant MessageCreation
participant ThreadResolver
participant Mailbox
SMTPClient->>InboundMTA: deliver email
InboundMTA->>MessageCreation: parse inbound message
MessageCreation->>ThreadResolver: find_thread_for_message
ThreadResolver->>Mailbox: query In-Reply-To and References parents
Mailbox-->>ThreadResolver: matching parent messages
ThreadResolver-->>MessageCreation: matching thread or None
MessageCreation-->>InboundMTA: create message in selected thread
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
A reply carrying In-Reply-To to a message we already hold was still rejected when its subject differed, because the delivery path required both a reference match and an identical canonical subject. A subject edited mid-conversation therefore started a brand new thread. The import path had its own laxer rule (message-ids only), so the very same conversation was grouped differently depending on whether it was imported or received over SMTP. Both paths now share find_thread_for_message: In-Reply-To is trusted on its own (RFC 8621 §3 only allows splitting on subject, never requires it), while References — which some clients recycle to start unrelated topics — still needs a matching canonical subject. The canonicalization also accepts "Re:subject" with no space, common on mobile clients.
Currently when a user paste content into the composer, if this one has text or background color, this is preserved as is then export into the output. Now only color supported by blocknote are preserved and exported. We also apply this sanitization to table elements. Furthermore, we also drop unsupported blocks (file, audio, video) and fix a bug that prevent to embed external images.
Use the new preview_text method of jmap_email to generate clean snippet for thread (denormalized at update_stats) and message (at serialization). Now when a mesage is folded, we display this snippet. In the thread list we also display this snippet above the subject.
Put app name as suffix not prefix of the page title. Align all document title accross the app. Mailbox Name - Folder Name - App Name
Do not fetch stats for sent folder.
Purpose
Intermediate branch
Summary by CodeRabbit
In-Reply-Toheaders now remain in the original conversation even when the subject changes.Referencesare matched more accurately, preventing unrelated messages from being grouped together.