ea036f49a66f2183d390425c81fff0f4ffc60b86
insert_email's recipients loop did `for a in parsed.get(kind, [])`, but the parser sets reply_to=None when there is no Reply-To header, so .get returns None (key present) and the loop raised 'NoneType' object is not iterable — aborting the entire Gmail backfill on the first such email (i.e. almost immediately). Fixed with `or []`. Regression test test_insert_email.py (reply_to=None, all-None recipients, happy path). Because the scheduler intentionally skips error-status accounts (no retry storms), an errored mailbox would never resume on its own. "Sync now" now clears error status first, so it is an explicit retry; backfill resumes from its saved cursor and dedups by Message-ID, so nothing is re-captured. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
email: fix backfill crash on emails with no Reply-To; Sync now retries errored mailboxes (v0.1.0:62)
email: fix backfill crash on emails with no Reply-To; Sync now retries errored mailboxes (v0.1.0:62)
Description
No description provided
Languages
Python
55.4%
HTML
36.3%
TypeScript
6.5%
Shell
0.8%
JavaScript
0.4%
Other
0.6%