Skip to content

0.22.3

Choose a tag to compare

@xesws xesws released this 02 Sep 20:54
· 22 commits to main since this release

0.22.2 shipped a configuration check that could accuse you of something you had already fixed. This release makes it stop guessing.

What went wrong

With Image understanding switched off, the status line still said: "The endpoint rejected the image. This model likely has no vision — turn off Image understanding in settings."

It was already off. And the check had sent no image at all.

The classifier that decides "was this an image rejection?" works by looking for words like image_url or vision in whatever the endpoint sent back. That is a guess, and it was only ever asked in conversations that really had pictures in them — so it guessed well. 0.22.2 reused it for the new configuration check without telling it whether a picture had been attached. When the endpoint returned an error for some unrelated reason and its text happened to contain a matching word, the check announced a conclusion that could not possibly be true.

Whether a picture was sent is now something every caller has to state outright. With no picture attached, "the endpoint rejected the image" is ruled out by construction rather than by a better guess.

When we can't classify an error, you now see the endpoint's own words

The old fallback was "The endpoint rejected this request. Check the Base URL, model name, and API key in settings." If you had already checked all three, that sentence gave you nothing — while the endpoint had actually said why, and we simply weren't passing it along.

Errors we can't classify now quote the endpoint directly, with anything key-shaped redacted and the text capped so it fits on one line.

The check no longer blames you for its own shortcut

The configuration check sends a deliberately tiny request to keep it nearly free. That shortcut can itself be rejected by models that require a larger minimum response — an error a real conversation would never hit. A false alarm is as bad as a false all-clear, so an unclassified rejection is now retried once in the shape a real turn would take. Only on the failure path, so normal use costs nothing extra.

Also fixed: the status dot could show amber while the text beside it still read "saved", because the dot and the text were coming from two different pieces of state.

After installing, Stop then Start the sidecar so it upgrades to 0.22.3. Requires Obsidian desktop 1.5.0+ and Python 3.11+ on the same machine.