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:latest and getting it wrong. πͺ
Picking a chip finishes the whole setup β fills the model, quietly completes a bare root URL to /v1 so 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_model lingered 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 ai store never refreshes, so provider-gated bits (like that loading hint) were blind to custom. 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 through openai_compat.
Loading-hint strings translated across all 12 locales. π
cargo test (97 green), cargo fmt, clippy -D warnings, npm run check β all passing.
π Grab it here: https://github.com/nikserg/skim/releases/tag/v1.0.7


Replies
the one-click chip instead of hand-typing a model tag is such a small thing to ship but it's the exact kind of friction that makes people give up on local models entirely. also genuinely nice to see an outside contributor's PR land cleanly into a 12-locale, 97-test codebase without it turning into a mess - says something good about how approachable the project actually is versus just claiming to be open source.
Skim
@omri_ben_shoham1Β that new contributor guy is awesome! π