Files
pl_mail/migrations
Paul LütznerandClaude Opus 5.5 72d3956b0d Keep every Gmail message in the mailbox it is in, Spam and Trash included
`app:gmail:skipped` on a real mailbox (#90) showed what the ownership
filter was dropping: the account owner's own mail.

  202  sent from "send mail as" addresses (From: pl@pmdevelopment.de)
   89  forwarded in from an address not connected here
   43  Gmail drafts
   14  received, with no recipient header naming anyone
    4  addressed to the googlemail.com spelling of the account
    6  chats

resolveOwningAccount() kept a message only when its headers named the
account. It now keeps one for the account unless another connected
account has the better claim (a Gmailify sibling named in its headers):

  SENT or DRAFT   the sibling the From names, else this account
  received        resolveReceivedAccount()'s answer, else this account;
                  with Gmailify attribution switched off, still only mail
                  addressed to this account
  CHAT            nobody, and recorded as before

GmailAddressFilter reads googlemail.com as gmail.com.

The listing never asked for Spam and Trash although its comment said
it did: messages.list leaves both out without includeSpamTrash, and
getProfile's messagesTotal, the import's total, counts them. How much
of the 11,200 that mailbox was short of this accounts for is not known
yet: its import was still running when it was counted.

A finished import does not list again, so the migration clears the
record of declined messages (chats aside) and every Gmail account's
backfill markers. Each lists its mailbox once more, fetching only what
it does not hold.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 08:54:12 +02:00
..
2026-07-14 12:02:21 +02:00
2026-07-16 12:59:19 +02:00
2026-07-17 10:34:32 +02:00
2026-07-17 12:47:20 +02:00
2026-07-17 18:19:47 +02:00
2026-07-17 18:19:47 +02:00
2026-07-19 20:38:41 +02:00
2026-07-19 20:38:41 +02:00
2026-07-20 10:56:25 +02:00
2026-07-20 10:56:25 +02:00
2026-07-21 13:40:57 +02:00
2026-07-23 13:53:37 +02:00
2026-07-23 14:17:49 +02:00
2026-07-24 13:56:18 +02:00
2026-07-24 13:56:18 +02:00
2026-07-24 22:26:19 +02:00
2026-07-25 10:47:50 +02:00
2026-07-25 10:47:50 +02:00
2026-07-26 10:58:31 +02:00
2026-07-27 12:15:24 +02:00
2026-07-27 13:10:36 +02:00
2026-07-27 13:10:36 +02:00
2026-07-28 00:26:47 +02:00
2026-07-28 12:33:46 +02:00
2026-07-28 13:37:30 +02:00
2026-07-28 22:25:00 +02:00
2fa
2026-07-31 07:18:26 +02:00