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
Skim v1.0.11 — "Folders, at last" 📂
The one where mail can finally go somewhere. Skim has happily read your folders since forever, but putting a message into one? Not supported. Slightly awkward for an email client. Fixed.
New
Move to folder new toolbar button, or V / Ctrl+K for a palette-style picker. Type, hit Enter, done.
Create a folder while moving no folder named "Taxes" yet? Type it, it gets created and the mail lands in it. Works offline too, because of course the move rides the op queue like everything else. And no, Enter won't accidentally invent a folder while a real match is sitting right there that row never steals the highlight.
Rename & delete your own folders a small button next to the list header. Your folders only; Skim won't let you rename Gmail's Inbox, because that ends badly.
Deleting is only offered on empty folders IMAP DELETE takes everything inside with it on basically every provider except Gmail, and there's no undo. So we re-ask the server right before running it, in case mail snuck in between your click and the queue draining. Paranoid? Yes. Correct? Also yes.
Skim v1.0.10 — "Ancient History" 🏺
The one where Skim finally admits your mailbox didn't begin 500 emails ago. Turns out there was mail before that. Who knew.
New
Your whole mail history, actually downloaded. Until now the first sync grabbed the newest window (500 in the inbox, 200 elsewhere) and then only ever looked forward. Everything older sat on the server, invisible to search and to the assistant, forever. Skim now quietly walks each folder backwards in the background a bounded slice per pass, resuming exactly where it left off across restarts until it hits message number one. New mail never waits in line behind it.
Install it the nerdy way. This repo now doubles as a Scoop bucket, updated straight from the release pipeline. (A WinGet manifest is wired up too, but it's still waiting in line at microsoft/winget-pkgs. Patience. )
Fixed
Skim v1.0.20 — "It's an email, not a stylesheet" 🎨
The one where Skim stops reading the CSS and starts reading the letter. A tiny release: one fix, one heuristic, zero new buttons.
Still standing on @gildas-refacto's shoulders
All of v1.0.19 was theirs #30, their fourth merged PR after #16, #18 and #29, where they traced three separate translation bugs down to individual Unicode code points and measured every fix over 20 runs.
Which made this release slightly embarrassing to write: they spent all that effort making the translation trustworthy, and it turns out we were sometimes not offering it at all. Fixed below. Thank you again.
Fixed
-
The Translate chip shows up on mail that needs it. Some senders build their plain-text version by ripping the tags out of their own HTML <style> element included so the email "text" opens with a few hundred characters of .bio{margin:auto}. Skim guesses the language from that text, and on one real newsletter 72% of the sample was CSS: the guess came back "not confident", and a perfectly English email got no translation offer in a Russian UI. Braces are not a language.
Now a leaked stylesheet gets removed first and since the language guess runs fresh on every open, mail already sitting in your database is fixed too, no resync required.
Skim v1.0.8 — "Port Authority" 🚢
The one where Skim finally learns that not every mail server hides behind implicit TLS. Turns out port 143 has feelings too.
Fixed
IMAP on port 143 now just works. Type 143 and Skim used to fire a TLS handshake straight at the server's plaintext greeting, then fall over with the delightfully unreadable received corrupt message of type InvalidContentType. Now Skim reads the port and picks the transport for you: 143 STARTTLS upgrade (connect in the clear, read the greeting, STARTTLS, then handshake credentials never leave before the tunnel's up), everything else implicit TLS, exactly as before. No toggle, no new setting, no "which encryption mode?" quiz. The client decides, because that's the whole point. (#19)
Errors that speak human, not TLS. Server won't do encryption on 143? "Try IMAP port 993." Plaintext greeting where a secure port was expected? "This doesn't look like a TLS port." Localized in all 11 languages and real cert/timeout problems keep their own codes, so a genuine TLS failure never gets mislabeled as "wrong port."
Skim v1.0.15 — "Room to Breathe" 📐
The one where your email finally gets to use the whole window instead of huddling in a 840px column on the left like it's 2009.
Every fix below is the work of @gildas-refacto in #29 who not only found three pixel-level bugs we'd been staring past for months, but wrote commit messages more thorough than most postmortems. Thank you.
Fixed
The reading pane is now the reading pane. We were capping the message at 840px wide, which meant a big monitor bought you one skinny column of text, a lot of empty pane, and a scrollbar floating somewhere in the middle of the screen. Cap's gone. The mail gets the room.
Wide emails are no longer quietly guillotined. Some senders lay their newsletters out wider than that old column allowed, and the overflow just didn't exist. No scrollbar, no hint, no right-hand edge. Now a too-wide message scrolls sideways inside its own frame like a civilized document.
The message stopped growing 8 pixels every time you resized the window. Turns out the frame was measuring its own height, adding a margin, then measuring that, then adding the margin again a small ouroboros of blank canvas piling up under your email, one resize at a time. 788 812 836 860, same mail. It now measures the actual content, lands flush, and stays put.
Bonus side effect: with that 8px gone, the mail's rounded bottom corners are rounded again. Small thing. Bugged us.
Skim v1.0.13 — "Chat, unchained" 🪟
The one where the AI chat stops living inside a panel and becomes an actual window you can put wherever you like. Also the one where we deleted a setting instead of adding one.
New
Pop a chat out into its own window hit Ctrl+K in any AI chat (ask, palette, or the folder digest) and it flies off into a frameless window of its own. Drag it to the second monitor, keep reading mail underneath, and it keeps streaming the whole time.
Close it and it comes home Esc, , Alt+F4, whatever you press, the conversation slides back inline exactly where it was. No "session expired", no starting over.
Click a citation in a popped-out chat and the actual email opens in the main window which politely un-minimizes itself from the tray instead of making you go find it.
Open a second, third, fourth chat window they cascade instead of stacking pixel-perfectly on top of each other, which was funny exactly once.
What's missing?
I built Skim for myself. And it works better that any other email client for me.
But you're not me, right?
