Skip to content

Releases: ggozad/oterm

0.15.0

27 Apr 07:45
e1cd619

Choose a tag to compare

Highlights

oterm 0.15.0 is the multi-provider release. Underneath the same TUI, chats now run through pydantic-ai, so any provider it supports is available alongside Ollama. The chat UI also got a refresh, MCP integration was rewritten, and the test suite was rebuilt from scratch.

Breaking changes

  • Multi-provider via pydantic-ai. oterm is no longer Ollama-only. Set the matching API key for OpenAI, Anthropic, Google (AI / Vertex), Groq, Mistral, Cohere, AWS Bedrock, DeepSeek, Cerebras, Grok, or Hugging Face and the provider appears in the new-chat dropdown. OpenAI-compatible endpoints (vLLM, LM Studio, llama.cpp, OpenRouter, LiteLLM, …) are first-class too, configured under openaiCompatible in config.json.
  • MCP rewrite. The mcpServers config block now uses pydantic-ai's standard schema, which is compatible with Claude Desktop and Cursor configs. MCP prompts have been removed. See docs/mcp for the full migration notes.
  • No more pull-model command. Use ollama pull directly instead.
  • Removed legacy config fields and CSS classes. Older custom themes that relied on internal class names may need touching up.

New

  • Refreshed chat UI. Borderless accent-driven layout, auto-growing prompt, inline [Image #N] attachment tokens, a thinking section that collapses once the response starts streaming, and a live token-usage footer in place of the spinner.
  • Faster streaming. Markdown is updated as deltas arrive rather than being re-rendered on every token, so long responses no longer slow the terminal as they grow.
  • Capability-aware new-chat form. Tools, thinking, and vision toggles are enabled or disabled based on what the chosen provider and model actually support.
  • Generic, pydantic-ai-driven chat parameters. Temperature, top_p, max_tokens, and seed are forwarded through pydantic-ai's ModelSettings, with the supported set discovered per provider. Unknown keys saved by older versions are ignored cleanly.
  • Stick-to-bottom autoscroll during streaming, with a small threshold so a single line of scroll-back keeps you anchored where you were.
  • Anthropic extended thinking is handled correctly for non-Opus-4.7 models too: temperature and top_p are stripped and max_tokens is bumped above the thinking budget.
  • OpenAI-compatible endpoints with API keys can now use ${VAR} interpolation in config.json, with a guard against accidentally leaking OPENAI_API_KEY to third-party endpoints.

Improvements

  • Friendlier failure messages when Ollama isn't reachable, when an openai-compat endpoint is missing from config, when show_model fails, and when a chat references a tool that's no longer available.
  • Regenerate truncates the full prior turn instead of just the last two messages.
  • Escape during streaming now cancels the in-flight inference task.
  • Ctrl+Tab cycles through chat tabs in DOM order with priority bindings.
  • Edit screen opens cleanly even when a chat's saved provider is no longer configured.

Docs

  • Documentation rewritten around the pydantic-ai architecture, including provider setup, openaiCompatible configuration, and the new MCP schema.

Tooling

  • CI now runs lint, type-check, and tests across Python 3.10 through 3.14 on every push and PR, with coverage reported to Codecov and held at 100%.
  • Switched to ty for type checking and ruff for lint and format.
  • Test suite rebuilt around TestModel / FunctionModel, with no live Ollama or VCR cassettes required.

0.14.7

19 Dec 18:36
de8604c

Choose a tag to compare

What's Changed

Full Changelog: 0.14.6...0.14.7

0.14.6

15 Oct 09:54
a32eaf0

Choose a tag to compare

What's Changed

  • Improve the reliability of stochastic tests by @robbyt in #275
  • Update pydantic to work with python 3.14 by @ggozad in #277

New Contributors

Full Changelog: 0.14.5...0.14.6

0.14.5

03 Oct 10:02
f9ef03a

Choose a tag to compare

What's Changed

  • Do not attempt to parse & markup user input by @ggozad in #273

Full Changelog: 0.14.4...0.14.5

0.14.4

09 Sep 07:24
f99a467

Choose a tag to compare

What's Changed

  • Example in docs on how to do RAG with haiku.rag by @ggozad in #267
  • Depedency updates, performance boost in rendering. by @ggozad in #271
  • Suppress logging from other packages and MCP servers by @ggozad in #270

Full Changelog: 0.14.3...0.14.4

0.14.3

13 Aug 16:28
0fdd07a

Choose a tag to compare

What's Changed

  • Add solarized theme by @pbjames in #264
  • Remove throttling when rendering chat items, as it occasionally omits the last few tokens. by @ggozad in #266

New Contributors

Full Changelog: 0.14.1...0.14.3

0.14.2

13 Aug 16:14
fa33caf

Choose a tag to compare

What's Changed

  • Add solarized theme by @pbjames in #264
  • Remove throttling when rendering chat items, as it occasionally omits the last few tokens. by @ggozad in #266

New Contributors

Full Changelog: 0.14.1...0.14.2

0.14.1

01 Jul 09:19
4d75c0c

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.14.0...0.14.1

0.14.0

12 Jun 08:57
5642059

Choose a tag to compare

What's Changed

  • Support Streamable HTTP MCP servers by @ggozad in #252
  • Support for bearer authentication in Streamable HTTP MCP servers by @ggozad in #251
  • Delay importing the app to avoid sixel detection unless necessary by @ggozad in #248
  • Remove completion method in favour of streaming in OllamaLLM. by @ggozad in #250

Full Changelog: 0.13.1...0.14.0

0.13.1

03 Jun 11:18
bf20ad4

Choose a tag to compare

What's Changed

  • Introduce "thinking" option for reasoning models & show model capabilities when editing/creating a chat by @ggozad in #244

Full Changelog: 0.13.0...0.13.1