@tencent-ai/codebuddy-code 2.97.5 → 2.98.1

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/codebuddy-headless.js +96 -94
  3. package/dist/codebuddy.js +102 -100
  4. package/dist/web-ui/docs/cn/cli/codebuddy-dir.md +309 -0
  5. package/dist/web-ui/docs/cn/cli/env-vars.md +21 -0
  6. package/dist/web-ui/docs/cn/cli/http-api.md +6 -0
  7. package/dist/web-ui/docs/cn/cli/ide-integrations.md +2 -1
  8. package/dist/web-ui/docs/cn/cli/monitoring.md +87 -0
  9. package/dist/web-ui/docs/cn/cli/release-notes/README.md +7 -0
  10. package/dist/web-ui/docs/cn/cli/release-notes/v2.96.1.md +17 -0
  11. package/dist/web-ui/docs/cn/cli/release-notes/v2.97.0.md +186 -0
  12. package/dist/web-ui/docs/cn/cli/release-notes/v2.97.1.md +24 -0
  13. package/dist/web-ui/docs/cn/cli/release-notes/v2.97.2.md +16 -0
  14. package/dist/web-ui/docs/cn/cli/release-notes/v2.97.3.md +17 -0
  15. package/dist/web-ui/docs/cn/cli/release-notes/v2.97.4.md +9 -0
  16. package/dist/web-ui/docs/cn/cli/release-notes/v2.97.5.md +20 -0
  17. package/dist/web-ui/docs/en/cli/codebuddy-dir.md +309 -0
  18. package/dist/web-ui/docs/en/cli/env-vars.md +23 -2
  19. package/dist/web-ui/docs/en/cli/http-api.md +6 -0
  20. package/dist/web-ui/docs/en/cli/ide-integrations.md +2 -1
  21. package/dist/web-ui/docs/en/cli/monitoring.md +87 -0
  22. package/dist/web-ui/docs/en/cli/release-notes/README.md +7 -0
  23. package/dist/web-ui/docs/en/cli/release-notes/v2.96.1.md +17 -0
  24. package/dist/web-ui/docs/en/cli/release-notes/v2.97.0.md +186 -0
  25. package/dist/web-ui/docs/en/cli/release-notes/v2.97.1.md +24 -0
  26. package/dist/web-ui/docs/en/cli/release-notes/v2.97.2.md +16 -0
  27. package/dist/web-ui/docs/en/cli/release-notes/v2.97.3.md +17 -0
  28. package/dist/web-ui/docs/en/cli/release-notes/v2.97.4.md +9 -0
  29. package/dist/web-ui/docs/en/cli/release-notes/v2.97.5.md +20 -0
  30. package/dist/web-ui/docs/search-index-en.json +1 -1
  31. package/dist/web-ui/docs/search-index-zh.json +1 -1
  32. package/dist/web-ui/docs/sidebar-en.json +1 -1
  33. package/dist/web-ui/docs/sidebar-zh.json +1 -1
  34. package/package.json +1 -1
  35. package/product.cloudhosted.json +279 -2
  36. package/product.internal.json +2 -2
  37. package/product.ioa.json +2 -2
  38. package/product.json +2 -2
  39. package/product.selfhosted.json +2 -2
@@ -287,6 +287,7 @@ Aligned with E2B process.proto, mapping gRPC methods to REST endpoints:
287
287
  | GET | `/api/v1/plugins/marketplaces` | List configured plugin marketplaces |
288
288
  | POST | `/api/v1/plugins/marketplaces` | Add plugin marketplace |
289
289
  | POST | `/api/v1/plugins/marketplaces/browse` | Browse available plugins in marketplace |
290
+ | POST | `/api/v1/plugins/marketplaces/update` | Update marketplace (sync remote repository content) |
290
291
  | DELETE | `/api/v1/plugins/marketplaces/:name` | Delete plugin marketplace |
291
292
 
292
293
  ### Settings Management
@@ -547,6 +548,11 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins/marketplaces/browse \
547
548
  -H "Content-Type: application/json" \
548
549
  -d '{"marketplace": "my-marketplace"}'
549
550
 
551
+ # Update marketplace (actually pulls latest content from remote)
552
+ curl -X POST http://127.0.0.1:8080/api/v1/plugins/marketplaces/update \
553
+ -H "Content-Type: application/json" \
554
+ -d '{"marketplace": "my-marketplace"}'
555
+
550
556
  # Delete plugin marketplace
551
557
  curl -X DELETE http://127.0.0.1:8080/api/v1/plugins/marketplaces/my-marketplace
552
558
  ```
@@ -42,7 +42,8 @@ Behavior description:
42
42
 
43
43
  - CodeBuddy will scan lock files created by IDE plugins in the current user directory to detect available IDE instances
44
44
  - Only considers an IDE as "valid" if its workspace contains the current directory
45
- - Prioritizes connecting to IDEs whose "workspace matches and process chain is upstream of the current terminal"
45
+ - Auto-connection only happens when **exactly one** valid IDE matches the current working directory; if zero or multiple match, auto-connection is silently skipped, and you can use `/ide` to manually select
46
+ - Stale lock files for IDE processes that have already exited are cleaned up before detection, avoiding connections to invalid ports
46
47
  - After successful connection, the CLI will obtain from the IDE MCP server:
47
48
  - File/diff preview (openFile / openDiff)
48
49
  - Diagnostic information (getDiagnostics)
@@ -0,0 +1,87 @@
1
+ # Monitoring CodeBuddy Code with OpenTelemetry
2
+
3
+ CodeBuddy Code supports exporting internal traces to your own OpenTelemetry Collector via the standard OTLP protocol, making it easy to integrate with self-hosted observability platforms.
4
+
5
+ > **MVP Scope**: Currently only **traces** (distributed tracing) are supported; custom export of metrics and logs is not yet available. Support will be expanded as needed.
6
+
7
+ ## How to Enable
8
+
9
+ Once the enable switch is set, traces will be exported using OTel standard environment variables:
10
+
11
+ ```bash
12
+ export CODEBUDDY_CODE_ENABLE_TELEMETRY=1
13
+ export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.example.com
14
+ codebuddy
15
+ ```
16
+
17
+ > A legacy alias `CLAUDE_CODE_ENABLE_TELEMETRY` is also accepted for backward compatibility and is equivalent to `CODEBUDDY_CODE_ENABLE_TELEMETRY`.
18
+
19
+ ## Key Environment Variables
20
+
21
+ For the full list, see [env-vars.md](env-vars.md#opentelemetry-custom-export-traces). Common ones:
22
+
23
+ | Variable | Purpose |
24
+ |----------|---------|
25
+ | `CODEBUDDY_CODE_ENABLE_TELEMETRY=1` | Enable the OTel export switch |
26
+ | `OTEL_TRACES_EXPORTER` | `otlp` (default) / `console` / `none` |
27
+ | `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP Collector address; `/v1/traces` is appended automatically |
28
+ | `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Full URL specific to traces; takes higher priority |
29
+ | `OTEL_EXPORTER_OTLP_HEADERS` | Request headers `k1=v1,k2=v2`; values support URL encoding |
30
+ | `OTEL_SERVICE_NAME` | Override the default `service.name` |
31
+ | `OTEL_RESOURCE_ATTRIBUTES` | Additional resource attributes |
32
+
33
+ ## Protocol Support
34
+
35
+ Only **`http/protobuf`** (OTLP/HTTP + Protobuf encoding) is supported, consistent with the CodeBuddy Code default.
36
+
37
+ Setting `OTEL_EXPORTER_OTLP_PROTOCOL=grpc` or `http/json` will be ignored with a warning logged, and will fall back to the default protobuf.
38
+
39
+ ## Typical Scenarios
40
+
41
+ ### 1. Export to a Self-Hosted Enterprise Collector
42
+
43
+ ```bash
44
+ export CODEBUDDY_CODE_ENABLE_TELEMETRY=1
45
+ export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.corp.example.com
46
+ export OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer%20<TOKEN>
47
+ export OTEL_SERVICE_NAME=codebuddy-code
48
+ export OTEL_RESOURCE_ATTRIBUTES=deployment.environment=prod,team=copilot
49
+ ```
50
+
51
+ ### 2. Local Debug Trace Output
52
+
53
+ For debugging, send traces directly to stdout:
54
+
55
+ ```bash
56
+ export CODEBUDDY_CODE_ENABLE_TELEMETRY=1
57
+ export OTEL_TRACES_EXPORTER=console
58
+ ```
59
+
60
+ ### 3. Temporarily Disable
61
+
62
+ ```bash
63
+ export OTEL_TRACES_EXPORTER=none
64
+ # Or globally disable:
65
+ export DISABLE_TELEMETRY=1
66
+ ```
67
+
68
+ ## Priority and Fallback
69
+
70
+ 1. `DISABLE_TELEMETRY=1` has the highest priority and disables all telemetry.
71
+ 2. Enable evaluation: enabled in the built-in product configuration **or** `CODEBUDDY_CODE_ENABLE_TELEMETRY` (or its legacy alias `CLAUDE_CODE_ENABLE_TELEMETRY`) is set to a truthy value (`1` / `true` / `yes` / `on`).
72
+ 3. Endpoint priority: `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` > `OTEL_EXPORTER_OTLP_ENDPOINT` > `telemetry.tracing.url` in the built-in product configuration.
73
+ 4. Headers: env and product configuration are merged; env keys with the same name override product configuration.
74
+
75
+ ## FAQ
76
+
77
+ ### Will prompts or code content be written into traces?
78
+
79
+ No. CodeBuddy Code traces only record structured metrics such as tool calls, model calls, and durations. They do not contain user conversation content or source code. If you need to record code snippets, you must separately enable the standard reporting channel (which is outside the scope of this feature).
80
+
81
+ ### Does it conflict with the internal enterprise reporting channel?
82
+
83
+ No conflict. OTel custom export and the built-in standard reporting (`telemetry.report.standard`) are two independent channels and can be enabled simultaneously.
84
+
85
+ ### Is metrics / logs supported?
86
+
87
+ Not yet supported, but planned. If you have a strong need, please provide feedback on the corresponding Issue.
@@ -17,6 +17,13 @@ Difference from CHANGELOG.md:
17
17
 
18
18
  <!-- New versions are automatically added here -->
19
19
 
20
+ - [v2.97.5](./v2.97.5.md) - 2026-05-22
21
+ - [v2.97.4](./v2.97.4.md) - 2026-05-21
22
+ - [v2.97.3](./v2.97.3.md) - 2026-05-19
23
+ - [v2.97.2](./v2.97.2.md) - 2026-05-16
24
+ - [v2.97.1](./v2.97.1.md) - 2026-05-14
25
+ - [v2.97.0](./v2.97.0.md) - 2026-05-13
26
+ - [v2.96.1](./v2.96.1.md) - 2026-05-12
20
27
  - [v2.96.0](./v2.96.0.md) - 2026-05-11
21
28
  - [v2.95.1](./v2.95.1.md) - 2026-05-07
22
29
  - [v2.95.0](./v2.95.0.md) - 2026-05-01
@@ -0,0 +1,17 @@
1
+ # 🚀 CodeBuddy Code v2.96.1 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ - **Automation Task Langfuse Tags**: Requests triggered by scheduled tasks now automatically carry the `automation` tag, making it easier to filter and analyze automation task execution data on the Langfuse dashboard
6
+
7
+ ## 🔧 Improvements
8
+
9
+ - **Hosts Can Disable Embedded CLI History Cleanup**: Allows host applications to disable the automatic history session cleanup behavior of the embedded CLI via configuration, accommodating more integration scenarios
10
+ - **Unified Context Compaction Trigger Path**: Merged multiple compaction trigger logic paths into a single entry point, improving the reliability and consistency of the compaction flow
11
+
12
+ ## 🐛 Bug Fixes
13
+
14
+ - **SDK Mode Auto-Compaction Disconnect**: Fixed an issue where triggering automatic context compaction in SDK mode caused connection interruptions
15
+ - **Session Stuck After Context Compaction Failure**: Fixed an issue where sessions would get stuck and could not continue after context compaction failed
16
+ - **Plugin Marketplace UI Cache Not Refreshed**: Fixed an issue where the Web UI cache was not refreshed in time after plugin marketplace updates
17
+ - **Plugin Sub-Agent Description Refresh**: Fixed an issue where plugin sub-agent description information was not properly refreshed
@@ -0,0 +1,186 @@
1
+ # 🚀 CodeBuddy Code v2.97.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Complete Keybindings System
6
+
7
+ Implemented a keybindings system referencing the CodeBuddy Code architecture, supporting context conditions, chord sequences (e.g. Ctrl+X Ctrl+K), and user-defined overrides.
8
+
9
+ - Configuration file: `~/.codebuddy/keybindings.json`
10
+ - 16 contexts (Global / Chat / Terminal / Autocomplete, etc.) with 60+ actions
11
+ - `/keybindings` slash command for quick management
12
+ - Web UI adds visual configuration (grouped by context, search, recording, real-time conflict detection)
13
+ - REST API: `/api/v1/keybindings` (GET/PUT/POST reset/POST validate)
14
+
15
+ ### Skill / Subagent Frontmatter Hooks
16
+
17
+ Aligned with CodeBuddy Code behavior, the `hooks:` field is now supported in the YAML frontmatter of `.codebuddy/agents/*.md` and `.codebuddy/skills/*/SKILL.md`, and is automatically registered and cleaned up during the sub-agent / fork skill lifecycle.
18
+
19
+ - Supports four hook types: `command` / `prompt` / `agent` / `http`
20
+ - `once: true` for automatic removal, with event matcher semantics
21
+ - **Default Safety Gate**: Frontmatter hooks from non-product built-in sources are disabled by default (including local and plugin marketplace), and require enabling `allowUntrustedFrontmatterHooks: true` in `settings.json` to take effect
22
+
23
+ ### Hook Events Fully Aligned with CodeBuddy Code
24
+
25
+ Added 20+ hook events covering tool failures, sub-agent lifecycle, task management, permission approvals, file watching, and more:
26
+
27
+ - **Lifecycle**: PostToolUseFailure / SubagentStart / StopFailure / PostCompact / ConfigChange / InstructionsLoaded
28
+ - **Permissions and Tasks**: PermissionRequest / PermissionDenied (can intercept approvals), TaskCreated / TaskCompleted, TeammateIdle, Setup
29
+ - **File Watching**: FileChanged (declares watchPaths), CwdChanged (triggered on cwd change)
30
+ - **New Hook Types**: `http` (POST to any URL), `agent` (reuses prompt path)
31
+ - **New Fields**: `if` (matches by tool name/parameters), `shell` (switch to PowerShell), `once` (no longer triggers after success), `asyncRewake`, `allowedEnvVars`, `statusMessage`
32
+ - **Async Protocol**: Hook output `{"async": true, "asyncTimeout": N}` immediately releases as fire-and-forget
33
+
34
+ ### Variable Placeholders for Skills / Commands / Subagents
35
+
36
+ `.md` files now support variable placeholder substitution: `${CODEBUDDY_PLUGIN_ROOT}` / `${CODEBUDDY_SKILL_DIR}` / `${CODEBUDDY_SESSION_ID}` and any uppercase environment variables, with `${MY_ENV_VAR:-default}` default value syntax. Unset placeholders are preserved as-is to avoid silently losing configuration.
37
+
38
+ ### Third-Party Plugin Marketplace Auto-Update
39
+
40
+ Added the `autoUpdateThirdPartyMarketplaces` product configuration and the `CODEBUDDY_AUTO_UPDATE_THIRD_PARTY_MARKETPLACES` environment variable, supporting global enabling of third-party plugin marketplace auto-updates. The marketplace configuration entry adds an optional `autoUpdate` field for individual control.
41
+
42
+ ### Configurable Remote Gateway Task Timeout
43
+
44
+ The default timeout for the `/api/v1/runs` endpoint has been raised from 10 minutes to **30 minutes**, so long-running tasks are no longer forcibly interrupted:
45
+
46
+ - New `gateway.runTimeoutMs` settings configuration (milliseconds)
47
+ - New HTTP header `X-Codebuddy-Run-Timeout` for single-request override
48
+ - Set to 0 or negative to disable timeout protection
49
+
50
+ ### Web UI PWA Auto-Detects New Versions
51
+
52
+ After releasing a new version, already-opened Web UI tabs no longer require a manual hard refresh:
53
+
54
+ - Automatically asks the backend whether a new Service Worker is available every 15 minutes
55
+ - Automatically refreshes to the new version when the conversation is idle
56
+ - During an ongoing conversation, a toast pops up retaining the "Refresh Now" button; subscribed run state will auto-refresh after the Agent becomes idle
57
+
58
+ ### UE Projects Automatically Exclude Monorepo Noise Directories
59
+
60
+ When `*.uproject` is detected in the cwd, Grep / Glob automatically applies `!Intermediate/` `!DerivedDataCache/` `!Saved/` `!Binaries/` `!Build/` `!.vs/` exclusions to avoid build artifacts of Unreal Engine projects (typically 100K+ source files / 3M+ total files) polluting search results. This can be disabled via `settings.disableUEAutoExclude: true`. Grep content search adds `--max-columns 500` to prevent single-line MB-sized content from flooding stdout.
61
+
62
+ ### Desktop Filesystem ACP Methods
63
+
64
+ Implemented the complete `fs/*` methods (list / read / write / exists / makeDir / remove / rename / getInfo / watchDir / unwatch) in ACP StreamManager, enabling the WorkBuddy Desktop "All Files" tab to work properly.
65
+
66
+ ## 🔧 Improvements
67
+
68
+ - **PowerShell Multi-Layer Security Defense**: CLM type whitelist (~90 types), Git security protection (bare repo / NTFS 8.3 / archive extractor), dangerous Cmdlet classification (7 sets + 120+ aliases), destructive command UI warnings (16 patterns), Unicode dash support
69
+ - **ACP Connection Stability**: GET SSE connection 30-second heartbeat to prevent reverse proxy (cloudflared / nginx) recycling; waits for history writes to complete on connection close to prevent JSONL log truncation
70
+ - **Bash Tool Timeout Hint Made Dynamic**: The "max timeout" in the tool description was previously hardcoded to 600000ms; now it is dynamically injected to stay consistent with the runtime's actual clamp value
71
+ - **TUI Ctrl+F / Ctrl+B Cursor Navigation**: Supports bash readline-style left/right one-character movement, consistent with existing Ctrl+A / Ctrl+E / Ctrl+K / Ctrl+U; emoji multi-byte character movement is correct
72
+ - **Web UI Canvas-Embedded Terminal Text Selection**: After a tile is focused, the overlay passes pointerdown through to xterm to support select-and-copy; middle / right click / Space + left click still drive canvas panning
73
+ - **Channel Permission deny_and_exit_plan**: WeChat / WeChat Work users can exit Plan mode by replying `q`; the ExitPlanMode tool adds a dedicated prompt
74
+ - **Request Purpose Tagging**: New `X-Agent-Purpose` HTTP header to add classification labels to different types of LLM requests, enabling Langfuse trace analysis
75
+ - **Image Compression Interceptor**: Uniformly compresses base64 images sent by users to a 2000px long edge, ensuring images from ACP / TUI / plugin-chat sources all undergo size optimization
76
+ - **Worktree Directory Switching**: After creating or reusing a worktree, tries to enter the relative subdirectory corresponding to the current directory whenever possible
77
+ - **Unified Session API**: Merged `listWorkspaces` and `listAcrossProjects` into a unified `GET /api/v1/sessions` endpoint, with `cwd` query parameter support
78
+ - **Auto-Recovery for Model Permission Errors**: When the backend returns "model unavailable", the product configuration is automatically refreshed and the latest available model list is displayed
79
+ - **Removed Legacy Models and Refreshed Credit Coefficients**: Removed the HY 2.0 series (3 models) and GPT-5.2/5.1, totaling 4 legacy models; refreshed model credits per the latest official pricing table (iOA / China Edition / Cloud-Hosted Edition)
80
+ - **Plugin Loading Concurrency and Caching**: Introduced concurrency limits for marketplace plugin list / metadata / component loading to avoid startup jitter; added marketplace plugin list caching and load deduplication
81
+ - **Automation Task Langfuse Tags**: Requests triggered by scheduled tasks automatically carry the `automation` tag for easy filtering
82
+
83
+ ## 🐛 Bug Fixes
84
+
85
+ ### ACP Protocol and Stability
86
+
87
+ - **`/clear` Separator Lost After Restart**: Fixed an issue where `/clear` separators inserted in CBC / WorkBuddy Desktop sessions disappeared after restart or loadSession replay, along with the resulting 400 errors
88
+ - **`/compact` Effective in IM Scenarios**: WorkBuddy Desktop IM's `/compact` / `/总结` previously had no effect; now compaction is invoked via `_meta` short-circuit
89
+ - **Cancel Barrier**: If a new `session/prompt` arrives the moment a cancel completes, it would be treated as a new conversation start; added a 500ms cancel barrier
90
+ - **Cancel Marker Leak**: When prompt terminal state and `session/cancel` happen simultaneously, the pending cancellation marker was not consumed, causing subsequent AskUserQuestion rounds to be misjudged as canceled
91
+ - **Streaming Reply Repeats Reasoning Content**: Fixed WorkBuddy chat streaming reply repeatedly outputting reasoning content
92
+ - **AskUserQuestion Shows "Unanswered"**: In ACP mode, the UI displayed "Unanswered" after the user answered AskUserQuestion
93
+ - **AskUserQuestion Misjudged as "Refused to Answer"**: The approval signal arrived before the tool execution path established a waiter, causing the answer to be discarded
94
+ - **Session Lookup Race Condition**: `session/prompt` now uses `getRuntimeSession` to prioritize active sessions, avoiding "Session not found"
95
+ - **Sessions Inherit CLI Startup Parameters**: Sessions created via ACP in `--serve` mode did not inherit `--permission-mode` / `--model` and other parameters
96
+ - **`session/load` Timeout**: Timeouts occurred in some Windows environments; added a 25s fallback at the protocol entry layer
97
+ - **Model Switch Not Effective**: `unstable_setSessionModel` now writes the new model into the runtime session immediately, no longer relying solely on subscription side effects
98
+ - **No Longer Exposes Built-in Commands as Skills**: `/clear` `/help` `/model` `/theme` `/status` `/resume` `/rename` are no longer mixed into the `Skill` tool list
99
+
100
+ ### Context Compaction (Compact)
101
+
102
+ - **Auto-Cancel Loop**: Compaction would falsely appear "auto-canceled" in some scenarios and then immediately retrigger; the compaction call wait limit was relaxed from 60 seconds to 20 minutes
103
+ - **Residual XML Tags**: Residual `</conversation_history_summary>` tag remained when tasks ended abnormally
104
+ - **Summary and User Message Misaligned**: In request-level auto pre-compaction scenarios, the compaction summary and the original user message were misaligned in history
105
+ - **Degenerate Summary**: After auto-compaction of long sessions, when there was insufficient effective new content, compaction could still trigger again and generate an invalid summary
106
+ - **History View Stuck After Failure**: After a failure/cancellation, retriggering compaction was still stuck
107
+ - **Timeout Deadlock and Cancellation**: Sub-agent compact state machine would deadlock after timeout; the cancellation signal was swallowed when the user actively canceled
108
+ - **Custom Model Auto-Compaction Window**: Falls back to the `CODEBUDDY_AUTO_COMPACT_WINDOW` fallback window when `maxInputTokens` is not configured
109
+ - **SDK Mode Auto-Compaction Disconnect**: Compaction output leaked to stdout in SDK / headless mode causing disconnection
110
+ - **Auto-Compaction Renders Raw XML**: The chat interface rendered raw `<conversation_history_summary>` tags; now uses the same rendering as `/compact`
111
+ - **Failure Preserves User Message**: After auto pre-compaction before sending fails, the user message is preserved and a clear failure prompt is shown
112
+ - **History `Unknown content` Error**: Continuing a conversation from history could throw `Unknown content` and cause interruption
113
+
114
+ ### Models and Request Handling
115
+
116
+ - **PTL Context Overflow Recovery**: Added a fallback mechanism that precisely truncates history by API turn, covering common model error messages
117
+ - **Empty Stream Auto-Retry**: Recognizes "empty stream" scenarios where the upstream gateway sends only placeholder/heartbeat frames before disconnecting, and auto-recovers
118
+ - **Request Body Size Limit Recovery**: Explicitly sets `maxBodyLength: Infinity` on axios to avoid follow-redirects' default 10MB limit intercepting locally
119
+ - **`Tool X not found` Error Handling**: Errors no longer carry agent names with product implementation details; `ModelBehaviorError` no longer pops a client error dialog and instead ends the round via `end_turn`
120
+ - **Custom Model Gzip Detection**: Fixed an issue where the `custom-local:` prefix stripping caused product.models configuration to fail to match
121
+ - **Custom Model Loading 400**: Supports both top-level array and object-wrapped formats of models.json
122
+
123
+ ### History and Sessions
124
+
125
+ - **First User Message Lost**: The user's first message containing hidden context disappeared in the UI
126
+ - **Model Error Rendered as Assistant Reply**: Rounds interrupted by model errors (6004/429) were rendered as normal answers
127
+ - **Orphaned tool_call Replay**: Skips replay for interrupted tool calls and injects a system notification
128
+ - **Task List Display in Old Sessions**: Sessions migrated from older versions rendered an empty task list after restoration
129
+ - **Image Message Title Pollution**: Local image paths leaked in history replay and session title generation scenarios
130
+ - **Plan Mode Permission Recovery**: `prePlanPermissionMode` was not correctly passed when starting Plan mode from the Desktop side
131
+
132
+ ### Tools and Permissions
133
+
134
+ - **Restored Grep/Glob Tool Registration**: Grep/Glob were previously incorrectly removed from 5 product.json files, causing fallback to Bash+rg
135
+ - **`--disallowedTools` Subcommand Rules**: Rules with subcommands (e.g., `Bash(pkill:*)`) were removing the entire tool
136
+ - **Tool Filter Bypass Vulnerability**: ToolSearch lookup mode and DeferExecuteTool did not check tool availability
137
+ - **Glob/Grep Empty Result Hint**: Returns meaningful text hints instead of empty arrays
138
+ - **rm Bulk Deletion Risk Level**: Raised from MEDIUM to HIGH to ensure bulk deletion on the IM side triggers user confirmation
139
+ - **Sandbox strip_write False Success**: Silently dropped writes/deletions did not trigger the elevation UI
140
+
141
+ ### Configuration Directory
142
+
143
+ - **Bash Sandbox Configuration Directory Path**: The Bash sandbox whitelist was ineffective under custom `CODEBUDDY_CONFIG_DIR` directories
144
+ - **Hardcoded Paths in Prompt Templates**: TeamCreate / TeamDelete / statusline-setup tool description templates now render the actual directory via `{{codebuddyHome}}`
145
+ - **Hardcoded Paths in UI Panels**: Permissions / Agents / Skills / Memory panels display real paths
146
+ - **Sandbox Toggle Storage Tier**: The Desktop sandbox toggle changed from persistent to in-memory (session-level) to avoid polluting workspace directories
147
+
148
+ ### Plugin Marketplace
149
+
150
+ - **MCP Static Authorization Overridden by OAuth**: Fixed an issue where the OAuth flow was still triggered when `headers.Authorization` was explicitly configured
151
+ - **Marketplace Duplicate Names**: Name collisions resulted in two entries with the same name that could not be deleted
152
+ - **Marketplace Duplicate Add Error**: Changed to automatically trigger the update flow
153
+ - **Marketplace Update Cache Not Refreshed**: `lastUpdated` time was not updated after `updateMarketplace`
154
+ - **GithubMarketplace Directory Name Alignment**: Non-standard repo URL directory names were inconsistent with manifest.name
155
+ - **Git Unavailable ZIP Fallback**: Adding a plugin marketplace failed in Windows environments without Git installed
156
+ - **Built-in Suite Marketplace ZIP Distribution**: The default suite marketplace had no content; adding the marketplace failed
157
+ - **Plugin Sub-Agent Description Refresh**: Descriptions were not refreshed in time after loading or switching plugin sub-agents
158
+ - **Skill Scan Dangling Symlinks**: Previously caused the entire directory scan to abort
159
+
160
+ ### Windows Compatibility
161
+
162
+ - **PowerShell Office Automation**: Excel / Word / PowerPoint / Outlook creation was incorrectly intercepted by security policies
163
+ - **PowerShell Command Wrapping**: When `rawCommand=true`, skips the bash wrapper to avoid backslashes/backticks being swallowed
164
+ - **Black Window Pop-up**: conhost / Git Bash black windows popped up during `--bg` background sessions and daemon startup
165
+ - **Plugin Commands Not Displayed**: `CODEBUDDY_PLUGIN_DIRS` now uses `path.delimiter` to avoid drive letters being treated as separators
166
+ - **Bash Tool Chinese Garbled Text**: Reassembles UTF-8 multi-byte sequences across chunks; injects `PYTHONUTF8=1` on Windows
167
+
168
+ ### Others
169
+
170
+ - **Daemon Port Race**: `EADDRINUSE` startup failure or long connection blocking on restart
171
+ - **MessageQueueDeferredDispatch (Mode B)**: Agent queue messages could not be sent successfully; "send immediately" messages were lost
172
+ - **Team Message Real-Time Delivery**: While the leader was busy, member SendMessages were stuck in the message queue and not consumed
173
+ - **Playbook Team Spinner**: The agent on the left kept spinning after task completion
174
+ - **Expert Built-in Skills Invisible**: Skill / SlashCommand / ToolSearch tool description caches were not invalidated after `rebuildAgents` completed
175
+ - **Session Title and Summary Triggers**: Ensures title updates, content summarization, and pre-compaction refresh take effect as expected
176
+ - **ImageGen / ImageEdit Cancellation Support**: Image generation requests continued executing after cancellation
177
+ - **Self-Hosted Deployment Detection**: Configurations with enterprise endpoints but actually cloud-hosted were incorrectly marked as Self-Hosted
178
+ - **`anydev` Remote IDE `/ide` Command**: Added `CODEBUDDY_IDE_PORT` / `CODEBUDDY_IDE_HOST` / `CODEBUDDY_IDE_SKIP_VALID_CHECK` environment variables
179
+ - **Web UI Editor Save Empties File**: The frontend `writeFile` did not explicitly set Content-Type and was consumed by body-parser
180
+ - **Gateway CORS Static Resources**: Same-origin IP access to static resources was incorrectly intercepted when the CORS whitelist was enabled
181
+ - **Read Tool Image Return Format**: Returns image content block format
182
+ - **Worktree Relative cwd**: When reusing a worktree, the relative directory was not entered correctly
183
+
184
+ ## 📝 Documentation Updates
185
+
186
+ - **Deprecated sandboxing.md Documentation**: Related links now point to bash-sandboxing.md
@@ -0,0 +1,24 @@
1
+ # 🚀 CodeBuddy Code v2.97.1 Release
2
+
3
+ ## 🐛 Bug Fixes
4
+
5
+ ### /ide Auto-Connect Stability Fix
6
+
7
+ Fixed an issue where the standalone binary build (`bun build --compile`) could throw `Unexpected server response: 101` when `/ide` attempted auto-connect.
8
+
9
+ The issue was caused by the IDE WebSocket handshake being incorrectly identified as a regular HTTP response in certain situations, preventing all matching IDEs from connecting. The standalone binary now uses Bun's native WebSocket to bypass the underlying compatibility issue; versions installed via npm continue to use the original implementation and are unaffected.
10
+
11
+ The auto-connect workspace matching logic has also been tightened:
12
+
13
+ - Auto-connect is only initiated when there is exactly one IDE whose workspace path covers the current directory
14
+ - If multiple matching IDEs exist, auto-connect is silently skipped, and you can manually choose via the `/ide` command
15
+ - Lock files left behind by exited IDE processes are automatically cleaned up before connecting, avoiding connections to invalid ports
16
+
17
+ ### WeChat Reply Tool Field Format Fix
18
+
19
+ Fixed an issue where some models, when calling the `WeChatReply` tool, would incorrectly write the reply body content into the `chat_id` field, causing the tool to repeatedly throw "Either text or file_path is required" errors.
20
+
21
+ This release includes:
22
+
23
+ - Completed JSON call examples in the tool description and channel instructions, clarifying the meaning of each field
24
+ - When body content is detected being incorrectly placed in the `chat_id` field, a clear correction prompt is given, guiding the model to retry with the correct field name
@@ -0,0 +1,16 @@
1
+ # 🚀 CodeBuddy Code v2.97.2 Release
2
+
3
+ ## 🔧 Improvements
4
+
5
+ - **Warning Suppression**: Suppressed unhelpful warnings such as DEP0040 (punycode), NODE_TLS_REJECT_UNAUTHORIZED, and AbortSignal MaxListenersExceeded for cleaner terminal output
6
+ - **Custom Agent Hooks Support**: Custom Agent frontmatter now supports hooks configuration, expanding the capability boundary of custom Agents
7
+ - **rm Command Risk Level Adjustment**: Non-recursive multi-file rm has been downgraded from HIGH to MEDIUM, reducing unnecessary permission confirmation prompts
8
+
9
+ ## 🐛 Bug Fixes
10
+
11
+ - **MCP Tools Invisible in ACP Mode**: Fixed an issue where MCP tools could not be discovered or used in IDE embedded / Web UI / Workbuddy Desktop modes. Configuration changes now trigger automatic re-scanning, and connected servers will not establish duplicate connections
12
+ - **IDE-Integrated Sub-Agent Tool Calls**: Fixed an issue in IDE integration mode where sub-agent calls to Read / Write / Edit / Bash and other tools were rejected by the client due to session ID mismatches
13
+ - **Session Start Hook Consistency**: Unified the SessionStart hook trigger paths across all entry points to prevent the first prompt from missing context
14
+ - **Plugin Loading**: Fixed an issue where plugins specified via `--plugin-dir` could not be recognized in headless / ACP modes
15
+ - **Plugin Extraction Permissions**: Preserved executable bits when extracting plugin zip files, fixing the issue where bundled scripts could not be executed
16
+ - **Garbled Input in tmux**: Fixed an issue where Kitty keyboard protocol control sequences caused garbled characters in the input box under tmux
@@ -0,0 +1,17 @@
1
+ # 🚀 CodeBuddy Code v2.97.3 Release
2
+
3
+ ## 🔧 Improvements
4
+
5
+ - **MCP Tool Calls Pass Through Model ID**: When invoking MCP tools, the current model ID is automatically passed through to downstream MCP Servers via the HTTP request header `X-Model-ID`, making it easier for downstream services to identify the calling model and enhancing traceability in MCP integration scenarios
6
+
7
+ ## 🐛 Bug Fixes
8
+
9
+ - **Duplicate Sub-Agent Names in Expert Team**: Fixed an issue where duplicate sub-agent names in expert teams caused spawn failures, improving the stability of multi-agent collaboration
10
+ - **Team Name Conflicts and Inbox Retry**: Team names are now automatically renamed on conflict, and inbox polling has been enhanced with a retry mechanism, reducing unexpected interruptions in team collaboration
11
+ - **Telemetry Data Accuracy**: Fixed an issue where the `requestModelName` field in `chat_user_action` reports was incorrect, ensuring telemetry data accurately reflects the actual model used
12
+ - **computer-use macOS Retina Coordinates**: Fixed coordinate offset and scroll operation anomalies for computer-use under macOS Retina displays, ensuring accurate screen positioning
13
+ - **Team Session Cancellation Stability**: Fixed an issue where, after a team session was cancelled, queue residue caused re-activation and list state flicker. Status updates after cancellation are now more stable
14
+ - **PowerShell Syntax Protection**: Prevented cmd syntax from being mistakenly executed in PowerShell, avoiding command failures due to cross-shell syntax errors
15
+ - **Terminal Key Compatibility**: Fixed unresponsive SS3 arrow keys and Shift+Enter under the Ghostty terminal, improving terminal compatibility
16
+ - **MaxToken Compaction Hang**: Fixed an issue where the ACP `forwardingPromise` would hang after MaxToken compaction was cancelled, preventing the session from becoming unresponsive due to compaction cancellation
17
+ - **History Replay Compaction Records**: Fixed an issue with persistence of message compaction records and the `<cb_summary>` tag not being filtered during replay, ensuring accurate history replay
@@ -0,0 +1,9 @@
1
+ # 🚀 CodeBuddy Code v2.97.4 Release
2
+
3
+ ## 🔧 Improvements
4
+
5
+ - **Catalog-Driven Model Compatibility**: Compatibility handling for model requests has been refactored to a catalog-driven architecture. Adding a new model now only requires updating the model catalog without code changes. Custom models also automatically have capability fields like `maxInputTokens`, `maxOutputTokens`, `supportsReasoning`, and `thinkingLevelMap` filled in, lowering the cost of model integration
6
+
7
+ ## 🐛 Bug Fixes
8
+
9
+ - **--debug hooks Output**: Fixed an issue where the `--debug` parameter did not output hooks execution details. The complete hooks execution flow can now be viewed via `--debug hooks`
@@ -0,0 +1,20 @@
1
+ # 🚀 CodeBuddy Code v2.97.5 Release
2
+
3
+ ## 📦 Version Information
4
+
5
+ | Component | Version |
6
+ |-----------|---------|
7
+ | CodeBuddy Code CLI | v2.97.5 |
8
+ | Agent SDK JS | v0.3.155 |
9
+ | Agent SDK Python | v0.3.154 |
10
+
11
+ ## 🐛 Bug Fixes
12
+
13
+ - **Multiple Expert Team Hangs / Missing Artifacts / Abnormal Termination**: Centrally fixed multiple anomalies reported by users while using expert teams (such as "Tencent Stock Picker", "One-Person Company", "Professional Document Generation", "Deep Research", etc.), including tasks ending abnormally without artifacts, sub-members completing while the main session remained stuck on "Thinking", and expert teams self-terminating mid-run causing artifact loss
14
+ - **No Response to shutdown When Team Member Already Completed**: When a team-lead initiated `shutdown_request` after a member had already completed its task, the previous logic bypassed `ShutdownCoordinator`, causing the lead to wait indefinitely for an acknowledgement. Short-circuit handling has been unified to ensure the lead is unblocked promptly
15
+ - **Message Loss During Concurrent spawn**: When a main lead spawned multiple members in rapid succession, the old logic would error out and lose messages because the peer could not be found. The new "writeToMailbox first, resolve later" strategy is now used, accompanied by fallback refresh and notice prompts
16
+ - **Member Misidentified as team-lead**: Fixed an issue at respawn boundaries where a member message's `from` field crossed wires, causing collaboration confusion. session.meta is now forcibly materialized and lead identity is validated
17
+ - **Same-Millisecond Concurrent shutdown ID Collision**: When a lead concurrently shut down multiple members, ID collisions caused acknowledgements to be overwritten. The format `recipient + timestamp + random number` is now used
18
+ - **Process Exit Cleanup Safety Net**: Added exit cleanup for session-team to prevent the long-term accumulation of 20+ orphan directories
19
+ - **Fork Subagent Recursion Explosion**: Added the environment variable `CODEBUDDY_DISABLE_FORK_SUBAGENT`. When enabled, fork subagent is consistently disabled at both the tool description and runtime layers, and historical calls are downgraded to `general-purpose`, avoiding request explosions and errors
20
+ - **HTTP User-Agent Header Fix**: Fixed an issue where, in the absence of `productName`, the User-Agent fell back to `WorkBuddy/unknown`, polluting downstream statistics. The corresponding segment is now only appended when the product name is present