Skim v1.0.22 β "Ask the MX, not the vibes" π
The one where Skim stops pretending that Microsoft owns exactly four domains on the entire internet.
β¨ New
Work & school accounts are finally recognized. π’ If your company lives on Exchange Online, Skim now asks your domain's MX records who really hosts the mail. Everything Microsoft runs answers on *.protection.outlook.com, so the sign-in button that actually works shows up on its own β no more falling into the manual IMAP/SMTP form to guess hostnames that were never going to connect. (Yes, hotmail.de too. Sorry it took a whole minor version to notice Germany exists. π©πͺ)
Behind a mail gateway? Proofpoint and Mimecast tenants don't advertise Microsoft in MX at all, so unknown domains now get one quiet "Work or school account?" line instead of a shrug. One line. We counted. π
The DNS probe goes through the machine's own resolver (DnsQuery_W) β your domain never visits a third party, results are memoized, the whole thing is capped at 3 seconds, and if it fails the screen looks exactly like it did before. π
π Fixed
The connect screen no longer flashes the manual form for a split second before deciding what it actually wanted to show. Nobody liked that little strobe. πͺ©
Failed Microsoft sign-ins can now, revolutionarily, display an error. The error slot was living inside the password snippet, which is a great hiding spot if your goal is to never be seen. π
OAuth buttons stopped submitting the form because someone forgot type="button". Classic. π€¦
access_denied is no longer universally translated as "you cancelled". AADSTS65004 is a genuine decline; the rest of that family is your tenant's consent policy saying no on your behalf β and now it says that instead of blaming you. π
Fixes #33.
π§Ή Housekeeping
The MX walk now traverses the record list as NonNull instead of raw pointers, because CodeQL followed a null_mut() all the way into a dereference and made a very good point. π The null check now lives in the type, each unsafe block vouches for exactly one operation, and behavior is unchanged β verified against a real tenant domain, a country consumer domain, a Google-hosted domain, and an NXDOMAIN that politely refused to exist.
Eleven locales got their new strings. π
Get it here: https://github.com/nikserg/skim/releases/tag/v1.0.22


Replies
The MX lookup approach is much nicer than making users guess whether they need IMAP, SMTP, or some microsoft specific hostname. small UX change big reduction in confusion.
Promomix
The distinction between AADSTS65004 and the other consent errors is one of those tiny fixes users probably wont notice until it saves them from troubleshooting the wrong problem.
Bababot
I like that the DNS probe stays local. email setup is already sensitive enough without sending someones domain to another service just to figure out who hosts it.
That OAuth type="button" bug is painfully relatable. one tiny missing attribute and suddenly the browser is doing something completely different from what you intended.
The work/school account detection sounds especially useful. i have definitely had the this should be Microsoft so why is it asking me for SMTP settings? experience.