Skim v1.0.12
Skim v1.0.12 — "Warm Sockets" 🔥🧦
The one where the email is already downloaded before you click it. Turns out the fastest way to fetch a message is to have fetched it earlier. Nobel committee, we're waiting. 🏆
⚡ Faster
- New mail arrives with its body attached. When a message lands, Skim quietly pulls the body onto the fetch connection right away — newest first, small ones only, three at a time. So tapping that notification is now a read from your own disk instead of a chat with the server. 📬
- The connection wakes up when you do. Alt-tab back to Skim and it logs in and re-selects your inbox in the background, so your click pays for a FETCH and nothing else. Costs precisely zero when everything's already warm. 🌅
- Waking from sleep no longer confuses OAuth with itself. All connections now share one token cache, so two of them can't sprint for the same rotating Microsoft refresh token at the same time and both lose. 🏃♂️🏃♂️
- Token requests got a timeout and a reused HTTPS client. Previously a black-holed auth endpoint could hang around for as long as Windows kept the socket alive. Now it gets 15 seconds and then it's out. ⏱️
- Discovering a dead connection dropped from ~22–40s to ~4–6s. One tiny NOOP up front instead of twenty seconds of staring at "Loading…". Bold, we know. 🩺
🐛 Fixed
- Ordinary mail stopped getting the phishing banner. Receipts, calendar invites, ATS relays and basically every transactional platform on Earth were tripping sender checks that fired solo. They now need corroboration, exactly like the link checks always did. Actual attack shapes — forged display names, broken signatures, lookalike domains — still light up red. 🚨
- A rogue empty FETCH response can't clobber a real body anymore. Some servers weave unsolicited flag-only replies into the answer; one landing late was a fine way to be told "server returned no message body" over a perfectly healthy connection. 🎭
- "No message body" from a recycled connection now earns one honest retry on a fresh one, because that answer was usually the previous conversation still talking. 👻
🧹 Housekeeping
- Slow fetches now log where the time actually went — db / creds / login / select / fetch — instead of one unattributable number that could mean anything. Numbers only; nothing from your mail. 📊
- New tests pin down the prefetch budget, so nobody quietly turns "three small messages" into "your entire inbox over cellular". 🧪