@tencent-ai/codebuddy-code 2.97.0-next.03ca7ec.20260514 → 2.97.0-next.bcf636d.20260514
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codebuddy-headless.js +39 -35
- package/dist/codebuddy.js +40 -36
- package/dist/web-ui/docs/cn/cli/cli-reference.md +7 -6
- package/dist/web-ui/docs/cn/cli/env-vars.md +2 -2
- package/dist/web-ui/docs/cn/cli/hooks-guide.md +52 -0
- package/dist/web-ui/docs/cn/cli/hooks.md +50 -5
- package/dist/web-ui/docs/cn/cli/plugins-reference.md +11 -0
- package/dist/web-ui/docs/cn/cli/plugins.md +4 -0
- package/dist/web-ui/docs/cn/cli/release-notes/README.md +2 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.95.1.md +27 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.96.0.md +21 -0
- package/dist/web-ui/docs/cn/cli/skills.md +91 -0
- package/dist/web-ui/docs/en/cli/cli-reference.md +1 -0
- package/dist/web-ui/docs/en/cli/env-vars.md +2 -2
- package/dist/web-ui/docs/en/cli/hooks-guide.md +52 -0
- package/dist/web-ui/docs/en/cli/hooks.md +61 -14
- package/dist/web-ui/docs/en/cli/plugins-reference.md +11 -0
- package/dist/web-ui/docs/en/cli/plugins.md +337 -457
- package/dist/web-ui/docs/en/cli/release-notes/README.md +2 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.95.1.md +27 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.96.0.md +21 -0
- package/dist/web-ui/docs/en/cli/skills.md +91 -0
- package/dist/web-ui/docs/search-index-en.json +1 -1
- package/dist/web-ui/docs/search-index-zh.json +1 -1
- package/dist/web-ui/docs/sidebar-en.json +1 -1
- package/dist/web-ui/docs/sidebar-zh.json +1 -1
- package/package.json +1 -1
- package/product.cloudhosted.json +2 -2
- package/product.internal.json +2 -2
- package/product.ioa.json +2 -2
- package/product.json +2 -2
- package/product.selfhosted.json +2 -2
- package/vendor/sandbox/sandbox-cli +0 -0
|
@@ -17,6 +17,8 @@ Difference from CHANGELOG.md:
|
|
|
17
17
|
|
|
18
18
|
<!-- New versions are automatically added here -->
|
|
19
19
|
|
|
20
|
+
- [v2.96.0](./v2.96.0.md) - 2026-05-11
|
|
21
|
+
- [v2.95.1](./v2.95.1.md) - 2026-05-07
|
|
20
22
|
- [v2.95.0](./v2.95.0.md) - 2026-05-01
|
|
21
23
|
- [v2.94.4](./v2.94.4.md) - 2026-05-01
|
|
22
24
|
- [v2.94.3](./v2.94.3.md) - 2026-04-29
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# 🚀 CodeBuddy Code v2.95.1 Release
|
|
2
|
+
|
|
3
|
+
## ✨ New Features
|
|
4
|
+
|
|
5
|
+
### General-Purpose Agent Supports Image Generation and Editing
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
|
|
9
|
+
## 🔧 Improvements
|
|
10
|
+
|
|
11
|
+
- **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.
|
|
12
|
+
- **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.
|
|
13
|
+
- **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.
|
|
14
|
+
- **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.
|
|
15
|
+
- **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".
|
|
16
|
+
- **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.
|
|
17
|
+
|
|
18
|
+
## 🐛 Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **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.
|
|
21
|
+
- **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.
|
|
22
|
+
- **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.
|
|
23
|
+
|
|
24
|
+
## 📝 Documentation Updates
|
|
25
|
+
|
|
26
|
+
- **CLI Documentation Sync**: Synchronously updated bash-sandboxing, env-vars, hooks, interactive-mode, mcp, plugins-reference, settings, skills, and other multilingual versions (cn/en/zh).
|
|
27
|
+
- **Historical Release Notes Backfill**: Published release notes documents for historical versions v2.94.0~v2.94.4.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 🚀 CodeBuddy Code v2.96.0 Release
|
|
2
|
+
|
|
3
|
+
## ✨ New Features
|
|
4
|
+
|
|
5
|
+
### SDK Custom Sub-Agent Support
|
|
6
|
+
|
|
7
|
+
The `agents` / `systemPrompt` / `appendSystemPrompt` parameters passed to SDK `initialize` are now correctly injected into the product configuration, taking effect equivalently to the CLI's `--agents` / `--system-prompt` / `--append-system-prompt`. SDK users can now conveniently customize sub-agents and system prompts.
|
|
8
|
+
|
|
9
|
+
### Sub-Agent Tool Blacklist
|
|
10
|
+
|
|
11
|
+
`AgentDefinition` adds a new `disallowedTools` field, allowing a disabled tool list to be configured for individual sub-agents. It is automatically combined with the session-level `--disallowedTools` (taking the union), enabling more fine-grained control over sub-agent capability boundaries.
|
|
12
|
+
|
|
13
|
+
## 🔧 Improvements
|
|
14
|
+
|
|
15
|
+
- **Session Title Internationalization**: AI-generated session titles now follow the user's language settings — Chinese environments produce Chinese titles, instead of always outputting English.
|
|
16
|
+
|
|
17
|
+
## 🐛 Bug Fixes
|
|
18
|
+
|
|
19
|
+
- **Web UI Refresh Loses Session Title**: When restoring an existing session, the top title now immediately displays the original title, no longer briefly falling back to "New Conversation".
|
|
20
|
+
- **MCP List Cache**: Fixed an issue where, after `list()` returned an empty result, calling `add()` would not show the new server in the cache.
|
|
21
|
+
- **Streaming Output Model Display**: `stream-json` output now prefers the model id actually reported by the provider, avoiding the parent agent's configuration id from being displayed when forwarding sub-agent events, improving observability.
|
|
@@ -79,6 +79,8 @@ Available tools:
|
|
|
79
79
|
| `user-invocable` | No | When set to `false`, the Skill is hidden from the `/` menu and is only available for internal AI invocation or reference by other Skills, defaults to `true` | `false` |
|
|
80
80
|
| `context` | No | When set to `fork`, the Skill executes in an isolated subagent context | `fork` |
|
|
81
81
|
| `agent` | No | Specifies the subagent type, only effective when `context: fork` | `Explore` |
|
|
82
|
+
| `model` | No | Specifies the model used when the Skill executes (only effective when `context: fork`; falls back to the agent's default model when not configured) | `claude-sonnet-4` |
|
|
83
|
+
| `hooks` | No | Declares Skill-specific hooks in SKILL.md. Only effective when `context: fork`. See [Configuring Hooks in a Skill](#configuring-hooks-in-a-skill) | See below |
|
|
82
84
|
|
|
83
85
|
## Variable Placeholders
|
|
84
86
|
|
|
@@ -201,6 +203,95 @@ Such Skills are loaded into the AI's context but cannot be directly invoked by u
|
|
|
201
203
|
|
|
202
204
|
> **Note**: `context: fork` is only suitable for Skills that contain specific tasks. Skills with only guidelines and no concrete tasks will not produce meaningful output.
|
|
203
205
|
|
|
206
|
+
## Configuring Hooks in a Skill
|
|
207
|
+
|
|
208
|
+
> **Version requirement**: The Skill frontmatter `hooks` field requires a version of CodeBuddy Code that supports Frontmatter Hooks (Beta).
|
|
209
|
+
|
|
210
|
+
In addition to globally configuring hooks in `~/.codebuddy/settings.json`, a Skill can also declare a `hooks` field directly in the SKILL.md frontmatter, packaging the hook together with the Skill itself. This is especially useful for fork-style Skills — you can add guards, logs, and callbacks inside the fork subagent without polluting the main session.
|
|
211
|
+
|
|
212
|
+
### Applicability
|
|
213
|
+
|
|
214
|
+
- **Only effective when `context: fork`**: Skills using the injection path (the default inline mode) do not have clear lifecycle boundaries; frontmatter hooks will be parsed but not registered with the runtime.
|
|
215
|
+
- **Lifecycle bound to the fork subagent**: Hooks are registered when the fork subagent starts and automatically cleaned up when it ends, without affecting the main session or other Skills.
|
|
216
|
+
- **`Stop` is automatically converted to `SubagentStop`**: Writing the `Stop` event in frontmatter is automatically rewritten to `SubagentStop` to align with the actual event of subagent completion.
|
|
217
|
+
|
|
218
|
+
### Field Format
|
|
219
|
+
|
|
220
|
+
The structure of the `hooks` field is identical to `hooks` in `settings.json` — grouped by event name, with each entry supporting a `matcher` and a `hooks[]` array:
|
|
221
|
+
|
|
222
|
+
```yaml
|
|
223
|
+
---
|
|
224
|
+
name: secure-reviewer
|
|
225
|
+
description: Code review Skill that checks file allowlist before execution
|
|
226
|
+
context: fork
|
|
227
|
+
agent: Explore
|
|
228
|
+
hooks:
|
|
229
|
+
PreToolUse:
|
|
230
|
+
- matcher: "Read|Glob|Grep"
|
|
231
|
+
hooks:
|
|
232
|
+
- type: command
|
|
233
|
+
command: ${CODEBUDDY_SKILL_DIR}/scripts/check-paths.sh
|
|
234
|
+
timeout: 10
|
|
235
|
+
PostToolUse:
|
|
236
|
+
- matcher: "Bash"
|
|
237
|
+
hooks:
|
|
238
|
+
- type: prompt
|
|
239
|
+
prompt: "Check whether the Bash output contains sensitive information; if so, explain it in the reason field."
|
|
240
|
+
Stop: # Automatically rewritten to SubagentStop
|
|
241
|
+
- hooks:
|
|
242
|
+
- type: command
|
|
243
|
+
command: echo "review skill finished" >> ${CODEBUDDY_PROJECT_DIR}/.cbc-review.log
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
Please review the files mentioned in $ARGUMENTS...
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Supported hook `type`s:
|
|
250
|
+
|
|
251
|
+
- `command`: Executes a Shell command (with optional fields like `shell: bash | powershell`, `timeout`, `if`, `once`, `async`)
|
|
252
|
+
- `prompt`: Hands off to a small model (default Haiku-class) for semantic decisions
|
|
253
|
+
- `agent`: Spins up a subagent for more complex decisions, with optional `agentType` / `model`
|
|
254
|
+
- `http`: Sends the event payload via POST/PUT/PATCH to the specified URL
|
|
255
|
+
|
|
256
|
+
For complete field semantics, see the [Hook Reference Guide](./hooks.md).
|
|
257
|
+
|
|
258
|
+
### Security Gate: admin-trusted
|
|
259
|
+
|
|
260
|
+
For security reasons, **frontmatter hooks from Skills sourced from non-built-in origins are not registered by default**. Currently, all Skills loaded from `.codebuddy/skills/`, project-local sources, or plugin marketplaces are considered "untrusted sources" — they can silently trigger Shell commands, so explicit user consent is required.
|
|
261
|
+
|
|
262
|
+
To enable, set the following in `~/.codebuddy/settings.json`:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"allowUntrustedFrontmatterHooks": true
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Once enabled, frontmatter hooks from Skills/Agents of all sources will be registered; otherwise, the CLI will print a warning like the following and skip the Skill's hooks:
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
[AgentTask] Frontmatter hooks from skill 'secure-reviewer' skipped
|
|
274
|
+
(source not admin-trusted; enable `allowUntrustedFrontmatterHooks` in settings to allow)
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
> Built-in product-bundled Skills are not subject to this gate and are automatically allowed. Hooks configured by plugins via `hooks/hooks.json` go through a different path and are **not** controlled by this gate.
|
|
278
|
+
|
|
279
|
+
### Merging with Global Hooks
|
|
280
|
+
|
|
281
|
+
Skill frontmatter hooks and global hooks in `settings.json` are in an **additive merge** relationship — for the same event, all matching hooks from both sides are triggered in parallel; there is no override. The differences are:
|
|
282
|
+
|
|
283
|
+
| Source | Scope | Subject to admin-trusted gate |
|
|
284
|
+
| --- | --- | --- |
|
|
285
|
+
| `settings.json` (global/project/local) | Entire session | No |
|
|
286
|
+
| Plugin `hooks/hooks.json` | Entire session (when plugin is enabled) | No |
|
|
287
|
+
| Agent `.md` frontmatter | The subagent's lifecycle | Yes |
|
|
288
|
+
| Skill `SKILL.md` frontmatter (fork only) | The fork subagent's lifecycle | Yes |
|
|
289
|
+
|
|
290
|
+
### Debugging
|
|
291
|
+
|
|
292
|
+
- Set `CODEBUDDY_DEBUG=1` at startup to see registration lines like `[ScopedHookRegistry] registered N hook config(s) for scope ...` in the logs.
|
|
293
|
+
- Invalid hook definitions in the frontmatter are silently dropped, but a `[parseFrontmatterHooks] skill 'xxx': event 'YYY' invalid: ...` message is emitted in the log — check the logs to locate issues.
|
|
294
|
+
|
|
204
295
|
## Usage Examples
|
|
205
296
|
|
|
206
297
|
### Example 1: PDF Processing Skill
|