development
claude/code-feature-parity-q003hm
claude/elegant-carson-l1menh
claude/sigit-acp-local-chat-cx6380
claude/sigit-cloud-agent-expansion-reox0a
claude/tool-permission-system
claude/zen-feynman-0u78dk
development
feature/agent-tools-multiedit-glob-todos-remember
feature/background-commands
feature/commit-coauthor-attribution
feature/headless-mode
feature/init-command
feature/load-local-model-explicitly
feature/session-persistence-compaction
feature/sigit-code-cloud
feature/subagent-tool
feature/tool-permission-system
feature/tui-repo-tabs
feature/tui-tabs
main
release/v1.3.1
| 1 | # Changelog |
| 2 | |
| 3 | ## 1.3.2 |
| 4 | |
| 5 | Adds a tool permission system with plan mode, durable sessions with context |
| 6 | compaction, background command execution, a subagent research tool, and commit |
| 7 | co-author attribution. |
| 8 | |
| 9 | ### What changed |
| 10 | |
| 11 | - Every tool call now passes a permission policy before executing. Read-only tools always run; mutating tools (and all MCP or unknown tools) are governed by, in order: plan mode, session grants, per-tool overrides, and a default mode from `[permissions]` in `settings.toml` (`allow`/`ask`/`deny`, default `ask`). On `ask`, editors get a native ACP permission dialog (allow once / allow for this session / deny) and the TUI pauses on a y/a/n prompt showing the tool and its arguments. `SIGIT_PERMISSIONS` overrides the default mode for headless runs and clients without permission support |
| 12 | - New `/plan [on|off]` command: plan mode blocks mutating tools and asks the model to present a plan while research tools keep working. `/permissions` prints the effective policy |
| 13 | - Sessions are durable: conversation history is saved per session under `~/.config/sigit/sessions/` after every turn. ACP `session/load` actually restores it, the TUI gets `/resume`, and `/clear` deletes the saved file |
| 14 | - Context compaction: `/compact` compresses the conversation on demand, and the agent compacts automatically once the history approaches a 24k-token budget, summarizing older turns and keeping the recent ones. The tool-round cap rises from 10 to 24 now that long sessions have a defense other than the cap |
| 15 | - `run_command` can run work in the background: pass `run_in_background` and the tool returns a task id immediately, so builds, test suites, and dev servers are no longer killed by the 120 second foreground timeout. Poll with the new `command_output` tool (read-only, never prompts) and stop with `kill_command` |
| 16 | - New `task` tool: delegate research to a fresh subagent conversation that only gets the read-only tools and returns its final answer, keeping the main context small. Available on OpenAI-compatible backends; on-device returns a clear fallback until onde supports a second context |
| 17 | - Commits created by the agent are co-authored: commit messages end with `Co-Authored-By: siGit Code <sigit@sigit.si>` (the [sigitc](https://github.com/sigitc) account), which GitHub renders next to the human author. If the model forgets the trailer, siGit amends it in, never rewriting commits that already exist on a remote |
| 18 | - ACP mode now honors the `OPENAI_BASE_URL`/`OPENAI_API_KEY` provider override at startup, matching the interactive client |
| 19 | |
| 20 | ## 1.3.1 |
| 21 | |
| 22 | Adds [Model Context Protocol](https://modelcontextprotocol.io) (MCP) client |
| 23 | support with the official siGit Code MCP server baked in, a set of agent tools |
| 24 | that close parity gaps in the tool layer, and refreshed branding and licensing. |
| 25 | |
| 26 | ### What changed |
| 27 | |
| 28 | - siGit Code is now an MCP client: it connects to MCP servers over the Streamable HTTP transport (a single JSON-RPC endpoint), discovers the tools they expose, and offers them to the model alongside the built-in tools. When the model calls one, the call is forwarded to the owning server and the result fed back into the agent loop |
| 29 | - Bakes in the official siGit Code MCP server at `https://sigit.si/api/v1/mcp` (follows `SIGIT_CLOUD_URL`). When you are signed in (`sigit login`), the cloud session token is sent as the bearer credential |
| 30 | - Configure additional servers in `mcp.toml` — global (`~/.config/sigit/mcp.toml`) or project-local (`.sigit/mcp.toml`). Each `[[server]]` has a `name`, `url`, optional `enabled`, and optional `[server.headers]`; set `official = false` to opt out of the baked-in server |
| 31 | - MCP tools are namespaced `mcp__<server>__<tool>` so they never collide with built-in tools or across servers; tool output is capped to protect the model's context |
| 32 | - Discovery is best-effort at startup and bounded by a per-server timeout, so an unreachable server never blocks startup — it just contributes no tools |
| 33 | - Added a `/mcp` slash command (TUI and ACP) that lists configured servers, their connection status, and the tools each exposes |
| 34 | - Disable MCP entirely with `SIGIT_MCP=off`, or just the official server with `SIGIT_MCP_OFFICIAL=off` |
| 35 | - New agent tools that close parity gaps in the tool layer: `multi_edit` (apply a batch of exact-substring edits to one file atomically — written only if every edit matches), `glob` (locate files by name pattern with `**`/`*`/`?`/`{a,b}`, most-recently-modified first), `write_todos` (render a live task checklist through the tool result for multi-step work), and `remember` (append durable notes to the nearest `AGENTS.md`/`CLAUDE.md`) |
| 36 | - `edit_file` now supports `replace_all` and returns actionable failure context — naming the line whose trimmed text matches when only whitespace differs — so the model self-corrects in one round |
| 37 | - `search_files` gained a `file_glob` filter and a `max_results` cap (default 50, hard-capped at 1000) that also bounds the directory walk |
| 38 | - Refreshed branding and legal: updated `LICENSE`, `README`, and the npm/PyPI package descriptions |
| 39 | |
| 40 | ## 1.3.0 |
| 41 | |
| 42 | Adds a Local Inference on/off toggle, the open [Agent Skills](https://agentskills.io) |
| 43 | format, and support for project instruction files (`AGENTS.md` and the like). |
| 44 | |
| 45 | ### What changed |
| 46 | |
| 47 | - Added a Local Inference on/off setting that is the explicit local-vs-cloud mode switch. It is persisted in `~/.config/sigit/settings.toml` (default on, local-first) and can be overridden with `SIGIT_LOCAL_INFERENCE` |
| 48 | - Toggle it with the `/local [on|off]` command (TUI and ACP); ACP clients without slash-command support get an equivalent "Local Inference" On/Off control in the session config panel |
| 49 | - `/models` now groups models by nature — Local vs siGit Code Cloud — and highlights the active mode's group while still showing the other, so the cloud tiers stay discoverable |
| 50 | - Discovers Agent Skills (folders with a `SKILL.md`) from `.sigit/skills/` and `.claude/skills/` in the project, `~/.config/sigit/skills/`, and `~/.claude/skills/` |
| 51 | - Follows the spec's progressive disclosure: each skill's name and description are advertised up front via a new `skill` tool, and the full instructions load only when the agent activates one |
| 52 | - Added a `/skills` slash command (TUI and ACP) that lists the discovered skills |
| 53 | - Reads project instruction files at session start: `AGENTS.md` (the cross-tool standard) and `CLAUDE.md`, walking from the working directory up to the repository root, plus a global file under `~/.config/sigit/`, and injects them into the session's system context so their guidance is always in force |
| 54 | - Nested instruction files are ordered outermost-first so the closest, most specific file takes precedence; the scan never reads above the repository root |
| 55 | - On-device models are no longer loaded implicitly. The chat UI and ACP sessions come up immediately, and the local model is brought into memory only when you run the `/load` command (or pick one in `/models`). Prompts sent before a model is loaded now return a hint instead of blocking on a multi-minute download. |
| 56 | |
| 57 | ## 1.2.2 |
| 58 | |
| 59 | Streams assistant tokens as they arrive, on-device and over the cloud. |
| 60 | |
| 61 | ### What changed |
| 62 | |
| 63 | - Streamed assistant tokens live in the TUI and ACP sessions, both on-device and through siGit Code Cloud |
| 64 | - On-device inference streams only when a turn offers no tools, since `onde` can't stream and detect tool calls in the same pass; tool-capable turns still resolve in one shot |
| 65 | - Fixed the TUI so the latest message stays visible in long chats |
| 66 | - Put the cloud model-switch confirmation on its own line in ACP |
| 67 | |
| 68 | ## 1.2.1 |
| 69 | |
| 70 | Stabilizes the Zed/ACP integration and finishes the cloud-tier wiring on top of 1.2.0. |
| 71 | |
| 72 | ### What changed |
| 73 | |
| 74 | - Fixed a Zed crash by keeping model-picker labels ASCII in the ACP model selector |
| 75 | - Wired ACP auth, cloud tiers, and slash commands into the Zed panel, including a `/reload` command to re-sync session state in place |
| 76 | - Fixed the TUI so the loaded-model checkmark appears once a download completes |
| 77 | - Synced bundled agent skills with the current code and added `CLAUDE.md` |
| 78 | |
| 79 | ## 1.2.0 |
| 80 | |
| 81 | Adds siGit Code Cloud — a hosted inference tier alongside on-device models. |
| 82 | |
| 83 | ### What changed |
| 84 | |
| 85 | - Added siGit Code Cloud with cloud-tier routing, pointed at `sigit.si` |
| 86 | - Added account management slash commands and surfaced cloud tiers in `/models` |
| 87 | - Carried forward from 1.1.0: ACP SDK v0.13, refreshed dependencies and branding |
| 88 | |
| 89 | ## 1.1.0 |
| 90 | |
| 91 | Bumps the ACP SDK to v0.13 and pulls in updated dependencies. |
| 92 | |
| 93 | ### What changed |
| 94 | |
| 95 | - Updated `agent-client-protocol` from v0.11 to v0.13 |
| 96 | - Updated `onde` to 1.1.2 |
| 97 | - Refreshed branding and skill metadata |
| 98 | |
| 99 | ## 1.0.4 |
| 100 | |
| 101 | This release tightens up the terminal experience and finishes a few release-facing cleanup items. |
| 102 | |
| 103 | ### What changed |
| 104 | |
| 105 | - Added bold rich-text rendering in the TUI for assistant replies, so `**text**` now displays with terminal styling instead of raw markdown markers |
| 106 | - Refreshed the bundled skill metadata to follow the current Agent Skills `SKILL.md` format |
| 107 | - Synced the crate release metadata for the `1.0.4` cut |
| 108 | |
| 109 | ## 1.0.3 |
| 110 | |
| 111 | This is the cleanup release for the editor-side startup problems. |
| 112 | |
| 113 | ### What changed |
| 114 | |
| 115 | - Fixed ACP sessions failing on the first real prompt because the server claimed the model was ready before anything had actually been loaded |
| 116 | - Changed ACP startup so the default model loads lazily on the first non-slash prompt instead of pretending it is already in memory |
| 117 | - Kept `initialize` and `session/new` lightweight while still sending proper progress updates once model loading begins |
| 118 | - Updated the Onde integration to `1.0.0` |
| 119 | - Removed a few dependencies we were no longer using |
| 120 | |
| 121 | ## 1.0.2 |
| 122 | |
| 123 | This release was supposed to fix the ACP auth breakage. It did fix the stdout pollution problem, but it turned out not to be the whole story. |
| 124 | |
| 125 | ### What changed |
| 126 | |
| 127 | - Delayed model loading in ACP mode so startup diagnostics would not leak into protocol stdout during the auth handshake |
| 128 | - Tightened up the ACP startup path for editor integrations |
| 129 | - Refreshed some README wording while cutting `1.0.2` |
| 130 | |
| 131 | ## 1.0.1 |
| 132 | |
| 133 | The first patch after `1.0.0` was mostly about making model loading and model switching feel less opaque. |
| 134 | |
| 135 | ### What changed |
| 136 | |
| 137 | - Added ToolCall-based progress UI for startup model loading and downloading |
| 138 | - Improved model-switch progress reporting in ACP clients |
| 139 | - Fixed model-load error handling so failed switches did not leave the UI in a weird state |
| 140 | - Cleaned up a few status messages and docs while the release was going out |
| 141 | |
| 142 | ## 1.0.0 (2026) |
| 143 | |
| 144 | siGit Code has been living in real smbCloud repos for a while now. At some point it stopped feeling like an experiment, so we called it 1.0. |
| 145 | |
| 146 | ### What this release is |
| 147 | |
| 148 | siGit Code is a local coding agent. It runs a quantized model on your machine, talks to editors over ACP, and can read files, run commands, fetch web pages, and write code without sending your project to a hosted API. |
| 149 | |
| 150 | You can install it with Cargo, pip, npm, or Homebrew and use it like any other tool on your machine. |
| 151 | |
| 152 | ### What shipped in 1.0 |
| 153 | |
| 154 | #### Editor integration |
| 155 | |
| 156 | This is the core of the project. |
| 157 | |
| 158 | Zed and VS Code can talk to siGit Code over ACP. Multi-turn sessions work. Tool calling works. Session forking works. Working-directory context works. That was the original goal, and it feels solid now. |
| 159 | |
| 160 | #### Terminal UI |
| 161 | |
| 162 | The terminal UI started as a side quest and turned out to be useful. You get a full-screen ratatui chat, streaming tokens, a spinner while the model is busy, and a model picker you can open in the middle of a session. |
| 163 | |
| 164 | It runs on macOS and Linux. Windows gets ACP and editor mode for now. The Windows terminal UI is still unfinished. |
| 165 | |
| 166 | #### Tool calling |
| 167 | |
| 168 | This is the part that makes siGit Code feel like an agent instead of a chat box. The loop can run up to 10 rounds per message. |
| 169 | |
| 170 | Available tools: |
| 171 | |
| 172 | - `read_file` / `write_file` / `delete_file` |
| 173 | - `list_directory` / `search_files` |
| 174 | - `run_command`, with an optional working directory |
| 175 | - `read_website`, which fetches a URL and strips it down to readable text |
| 176 | |
| 177 | The model can call a tool, inspect the result, and keep going until it has a real answer. |
| 178 | |
| 179 | #### Model support |
| 180 | |
| 181 | The model list ended up wider than we expected for 1.0: |
| 182 | |
| 183 | - Qwen 3 1.7B, 4B, 8B, and 14B |
| 184 | - Qwen 2.5 1.5B and 3B |
| 185 | - Qwen 2.5 Coder 1.5B, 3B, and 7B |
| 186 | - DeepSeek Coder 6.7B |
| 187 | |
| 188 | They are all GGUF models and they all come from Hugging Face on first run. |
| 189 | |
| 190 | Qwen 3 is the interesting one. It uses extended thinking mode. The model reasons inside `<think>...</think>` blocks before answering. The TUI strips those blocks out and renders them dimmed above the reply, so you can see what happened without turning the whole conversation into noise. |
| 191 | |
| 192 | The 8B model is the desktop default. Mobile stays on 1.7B because iOS gives apps roughly 2 to 3 GB of memory, and we learned the hard way that 3B can blow up on an iPhone 16e. |
| 193 | |
| 194 | #### Model picker |
| 195 | |
| 196 | The model picker shows: |
| 197 | |
| 198 | - what is already cached locally |
| 199 | - what can be downloaded |
| 200 | - which models support tool calling |
| 201 | - whether the local cache looks healthy |
| 202 | |
| 203 | You can open it with `/models` in the TUI or through the editor config option. Switching models happens in the background and the UI stays alive while the download or load is in progress. |
| 204 | |
| 205 | #### smbCloud context |
| 206 | |
| 207 | siGit Code knows smbCloud repos better than a generic coding assistant does. It understands the difference between platform-user flows and tenant-app auth flows, how `Project`, `FrontendApp`, `AuthApp`, and GresIQ fit together, and why Next.js SSR deploys are not the same thing as the generic git-push path. |
| 208 | |
| 209 | Outside smbCloud, it backs off and behaves like a normal coding agent. |
| 210 | |
| 211 | #### Distribution |
| 212 | |
| 213 | Distribution took an unreasonable amount of time, honestly. |
| 214 | |
| 215 | There are prebuilt binaries for macOS, Linux, and Windows on both arm64 and x64 where relevant, plus install paths through Cargo, PyPI, npm, and Homebrew: |
| 216 | |
| 217 | - `cargo install sigit` |
| 218 | - `pip install sigit-code` |
| 219 | - `npm install -g @smbcloud/sigit` |
| 220 | - `brew install sigit` |
| 221 | |
| 222 | Getting that whole pipeline to behave across CI, crates.io, PyPI, npm, and Homebrew was basically its own project. |
| 223 | |
| 224 | ### What still does not work |
| 225 | |
| 226 | The Windows terminal UI is still missing. |
| 227 | |
| 228 | ACP and editor mode work on Windows. The part that is still missing is the interactive full-screen terminal UI. The blocker is Unix-specific terminal handling that has not been abstracted cleanly yet. |
| 229 | |
| 230 | ### Changes since 0.1.2 |
| 231 | |
| 232 | - Added Qwen 3 14B support |
| 233 | - Added Qwen 3 `<think>` block parsing and separate rendering in the TUI |
| 234 | - Moved all TUI code into `#[cfg(unix)]`, which fixed a pile of dead-code errors on Windows CI |
| 235 | - Added live download progress during model switches, including cancellation with Ctrl+C |
| 236 | - Added model download and loading progress in the Zed agent config panel |
| 237 | - Added an animated spinner during model switching |
| 238 | - Added Qwen 2.5 Coder 7B |
| 239 | - Added downloadable models to the picker, not just locally cached ones |
| 240 | - Made model selection persist across restarts |
| 241 | - Added session working-directory support |
| 242 | - Moved model picker logic into a platform-independent module so Windows can compile without the TUI |
| 243 | - Added the `/models N` shortcut for picking a model by number |
| 244 | - Added the `read_website` tool |
| 245 | - Improved `read_file` handling and empty-reply detection |
| 246 | - Added async tool execution |
| 247 | - Fixed CI cross-compilation for macOS, iOS, Linux, and Windows |
| 248 | - Added npm, PyPI, and Homebrew distribution |
| 249 | |
| 250 | --- |
| 251 | |
| 252 | *© 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).* |