Files
codecraft/CHANGELOG.md
T
2026-11-10 08:24:40 +01:00

14 KiB
Raw Permalink Blame History

Changelog

All notable changes to CodeCraft. Versions follow Semantic Versioning; until 1.0, minor versions may contain breaking changes.

[v202611-00012] – 2026-11-10

Added

  • Approval mode of automations in the list: Automations shows the approval mode of each automation as a selection; the change is written into the job file and applies from the next run. "Allow everything" lets nightly runs work without waiting for approvals (they used to wait for an answer via Telegram until the timeout).
  • Telegram per chat: ⋯ → Send questions to Telegram (shown with a paired bot) decides whether approvals and questions of that chat and its subagents are sent to Telegram. New chats from the web UI and automation runs start with it switched off (they stay in the web UI); chats started from Telegram and existing chats keep reporting. The chat currently open in Telegram always reports.

[v202611-00011] – 2026-11-09

Added

  • Collapsible task list: the model's task list above the composer folds to one line (progress and current task) with a click on its heading; the choice is kept per device.
  • Square and short screens (e.g. Clicks Communicator, phones in landscape): tighter top bar, composer and new-chat wizard, so the chat keeps most of the height.

Fixed

  • Blank page on phones after the update: installed apps (PWA) checked their service worker at its old URL, got the web page instead of a script and therefore kept the previous app version forever. With the new image format of v202611-00010 that old version crashed after showing the chat for a moment. Old service worker URLs now get the clean-up worker, which removes the stale worker and reloads the current version. Missing scripts/styles answer 404 instead of the web page.

[v202611-00010] – 2026-11-09

Changed

  • Chats with many images load much faster: images (screenshots, generated images, pasted images) are stored separately instead of inside the messages and load on demand when they scroll into view, cached by the browser. Large PNGs without transparency are stored as JPEG. Older chats are converted once on the first start; the database usually shrinks a lot. Example: a chat with 120 screenshots loads 1.5 MB instead of 66 MB.
  • Compressed responses: the API and the web UI are sent with gzip/brotli (not images, downloads or live streams).

[v202611-00009] – 2026-11-09

Fixed

  • Sandbox on x86_64: the start-up check of bubblewrap did not mount /lib64, so it failed on amd64 hosts and shell commands of non-admin users were disabled.

[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 <code> 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://<your-server>/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).