Skim v1.0.16 β€” "Are You Still There?" πŸ‘»

byβ€’

The one where Skim stops impersonating a corpse.

A self-update could relaunch Skim into a window with a titlebar and… nothing. Restarts didn't help. Reinstalling didn't help. Then, hours later, it just came back β€” which is somehow more unsettling than staying broken. 🫠

Turns out nothing was broken. The whole UI was waiting on the first mailbox query, that query was politely queued behind the catch-up sync, and the app had no way to say "hang on, I'm reading" β€” so it said nothing at all. For hours. In an empty window. Cool. πŸ™ƒ

πŸ› Fixed

  • The window shows up first, the mail follows. The app now draws itself as soon as it knows which mailboxes you have. Folders and messages arrive into a live window instead of holding the door shut. πŸšͺ

  • A slow start looks slow, not dead. If the mailbox hasn't answered in 2 seconds, the shell appears anyway. If it fails outright, you get an error β€” not a blank rectangle and a shrug. ⏱️

  • No more "welcome to Skim!" for people who've been using Skim for months. Onboarding waits until we actually know your account list is empty. πŸ‘‹

🧹 Under the hood

  • Reads got their own database connection. Everything you're actively waiting on β€” folder lists, message lists, threads, search β€” now goes through a second, read-only SQLite connection. WAL lets it read while the sync writes, so opening the app no longer means standing in line behind it. Writers and the entire sync engine are untouched. 🚦

  • Two new places to look when things go weird. Slow reads (>1s) land in skim-slow.log with the query name, and frontend crashes finally leave a trace in skim-frontend.log β€” both in %APPDATA%\\. Previously the frontend could fall over in complete silence, because a windowed release build has no console to complain to. πŸ”¦

Nothing you have to do. Update, and the next cold start should look like an email client rather than a haunted picture frame. πŸ–ΌοΈ

Get it here:

58 views

Add a comment

Replies

Best

Moving reads to a dedicated SQLite connection with WAL mode is such a satisfying fix. UI threads silently waiting behind blocking DB syncs are the worst kind of bug to track down.

Also, "a slow start looks slow, not dead" should genuinely be a core rule for desktop UX design. Great release notes!