• v0.10.0 9847f34c6d

    v0.10.0 Stable

    rwachters released this 2026-08-27 08:35:55 +00:00 | 217 commits to master since this release

    📦 Release v0.10.0

    📝 Executive Summary

    Torvian Chatbot v0.10.0 introduces a role-based configuration model for chat sessions, enabling users to define reusable agent roles with associated models, settings, instructions, and tools. The release also adds support for Responses-capable LLMs, reasoning-item persistence and replay, server built-in tools, and operator-driven spawned agents. Alongside these features, the release improves tool-call reliability, active-turn safeguards, session-name validation, and worker container runtime behavior.

    🚀 What's New

    Server and Common — Responses-capable LLMs

    • Responses API support: Added a Responses model type, Responses-specific settings, request/response strategies, streaming support, and configuration validation for parameters such as reasoning effort, storage, replay behavior, temperature, and token limits.
    • Reasoning persistence and replay: Assistant reasoning items can now be serialized, stored, reconstructed, sanitized for replay, and forwarded through tool-call iterations. Encrypted reasoning capability and source-model provenance are tracked so replay behavior can be adapted safely.
    • Authoritative tool-call completion: Added ToolCallDone handling so finalized function-call arguments take precedence over accumulated streaming deltas.
    • Provider request handling: Responses storage settings are honored, while storage is disabled for OpenRouter requests that reject store: true. OpenRouter attribution headers are emitted only for OpenRouter providers.

    Server, Common, and App — User-defined agent roles

    • Reusable agent roles: Added user-scoped agent roles that combine model selection, model settings, instructions, and tool associations. Sessions now select an agent role, and turn preparation resolves the effective model, settings, prompts, and tools from that role.
    • Agent role management: Added authenticated CRUD API routes, ownership and validation rules, persistence, permissions, migrations, shared request/response models, repositories, ViewModels, and settings UI for creating and maintaining roles.
    • Role-based chat selection: Added an agent-role selector to chat and prevented message sending when the selected role cannot resolve the required model or settings.
    • Instruction targeting and editing: Added model-specific instructions, spawnable-agent instructions, and server built-in tools for inserting, editing, and removing role instructions. Editing operations provide concise summaries and unified diffs instead of returning full role documents.
    • Spawnable-role allowlists: Added configurable same-user role allowlists for spawn_agent calls, including validation and dynamic prompts describing the roles available to an agent.

    Server and App — Operator and spawned-agent workflows

    • Operator tool catalog: Added the user-scoped spawn_agent operator tool, ownership-aware persistence, startup/user-creation seeding, configurable approval behavior, reset reconciliation, and management settings UI.
    • Operator execution: Added server-side request construction and ownership validation, WebSocket-relayed operator requests and results, approval channels, correlated execution results, and client-side spawned-session execution through dedicated chat ViewModels.
    • Spawned chat lifecycle: Added session-scoped ViewModel resolution, shared ViewModel-store ownership between UI and executor, cancellation for orphaned spawned turns, and assistant summaries for spawned conversations.
    • Server built-in tool catalog: Added eight user-scoped in-process tools for listing and reading tools, models, and model settings, and for creating, reading, and updating agent roles. Built-in tools include strict input validation, ownership checks, approval handling, and terminal error results for unknown or malformed requests.
    • Built-in tool administration: Added authenticated list, update, and reset routes; settings UI; optimistic updates with rollback; approval preferences; and per-user public-name prefixes for server built-in tools. Canonical tool names are preserved for safe dispatch independently of user-facing names.

    🐛 Bug Fixes & Improvements

    • Chat turn safety: Disabled and guarded send, regenerate, branch, delete, insert, and delete-thread actions while assistant generation is active, preventing UI bypasses and race conditions.
    • Stopping indicators: Scoped the pulsing animation to visible stopping controls so it does not run unnecessarily when the controls are hidden.
    • Tool-call capacity: Increased the maximum tool argument payload from 32,000 to 100,000 characters and raised the assistant/tool loop iteration limit from 100 to 200.
    • Session names: Normalized line breaks and enforced the shared 255-character limit across create, rename, and clone flows, with corresponding API validation and UI guidance.
    • Model configuration: Removed the model-level type dependency and unique-name constraint, moving compatibility decisions to settings profiles and allowing names to be reused across model configurations.
    • Prompt migration: Moved system-prompt authoring from model settings into agent-role instructions and removed legacy prompt keys from stored settings data.
    • Tool security and isolation: Enforced user ownership for role tools and built-in/operator tool definitions, using indistinguishable not-found responses where appropriate to avoid leaking resource ownership.
    • Worker runtime: Hardened the worker Docker startup configuration by setting the runtime home directory, removing the base-image user to avoid UID collisions, and retaining root ownership for application files while permitting runtime directory writes.

    🏗️ Technical Updates

    • Database migrations: Added migrations V16–V25 covering assistant reasoning items, removal of model-name uniqueness and model-level type, agent roles and session/message integration, operator tools, server built-in tools, and canonical built-in tool names.
    • Architecture: Separated reusable model records from settings profiles and made agent roles the session-level configuration boundary. Added dedicated DAO, service, API, repository, and dependency-injection layers for agent roles, operator tools, and server built-in tools.
    • Shared utilities: Moved the unified LineDiff implementation from the Worker module into common so server built-in instruction-editing tools and the Worker edit_file tool use the same algorithm and output format.
    • Validation and error handling: Added typed validation and service errors for role, tool, prefix, and built-in tool operations; expected built-in tool failures are returned as LLM-readable terminal results rather than thrown exceptions.
    • Test coverage: Expanded common, server, and desktop test coverage for Responses streaming and replay, role persistence and authorization, tool ownership and execution, spawned-agent coordination, UI turn guards, session-name validation, and migration behavior.
    • Repository and release metadata: Normalized repository text files to LF line endings, preserved shell-script and Gradle-wrapper LF enforcement, updated roadmap documentation, and set the project version to 0.10.0.
    Downloads