CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.1] - 2026-02-13

### Updated

- **Cloud Models Documentation**
  - Expanded cloud model listings from 6 to 26 models across README, Cloud API guide, and Ollama Setup guide
  - Added new models: `minimax-m2.5:cloud`, `glm-5:cloud`, `deepseek-v3.2:cloud`, `gemini-3-flash-preview:cloud`, `kimi-k2.5:cloud`, `devstral-2:123b-cloud`, `devstral-small-2:24b-cloud`, `cogito-2.1:671b-cloud`, `qwen3-coder-next:cloud`, `qwen3-next:80b-cloud`, `nemotron-3-nano:30b-cloud`, `qwen3-vl:235b-cloud`, `ministral-3:cloud`, `rnj-1:8b-cloud`, `glm-4.6:cloud`, `glm-4.7:cloud`, `minimax-m2:cloud`, `minimax-m2.1:cloud`
  - Added parameters, context window, and feature columns to cloud model table in Cloud API guide
  - Organized README cloud models into categories: Coding & Agentic, General Purpose & Reasoning, Multimodal & Specialized

- **Thinking Mode Documentation**
  - Added `deepseek-v3.1:671b-cloud`, `gemini-3-flash-preview:cloud`, `kimi-k2.5:cloud`, `minimax-m2.5:cloud`, and `nemotron-3-nano:30b-cloud` to compatible thinking models table

## [0.1.0] - 2026-01-08

### Added

- **Core API**
  - `Ollixir.chat/2` - Chat completions with message history
  - `Ollixir.completion/2` / `Ollixir.generate/2` - Text generation
  - `Ollixir.embed/2` - Generate embeddings for text
  - `Ollixir.embeddings/2` - Legacy embeddings API (deprecated)

- **Model Management**
  - `Ollixir.list_models/1` / `Ollixir.list/1` - List available models
  - `Ollixir.show_model/2` / `Ollixir.show/2` - Get model details
  - `Ollixir.list_running/1` / `Ollixir.ps/1` - List running models
  - `Ollixir.create_model/2` / `Ollixir.create/2` - Create custom models
  - `Ollixir.copy_model/2` / `Ollixir.copy/2` - Copy models
  - `Ollixir.delete_model/2` / `Ollixir.delete/2` - Delete models
  - `Ollixir.pull_model/2` / `Ollixir.pull/2` - Pull models from registry
  - `Ollixir.push_model/2` / `Ollixir.push/2` - Push models to registry
  - `Ollixir.preload/2` - Preload model into memory
  - `Ollixir.unload/2` - Unload model from memory

- **Streaming**
  - Enumerable mode (`stream: true`) - Returns lazy stream
  - Process mode (`stream: pid`) - Sends chunks to specified process
  - Full support for chat, completion, and model operations

- **Tool Use (Function Calling)**
  - `Ollixir.Tool.define/2` - Define tools with JSON Schema
  - `Ollixir.Tool.from_function/1` - Convert Elixir functions to tools
  - `Ollixir.Tool.from_mfa/3` - Convert MFA to tool definition
  - Automatic extraction of `@spec` and `@doc` for tool schemas

- **Structured Outputs**
  - JSON format enforcement (`format: "json"`)
  - JSON Schema validation (`format: schema`)
  - Compatible with Ecto changesets for validation

- **Multimodal Support**
  - `Ollixir.Image.encode/1` - Encode images to Base64
  - Automatic encoding of file paths, binaries, and URLs
  - Support for PNG, JPEG, WebP, and GIF formats

- **Typed Responses**
  - `response_format: :struct` option for typed response structs
  - `Ollixir.Types.*` - Response type definitions
  - Application-level default via `:ollixir, :response_format` config

- **Options & Presets**
  - `Ollixir.Options` - Typed inference options struct
  - `Ollixir.Options.Presets` - Pre-configured option sets
    - `creative/0`, `precise/0`, `code/0`, `chat/0`, `fast/0`, `large_context/0`

- **HuggingFace Hub Integration** (optional dependency)
  - `Ollixir.HuggingFace.list_gguf_files/1` - Discover GGUF files
  - `Ollixir.HuggingFace.auto_select/2` - Auto-select optimal quantization
  - `Ollixir.HuggingFace.model_ref/2` - Build Ollama model references
  - `Ollixir.HuggingFace.pull/3` - Pull HuggingFace models
  - `Ollixir.HuggingFace.chat/4` - Chat with HuggingFace models
  - Support for 45K+ GGUF models

- **Cloud API**
  - `Ollixir.web_search/2` - Web search via Ollama API
  - `Ollixir.web_fetch/2` - Fetch web pages via Ollama API
  - `Ollixir.Web.Tools` - Pre-defined tool definitions for web operations

- **Error Handling**
  - `Ollixir.ConnectionError` - Server connection failures
  - `Ollixir.RequestError` - Pre-request validation errors
  - `Ollixir.ResponseError` - API response errors with status codes
  - `Ollixir.Errors.retryable?/1` - Check if error is retryable
  - `Ollixir.Retry` - Retry utilities

- **Client Configuration**
  - URL string, host option, or `Req.Request` struct initialization
  - Environment variable support (`OLLAMA_HOST`, `OLLAMA_API_KEY`)
  - Custom headers and timeout configuration
  - Automatic `/api` suffix handling

- **Documentation**
  - Comprehensive guides for all features
  - 40+ runnable example scripts
  - Cheatsheet for quick reference

[0.1.1]: https://github.com/nshkrdotcom/ollixir/releases/tag/v0.1.1
[0.1.0]: https://github.com/nshkrdotcom/ollixir/releases/tag/v0.1.0