Skip to content

Commit 8ee8085

Browse files
author
7418
committed
docs: add commit message guidelines to CLAUDE.md
Add 'Commit 信息规范' section to Development Rules requiring: - Conventional commits format in title - Detailed per-file/per-feature change descriptions in body - Root cause explanation for bug fixes - Architectural decision rationale when applicable Also remove v0.11.0 changelog that was mistakenly added to CLAUDE.md (changelogs belong in commit messages and GitHub Releases, not here).
1 parent 9c13f04 commit 8ee8085

File tree

1 file changed

+7
-114
lines changed

1 file changed

+7
-114
lines changed

CLAUDE.md

Lines changed: 7 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ CodePilot — Claude Code 的桌面 GUI 客户端,基于 Electron + Next.js。
4040
- 涉及 Claude Code SDK 需确认 SDK 实际支持的功能和调用方式
4141
- 对不确定的技术点先做 POC 验证,不要直接在主代码中试错
4242

43+
**Commit 信息规范:**
44+
- 每次 commit 必须在 message body 中写清楚每个改动的具体内容和原因
45+
- 标题行使用 conventional commits 格式(feat/fix/refactor/chore 等)
46+
- body 中按文件或功能分组,说明:改了什么、为什么改、影响范围
47+
- 如果是修复 bug,说明根因是什么,不只是描述现象
48+
- 如果涉及架构决策(如选择方案 A 而非方案 B),简要说明理由
49+
4350
## Release Notes 规范
4451

4552
每次发布 GitHub Release 时,必须包含以下内容:
@@ -91,117 +98,3 @@ CodePilot — Claude Code 的桌面 GUI 客户端,基于 Electron + Next.js。
9198
- 构建前清理 `rm -rf release/ .next/` 可避免旧产物污染
9299
- 构建 Windows 包后需要 `npm rebuild better-sqlite3` 恢复本地开发环境
93100
- macOS 交叉编译 Windows 需要 Wine(Apple Silicon 上可能不可用),可用 zip 替代 NSIS
94-
95-
## v0.11.0 Changelog
96-
97-
### 核心修复:SDK settingSources 配置
98-
99-
**问题**:CodePilot 通过 SDK 调用 Claude Code 时未设置 `settingSources`,导致 SDK 运行在隔离模式,不加载用户的 `~/.claude/settings.json` 和项目级 `.claude/settings.json`。这造成工具权限、超时配置、CLAUDE.md 项目记忆等全部缺失,是 WebFetch 超时、工具行为与 CLI 不一致等问题的根因。
100-
101-
**修复**:在 `queryOptions` 中添加 `settingSources: ['project', 'local']`(有 Provider 时)或 `['user', 'project', 'local']`(无 Provider 时)。有 Provider 时跳过 `user` 是因为 `~/.claude/settings.json` 中的 `env` 字段(如 `ANTHROPIC_BASE_URL`)会覆盖 CodePilot Provider 的配置。
102-
103-
**文件**`src/lib/claude-client.ts`
104-
105-
### 核心修复:CLAUDECODE 嵌套会话检测
106-
107-
**问题**:当用户从 Claude Code CLI 内启动 CodePilot(开发模式或日常同时使用),子进程继承 `CLAUDECODE` 环境变量,SDK 检测到后拒绝启动,报错 "Claude Code cannot be launched inside another Claude Code session"。这是大量用户报告 "exited with code 1" 的重要原因之一。
108-
109-
**修复**:在构建 SDK env 时 `delete sdkEnv.CLAUDECODE`
110-
111-
**文件**`src/lib/claude-client.ts`
112-
113-
### 移除手动 MCP 配置读取
114-
115-
**原因**:之前 SDK 在隔离模式下不加载设置文件,所以 CodePilot 手动读取 `~/.claude.json``~/.claude/settings.json` 中的 `mcpServers`。现在 SDK 通过 `settingSources` 自动加载,手动读取会导致 MCP 服务器重复注册。
116-
117-
**修复**:移除手动读取逻辑,只传递 CodePilot UI 中显式配置的 MCP 服务器。
118-
119-
**文件**`src/lib/claude-client.ts`
120-
121-
### 移除硬编码超时环境变量
122-
123-
**原因**:之前为解决工具超时问题,硬编码了 `API_TIMEOUT_MS=600000``CLAUDE_CODE_STREAM_CLOSE_TIMEOUT=600`。现在 SDK 从用户设置中正确加载这些配置,硬编码不再需要。
124-
125-
**文件**`src/lib/claude-client.ts`
126-
127-
### 改善错误信息展示
128-
129-
**问题**:Claude Code 进程报错时只显示原始 error.message,用户无法判断原因。
130-
131-
**修复**:根据错误类型(ENOENT、exit code 1、ECONNREFUSED、401/403/429 等)提供具体的错误描述和排查建议,包含 Provider 名称。
132-
133-
**文件**`src/lib/claude-client.ts`
134-
135-
### 切换项目时自动刷新右侧文件树
136-
137-
**问题**:用户在左侧切换到不同项目的聊天时,右侧 FileTree 没有自动刷新。
138-
139-
**修复**:在 `ChatSessionPage``loadSession` 中,`setWorkingDirectory` 后 dispatch `refresh-file-tree` 事件。
140-
141-
**文件**`src/app/chat/[id]/page.tsx`
142-
143-
### 工具完成后实时刷新文件树
144-
145-
**问题**:AI 写入新文件后,文件树要等整个对话结束才刷新,且可能因缓存不显示新文件。
146-
147-
**修复**:在 `onToolResult` 回调中 dispatch `refresh-file-tree` 事件;fetch 请求添加 `_t=Date.now()` 防止缓存。
148-
149-
**文件**`src/components/chat/ChatView.tsx``src/components/project/FileTree.tsx`
150-
151-
### 同项目新建聊天不再弹出目录选择
152-
153-
**问题**:在某个项目的聊天页面点新建,即使当前已有 workingDirectory,仍弹出 FolderPicker。
154-
155-
**修复**`handleNewChat` 优先使用当前 `workingDirectory`(从 `usePanel` 获取),其次 localStorage,最后才弹 FolderPicker。
156-
157-
**文件**`src/components/layout/ChatListPanel.tsx`
158-
159-
### 记住上次选择的模型
160-
161-
**问题**:每次新建聊天模型都重置为 sonnet。
162-
163-
**修复**:模型切换时保存到 `localStorage('codepilot:last-model')`;ChatView 初始化时从 localStorage 读取;新建 session 时传入 last-model。
164-
165-
**文件**`src/components/chat/MessageInput.tsx``src/components/chat/ChatView.tsx``src/components/layout/ChatListPanel.tsx`
166-
167-
### 左侧项目文件夹默认收起
168-
169-
**问题**:左侧 ChatListPanel 的项目文件夹默认全部展开,项目多时很乱。
170-
171-
**修复**:首次使用时(通过 `codepilot:collapsed-initialized` 标记),自动折叠除最近活跃项目外的所有项目组。右侧 FileTree 的 `defaultExpanded` 改为空 Set。
172-
173-
**文件**`src/components/layout/ChatListPanel.tsx``src/components/project/FileTree.tsx`
174-
175-
### 修复右侧文件树图标对齐
176-
177-
**问题**:文件名和图标无法垂直对齐。
178-
179-
**修复**:文件行的 spacer 从 `size-4` 改为 `size-5 shrink-0`,匹配文件夹 chevron 按钮的实际尺寸(size-4 icon + p-0.5 padding = 20px)。
180-
181-
**文件**`src/components/ai-elements/file-tree.tsx`
182-
183-
### 动态模型列表 + Provider 切换通知
184-
185-
**问题**:模型列表写死为 sonnet/opus/haiku 三个选项,切换 Provider 后模型名称不更新。
186-
187-
**修复**:新增 `/api/providers/models` 端点,根据当前激活 Provider 返回对应模型列表;MessageInput 动态加载模型列表;ProviderManager 激活 Provider 后 dispatch `provider-changed` 事件触发刷新。
188-
189-
**文件**`src/app/api/providers/models/route.ts`(新增)、`src/components/chat/MessageInput.tsx``src/components/settings/ProviderManager.tsx`
190-
191-
### 修复上下文按钮和文件类型匹配
192-
193-
**问题**:右侧文件树的 "+" 按钮在某些状态下不起作用;扩展名格式的文件类型(如 `.ts`)无法正确匹配。
194-
195-
**修复**:在 PromptInput 的文件类型匹配逻辑中添加对 `.` 开头扩展名模式的处理。
196-
197-
**文件**`src/components/ai-elements/prompt-input.tsx`
198-
199-
### 工具超时时间调整
200-
201-
**修复**:默认 toolTimeout 从 120s 调整为 300s。
202-
203-
**文件**`src/app/api/chat/route.ts`
204-
205-
### 待实现功能
206-
207-
- **Plan Mode 自动切换执行**:SDK 的 `Query` 接口支持 `setPermissionMode()`,可在 plan 完成后切换到 code mode 开始执行。需要新增前端→后端的通信通道(类似现有的 permission API),保存 `conversation` 引用,在 UI 上添加"开始执行"按钮。

0 commit comments

Comments
 (0)