Repository navigation
DankMail v0.3.4 — Gmail quota and OAuth recovery
Gmail synchronization now paces requests by quota cost and retries temporary limits at the failing read instead of restarting the whole import. Large initial or overdue syncs can take several minutes while staying within the local budget.
- Use a shared per-account budget of 2,400 quota units/minute, leaving room below Gmail's 6,000-unit limit for another desktop.
- Retry quota-specific 403/429 and selected server errors with bounded backoff, jitter, cancellation and Retry-After support. Keep fetched pages and threads in memory during retries; sends are never replayed by this layer.
- Serialize automatic and manual account syncs, including full-sync cursor resets.
- Renew a rejected OAuth access token once, preserve refresh-token updates, and keep transient token failures distinct from revoked authorization.
Existing OAuth credentials and local caches are preserved. No new consent is required unless the authorization was actually revoked. Progress is retained during retries, not across daemon restarts.
Validation: full Go suite and i18n checks, go vet, release build, and race tests for Gmail, OAuth and sync. Regression tests cover quota pacing, backoff, Retry-After, cancellation, retry bounds, failed-thread resumption, non-replayed sends and serialized cursor resets.