@tencent-ai/codebuddy-code 2.93.3 → 2.93.5-next.7442d73.20260423

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 (64) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/codebuddy-headless.js +82 -88
  3. package/dist/codebuddy.js +110 -116
  4. package/dist/web-ui/docs/cn/cli/agent-teams.md +16 -2
  5. package/dist/web-ui/docs/cn/cli/cli-reference.md +1 -0
  6. package/dist/web-ui/docs/cn/cli/daemon.md +10 -0
  7. package/dist/web-ui/docs/cn/cli/env-vars.md +29 -1
  8. package/dist/web-ui/docs/cn/cli/hooks.md +4 -4
  9. package/dist/web-ui/docs/cn/cli/http-api.md +37 -4
  10. package/dist/web-ui/docs/cn/cli/installation.md +2 -2
  11. package/dist/web-ui/docs/cn/cli/keybindings.md +1 -1
  12. package/dist/web-ui/docs/cn/cli/release-notes/README.md +13 -0
  13. package/dist/web-ui/docs/cn/cli/release-notes/v2.84.0.md +35 -0
  14. package/dist/web-ui/docs/cn/cli/release-notes/v2.85.0.md +19 -0
  15. package/dist/web-ui/docs/cn/cli/release-notes/v2.86.0.md +29 -0
  16. package/dist/web-ui/docs/cn/cli/release-notes/v2.87.0.md +34 -0
  17. package/dist/web-ui/docs/cn/cli/release-notes/v2.88.0.md +28 -0
  18. package/dist/web-ui/docs/cn/cli/release-notes/v2.89.0.md +24 -0
  19. package/dist/web-ui/docs/cn/cli/release-notes/v2.90.0.md +26 -0
  20. package/dist/web-ui/docs/cn/cli/release-notes/v2.91.0.md +30 -0
  21. package/dist/web-ui/docs/cn/cli/release-notes/v2.92.0.md +29 -0
  22. package/dist/web-ui/docs/cn/cli/release-notes/v2.93.0.md +26 -0
  23. package/dist/web-ui/docs/cn/cli/release-notes/v2.93.1.md +5 -0
  24. package/dist/web-ui/docs/cn/cli/release-notes/v2.93.2.md +8 -0
  25. package/dist/web-ui/docs/cn/cli/release-notes/v2.93.3.md +7 -0
  26. package/dist/web-ui/docs/cn/cli/remote-control.md +9 -3
  27. package/dist/web-ui/docs/cn/cli/security.md +18 -0
  28. package/dist/web-ui/docs/cn/cli/settings.md +2 -1
  29. package/dist/web-ui/docs/cn/cli/worktree.md +1 -1
  30. package/dist/web-ui/docs/en/cli/agent-teams.md +16 -2
  31. package/dist/web-ui/docs/en/cli/cli-reference.md +1 -0
  32. package/dist/web-ui/docs/en/cli/daemon.md +10 -0
  33. package/dist/web-ui/docs/en/cli/env-vars.md +29 -1
  34. package/dist/web-ui/docs/en/cli/http-api.md +37 -4
  35. package/dist/web-ui/docs/en/cli/installation.md +38 -13
  36. package/dist/web-ui/docs/en/cli/keybindings.md +1 -1
  37. package/dist/web-ui/docs/en/cli/release-notes/README.md +13 -0
  38. package/dist/web-ui/docs/en/cli/release-notes/v2.84.0.md +35 -0
  39. package/dist/web-ui/docs/en/cli/release-notes/v2.85.0.md +19 -0
  40. package/dist/web-ui/docs/en/cli/release-notes/v2.86.0.md +29 -0
  41. package/dist/web-ui/docs/en/cli/release-notes/v2.87.0.md +34 -0
  42. package/dist/web-ui/docs/en/cli/release-notes/v2.88.0.md +28 -0
  43. package/dist/web-ui/docs/en/cli/release-notes/v2.89.0.md +24 -0
  44. package/dist/web-ui/docs/en/cli/release-notes/v2.90.0.md +26 -0
  45. package/dist/web-ui/docs/en/cli/release-notes/v2.91.0.md +30 -0
  46. package/dist/web-ui/docs/en/cli/release-notes/v2.92.0.md +29 -0
  47. package/dist/web-ui/docs/en/cli/release-notes/v2.93.0.md +26 -0
  48. package/dist/web-ui/docs/en/cli/release-notes/v2.93.1.md +5 -0
  49. package/dist/web-ui/docs/en/cli/release-notes/v2.93.2.md +8 -0
  50. package/dist/web-ui/docs/en/cli/release-notes/v2.93.3.md +7 -0
  51. package/dist/web-ui/docs/en/cli/remote-control.md +9 -3
  52. package/dist/web-ui/docs/en/cli/security.md +18 -0
  53. package/dist/web-ui/docs/en/cli/settings.md +2 -1
  54. package/dist/web-ui/docs/en/cli/worktree.md +1 -1
  55. package/dist/web-ui/docs/search-index-en.json +1 -1
  56. package/dist/web-ui/docs/search-index-zh.json +1 -1
  57. package/dist/web-ui/docs/sidebar-en.json +1 -1
  58. package/dist/web-ui/docs/sidebar-zh.json +1 -1
  59. package/package.json +3 -2
  60. package/product.cloudhosted.json +2 -2
  61. package/product.internal.json +25 -4
  62. package/product.ioa.json +9 -11
  63. package/product.json +2 -2
  64. package/product.selfhosted.json +2 -2
@@ -83,6 +83,24 @@ CodeBuddy Code 允许用户配置模型上下文协议(MCP)服务器。允许的
83
83
 
84
84
  详见 [MCP 集成文档](mcp.md)。
85
85
 
86
+ ## Gateway 网络安全
87
+
88
+ 当通过 `--serve` 模式或 Daemon 启动 HTTP 服务时,CodeBuddy Code 采用多层防御保护 API 端点:
89
+
90
+ ### CORS 白名单
91
+
92
+ 仅允许来自合法源的跨域请求。非法 Origin 的请求(无论 OPTIONS 预检还是实际请求)均被直接拒绝,不执行任何业务逻辑。支持精确 origin(`https://example.com`)、子域通配(`https://*.example.com`)和全部允许(`*`)三种配置模式。通过环境变量 `CODEBUDDY_CODE_CORS_ORIGINS` 或 Settings `gateway.corsOrigins` 配置。
93
+
94
+ ### 自定义请求头校验
95
+
96
+ 所有 API 请求必须携带 `X-CodeBuddy-Request: 1` 头。此机制利用浏览器安全策略:自定义头会强制触发 CORS preflight,且 `no-cors` 模式下浏览器不允许发送自定义头,从而阻止跨站请求伪造。
97
+
98
+ 可通过 `CODEBUDDY_DISABLE_REQUEST_VALIDATION=1` 关闭。详见 [HTTP API 安全](http-api.md#安全)。
99
+
100
+ ### 认证保护
101
+
102
+ 敏感端点(包括 `/info`、`/health`)在启用密码认证时需要 Bearer Token。详见 [HTTP API 认证](http-api.md#认证)。
103
+
86
104
  ## 沙箱安全
87
105
 
88
106
  CodeBuddy Code 支持 Bash 沙箱功能,将 bash 命令与您的文件系统和网络隔离:
@@ -65,7 +65,7 @@ CodeBuddy Code 使用分层配置系统,让您能够在不同级别进行个
65
65
  | `model` | 覆盖 CodeBuddy Code 使用的默认模型 | `"gpt-5"` |
66
66
  | `agent` | 覆盖主线程使用的 agent 名称(内置或自定义 agent),应用该 agent 的 system prompt、工具限制和模型配置。优先级:`product.json default` → `plugin agent` → `settings.json agent` → `CLI --agent` | `"my-reviewer"` |
67
67
  | `statusLine` | 配置自定义状态行以显示上下文。见 [statusLine 文档](#状态行配置) | `{"type": "command", "command": "~/.codebuddy/statusline.sh"}` |
68
- | `enableAllProjectMcpServers` | 自动批准项目 `.mcp.json` 文件中定义的所有 MCP 服务器 | `true` |
68
+ | `enableAllProjectMcpServers` | 自动批准项目 `.mcp.json` 文件中定义的所有 MCP 服务器 | `false` |
69
69
  | `enabledMcpjsonServers` | 从 `.mcp.json` 文件批准的特定 MCP 服务器列表 | `["memory", "github"]` |
70
70
  | `disabledMcpjsonServers` | 从 `.mcp.json` 文件拒绝的特定 MCP 服务器列表 | `["filesystem"]` |
71
71
  | `autoCompactEnabled` | 开启自动压缩功能 | `true` |
@@ -89,6 +89,7 @@ CodeBuddy Code 使用分层配置系统,让您能够在不同级别进行个
89
89
  | `additionalDirectories` | CodeBuddy 可以访问的额外[工作目录](iam.md#工作目录) | `[ "../docs/" ]` |
90
90
  | `defaultMode` | 打开 CodeBuddy Code 时的默认[权限模式](iam.md#权限模式) | `"acceptEdits"` |
91
91
  | `disableBypassPermissionsMode` | 设置为 `"disable"` 以防止激活 `bypassPermissions` 模式。这会禁用 `-y` 和 `--dangerously-skip-permissions` 命令行标志 | `"disable"` |
92
+ | `subagentPermissionMode` | 覆盖 subagent/团队成员的默认权限模式。设置后所有 subagent 使用此模式,而非继承主 session 的模式。Agent 工具的 `mode` 参数优先级更高 | `"bypassPermissions"` |
92
93
 
93
94
  ### 记忆功能配置
94
95
 
@@ -71,7 +71,7 @@ AI 会自动调用 `EnterWorktree` 工具创建隔离工作目录并切换过去
71
71
  - 如果指定了 `--worktree-branch xxx`,基于本地分支 `xxx`
72
72
  - 如果未指定,默认基于远程默认分支(通常是 `origin/main` 或 `origin/master`)
73
73
  3. 自动创建对应的分支(如 `worktree-feature-auth`)
74
- 4. 将工作目录切换到 worktree
74
+ 4. 将工作目录切换到 worktree;如果你是从仓库子目录启动,会优先进入新 worktree 中对应的相对子目录
75
75
  5. 执行初始化(复制设置、创建符号链接、复制 `.worktreeinclude` 文件等)
76
76
 
77
77
  **分支不存在时的行为**:
@@ -128,7 +128,13 @@ After completing the plan, the member sends a plan approval request to the lead.
128
128
 
129
129
  ### Delegate Mode
130
130
 
131
- By default, the lead may implement tasks itself rather than waiting for members to finish. Press `Shift+Tab` to switch to Delegate Mode, restricting the lead to coordination tools only (generating members, sending messages, managing tasks), without directly modifying code.
131
+ By default, the lead may implement tasks itself rather than waiting for members to finish. Press `Shift+Tab` to switch to Delegate Mode, restricting the lead to coordination tools only (Agent, TaskStop, SendMessage, AskUserQuestion, StructuredOutput), without directly modifying code or reading files.
132
+
133
+ In Delegate Mode:
134
+ - The lead cannot explore code, run commands, or edit files on its own—all work is done through subagents/members
135
+ - Subagents use the `default` permission mode (full tool access) by default and do not inherit the lead's delegate restrictions
136
+ - You can specify a permission mode for individual subagents via the Agent tool's `mode` parameter (e.g., `mode: "bypassPermissions"`)
137
+ - Delegate mode does not use the fork path and forces standard subagent execution
132
138
 
133
139
  This is suitable for scenarios where you want the lead to focus on task decomposition, assignment, and aggregation.
134
140
 
@@ -206,7 +212,15 @@ Team and task data is stored locally:
206
212
 
207
213
  ### Permissions
208
214
 
209
- Members inherit the lead's permission settings. If the lead starts with `--dangerously-skip-permissions`, all members will too.
215
+ The permission mode for members is determined by the following priority order:
216
+
217
+ 1. **Agent `mode` parameter**: Specify a permission mode for an individual member (e.g., `Agent({ mode: "bypassPermissions" })`)
218
+ 2. **CLI `--subagent-permission-mode`**: Default permission for all subagents in the current session
219
+ 3. **Environment variable `CODEBUDDY_SUBAGENT_PERMISSION_MODE`**: Process-level override
220
+ 4. **Settings `permissions.subagentPermissionMode`**: Global or project-level configuration
221
+ 5. **Inherit from main session**: By default, inherits the lead's permission mode (but in Delegate Mode, subagents use `default` instead)
222
+
223
+ > **Delegate Mode special rule**: Delegate Mode's tool restrictions only apply to the lead itself. Subagents/members use the `default` permission (full tool access) by default, because they need full capabilities to perform actual work.
210
224
 
211
225
  ## Usage Examples
212
226
 
@@ -52,6 +52,7 @@ Command-line parameters to customize CodeBuddy Code behavior:
52
52
  | `--text-to-image-model` | Set the model ID for text-to-image generation | `codebuddy --text-to-image-model your-image-model` |
53
53
  | `--image-to-image-model` | Set the model ID for image-to-image generation | `codebuddy --image-to-image-model your-edit-model` |
54
54
  | `--permission-mode` | Start with specified [permission mode](./iam.md#permission-modes) | `codebuddy --permission-mode plan` |
55
+ | `--subagent-permission-mode` | Set the default permission mode for subagents/team members, overriding the mode inherited from the main session | `codebuddy --subagent-permission-mode bypassPermissions` |
55
56
  | `--permission-prompt-tool` | Specify MCP tool to handle permission prompts in non-interactive mode | `codebuddy -p --permission-prompt-tool mcp_auth_tool "query"` |
56
57
  | `--resume` | Resume a specific session by ID, or select interactively in interactive mode | `codebuddy --resume abc123 "query"` |
57
58
  | `--continue` | Load the most recent conversation in the current directory | `codebuddy --continue` |
@@ -25,10 +25,20 @@ codebuddy daemon start --port 8080
25
25
 
26
26
  # Specify bind address (allow remote access)
27
27
  codebuddy daemon start --host 0.0.0.0
28
+
29
+ # Specify permission mode (defaults to delegate mode)
30
+ codebuddy daemon start --permission-mode default
31
+
32
+ # Pass other standard parameters (model, mcp-config, etc. are automatically inherited)
33
+ codebuddy daemon start --model claude-sonnet-4-20250514 --mcp-config ./mcp.json
28
34
  ```
29
35
 
30
36
  Once started, the daemon runs as a detached process and the parent process exits immediately. Local addresses have password-free access by default; non-local addresses automatically enable password authentication.
31
37
 
38
+ > **Default delegate mode**: The daemon runs in delegate mode by default—the main agent only handles coordination and scheduling, without directly modifying code. All implementation work is done through subagents. You can switch to other modes via `--permission-mode`.
39
+
40
+ > **Parameter inheritance**: Standard CLI parameters specified with `daemon start` (`--model`, `--permission-mode`, `--mcp-config`, `--tools`, `--agent`, `--settings`, etc.) are automatically inherited by daemon child processes.
41
+
32
42
  > **Idempotent startup**: Running `daemon start` multiple times does not create multiple daemons. If a daemon is already running, it returns the existing daemon's information.
33
43
 
34
44
  ### Checking Status
@@ -68,6 +68,7 @@ CodeBuddy Code supports environment variables to control its behavior. These var
68
68
  | Environment Variable | Description |
69
69
  |---------|------|
70
70
  | `CODEBUDDY_AUTOCOMPACT_PCT_OVERRIDE` | Set the context capacity percentage for triggering auto-compaction (1-100). Default is determined by product configuration (typically 70-92%). Use a lower value (e.g., `50`) to compact earlier |
71
+ | `CODEBUDDY_PRE_MESSAGE_COMPACT_PCT` | Set the context capacity percentage for pre-message compaction check (1-100). Default is 10%. When context exceeds this threshold, it is automatically compacted before processing the user's new message |
71
72
  | `CODEBUDDY_DISABLE_AUTO_MEMORY` | Set to `1` to disable auto memory, set to `0` to enable |
72
73
  | `CODEBUDDY_MEMORY_ENABLED` | Set to `true` or `1` to enable memory functionality |
73
74
  | `CODEBUDDY_TYPED_MEMORY_ENABLED` | Set to `true` or `1` to enable typed memory mode |
@@ -106,10 +107,13 @@ CodeBuddy Code supports environment variables to control its behavior. These var
106
107
  |---------|------|
107
108
  | `CODEBUDDY_CODE_SHELL` | Override automatic shell detection. Supported values: `bash`, `zsh`, `sh`, `powershell` |
108
109
  | `CODEBUDDY_CODE_SHELL_PREFIX` | Command prefix wrapping all shell commands (e.g., for logging or auditing) |
109
- | `CODEBUDDY_CODE_GIT_BASH_PATH` | Explicitly specify the Git Bash path on Windows |
110
+ | `CODEBUDDY_CODE_GIT_BASH_PATH` | Explicitly specify the Git Bash path on Windows; startup fails if the specified path is invalid |
111
+ | `CODEBUDDY_SKIP_GIT_BASH_CHECK` | Set to `1` to skip the Windows Git Bash detection and prompt at startup (useful when the upstream already manages the shell) |
110
112
  | `CODEBUDDY_POWERSHELL_PATH` | Explicitly specify the PowerShell executable path (takes priority over auto-detection) |
111
113
  | `CODEBUDDY_USE_POWERSHELL_TOOL` | Control PowerShell tool enablement. Enabled by default on Windows, set to `0` to disable |
112
114
  | `CODEBUDDY_ENV_FILE` | Path to an environment file that is automatically sourced before executing each shell command |
115
+ | `CODEBUDDY_DISABLE_SHELL_SNAPSHOT` | Set to `1` to disable shell environment snapshots on all platforms (helpful when bash profile loading is slow) |
116
+ | `CODEBUDDY_ENABLE_SHELL_SNAPSHOT` | On Windows without Git Bash, snapshots are skipped by default; set to `1` to force enable (usually not needed) |
113
117
 
114
118
  ## UI and Interaction
115
119
 
@@ -142,12 +146,21 @@ CodeBuddy Code supports environment variables to control its behavior. These var
142
146
  |---------|------|
143
147
  | `CODEBUDDY_DISABLE_BACKGROUND_TASKS` | Set to `1` to disable all background task functionality |
144
148
 
149
+ ## Daemon Mode
150
+
151
+ | Environment Variable | Description |
152
+ |---------|------|
153
+ | `CODEBUDDY_DAEMON_ALLOW_SLEEP` | Set to `1` or `true` to disable the daemon's sleep prevention (allows the system to enter idle sleep normally). Auto-reconnect after wake is not affected |
154
+ | `CODEBUDDY_DAEMON_AUTO_CONNECT_CHANNELS` | Set to `0` or `false` to disable automatic channel connection (WeChat/WeCom) on daemon startup. Can also be configured via `daemonAutoConnectChannels: false` in `settings.json`. Individual instances can set `autoConnect: false` in `instances.json` |
155
+ | `CODEBUDDY_DAEMON_RESTORE_CHANNELS` | Set by the system during daemon auto-restart, containing the list of channels to restore (comma-separated, e.g., `wechat:abc,wecom:default`). Users typically do not need to set this manually |
156
+
145
157
  ## Agent Execution Control
146
158
 
147
159
  | Environment Variable | Description |
148
160
  |---------|------|
149
161
  | `CODEBUDDY_CODE_MAX_TURNS` | Maximum execution turns for the main Agent. Priority: CLI `--max-turns` > this environment variable > default (500) |
150
162
  | `CODEBUDDY_CODE_SUBAGENT_MAX_TURNS` | Maximum execution turns for sub-Agents. Priority: CLI `--max-turns` > this environment variable > model dynamically passed `max_turns` > default (500) |
163
+ | `CODEBUDDY_SUBAGENT_PERMISSION_MODE` | Default permission mode for sub-agents/team members (e.g., `bypassPermissions`, `acceptEdits`, `default`, `plan`). Priority: Agent tool `mode` parameter > CLI `--subagent-permission-mode` > this environment variable > Settings `permissions.subagentPermissionMode` > mapping table default |
151
164
 
152
165
  ## Gateway and Remote Access
153
166
 
@@ -156,6 +169,8 @@ CodeBuddy Code supports environment variables to control its behavior. These var
156
169
  | `CODEBUDDY_GATEWAY_AUTH` | Gateway authentication mode (`password` or `none`) |
157
170
  | `CODEBUDDY_GATEWAY_PASSWORD` | Gateway access password |
158
171
  | `CODEBUDDY_GATEWAY_FORCE_TUNNEL` | Set to `1` to force tunnel mode |
172
+ | `CODEBUDDY_DISABLE_REQUEST_VALIDATION` | Set to `1` to disable Gateway custom request header validation (`X-CodeBuddy-Request`). See [HTTP API Security](./http-api.md#security) |
173
+ | `CODEBUDDY_CODE_CORS_ORIGINS` | Additional CORS allowed origins (comma-separated). Supports exact origins, `*.domain` subdomain wildcards, and `*` for all. E.g., `https://*.example.com,https://specific.com` |
159
174
  | `SERVER__HOST` | Listen address for `--serve` mode (default: `127.0.0.1`) |
160
175
  | `SERVER__PORT` | Listen port for `--serve` mode |
161
176
 
@@ -182,6 +197,19 @@ CodeBuddy Code supports environment variables to control its behavior. These var
182
197
  | `CODEBUDDY_DEBUG_REQUEST` | Set to `1` to enable request debugging |
183
198
  | `CODEBUDDY_STARTUP_PROFILE` | Set to `1` to enable startup profiling |
184
199
 
200
+ ## E2E Testing (Record/Replay)
201
+
202
+ Record/replay functionality for model responses in E2E tests. In record mode, real model responses are captured; in replay mode, recorded files are used in place of real API calls.
203
+
204
+ | Environment Variable | Description |
205
+ |---------|------|
206
+ | `CODEBUDDY_RECORD_DIR` | Record mode: directory where recording files are saved. When set, model responses are saved to `recording.jsonl` in this directory |
207
+ | `CODEBUDDY_REPLAY_DIR` | Replay mode: directory from which recording files are read. When set, responses are replayed from `recording.jsonl` without requiring a real API |
208
+ | `CODEBUDDY_REPLAY_SPEED` | Replay speed multiplier. `0` means no delay (instant return), `1` means replay at original timing intervals (default: `1`) |
209
+ | `CODEBUDDY_REPLAY_STRICT` | Set to `1` to enable strict mode: throws an error when recordings are exhausted instead of falling through to the real API |
210
+
211
+ > **Note**: `CODEBUDDY_RECORD_DIR` and `CODEBUDDY_REPLAY_DIR` are mutually exclusive and cannot be set at the same time.
212
+
185
213
  ## Miscellaneous
186
214
 
187
215
  | Environment Variable | Description |
@@ -39,7 +39,37 @@ curl http://127.0.0.1:8080/api/v1/health
39
39
  | **Public ACP Protocol** | `/api/v1/acp` | Follows ACP specification | Full conversation capabilities, see [ACP Documentation](https://agentclientprotocol.com) |
40
40
  | **Internal RPC** | `/internal/*` | No compatibility guarantee | For internal CLI use, not publicly available |
41
41
 
42
- ## Authentication
42
+ ## Security
43
+
44
+ ### Custom Request Header
45
+
46
+ All API requests (except [exempt paths](#exempt-paths)) must include the custom request header:
47
+
48
+ ```
49
+ X-CodeBuddy-Request: 1
50
+ ```
51
+
52
+ **Rationale**: A custom request header makes cross-origin browser requests "non-simple requests", forcing a CORS preflight. Combined with a CORS allowlist, requests from unauthorized origins are blocked. Even if an attacker uses `fetch(url, { mode: 'no-cors' })`, browsers do not allow custom headers in no-cors mode, so the request is rejected by the server (403) due to the missing header.
53
+
54
+ #### Exempt Paths
55
+
56
+ The following paths do not require the `X-CodeBuddy-Request` header:
57
+
58
+ | Path | Description |
59
+ |------|-------------|
60
+ | `GET /` | SPA entry page |
61
+ | `GET /assets/*` | Static assets |
62
+ | `GET /docs/*` | API documentation pages |
63
+ | `GET /manifest.webmanifest` | PWA manifest |
64
+ | `GET /api/v1/auth/status` | Authentication status check |
65
+ | `POST /api/v1/auth/login` | Login |
66
+ | `*/api/v1/webhooks/*` | Webhooks (verified by platform signature) |
67
+ | `GET /api/openapi.json` | OpenAPI spec |
68
+ | `GET /api/docs*` | Swagger UI |
69
+
70
+ This validation can be disabled via the environment variable `CODEBUDDY_DISABLE_REQUEST_VALIDATION=1`.
71
+
72
+ ### Authentication
43
73
 
44
74
  Two modes are supported (controlled by environment variable `CODEBUDDY_GATEWAY_AUTH`):
45
75
 
@@ -51,11 +81,14 @@ Two modes are supported (controlled by environment variable `CODEBUDDY_GATEWAY_A
51
81
  Password authentication supports the following methods (any one passing is sufficient):
52
82
 
53
83
  ```bash
54
- # Bearer Token
55
- curl -H "Authorization: Bearer YOUR_PASSWORD" http://host:port/api/v1/sessions
84
+ # Bearer Token (with security header)
85
+ curl -H "X-CodeBuddy-Request: 1" \
86
+ -H "Authorization: Bearer YOUR_PASSWORD" \
87
+ http://host:port/api/v1/sessions
56
88
 
57
89
  # URL parameter
58
- curl http://host:port/api/v1/sessions?password=YOUR_PASSWORD
90
+ curl -H "X-CodeBuddy-Request: 1" \
91
+ http://host:port/api/v1/sessions?password=YOUR_PASSWORD
59
92
  ```
60
93
 
61
94
  ## Response Format
@@ -1,16 +1,5 @@
1
1
  # CodeBuddy Code Installation Guide
2
2
 
3
- ## 📋 Table of Contents
4
-
5
- - [Installation Methods](#installation-methods)
6
- - [Install via Package Manager](#-install-via-package-manager)
7
- - [Install via Native Binary (Beta)](#️-install-via-native-binary-beta)
8
- - [Updates](#-updates)
9
- - [Troubleshooting](#-troubleshooting)
10
- - [Uninstallation](#-uninstallation)
11
-
12
- ---
13
-
14
3
  ## Installation Methods
15
4
 
16
5
  ### 📦 Install via Package Manager
@@ -109,11 +98,11 @@ codebuddy install
109
98
  ::: code-group
110
99
 
111
100
  ```bash [macOS / Linux]
112
- curl -fsSL https://copilot.tencent.com/cli/install.sh | bash
101
+ curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash
113
102
  ```
114
103
 
115
104
  ```powershell [Windows]
116
- irm https://copilot.tencent.com/cli/install.ps1 | iex
105
+ irm https://www.codebuddy.cn/cli/install.ps1 | iex
117
106
  ```
118
107
 
119
108
  :::
@@ -146,6 +135,40 @@ export PATH="$HOME/.local/bin:$PATH"
146
135
  :::
147
136
 
148
137
 
138
+ ## 📁 Configuration Directory
139
+
140
+ CodeBuddy Code stores configuration files in the following directory by default:
141
+
142
+ | Platform | Default Configuration Directory |
143
+ |------|-------------|
144
+ | macOS / Linux | `~/.codebuddy` |
145
+ | Windows | `%USERPROFILE%\.codebuddy` |
146
+
147
+ ### Directory Contents
148
+
149
+ ```
150
+ ~/.codebuddy/
151
+ ├── settings.json # User settings
152
+ ├── mcp.json # MCP server configuration
153
+ ├── .mcp.json # MCP server configuration (alternative location)
154
+ └── skills/ # User-defined Skills
155
+ ```
156
+
157
+ ### Custom Configuration Directory
158
+
159
+ You can customize the configuration directory location by setting the `CODEBUDDY_CONFIG_DIR` environment variable:
160
+
161
+ ```bash
162
+ export CODEBUDDY_CONFIG_DIR="$HOME/.my-codebuddy-config"
163
+ ```
164
+
165
+ This is useful in the following scenarios:
166
+
167
+ - Multiple CodeBuddy instances need independent configurations
168
+ - Enterprise environments that require centralized configuration management
169
+ - Avoiding configuration conflicts when coexisting with other applications using the CodeBuddy engine (such as WorkBuddy)
170
+
171
+
149
172
  ## 🔄 Updates
150
173
 
151
174
  ### Automatic Updates
@@ -264,3 +287,5 @@ For complete cleanup, you can delete the configuration directories:
264
287
  rm -rf ~/.codebuddy
265
288
  rm -rf ~/.local/share/codebuddy
266
289
  ```
290
+
291
+ > 💡 **Tip:** If you customized the configuration directory using the `CODEBUDDY_CONFIG_DIR` environment variable, delete the corresponding directory as well.
@@ -68,7 +68,7 @@ Available in the `Chat` context:
68
68
 
69
69
  | Action | Default Key | Description |
70
70
  | :--- | :--- | :--- |
71
- | `chat:cancel` | Escape | Cancel current input |
71
+ | `chat:cancel` | Escape | Cancel current input, or interrupt the current foreground request |
72
72
  | `chat:submit` | Enter | Send message |
73
73
  | `chat:killAgents` | Ctrl+X Ctrl+K | Kill all background agents |
74
74
  | `chat:cycleMode` | Shift+Tab* | Cycle permission mode |
@@ -17,6 +17,19 @@ Difference from CHANGELOG.md:
17
17
 
18
18
  <!-- New versions are automatically added here -->
19
19
 
20
+ - [v2.93.3](./v2.93.3.md) - 2026-04-22
21
+ - [v2.93.2](./v2.93.2.md) - 2026-04-22
22
+ - [v2.93.1](./v2.93.1.md) - 2026-04-21
23
+ - [v2.93.0](./v2.93.0.md) - 2026-04-20
24
+ - [v2.92.0](./v2.92.0.md) - 2026-04-20
25
+ - [v2.91.0](./v2.91.0.md) - 2026-04-17
26
+ - [v2.90.0](./v2.90.0.md) - 2026-04-16
27
+ - [v2.89.0](./v2.89.0.md) - 2026-04-16
28
+ - [v2.88.0](./v2.88.0.md) - 2026-04-14
29
+ - [v2.87.0](./v2.87.0.md) - 2026-04-14
30
+ - [v2.86.0](./v2.86.0.md) - 2026-04-13
31
+ - [v2.85.0](./v2.85.0.md) - 2026-04-12
32
+ - [v2.84.0](./v2.84.0.md) - 2026-04-12
20
33
  - [v2.83.1](./v2.83.1.md) - 2026-04-10
21
34
  - [v2.83.0](./v2.83.0.md) - 2026-04-10
22
35
  - [v2.82.0](./v2.82.0.md) - 2026-04-10
@@ -0,0 +1,35 @@
1
+ # CodeBuddy Code v2.84.0 Release
2
+
3
+ ## New Features
4
+
5
+ ### Usage Statistics & Trace & Scheduled Tasks API
6
+
7
+ A new set of REST APIs that allow you to query usage statistics, traces, and scheduled tasks via HTTP:
8
+
9
+ - `GET /api/v1/stats` — View historical usage statistics
10
+ - `GET /api/v1/stats/session` — View real-time cost for the current session
11
+ - `GET /api/v1/traces` / `GET /api/v1/traces/:traceId` — View trace data
12
+ - `GET/POST/DELETE /api/v1/scheduled-tasks` — Manage scheduled tasks
13
+
14
+ The Web UI also adds three new visual views for statistics, traces, and scheduled tasks, providing intuitive data display.
15
+
16
+ ## Improvements
17
+
18
+ - **Cron scheduling optimization**: Fixed concurrency race conditions, added enqueue-first + drain merge mode, and supported execution time persistence
19
+ - **Trace collection system**: Supports file-based persistent storage and SDK bridging — trace data is no longer lost when the process exits
20
+ - **Agent status internationalization**: Sub-agent phase labels are fully internationalized, with new status displays for waiting for permission confirmation, waiting for user answer, retrying, etc.
21
+ - **Interrupt auto-scroll**: When permission confirmation or user question popups appear, the chat view automatically scrolls to the bottom to ensure the action panel is visible
22
+ - **ACP network retry**: ACP requests automatically reconnect and retry in weak network environments, improving remote access stability
23
+ - **E2E test coverage**: Added 30 E2E test cases and 6 ACP protocol method coverages
24
+
25
+ ## Bug Fixes
26
+
27
+ - **Session interruption false positive**: Fixed an issue where the startup handshake request caused the session to be incorrectly identified as a user interruption
28
+ - **Suggestions disappearing**: Fixed a race condition where suggestions were unexpectedly cancelled by internal messages after a conversation ended
29
+ - **Memory extraction isolation**: Background memory extraction no longer interferes with suggestions and conversation state
30
+ - **Session recovery**: Fixed an issue where interrupted sessions could not be automatically recovered when switching
31
+ - **Instance switching IP adaptation**: When accessing via remote networks like Tailscale, switching Worker instances no longer redirects to unreachable LAN addresses
32
+ - **Message queue stuck**: Fixed an issue where the Web UI got stuck when sending multiple messages consecutively
33
+ - **Compression cancel rollback**: Cancelling context compression now correctly rolls back state instead of erroneously marking it as compressed
34
+ - **/clear reentrancy prevention**: Fixed a race condition where messages were sent repeatedly after /clear
35
+ - **Background task exit protection**: In print mode, the process now waits for background tasks to complete before exiting, preventing tasks from being unexpectedly terminated
@@ -0,0 +1,19 @@
1
+ # 🚀 CodeBuddy Code v2.85.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Daemon Mode Enhancements
6
+
7
+ The daemon process introduces four major enhancements, making CodeBuddy Code more stable and reliable when running in the background:
8
+
9
+ - **Sleep Prevention**: The daemon automatically prevents the system from entering idle sleep while running, ensuring WeChat/WeCom messages are not interrupted. Uses caffeinate on macOS, systemd-inhibit on Linux, and powercfg on Windows. Can be manually disabled via `CODEBUDDY_DAEMON_ALLOW_SLEEP=1`
10
+ - **Auto-Reconnect on Wake**: After the system resumes from sleep, all WeChat/WeCom long-lived connections are automatically detected and reconnected without manual intervention
11
+ - **Idle Auto-Update**: When the daemon detects a new version installed, it waits for an idle period to automatically restart and complete the update, keeping ports and channel connections uninterrupted
12
+ - **Auto Channel Connection**: The daemon automatically connects to all WeChat/WeCom instances with saved credentials on startup, requiring no manual action
13
+
14
+ ## 🔧 Improvements
15
+
16
+ - **Daemon Status Summary**: `daemon start` and `daemon restart` now output an enhanced feature status summary, providing an at-a-glance view of currently enabled capabilities
17
+ - **TUI Markdown Rendering Improvements**: Fixed `~` approximate numbers being incorrectly parsed as strikethrough, upgraded links to clickable terminal hyperlinks, added vertical bar prefixes to blockquotes, and added heading level differentiation
18
+ - **TUI Table Rendering Rewrite**: Brand-new Unicode-bordered table rendering with terminal width adaptation and automatic cell wrapping; narrow terminals automatically switch to a key-value vertical layout
19
+ - **TUI Header Layout Optimization**: Logo is automatically hidden on narrow terminals to reduce header height, making better use of limited screen space
@@ -0,0 +1,29 @@
1
+ # 🚀 CodeBuddy Code v2.86.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Agent Team Multi-Backend Architecture
6
+
7
+ Team members now support three runtime backends: in-process (default), detached-process, and tmux visualization. Switch flexibly via the `--swarm` parameter or environment variables to meet collaboration needs across different scenarios.
8
+
9
+ - Detached-process teammates use dual-path SSE real-time event forwarding and file history replay; the Web UI automatically displays member conversations
10
+ - Tool approvals are routed back to the leader for unified handling via Permission Bridge
11
+ - The communication layer reserves distributed support — automatically selecting file Mailbox locally and switching to HTTP API for remote connections
12
+
13
+ ## 🔧 Improvements
14
+
15
+ - **Gateway Security Hardening**: All API requests now require the `X-CodeBuddy-Request` custom header, effectively preventing cross-site request forgery; CORS policies are fully hardened with requests from unauthorized origins directly rejected; `/info` and `/health` endpoints now require authentication
16
+ - **OpenAPI Documentation Enhancement**: ACP protocol documentation significantly improved with complete parameter/response examples for 12 JSON-RPC methods, 13 SessionUpdate type definitions, and approximately 30 previously implemented but undocumented API endpoints
17
+ - **WebFetch Tool Upgrade**: HTML conversion library upgraded to turndown for higher-quality Markdown output; User-Agent changed to Chrome format, resolving fetch failures on sites with anti-crawling measures; timeout adjusted to 30s
18
+ - **Conversation History Button**: The StatusBar history button is now always visible, no longer requiring API polling to appear
19
+
20
+ ## 🐛 Bug Fixes
21
+
22
+ - **ACP Thinking Format**: Thinking content corrected to the ACP standard `agent_thought_chunk` type, ensuring protocol compatibility
23
+ - **Tool Permission Security**: Fixed allow rules in compound commands unexpectedly permitting high-risk subcommands; fixed CRITICAL-level commands being auto-approved in BypassPermissions mode
24
+ - **Config Directory Consistency**: Fixed 7 hardcoded paths bypassing custom config directories
25
+ - **Shell Execution Stability**: Fixed foreground command status permanently showing "running" after execution; fixed file descriptor leaks in PTY mode
26
+ - **Web UI Link**: The Web UI link in the TUI Header now automatically includes the sessionId parameter
27
+ - **React Rendering Error**: Fixed React Hook ordering issue when all tool groups for team members are hidden
28
+ - **TUI Rendering Stability**: Added exception guards to code highlighting and table rendering to prevent crashes
29
+ - **Team Management**: TeamDelete now proactively reclaims lingering detached member processes
@@ -0,0 +1,34 @@
1
+ # 🚀 CodeBuddy Code v2.87.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Delegate Mode Complete Overhaul
6
+
7
+ A completely redesigned Delegate Mode that enables the AI assistant to more efficiently coordinate multiple sub-agents to accomplish complex tasks:
8
+
9
+ - **System Prompt Rewrite**: Full coverage of role definitions, tool rules, notification formats, task workflows, and interaction examples, providing more precise task decomposition and coordination capabilities
10
+ - **Team Leader Templatization**: Extracted from hardcoded logic into configurable templates, supporting dynamic member lists and comprehensive coordination guidelines
11
+ - **Tool Whitelist Narrowing**: Delegate mode now focuses on five core coordination tools — Agent, TaskStop, SendMessage, AskUserQuestion, and StructuredOutput — for clearer responsibility boundaries
12
+
13
+ ### Subagent Permission Inheritance Configuration
14
+
15
+ A new three-tier configuration mechanism for flexible control over sub-agent default permission modes:
16
+
17
+ - CLI parameter: `--subagent-permission-mode`
18
+ - Environment variable: `CODEBUDDY_SUBAGENT_PERMISSION_MODE`
19
+ - Settings configuration: `permissions.subagentPermissionMode`
20
+
21
+ ### Daemon Mode Enhancements
22
+
23
+ - **Delegate Mode by Default**: The daemon now automatically uses Delegate Mode on startup, with customization available via `--permission-mode`
24
+ - **Parameter Inheritance**: Daemon child processes automatically inherit parent process CLI parameters (model, mcp-config, tools, etc.), eliminating the need for repeated configuration
25
+
26
+ ## 🔧 Improvements
27
+
28
+ - **Delegate Mode Visual Update**: Color changed from reddish-brown to amber/gold, better reflecting the "dispatcher/coordinator" role
29
+ - **Permission Inheritance Architecture Optimization**: Replaced hardcoded logic with an extensible mapping table, making it easier to add new permission modes
30
+ - **E2E Test Infrastructure**: Added Record/Replay mode supporting model response recording and playback, along with 13 new E2E test cases covering core tools and multi-turn conversation scenarios
31
+
32
+ ## 🐛 Bug Fixes
33
+
34
+ - **Compact Sync Deadlock**: Fixed context compaction never executing in sub-agent scenarios, ensuring proper context management for long conversations
@@ -0,0 +1,28 @@
1
+ # 🚀 CodeBuddy Code v2.88.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Externalized Tool Result Storage
6
+
7
+ Added the blob-store module to support externalized storage of large tool outputs. OutputSpiller streams oversized output to disk, preventing memory exhaustion from extra-large outputs (e.g., reading large files, lengthy logs) and improving long-session stability.
8
+
9
+ ### Custom Auto-Compact Threshold
10
+
11
+ Added the `CODEBUDDY_AUTOCOMPACT_PCT_OVERRIDE` environment variable, allowing you to customize the context auto-compaction trigger threshold (1–100 percentage). This gives you flexible control over compaction timing based on your usage scenario.
12
+
13
+ ## 🔧 Improvements
14
+
15
+ - **Deferred Tool Permission Passthrough**: Each deferred tool now performs independent permission checks, preventing all deferred tools from being automatically authorized after the agent executor permission is granted
16
+ - **Tool Search Precision**: Removed fuzzy matching from tool search, delivering more precise results and reducing irrelevant tool matches
17
+ - **Shell Output Limit Increase**: Default output limit raised from 20K to 30K, and the maximum from 100K to 150K, reducing truncation of large outputs
18
+
19
+ ## 🐛 Bug Fixes
20
+
21
+ - **Command Injection Hardening**: Replaced shell command execution from `exec` to `execFile` with array arguments, preventing potential command injection risks
22
+ - **MCP defer_loading Config Compatibility**: Fixed an issue where `defer_loading` did not take effect when MCP config `tools` used different tool name formats
23
+ - **MCP OAuth Callback Compatibility**: Fixed an issue where the browser was rejected by request validation when redirecting back from an external OAuth server, as custom headers could not be included
24
+
25
+ ## 📝 Documentation Updates
26
+
27
+ - Added standalone environment variables reference documentation
28
+ - Updated sub-agent and settings documentation
@@ -0,0 +1,24 @@
1
+ # 🚀 CodeBuddy Code v2.89.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Canvas Terminal
6
+
7
+ An all-new `#/canvas` view that supports free-form layout of multiple terminal tiles on an infinite canvas. You can drag to move terminal windows, resize in 8 directions, snap to grid, zoom and pan to browse the full layout, and box-select for batch operations. Each terminal tile supports an independent title display, creating a truly multi-terminal collaborative workspace.
8
+
9
+ ### Pre-Message Compaction
10
+
11
+ Automatically checks context usage before sending a message. When the threshold is exceeded, the context is compacted first before processing the message, preventing oversized context from degrading conversation quality. After compaction, the original user message is processed directly with no additional recovery steps needed. The trigger threshold can be customized via the `CODEBUDDY_PRE_MESSAGE_COMPACT_PCT` environment variable (default 10%).
12
+
13
+ ## 🔧 Improvements
14
+
15
+ - **MCP Tool List Fault Tolerance**: When an MCP Server's listTools call fails, it automatically falls back to cached results with a 30-second cooldown to avoid frequent retries, improving MCP connection stability
16
+ - **Agent Subagent Default Mode**: When the subagent_type parameter is omitted, the default mode is now general-purpose, making behavior clearer and more predictable
17
+ - **SDK Usage Data Enhancement**: Cache-related token statistics fields are now fully populated in message responses, improving usage data accuracy
18
+ - **Team Feature Toggle**: Agent Teams functionality can be flexibly controlled via the `CODEBUDDY_CODE_EXPERIMENTAL_AGENT_TEAMS` environment variable
19
+ - **Context Usage Query Optimization**: Fixed an issue where context usage queries failed after resume, ensuring data integrity across compaction and recovery scenarios
20
+ - **Installation Script Acceleration**: Download source switched to a globally accelerated domain, improving installation speed for overseas users
21
+
22
+ ## 🐛 Bug Fixes
23
+
24
+ - **Headless Mode Proxy Connection**: Fixed an issue where MCP connections failed in proxy environments under headless builds, ensuring normal operation in corporate network environments
@@ -0,0 +1,26 @@
1
+ # 🚀 CodeBuddy Code v2.90.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Canvas Terminal
6
+
7
+ Added the `#/canvas` view for free-form layout of multiple terminal windows on an infinite canvas. Supports drag-to-move, 8-direction resize, grid snapping, zoom and pan, box-select operations, and independent title display for each terminal.
8
+
9
+ ### Pre-Message Compaction
10
+
11
+ Automatically checks context usage before sending a message. When the threshold is exceeded (default 10%), the context is compacted first before processing the message, preventing oversized context from degrading conversation quality. After compaction, the original user message is processed directly with no additional recovery steps needed. The threshold can be customized via the `CODEBUDDY_PRE_MESSAGE_COMPACT_PCT` environment variable.
12
+
13
+ ### UI Component State Persistence
14
+
15
+ Added the `/api/v1/storage` REST API to migrate UI component state — including theme, language, terminal layout, editor state, and canvas viewport — from browser local storage to backend persistence, so state is no longer lost when tabs are closed. Supports both global and workspace scopes. Theme and language use a dual-write strategy to ensure no flash on initial load.
16
+
17
+ ## 🔧 Improvements
18
+
19
+ - **MCP Connection Fault Tolerance**: MCP Server connection failures now degrade silently without displaying red error messages, with a 30-second cooldown to avoid frequent retries
20
+ - **Subagent Default Behavior**: When subagent_type is omitted, the default is now independent context (general-purpose), avoiding unexpected context inheritance
21
+ - **Context Usage Query Optimization**: Fixed an issue where context usage queries failed after session resume, ensuring compaction decisions are based on accurate data
22
+ - **Installation Script Acceleration**: Switched to a globally accelerated domain, improving installation speed for overseas users
23
+
24
+ ## 🐛 Bug Fixes
25
+
26
+ - **Headless Mode Proxy**: Fixed an issue where MCP connections failed in proxy environments
@@ -0,0 +1,30 @@
1
+ # 🚀 CodeBuddy Code v2.91.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Canvas Terminal
6
+
7
+ The brand-new `#/canvas` view supports freely arranging multiple terminal tiles on an infinite canvas. Key features:
8
+
9
+ - Drag to move and 8-directional resize
10
+ - Grid snapping for a tidy layout
11
+ - Zoom and pan for easy management of many terminals
12
+ - Box selection and per-pane terminal title display
13
+
14
+ ### Pre-Message Compression
15
+
16
+ Before sending a message, the system automatically detects the context ratio. When it exceeds the threshold (default 10%), the context is compressed first to prevent oversized context from degrading conversation quality. After compression, the original message is processed directly without any additional recovery steps. You can customize the threshold via the `CODEBUDDY_PRE_MESSAGE_COMPACT_PCT` environment variable.
17
+
18
+ ## 🔧 Improvements
19
+
20
+ - **Permission Security Hardening**: HIGH-level dangerous commands (e.g., sudo, rm -rf) now require user confirmation even in bypass mode, enhancing command execution safety. Users can customize overrides via allow rules in the configuration
21
+ - **DeferExecuteTool Permission Enhancement**: Supports more flexible permission rule matching, such as `DeferExecuteTool(*)` and `DeferExecuteTool(TeamCreate)`
22
+ - **New Model Support**: Added GLM-4.7 and other large language models
23
+ - **MCP Tool List Fallback**: When a MCP Server's listTools call fails, it automatically falls back to cached results with a cooldown period to avoid frequent retries
24
+ - **Installation Script Optimization**: Download source switched to a globally accelerated domain, improving installation speed for overseas users
25
+ - **Context Usage Query Fix**: Fixed a broken chain traversal issue after resume, ensuring complete usage data
26
+ - **SDK Cache Fields**: Properly populate cache-related token statistics in messages, replacing previous empty values
27
+
28
+ ## 🐛 Bug Fixes
29
+
30
+ - **Headless Mode Proxy Connection**: Fixed MCP connection failures in proxy environments by correctly bundling undici in headless builds
@@ -0,0 +1,29 @@
1
+ # 🚀 CodeBuddy Code v2.92.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### Canvas Standalone View & Window Management
6
+
7
+ The canvas terminal receives a major upgrade, supporting opening individual terminal panes or the entire canvas in a standalone browser window for smoother multi-monitor workflows. Each tile now has maximize, minimize, and clone terminal window actions. When maximized, the tile uses fixed positioning detached from the canvas transform for a full-screen immersive experience.
8
+
9
+ ### Canvas Interaction Enhancements
10
+
11
+ Canvas interactions now align with Figma/Miro experience standards:
12
+ - Scroll to pan, Cmd+scroll to zoom
13
+ - Drag inertia effects
14
+ - Transparent overlay captures pointer events, ensuring embedded components and canvas operations do not interfere with each other
15
+
16
+ ## 🔧 Improvements
17
+
18
+ - **Terminal State Persistence**: PTY Session IDs and working directories of canvas terminals are persisted with the canvas state, automatically restored after refresh without recreating sessions
19
+ - **PTY Idle Release Optimization**: SSE subscriptions are now included in client liveness detection to prevent active connections from being incorrectly released; eliminated the zsh first-line highlight artifact
20
+ - **Gateway Static File Routing**: PWA-related files are properly exempted from CSRF validation, ensuring Service Workers and icons load correctly
21
+ - **Persistence Loss Prevention**: Debounce queues are synchronously flushed on page refresh to prevent unsaved state from being lost
22
+ - **Tool Parameter Streaming Rendering**: Fixed multiple correctness issues — parallel tool parameters render correctly, no first-frame data loss, no parameter ID mix-ups, and consistency correction on completion
23
+ - **Startup Performance Optimization**: Shell snapshot warm-up deferred to post-startup, MCP config reads are deduplicated concurrently, reducing cold-start latency
24
+ - **Windows Git Bash Detection**: No longer force-exits when Git Bash is not installed; automatically falls back to PowerShell execution
25
+
26
+ ## 🐛 Bug Fixes
27
+
28
+ - **Marketplace Config Storage**: Added a serialization lock for marketplace config file writes to prevent data loss from concurrent read/write operations
29
+ - **Marketplace Deduplication Fix**: Fixed false-positive deduplication when adding marketplaces by switching from runtime name matching to storage key matching