Skim v1.0.23 β€” "Press the button, something happens" πŸ”˜

byβ€’

The one where the Restart to update button admits it heard you. Turns out shipping an updater whose only feedback is "trust me bro" was a bold choice. 🫠

πŸ› Fixed

  • "Restart to update" now actually restarts. Before: you clicked, nothing happened, you clicked four more times out of spite, and a minute later the app quietly closed on its own. The click was stuck waiting on a database write that the mail sync had no intention of letting go of. Now the banner flips to "Installing update…" the instant you click it β€” and stops being a button, so those four extra clicks can't each launch their own installer racing the other three for your install folder. 🏎️πŸ’₯

  • A clean exit before the installer takes over. The updater ends this process with process::exit(0) β€” no goodbyes. So on the way out Skim now parks the sync engines and folds the write-ahead log back into the database, instead of leaving a few megabytes of unfinished business for the next build to untangle on its very first query.

  • The message list stopped lying to you. "Nothing to skim" used to mean either "this folder is empty" or "the read blew up and nobody told you". Guess which one you got after updating. It now says "Couldn't load β€” retry" and gives you the retry, and only claims a folder is empty when it actually read the folder. πŸ€₯βž‘οΈπŸ˜‡

  • Sync events that arrive before the app is ready no longer vanish. The mail engine starts syncing in Rust before the window has finished asking who owns which mailbox; the first "there's new mail" used to land in the void, and the next scheduled one was five minutes away. They're collected now.

  • Reopening from the tray does something again. Hiding to the tray only hides the webview β€” no frontend code re-runs on the way back, so a list left empty by a failed read stayed empty no matter how many times you reopened it. The window now says "I'm back", and a broken view puts itself right. πŸͺŸ

🧹 Housekeeping

  • New skim-update.log: what the old build did on its way out, and which version came back. The bug above happened with exactly zero evidence, and we'd rather not do that twice. πŸ”

  • updater:default is now scoped to the main window only β€” the compose and AI-chat windows have no update banner and now no ability to start one either. πŸ”’

  • A test that pins the WAL checkpoint actually emptying the journal, because "best-effort and silent" is a great way to never notice it stopped working.

Get it here:

8 views

Add a comment

Replies

Be the first to comment