mindfork 0.23.0 — pictures
mindfork 0.23.0 is out. The assistant can now draw, whatever model you chat with — a local Gemma or Qwen on llama.cpp included — and you can draw without it. It is off by default, since every picture is paid for.
The assistant draws
- Ask for a picture, or a change to one. With Image generation switched on
(Settings → Tools), the assistant draws with the provider you pick: OpenAI's
gpt-image-2.5-flareby default, at about a cent and a half a picture as measured, Gemini, xAI's Grok Imagine, or one of OpenRouter's picture models —Enteron the Model row lists them, marking the ones that can only draw a new picture. Ask it to change a picture the chat already has, one you attached or one it drew, and it sends that picture along. - Kept as the provider sent it. Every picture lands in the chat's files —
/file list,/file open #N— and the assistant is shown a copy, so a model that sees can check it against what you asked. - Bounded, because it is paid for. One turn draws at most four pictures (a
setting;
0for no limit). Follow-ups and background runs never draw. When the provider refuses a picture, the assistant draws nothing more in that turn and asks you what to change — in the probe, both local models tried to draw a refused request again unasked, and xAI charges for a picture it refuses.
You draw
/image generate a fox in the snow — or /image generate 16:9 … for another shape —
has the provider draw it, with no model in between. The picture is kept in the chat's
files and attached to your next message, like a pasted one, so the next message can
ask the model about it.
From your phone
Ask the companion for a picture through its Telegram bot and it comes back as a photo after the reply's words, named as the chat file it is kept as, so the next message can ask for a change to it. A picture larger than Telegram takes as a photo is sent as a smaller copy; the original stays in the chat's files.
Fixed
- Long silences in a spoken reply. A reply read aloud could fall silent for ten or twenty seconds after a heading, a list or a code block. Blocks are now packed together and speech is made up to forty seconds ahead, so the reply plays through — and a request the speech provider leaves hanging is asked a second time.
- Gemma 4 answering in JSON after a tool's picture. On llama.cpp, when a tool returned a picture — a chart from the Python sandbox, a screenshot from a plugin — Gemma 4 answered an English request with a block of JSON instead of a reply in 17 conversations of 21. Every OpenAI-compatible server now gets a tool's picture in a message of its own, and it happened in none of 21.
Your data
The chat files move to schema 7, because a chat file may now hold a picture the
assistant drew, and 0.22.0 would have left such a chat out of its list without a
word. Checked with 0.22.0 on a copy of data this version wrote: it stops at start,
says the data comes from a newer version, and changes nothing. A backup is made before
the step; restored with 0.22.0, it reads every chat in it. The new image_gen section
of settings.json takes no step: an older version drops it when it saves its
settings.
The Markdown parser is past RUSTSEC-2026-0414, which needs wiki links — mindfork never turns them on, so it was not affected.
The full list is in the
changelog;
downloads are on the
releases page, and
cargo install mindfork builds the same version from
crates.io.