fix(categories): correct all 7 smart-folder bugs at source (PHASE 2) #38

Merged
cesnimda merged 2 commits from fix/smart-categories into develop 2026-07-04 16:45:11 +02:00
Owner

Root-cause fixes for Archive/ReadLater/Pinned/Unlabelled/Trash/Spam/OldMail. Adds EmailLabels sync population (the linchpin), IsTrashed, IncludeSpamTrash, IsReadLater marker + 4 new filters. 4 new tests; 65 backend + frontend green.

🤖 Generated with Claude Code

Root-cause fixes for Archive/ReadLater/Pinned/Unlabelled/Trash/Spam/OldMail. Adds EmailLabels sync population (the linchpin), IsTrashed, IncludeSpamTrash, IsReadLater marker + 4 new filters. 4 new tests; 65 backend + frontend green. 🤖 Generated with Claude Code
cesnimda added 1 commit 2026-07-04 16:22:16 +02:00
fix(categories): correct all seven smart-folder bugs at the source (PHASE 2)
CI / backend (pull_request) Successful in 56s
CI / frontend (pull_request) Successful in 12s
CI / format (pull_request) Successful in 52s
CI / db-tests (pull_request) Successful in 57s
Security / secrets (pull_request) Successful in 3s
Security / dependencies (pull_request) Successful in 57s
Security / sast (pull_request) Successful in 37s
654acacf5f
Root causes + fixes:
- Archive leaked Sent mail: filter was just 'not in inbox'. Added ExcludeGmailLabels;
  Archive now excludes SENT/DRAFT/SPAM/TRASH/CHAT by label.
- Read Later / Pinned / Unlabelled returned EVERYTHING (no folder case -> default all).
  Pinned = IsImportant; Read Later = new local IsReadLater marker (+toggle endpoints);
  Unlabelled = HasUserLabels=false.
- Trash & Spam always empty: IncludeSpamTrash=false + sync never set IsTrashed nor created
  EmailLabel rows. Now fetches spam/trash, sets IsTrashed from the TRASH label, and links
  every message to its Gmail labels (also fixes Sent/Spam/category-by-label/Unlabelled).
- Old Mail: now strictly older than 6 months (was 1 year).

Guardrail: sync upsert is now idempotent (drops prior copy before reinsert) so re-sync
can't duplicate a message or leave stale labels. 4 new filter tests; 65 backend + frontend
green; migration is a single non-destructive column add.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
cesnimda added 1 commit 2026-07-04 16:30:39 +02:00
chore: strip UTF-8 BOM from generated files (format gate)
CI / backend (pull_request) Successful in 54s
CI / frontend (pull_request) Successful in 13s
CI / format (pull_request) Successful in 49s
CI / db-tests (pull_request) Successful in 54s
Security / secrets (pull_request) Successful in 4s
Security / dependencies (pull_request) Successful in 1m0s
Security / sast (pull_request) Successful in 38s
1a3e0ede82
cesnimda merged commit eccf66eaed into develop 2026-07-04 16:45:11 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cesnimda/Inboxintel#38