Skip to content

v0.1.7 β€” Iva sees images πŸ‘οΈ

Choose a tag to compare

@smixs smixs released this 29 Jun 05:29
· 1261 commits to main since this release

Iva can see now. Send a photo and she reads it β€” content, text, numbers β€” and answers by what's actually in the frame. Plus any attachment lands safely, she learns your corrections overnight, and the stability fixes that make all of it dependable.

Highlights

  • πŸ‘οΈ Iva sees images β€” the main model (DeepSeek) is text-only, so a picture used to be saved but never understood. Now every still image (photo, sticker, image document) is described by the provider's own vision model on the same key β€” gemma3:12b on Ollama, gemini-3-flash on OpenCode β€” with OCR of any text in the frame. The description goes into the day's memory and to the main model, so Iva answers by content. No extra subscription, no config; without a key the turn just continues without vision.
  • πŸ“Ž Any attachment, never a crash β€” forwarding a photo or file used to kill the whole turn (Telegram serves files as application/octet-stream, which failed the upload policy with a fatal throw). Now every attachment type β€” photos, stickers, voice, video, documents of any format β€” reaches the handler, and the model is always handed a file path, not an inlined blob. Provider-agnostic and crash-proof.
  • 🧠 Learns your corrections β€” the nightly rollup records repeatable "do it this way" lessons into CORE, which is read on every turn. A correction today is followed tomorrow.
  • 🌍 English-first terminal β€” the CLI and every background job now print in English; the installer stays bilingual and asks your language once.
  • 🌳 A new tree β€” a compact relay tree that shimmers in place while idle.

Stability

  • 🩹 A poisoned chat can't go silent anymore β€” a malformed reasoning part from the provider could fail the model-message schema and wedge a whole thread until a manual restart. Reasoning is now stripped from the model's output before it's stored, and deterministic errors (bad prompt, unknown tool) park cleanly instead of burning three pointless retries.
  • 🩹 Attachments stop crashing the sandbox β€” Iva pins the lightweight just-bash sandbox and starts via eve start, so the sandbox template is built on every boot.
  • 🩹 Updates survive a rewritten history β€” iva update now fast-forwards when possible and hard-resets to the remote on divergence, preserving your .env and vault.
  • 🩹 Vault wires itself β€” iva doctor creates the private iva-vault repo over gh itself instead of nagging nightly.

Also landed since v0.1.3

  • πŸ“Š Local token accounting β€” every model call logs real usage to data/usage.jsonl. /usage in Telegram (last/today/week/month/by-model/by-source) and iva usage in the terminal. No dashboard, no SaaS meter β€” just a file you can grep.
  • ♻️ A reset that finally sticks β€” iva reset (and /restart /new /clear) stops the services, clears .workflow-data, and restarts, so a stuck turn doesn't resurrect on every boot. Iva also no longer improvises background timers.
  • πŸ”‡ Reconfigure no longer mutes the bot β€” ASSISTANT_HOST always follows IVA_PORT, so the server and its clients can't drift apart.

Update: iva update on an existing install, or grab the one-line installer from the README.

Full notes: CHANGELOG.md