The activity projector counts messages that were never sent as contact with a person. An email draft you started to someone, or a text that sat in your phone's outbox, becomes that person's last contact, and it feeds their cadence and relationship temperature too. So someone you haven't actually written to in months can look like you talked yesterday.
The projector should skip unsent messages when it decides which messages count as activity: email with a Drafts label or draft record and no Sent label or saved IMAP Sent origin, and anything an importer flags messages.is_sent = FALSE. Messages already projected from drafts should drop out of contact state after the upgrade, without a full re-import.
Reproduction on main (b62d75ded):
- Archive a received email from Alice on July 1.
- Archive an email from you to Alice on July 20 that carries a Drafts label (or whose row has
is_sent = FALSE). - Run the activity projector.
- Alice's last contact is the July 20 draft. It should be the July 1 email.
SMS drafts, outbox, queued, and failed texts get the same treatment once the Synctech import marks them unsent, which https://github.com/kenn-io/msgvault/pull/1344 adds. Until then the importer stores those texts as sent, so the projector has no marker to read for them.
Delivery:
- The activity projector skips unsent messages, so last contact and cadence come only from sent or received mail. PR: https://github.com/kenn-io/msgvault/pull/1394 PR: https://github.com/kenn-io/msgvault/pull/1405 PR: https://github.com/kenn-io/msgvault/pull/1408 PR: https://github.com/kenn-io/msgvault/pull/1409
- The analytics cache skips them too, so relationship temperature, the relationship calendar, and the relationships list match. PR: https://github.com/kenn-io/msgvault/pull/1398
Activity
0No activity yet.