v0.10.1 — awaiting_reply on the index
Closes the one degradation v0.10.0's notes disclosed, the same day it was filed
(#192), plus two structural test fixes from a fresh full-device pass.
Fixed
mail_awaiting_replynow reads the Envelope Index at rest (#192, #196).
Mail stores the References graph itself (message_references), so "which of my
sent messages has no reply?" is one SQL join instead of ~500 Apple Events against
the unified All Sent. Device-measured on a 13k-message store: 0.9s where the
AppleScript scan measured 209s on idle Mail and blew a 600s budget on busy Mail.
It also works with Mail not running, and a reply draft can no longer clear a
send prematurely (the citing message must sit in an inbox). The AppleScript scan
survives as the fallback for machines without Full Disk Access.- New
SENT_SUFFIXESin the one mailbox-url table:Sent,Sent Messages,
Sent Mail,Sent Items— leaf-anchored, same discipline as the Trash spellings.
Test honesty (full-device pass, 2026-08-23)
- The integration scratch mailbox now prefers a true-IMAP account,
deterministically: Gmail label copies were device-observed resurrecting after
both a verified trash and a verified unlabel, so move/undo verification on a
Gmail mailbox is structurally unreliable (#198). create_mailbox's device test asserts the synthesized address resolves
rather than demanding an empty mailbox the fixture itself documents as reused
(#198).- Music:
playagainst a cold-launched, queue-less Music lands inpaused—
device-observed, now accepted (#197).
Verified
Full integration suite on device (72/78 first pass, every failure triaged to a
fixed test or a settled-Mail retry — no product defects), outbound re-verified
live post-deploy (send → outbox drain → delivered copy read back; reply threading
confirmed in the index References graph; #133 autosave litter caught and swept),
and the deploy proven by doctor().build.