Skim v1.0.7
Skim v1.0.7 — "Ollama Mia!" 🎶
The one where setting up a local AI brain stops being a spelling test — pick a chip, done.
And it's a special one: this is Skim's first release built on a pull request from an outside contributor. 🎉
🙌 Huge thanks to @gildas-refacto
Gildas Pottier found Skim, decided the minimalist take on email was his thing, went off to build local-AI support on a fork… then discovered #14 had just landed and already covered it. Instead of shrugging, he turned around and shipped a batch of thoughtful quality-of-life polish on top — landing entirely within Skim's "think for the user, not at them" philosophy. Exactly the kind of contribution this project hoped for. Merci, Gildas. 🥂
✨ New — one-click Ollama, zero trivia (#16)
Point the custom (OpenAI-compatible) endpoint at a local Ollama server and Skim now silently notices and does the rest:
- Installed, tool-capable models show up as one-click chips — in Settings and onboarding. No more hand-typing
mistral-nemo:latestand getting it wrong. 🪄 - Picking a chip finishes the whole setup — fills the model, quietly completes a bare root URL to
/v1so generation doesn't 404, and saves. Done. - A gentle nudge, never a wall — hand-type a model the server doesn't announce as tool-capable and you get a hint, not a block. Compose-only use stays legit.
- Pure enhancement, zero new surface — no new provider, no new tab, no new settings. If the URL isn't an Ollama server, unreachable, or grumpy, nothing renders and the plain form stays exactly as it was. The strongest privacy story an email client can tell — "your mail never leaves this machine" — should be effortless to reach. Now it is. 🔒
🐛 Fixed
- "The model is loading…" — a local model's cold start can freeze the first token for 10–30s. The generic "Thinking…" couldn't tell a stalled request from a warming-up model. Now, when a custom endpoint goes quiet for 5s, you get an honest heads-up — in the composer, thread Q&A, mailbox chat, and recap. Cloud providers never arm the timer. ⏳
- Removing the custom endpoint now clears the model too — previously
custom_modellingered and silently resurfaced on the next setup. Begone. 🧹 - The composer window finally knows what provider you're using — it runs in its own window where the shared
aistore never refreshes, so provider-gated bits (like that loading hint) were blind tocustom. It now reads the provider from its own key-status fetch.
🧹 Under the hood
- New native Ollama discovery via
/api/tags+/api/show(max 8 in flight); inference stays unchanged throughopenai_compat. - Loading-hint strings translated across all 12 locales. 🌍
cargo test(97 green),cargo fmt,clippy -D warnings,npm run check— all passing.
Skim is a fast, minimalist, AI-native email client for Windows. Fewer buttons, less code, more mail. 📬