# 🚀 CodeBuddy Code v2.95.1 Release

## ✨ New Features

### General-Purpose Agent Supports Image Generation and Editing

The general-purpose sub-agent's tool list now includes ImageGen and ImageEdit, enabling images to be generated directly within sub-tasks or edited based on existing images. Availability is still determined by the model's capability tags.

## 🔧 Improvements

- **Skill Tool Description Truncation**: Adopts a three-stage balanced truncation strategy. In scenarios with many skills, tool descriptions automatically converge within the character budget instead of growing unbounded. Adds a new env `CODEBUDDY_SKILL_TOOL_CHAR_BUDGET` to independently control the Skill tool description budget (default 8000). ⚠️ **Breaking change**: The default character budget for the SlashCommand tool has been changed from 15000 to 8000. Set `SLASH_COMMAND_TOOL_CHAR_BUDGET=15000` to restore.
- **MCP Large Response Handling**: When MCP tool responses exceed the token limit, the session is no longer interrupted with an error. Instead, the full content is saved to the session directory and a read guide is returned, allowing the model to read in segments via offset/limit. Set `CODEBUDDY_DISABLE_MCP_LARGE_OUTPUT_FILES=1` to always fall back to truncation.
- **Streaming Response Timeouts**: Increased the default timeouts for first-token wait and inter-stream silence from 10 minutes to 20 minutes, preventing long-context requests or slow-response models from being incorrectly judged as connection-lost during the first-token phase.
- **Windows Paste Experience**: Improved the stability of pasting large blocks of text and clipboard content in Windows terminals, reducing input flickering and content fragmentation issues.
- **Unified Cancel Cleanup Orchestrator**: When a cancel signal is received, session runtime state is uniformly cleaned up across six dimensions (interaction, mode, Todo, tool broadcast, compaction state flags, UI progress signals), thoroughly eliminating bugs like "dirty state from cancellation persisting into the next prompt" and "compaction loading banner not disappearing after cancel".
- **Internal Generator Agent Optimization**: Internal-task agents (context compaction, title generation, summary generation, etc.) no longer auto-inject the SendMessage tool, saving prompt tokens and avoiding pollution of structured output.

## 🐛 Bug Fixes

- **UI State Display After Compaction Cancel**: Fixed an issue where clicking the cancel button during streaming compaction did not properly reflect the "cancelled" semantics on the divider UI — previously it would incorrectly display "Context compacted ✓" or continue to show the "Compacting..." shimmer. Both auto-compact and manual `/compact` paths are covered.
- **ACP Auto-Compaction Silent Semantics**: Internal abort/error events triggered during auto-compaction no longer expose `stopReason='cancelled'` to ACP clients. External consumers (IDE/Web UI/Desktop) no longer see a meaningless "cancelled" flash. User-initiated Ctrl-C / ACP cancel still emits cancel signals normally.
- **Desktop Operation Tool Visibility**: Desktop operation tools no longer appear in tool search descriptions when not enabled or on non-macOS platforms, preventing the model from attempting to call them only to be rejected.

## 📝 Documentation Updates

- **CLI Documentation Sync**: Synchronously updated bash-sandboxing, env-vars, hooks, interactive-mode, mcp, plugins-reference, settings, skills, and other multilingual versions (cn/en/zh).
- **Historical Release Notes Backfill**: Published release notes documents for historical versions v2.94.0~v2.94.4.
