Skip to content

v2.1.0

Choose a tag to compare

@joyqi joyqi released this 19 Jul 00:04
· 104 commits to main since this release

Config

  • system_file — read a provider's system prompt from a file. Inline system wins when both are set; a configured file that cannot be read fails loudly at startup instead of silently blanking the prompt.
  • effort — a per-provider default reasoning-effort level (low|medium|high|xhigh|max), validated at startup. A resumed session's own effort still overrides it.
  • mcp_servers (per provider) — pick which of the top-level MCP servers a provider loads, by name: key absent = all (previous behavior), [] = none, a name list = exactly that subset (unknown names fail loudly). --mcp flag servers always load.
  • Variable expansion everywhere — the ${…} syntax from MCP definitions now also applies to provider key, url, and system_file (so key: ${env:DEEPSEEK_KEY} works), with a new ${appHome} variable for chatchain's global directory (~/.chatchain).

UI

  • Reasoning → markdown → tool-call turns render in lifecycle order: a tool call announced while content is still streaming (or still buffered inside the renderer — a trailing table flushes only at stream end) now waits for the content block to close instead of splitting it — no more double blank above the content with the tool widget glued underneath. Content the model streams after its first tool delta stays visible, and interrupt partials keep every byte.
  • The session's first block no longer stacks a second blank under the startup banner.