# Changelog All notable changes to CodeCraft. Versions follow [Semantic Versioning](https://semver.org/); until 1.0, minor versions may contain breaking changes. ## [v202611-00008] – 2026-11-09 ### Added - **Instructions per chat:** *⋯ → Instructions for this chat* (Telegram: `/prompt`) sets rules that apply to every message of that chat on top of the mode – language, tone, the part of the project to work on. A chip in the header shows when a chat has them; forks keep them. ### Fixed - OpenAI-compatible providers: tool results no longer carry a `name` field. Gateways that translate to Anthropic (opencode) rejected the request with "anthropic-messages cannot preserve named conversation participants". - Telegram: the token field is no longer filled in by the browser's password manager, the bot token is found in whatever is pasted (also the whole BotFather message), and a wrong format gets a clear message instead of "HTTP 404". ## [v202611-00007] – 2026-11-09 ### Added - **Telegram bot as a chat interface:** every user can connect their own bot (*Settings → Account → Telegram*: token from @BotFather, then `/start ` pairs it with their Telegram account – other chats are ignored). Messages, photos and files go to the current session; the agent's steps show live, the answer comes formatted, images from tools come as photos, and approvals and questions have buttons. Commands like the terminal client: `/sessions`, `/session`, `/new`, `/clear`, `/mode`, `/model`, `/permissions`, `/effort`, `/stop`, `/status`, `/costs`, `/memory`, `/jobs`, `/compact`, `/help`. The server polls Telegram – no public webhook needed. ## [v202611-00006] – 2026-11-09 ### Added - The image contains the Docker CLI (static client). With the host's `/var/run/docker.sock` mounted (and its group), admins' agents and terminals can use the host's Docker; `scripts/move-server.sh --docker-sock` sets this up on a new host. - `scripts/move-server.sh --tools-dir DIR`: agent home, users' homes and `/tmp` on a separate disk. ## [v202611-00005] – 2026-11-09 ### Fixed - Commits by agents, terminals and the git panel always use the name and e-mail from *Settings → Account → Git* – also in repositories that have their own `user.name`/`user.email` (agents had set those as a workaround while no identity was configured). Agents are told not to change the git identity. ## [v202611-00004] – 2026-11-09 ### Added - **Chats side by side:** *Open beside* in a chat's sidebar menu shows up to three chats as columns, each with its own tabs and composer (desktop). - **My modes:** every user can create personal modes under *Settings → My modes* (kind, tools, read-only, prompt, model); they appear only for that user. - **Budget warnings** as push notifications for admins (warning share and 100 %) for the total, provider and image budgets and the opencode Go windows; the status overlay shows all budgets. - `scripts/move-server.sh` moves an installation to another Docker host with bind mounts (e.g. Unraid), `scripts/smoke-test.sh` checks a running instance. ### Changed - File manager tabs of a chat are stored on the server, so they are the same on every device. ## [v202611-00003] – 2026-11-09 ### Added - The Docker image ships the terminal client again (static Linux x86_64 and aarch64 binaries): `curl -fsSL https:///cli/install.sh | sh`, download links in the settings and `codecraft update` work without building from source. - File manager: *Open chat here* in a folder's menu starts a chat in that folder. - **Tabs in a chat:** open terminals and file managers next to the chat (topbar buttons or "+" in the tab strip), as many as needed. Terminals of a chat keep running on the server until they are closed, so they are there again after a reload or on another device (output is replayed); they end when the chat is deleted or the server restarts. - **Chat mode:** *New session → Just chat* (and mode `chat`) for plain conversation – a lean prompt with date and personal memory, web search and fetch only, no project or files. - **Own modes:** *Settings → Agents & commands → New mode* with kind (coding or conversation), read-only switch, tool checkboxes, prompt, model and review loop; custom modes show up in *New session* and the mode selector. - The chat shows when the conversation is being compacted – automatically because the context is nearly full (with tokens and share of the limit) or on request – and labels the summary. ### Changed - The mode selector in the composer is a dropdown. ### Removed - *Settings → Config file* no longer offers to move `${NAME}` values into the configuration (a one-time migration); `${NAME}` references keep working. ### Fixed - Session updates from background tasks (title, token usage, phase, todos) and from the UI no longer overwrite each other. Often the first answer's token usage was lost, so automatic compaction and the context display started one turn late. ## [v202611-00002] – 2026-11-09 ### Added - **opencode prices:** *Fetch prices* reads prices, context and output limits, image input and reasoning from opencode's model list (Zen and Go), including long-context tiers and peak-hour or date-based factors. Costs apply them per request (`price_tiers`, `price_multipliers` on a model). - **opencode costs and Go limits:** the cost opencode reports per response is recorded instead of an estimate, and with a *plan limit* on the provider the Go allowance is tracked in the 5-hour, 7-day and monthly windows (budget table and status overlay; usage through CodeCraft only). - **Settings → Config file** lists `${NAME}` references and moves the values of set variables into the configuration, so `.env` only needs deployment settings. ### Changed - Examples and forms no longer suggest environment variables for keys; `.env.example` holds deployment settings only. ## [v202611-00001] – 2026-11-09 ### Added - **Image generation picks the model:** the agent drafts cheap previews, asks which one to refine (with the price of the final model), then creates the final image with the best model for the purpose (photo, illustration, text, design). Models that take a reference image (Nano Banana Pro edit) refine the chosen draft. Known fal.ai models come with sensible defaults; `stage`, `good_for` and `reference_param` in `[images].models` override them. - **Restore a backup** in *Settings → Audit*: a stored backup or an uploaded zip. The current state is backed up first (`…-before-restore.zip`), then CodeCraft restarts with the restored database and configuration. - **Test connection** in the provider form checks URL and key before saving. - **Status LEDs** in the sidebar for server connection, models and MCP servers (green, yellow, red in vivid variants of the theme colors); a click opens an overview of every provider and MCP server with its state, latency and tool count. - `scripts/release.sh`: tag, multi-arch image and Gitea release in one step. ### Changed - Saving a provider (or reloading providers) checks its status right away instead of at the next five-minute check. ### Fixed - opencode Zen/Go: requests carry the session in `x-opencode-session`; opencode Go rejected them without it ("Request is missing x-opencode-session"). - Two backups in the same second no longer overwrite each other. ## [0.1.0] – 2026-11-09 First public release. ### Agents and chat - Agent loop with streaming, task lists, subagents (parallel and in the background, on other models), skills, slash commands, `AGENTS.md` / `CLAUDE.md`, automatic context compaction. - Modes: **build**, **plan** (read-only) and **craft** (study a website, app, game or old program and build your own version, with visual comparison, clean room or deep mode), plus custom modes and subagents. Review loops per mode. - Tools: files, shell with background processes, web fetch and search, LSP diagnostics after edits, OpenSCAD for 3D printing, Ghidra for old binaries, image generation (fal.ai), and an interactive **browser** (click, type, run JavaScript, screenshots, console errors; private network addresses are blocked). - MCP servers (stdio and Streamable HTTP, elicitation, tools loaded on demand). - Permissions per tool and per shell command pattern, modes *ask*, *auto*, *accept edits* and *bypass*; permission cards with diffs; questions from agents and MCP servers. - Checkpoints and rewind, fork, regenerate, accept changes hunk by hunk, git worktrees per session, reasoning effort per message, voice input, `@file` mentions, attachments. - Project memory (`.codecraft/memory.md`, written by the agent) and personal memory. - Hooks before and after tool calls, on prompts and at the end of a turn. ### Models - Anthropic natively and every OpenAI-compatible API (Gemini, OpenRouter, opencode, fal.ai, Ollama, vLLM, llama.cpp, LM Studio). - Prices per model, concurrency limits per host and model, monthly budgets. - **Model fallback** when a host is unreachable or a budget is used up. - **Provider status**: every 5 minutes each provider's model list is checked (no tokens). ### Web app - Installable PWA with push notifications (permissions, questions, finished turns) and a **share target**: text and links shared from other apps start a chat or go into a recent one. - Guided start screen, file manager with previews (PDF, Office, 3D models, images), web terminal, image gallery, git panel. - **Command palette** (Ctrl/Cmd+K) and keyboard shortcuts; **prompt templates** with placeholders (personal and global); sessions can be **pinned, archived and filed into folders**, grouped by date or project. - Statistics: tokens, cache hits, time to first token, prefill and output speed and cost per request; cost and tokens per day, an activity heatmap of the last 14 days, tables per model, provider, mode, user and session. Optional **daily cost summary** as a push at 20:00. - 15 colour themes, each light and dark; English and German. - "What's new" after updates; admins see when a new release is available. ### Automations and integrations - **Automations**: agents on a cron schedule from a Markdown job file, created by an agent, from a **template** or by hand; **incoming webhooks** start them (shared secret or Gitea/GitHub HMAC signature; the payload is passed to the agent). - **API tokens** with full or read-only scope. - **Prometheus metrics** at `/metrics` (own bearer token) and JSON logs (`CODECRAFT_LOG_FORMAT=json`). - **Backups**: daily zip of database and config, keep 30, optional copy to any S3-compatible bucket; download from the settings. ### Terminal client - `codecraft`: a full-screen terminal client like Claude Code or opencode. The agent loop, tools and history stay on your machine; models, modes, rules, skills and the theme come from the server, which counts usage and costs. Also runs **without a server**: a guided setup connects Anthropic, OpenAI, Gemini, OpenRouter, opencode or local servers (Ollama, LM Studio, llama.cpp/vLLM, detected automatically). - No prebuilt binaries in this release: install it from source with `cargo install --locked --git https://git.familie-zink.org/zink/codecraft codecraft-cli`. ### Users and security - Local accounts (Argon2) and single sign-on via OpenID Connect; admins and users, private folders per user, shared folders, read-only session sharing, audit log. - Shell commands of non-admin users run in a bubblewrap sandbox. - Multi-arch Docker image (amd64, arm64). [0.1.0]: https://git.familie-zink.org/zink/codecraft/releases/tag/v0.1.0