A second after the search field rests, the search also goes to every account's server, for mail that isn't stored yet: Microsoft 365 through Graph's $search (KQL), Gmail with X-GM-RAW, other IMAP servers with UID SEARCH TEXT. Up to 100 of the newest hits per place are fetched and stored like synced mail (inbox mail as reaching back stores it, folder mail as the folder's sync does), so the full-text index has them and the local search, run again, shows them. Trash, Junk and Drafts are left out. The search syntax parser moves from the agents' tool into the store as spark_store::Query, which the mail crate also translates for servers. IMAP mail a search brings in from below the inbox floor isn't taken for gone by the next sync, and reaching back passes over it. The list says it's still searching rather than "No emails found" while the servers are asked, with a spinner next to the count. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Michael Rodriguez committed on 10/23/2026, 10:50:27 PMparentac73900
21 files changedLine totals unavailable