Skip to content

v0.0.87

Choose a tag to compare

@flori flori released this 28 May 23:07

This release marks a significant evolution in ollama_chat, introducing robust
session management, a deeper RAG pipeline, and a suite of powerful new tools
for developers.

✨ New Features

🗄️ Advanced Session & State Management

  • Sequel-Backed Storage: Transitioned to a professional database for
    persistent storage of sessions, model options, favourites, and prompts.
  • Exclusive Locking: Implemented Vim-style session locking
    (locked_by_pid) to prevent concurrent access and data corruption.
  • Enhanced Workflow:
    • Added /session previous for rapid context switching.
    • Added /session duplicate for branching experiments.
    • Introduced directory-aware session retrieval via working_directory.
    • Added the -n startup flag to jump straight into a new session.

🎭 Personae & Prompt Engineering

  • Database Registry: System and user prompts are now managed via a database
    registry rather than static files.
  • Character Import: Support for importing high-fidelity character profiles
    from .json and .png files (extracting data from tEXt chunks).
  • Dynamic Profiles: Added variable interpolation (e.g., {{user}}) to
    allow personae to adapt to the current user.
  • Management Suite: New /character command and a full set of add,
    edit, delete, duplicate, and export subcommands for prompts and
    personae.

📚 RAG & Document Intelligence

  • Multi-Collection Support: Now supports multiple document collections. You
    can specify which collection to query during retrieval.
  • Document Tagging: Introduced tagging for embeddings and retrieval,
    including a new -t flag for the /input command.
  • Lifecycle Management: Added the ability to update specific collections
    and re-embed modified sources without wiping the entire store.
  • Documentrix Upgrade: Fully integrated documentrix v0.4.0.

🛠️ Expanded Toolset

  • EvalRuby: Execute Ruby code in a secure, sandboxed Docker container.
  • GenerateImage: Native integration with ComfyUI for AI image generation.
  • GetGHR: Fetch GitHub release information directly from the chat.
  • ComputeBMI & RollDice: Added utility tools for health calculations
    and tabletop gaming.
  • Destructive Ops: DeleteFile and MoveFile now include automatic safety
    backups.
  • Interactive Patching: PatchFile has been overhauled to use interactive
    diff sessions (e.g., vimdiff).

🎨 User Experience (UX)

  • Reline Integration: Switched from Readline to Reline for superior
    history management and input prefilling.
  • Real-time Feedback: Added a streaming infobar to provide visual
    progress for long-running tasks like session summarization.
  • Visual Cues: Integrated a set of status emojis (🔓, 🔐, 🟢, ⚫️)
    for clearer state and session selection.
  • Clipboard Power: Implemented bidirectional clipboard editing for /copy
    and /paste.
  • Pager Control: Added a -p flag to /last to bypass the pager for quick
    skimming.

⚙️ Refactorings & Hardening

🛡️ Security & Stability

  • Shell Injection Protection: Hardened all tool executions by switching to
    array-based system calls and implementing Shellwords.escape.
  • Symlink Protection: Enhanced PathValidator to prevent directory
    traversal attacks using realpath.
  • Storage Migration: Moved the documents database to OC::XDG_STATE_HOME
    for better compliance with XDG standards.

🏗️ Core Improvements

  • Unified I/O: Refactored MessageList to support both JSON and JSONL
    formats via a new JSONJSONLIO utility.
  • Stateful Selection: Refactored the Chooser into a stateful mixin for
    more consistent UI behavior.
  • CI Update: Switched CI images to debian trixie to ensure stability
    across Ruby 3.2 through 4.0.