v1.1.11
LatestTool calls that actually run, and an agent that knows where it is
The agent release. Inline XML tool calls are parsed and executed instead of being printed as text, the workspace is summarized before the first turn, every project rules file is read, and each turn reports its plan, step, and recent results. Git gains stash, rebase, take-ours, and one-click commit messages. The MCP server no longer loses a call that lands during startup.
AI
- Inline XML tool calls now run. DSML <|DSML| invoke>, <tool_calls>, and <antml:invoke> are all parsed, and the tags are stripped from both the visible reply and the stored history.
- The workspace is summarized before the first turn: detected stack, entry points, top-level layout, and a short file list, with node_modules, .vite, .git, dist, and target left out.
- Every project rules file is read. AGENTS.md, CLAUDE.md, ZEPHYR.md, and .cursorrules are all loaded instead of stopping at the first one found.
- Each agent turn gets a status block carrying the plan, the step number, the recent tool results, and the calls that failed.
- A failed tool call returns explicit guidance to try a different approach rather than letting the loop retry the same thing.
- file_edit replaces every occurrence and no longer treats $&, $`, or $1 as replacement patterns.
- The active editor file is passed to the agent as context while agent mode is on.
- A provider with no API key shows a banner with a button that jumps to the exact settings section it needs.
- The Chat or Agent choice is remembered across restarts instead of resetting to Chat.
- The subagent runner has a 90-second idle watchdog, so a silent worker is reclaimed instead of hanging the turn.
Features
- Git blame for the active file is printed to the Output panel.
- Git stash: save, list, pop, and drop.
- Merge conflicts resolve per file with take-ours and take-theirs.
- Rebase the current branch onto another one without leaving the editor.
- Write a commit message from the diff in one click.
Interface
- The startup splash paints immediately and closes on React mount, with a timeout fallback so it can never get stuck on screen.
- Feature panels (sidebar, settings, command palette, dialogs) load on demand, which shortens the time to the first usable frame.
- The subagent panel shows a progress bar while workers run.
- The browser pane starts with an empty address bar instead of a hardcoded localhost:3000.
- The Chat and Agent buttons have tooltips.
MCP
- Requests wait briefly for the front end and retry, so a call that arrives during startup is not lost with "UI did not answer".
- /health performs no UI work and needs no token, and no longer holds the MCP lock for up to eight seconds.
- Pending requests are cleared on every failure path, not just the happy one.
Fixes
- Settings files with a UTF-8 BOM are read correctly. They were previously moved aside as .broken-*, which silently reset your preferences.
- A settings patch is cancelled when the current file cannot be read, instead of writing over it.
- Settings are written atomically through a temp file and a rename.
- The AI model is reconciled from settings at boot and before every send. A stale custom-model placeholder was causing 401s.
- Non-ASCII paths no longer panic. The relative path helper was slicing a string by byte offset.
- An extension id such as C:evil is rejected, so it cannot resolve outside the extensions directory.
- A subagent that never replies now fails with a clear timeout instead of an empty result.