Skip to content

refactor: Monorepo 架构重构 + VSCode 扩展#249

Open
hqwlkj wants to merge 50 commits into
lessweb:mainfrom
hqwlkj:refactor/vscode
Open

refactor: Monorepo 架构重构 + VSCode 扩展#249
hqwlkj wants to merge 50 commits into
lessweb:mainfrom
hqwlkj:refactor/vscode

Conversation

@hqwlkj

@hqwlkj hqwlkj commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

概述

将 Deep Code CLI 从单包结构重构为 npm workspaces monorepo,提取共享核心逻辑到 @vegamo/deepcode-core,并新增 VSCode IDE 伴侣扩展,实现 CLI 与 VSCode 共享同一套 LLM 会话引擎。


动机

  • 消除代码重复:CLI 和 VSCode 扩展需要共享 LLM 交互、工具执行、会话管理、权限系统等核心逻辑
  • 统一用户体验:CLI 和 IDE 应使用相同的配置、会话历史和工具行为
  • 降低维护成本:核心能力只需在一个包中维护和测试

变更内容

1. Monorepo 架构改造

包结构:

npm 名 说明
packages/core @vegamo/deepcode-core 共享核心库:会话管理、工具执行、MCP、权限、设置、Prompt 构建
packages/cli @vegamo/deepcode-cli 终端 CLI(Ink/React 渲染),薄壳层依赖 core
packages/vscode-ide-companion deepcode-vscode VSCode 扩展,WebView React 前端,共享 core

核心库 (@vegamo/deepcode-core) 导出模块:

  • SessionManager — LLM 会话编排引擎(用户输入 → LLM 调用 → 工具执行循环 → 响应)
  • ToolExecutor + 7 个内置工具(bashreadwriteeditAskUserQuestionUpdatePlanWebSearch
  • McpManager / McpClient — Model Context Protocol 集成
  • Settings 系统 — 多层级配置解析(默认 → 用户 → 项目 → 环境变量)
  • Permission 系统 — 基于副作用分类的权限控制
  • Prompt 构建 — 系统提示、压缩提示、Plan 模式提示、Skills 文档
  • 通用工具 — OpenAI 客户端、文件工具、进程管理、遥测

2. 新增 VSCode IDE 扩展

功能特性:

  • 侧边栏 WebView 聊天界面(支持独立面板/新窗口打开,互斥管理)
  • 启动时自动激活,无需手动触发
  • React 19 + Tailwind CSS 4 + shadcn/ui 前端
  • 与 CLI 共享同一套 SessionManager、配置文件和会话持久化
  • 通过 @webview-rpc 实现 Host ↔ WebView 类型安全通信
  • 支持所有 CLI 功能:会话管理、权限弹窗、Diff 预览、Plan 模式、Skills

技术栈:

  • Extension Host: TypeScript + esbuild 打包
  • WebView UI: React + Vite + Tailwind CSS + Radix UI + Framer Motion
  • 数据层: @tanstack/react-query + @webview-rpc/react-query
  • 测试: Vitest + Testing Library

3. 构建与发布流水线

新增两套独立的构建发布脚本:

脚本 用途
scripts/build.js / prepare-package.js CLI:core tsc + esbuild 内联打包 → npm 发布
scripts/build-vscode-companion.js / prepare-vscode.js VSCode:core tsc + extension 打包 + webview build → VS Code 市场发布
scripts/version.js 统一版本号升级(core/cli/vscode 三包联动)

打包策略:

  • CLI 发布时,core 和所有运行时依赖(openaiejszod 等)通过 esbuild 内联到 dist/cli.js,发布包零运行时依赖
  • VSCode 扩展通过 vsce package 打包为 .vsix,发布到 VS Code Marketplace
  • @vegamo/deepcode-core 仅作为 monorepo 内部依赖,不独立发布到 npm

4. 架构设计亮点

  • Snippet 文件编辑系统read 工具返回文件状态 snippet_idedit 必须引用,避免编辑过期内容
  • DeepSeek 上下文缓存优化:稳定内容(系统提示、工具文档、Skills)前置,最大化缓存命中率
  • Agent Skills 按需加载:Skills 通过 model 自动匹配,在需要时注入上下文
  • 副作用分类权限系统:按目录读/写/删、Git、网络、MCP 等维度细粒度控制

5. 新增文档

  • docs/architecture.md — 核心架构设计文档
  • RELEASE.md / RELEASE_en.md — 版本发布流程文档
  • 各 package 内的 README.md

文件变更范围

packages/core/          — 新增:共享核心库(SessionManager、Tools、MCP、Settings、Permissions 等)
packages/cli/            — 重构:精简为 core 的薄壳,移除已提取到 core 的模块
packages/vscode-ide-companion/ — 新增:VSCode 扩展完整实现
scripts/                 — 更新/新增:构建和发布脚本
docs/                    — 新增:架构文档
RELEASE.md / RELEASE_en.md — 新增:发布流程说明
package.json             — 更新:workspaces 配置、新增 vscode 相关脚本

测试

  • npm run typecheck — 全工作区类型检查通过
  • npm run lint — ESLint 通过
  • npm run format:check — Prettier 格式检查通过
  • npm run test --workspaces — 全部测试通过
  • CLI 构建 (npm run build) 成功
  • VSCode 扩展构建 (npm run build:vscode) 成功

向后兼容性

  • CLI 用户npm install -g @vegamo/deepcode-cli 行为不变,配置文件路径和格式不变
  • 会话数据~/.deepcode/ 目录下的会话文件和配置完全兼容
  • API:CLI 命令行接口不变

hqwlkj added 30 commits July 9, 2026 15:13
- 新增App主视图及其子组件,构建聊天功能框架
- 实现问答交互组件AskUserQuestion,支持单选、多选及文本输入
- 开发AssistantBubble气泡组件,支持内容显示及复制
- 添加基础UI元素组件:按钮、卡片、勾选框、徽章及折叠面板
- 实现命令面板组件,包含输入、列表、分组及空状态处理
- 创建聊天状态管理上下文ChatProvider,集成RPC通信及消息处理
- 配置编辑器和忽略文件以符合项目规范和构建需求
- 增加气泡装饰点BubbleDot组件,用于消息列表美化展示
- 将 Composer 组件重命名并替换为 InputPrompt,增加附件支持和粘贴处理
- 移除消息中的 html 字段,统一使用 content 字段存储文本内容
- 调整 ChatProvider 和路由层消息格式,去除多余的 renderMarkdown 调用
- 在 PlanRenderer 中支持有序列表任务项标记及图标展示优化
- 优化 DiffPreview 组件样式,增加换行与边距调整
- PermissionPrompt 改进权限决策映射,明确允许或拒绝权限权限类型
- Markdown 组件集成 highlight.js 和 taskLists 支持代码高亮及任务列表
- 向 body 标签添加 data-vscode-context 属性,防止默认上下文菜单项
- 更新单元测试适配 InputPrompt 组件及修改消息测试去除 html 内容
- 调整 SkillsTags、ThinkingBubble、ToolBubble 和 SystemBubble 等组件样式和结构
- 移除 extension 中 markdown-it 实例及相关渲染逻辑,保证消息内容安全文本渲染
- 升级 package.json 添加 highlight.js 和 markdown-it-task-lists 依赖支持新功能
- 将Composer.test.tsx文件重命名为InputPrompt.test.tsx
- 更新单元测试文件中的组件导入和描述信息
- 模拟PromptAttachments相关依赖以支持测试
- 测试handleSend功能,确保不同输入和按键情况正确处理发送逻辑
- 覆盖加载状态下的中断按钮功能及点击事件
- 验证技能面板的渲染和技能选择回调
- 测试上下文计量器和悬浮卡片在不同状态下的渲染
- 删除package.json和package-lock.json中@adobe/css-tools依赖和相关锁定信息
- 在Messages组件中添加编辑消息功能的回调传递和触发逻辑
- 在ChatProvider中新增editingMessage状态及对应的reducer和actions
- InputPrompt组件实现编辑消息文本和附件的恢复加载
- 发送消息时若处于编辑状态,触发清除编辑状态的回调
- PromptAttachments支持从图片URL恢复附件功能,防止重复加载
- 添加编辑状态相关的单元测试验证编辑文本、附件加载及发送行为
- 更新类型定义,新增EditingMessage接口及编辑状态相关类型声明
- 新增className支持,允许自定义Markdown组件样式
- 引入GitHub风格的highlight.js高亮主题,提升代码块展示效果
- 使用cn函数合并类名,增强样式灵活性和可维护性

style(bubbles): 统一对话气泡组件宽度样式

- 为SystemBubble、ThinkingBubble和ToolBubble组件的Collapsible容器添加全宽样式w-full
- UserBubble中Markdown组件新增user-bubble类名,优化样式排版
- 统一对话气泡布局,提升整体UI一致性和用户体验
- 将 Header 组件中的会话列表替换为抽屉式 SessionList 组件
- SessionList 组件引入 Drawer 抽屉,支持会话搜索和分组显示
- 使用 Button 触发抽屉打开关闭,优化界面交互体验
- 调整测试文件对应抽屉组件及按钮的 Mock 实现
- SkillsPanel 中修正 React 导入方式并添加图标显示
- 修复 InputPrompt 测试中获取文本框值的类型断言
- 在Header组件中新建聊天和设置按钮添加Tooltip包裹,提升交互体验
- 在SessionList组件侧边栏按钮添加Tooltip提示,明确功能含义
- 更新CSS变量引用,优化错误颜色适配VSCode主题配色
- 为Tooltip相关组件添加mock实现以简化测试
- Tooltip、TooltipTrigger和TooltipContent均被mock为简单div容器
- 保持SessionList组件测试环境的纯净与稳定
- 改善测试执行的性能和可靠性
- 将 Messages 组件移动至 App.tsx 以优化界面结构
- ContextMeter 中调整字体大小,统一文本样式细节
- 取消 markdown 代码块内边距,改善视觉效果
- PlanRenderer 优化缩进及元素间距,改善文本换行表现
- SessionList 中添加按钮点击事件以控制抽屉状态
- 各类型气泡组件微调顶部间距,提升对齐一致性
- ThinkingLiveBubble 添加响应式宽度限制,居中显示
- ToolBubble 中引入 Tooltip 组件,为参数文本添加悬浮提示展示
- 移除 Messages.tsx 内部分 console.log 调试信息
- 删除markdown组件highlight函数中未使用的attrs参数
- 修改SessionList测试中mock的Drawer组件,去除onOpenChange参数
- 保证代码简洁并避免潜在错误风险
- 为按钮添加了 cursor-pointer 样式,提升交互体验
- 将 ContextMeter 组件重命名为 ContextIndicator,统一命名规范
- 更新引入和测试中对应的组件名称
- InputPrompt 组件中用 ContextIndicator 替换 ContextMeter
- 优化 InputPrompt 中发送按钮及加载状态样式和逻辑
- SystemBubble 组件中新增 Markdown 渲染支持技能描述文本
- 调整 SystemBubble 中技能描述的样式结构,增强可读性
- 在 InputPrompt 组件中添加 messages 属性以支持历史消息导航
- 实现历史消息的存储、索引管理及键盘上下箭头导航功能
- 支持从传入的 messages 中加载用户消息作为历史记录
- 在历史消息浏览模式下输入非方向键时退出浏览
- 完善历史消息导航的边界处理及草稿恢复机制
- 添加 InputPrompt 组件相关单元测试覆盖历史消息导航逻辑
- 新增通用 Carousel 轮播组件及其相关子组件和按钮控件
- 在 package.json 中添加 embla-carousel-react 依赖支持轮播实现
- 新增 checkForUpdates 工具函数,实现从市场拉取扩展最新版本并提示更新
- 在激活流程中增加日志记录功能,区分开发、生产及测试模式
- 生产模式激活时自动执行更新检查
- 新建日志模块,提供基于扩展模式的日志记录功能
- 扩展 deactivate 时记录日志并清理资源
- 新增对应的单元测试覆盖更新检查及日志模块
- 添加 showAlert RPC 接口及测试支持,实现消息提示功能
- 新增 ProgressShimmer 组件及样式,用于展示加载动画提示
- ToolBubble 组件中集成 ProgressShimmer,优化确认等待展示
- 更新测试环境配置,增加 vscode 模块的 mock 支持
- 添加 semver 依赖及其类型声明支持版本比较功能
- 新增AskQuestionCarousel组件实现多问题轮播问答交互
- 在App组件中集成AskQuestionCarousel,条件渲染用户提问界面
- 扩展ChatProvider状态管理,新增askUserQuestions状态字段
- 更新AskUserQuestion组件,增加类型守卫及表单验证优化
- 消息组件Messages调整,支持传递tool消息的isLastMessage属性
- 新增chatService接口addSystemMessage以记录系统问答摘要
- 调整DiffPreview组件props结构,更清晰地处理输出和元数据
- 优化InputPrompt及Messages组件的样式和结构细节
- 升级项目依赖,添加typescript-eslint相关依赖和配置
- 修改 AnswerFormValues 的导入路径,改为从 AskQuestionCarousel 组件导入
- 注释移除对 AskUserQuestion 组件的未使用导入
- 保持代码结构清晰,避免冗余引用
- 引入ProgressShimmer组件替代文字动画效果
- 调整Spinner尺寸为3.5以增强视觉统一性
- 移除BubbleDot组件减少界面冗余元素
- 优化Thinking状态文本的展示样式和交互体验
- 移除 checkForUpdates 中的启动和版本信息日志输出
- 减少控制台不必要的打印内容
- 保持核心功能请求代码不变
- 提升代码整洁度和可维护性
- 新增消息组件支持用户提问功能,添加相关回调处理
- AssistantBubble组件加入更多操作按钮和下拉菜单
- 移除BubbleDot中无用的connectToPrev属性,修正样式应用
- ToolBubble组件改为通过回调通知父组件显示问题轮播,避免重复分发
- 优化ThinkingLiveBubble,移除未使用的连接逻辑和部分时间计算代码
- InputPrompt组件精简样式,增加AI生成内容的文字提示
- 改正router.ts中userPrompt的text字段名错误
- SkillsPanel中按钮文本统一改为复数形式"Skills"
- 调整SystemBubble和ThinkingBubble连接线渲染逻辑,避免无连接时显示线条
- 添加.vscode/tasks.json任务依赖,确保运行时自动启动watch任务
- wrpc客户端增加请求日志与错误捕获,方便调试RPC调用
- package.json添加发布文件清单,覆盖dist、assets和templates文件夹
- 多处组件调整小型UI细节,包括按钮图标尺寸统一改为size-3.5
- 删除无效console.log,多处捕获异常时添加错误输出方便定位问题
- 实现AlertDialog组件及相关子组件用于UI交互弹窗
- AssistantBubble组件新增反馈弹窗及请求ID复制功能
- ChatProvider新增renameSession与deleteSession方法,并调用chatService接口
- chatService新增重命名和删除会话相关RPC方法
- 在App组件中传递重命名与删除会话的action
- Header组件新增重命名和删除会话的回调支持
- router层新增重命名、删除会话、打开聊天面板等RPC端点
- extension新增openChatPanel实现,支持面板独占显示及切换
- 添加ContextMenu组件库用于右键菜单拓展
- 修改InputPrompt类型支持SessionMessage类型
- 统一Messages组件中消息内容的空值处理
- 调整webview主题CSS变量以匹配侧边栏背景
- SessionList组件引入编辑与删除图标及相关回调支持
- 修正launch.json预启动任务名称以支持开发启动配置
- 引入 SessionMessage 类型以增强消息数据的类型安全
- 在测试用例中为消息数组明确指定 SessionMessage 类型
- 移除未使用的 state 字段 askPermissions 和 activeSessionStatus
- 优化历史记录加载相关测试代码的可读性和维护性
- 在 tsconfig.webview.json 中新增 "node" 类型声明
- 解决类型识别和代码提示问题
- 改进对 Node.js 环境相关库的支持
- 在 tsconfig.webview.json 中新增 "node" 类型声明
- 解决类型识别和代码提示问题
- 改进对 Node.js 环境相关库的支持
- 为 InputPrompt.test.tsx 添加 FieldDescription、FieldSet 和 Spinner 组件模拟
- 修正 Messages.test.tsx 中 AssistantBubble 模拟接收的属性及内容渲染
- 在 SessionList.test.tsx 中新增 ItemTitle、ItemDescription 组件模拟
- 新增多个 UI 组件如 ContextMenu、AlertDialog、Input、Sonner 和 Field 的模拟实现
- 模拟 chatService 的多个方法以支持测试逻辑
- 仅当 sessionId 与 activeSessionId 相同时调用 onCreateNewSession 清空现有聊天界面
- 注释掉 onSelect 调用,避免重复选择同一会话
- 修改 chatService.openChatPanel 传入参数为负值,调整视图列的识别方式
- 保留打开新窗口功能无变更
- 新增 AskQuestionSummary 组件用于展示用户提问摘要信息
- Messages 组件支持通过 ref 以及在 ToolBubble 中添加滚动到底部回调
- InputPrompt 组件增加 Plan Mode 切换开关,支持在发送消息时携带 planMode 参数
- sendPrompt 相关接口、上下文和服务层支持 planMode 与 askUserQuestionSummary 标记
- 优化 AskQuestionCarousel 组件,修正折叠组件展开状态及按钮样式
- PermissionPrompt 使用新的 Alert 组件美化拒绝权限提示
- Vite 配置调整,第三方库统一打包为 vendor chunk
- 新增 UI 组件库的 Switch、Alert 和 Toggle,规范样式与行为
- 修复 SessionList 中 Empty 组件样式问题,避免滚动条干扰
- 新增 ContinuePrompt 组件显示中断会话提示对话框
- 在 App 组件中条件渲染 ContinuePrompt 组件
- 扩展 ChatContext 和状态,添加 showContinuePrompt 字段
- 在 reducer 中处理 SESSION_STATUS 设置是否显示继续提示
- 添加 DISMISS_CONTINUE_PROMPT 动作和对应的 reducer 逻辑
- 将用户操作保存到 localStorage,防止重复显示继续提示
- 消息处理逻辑中过滤“Interrupted.”消息,避免重复提示
- 完善 ContinuePrompt 单元测试覆盖显示和交互行为
- 测试中添加对 dismissContinuePrompt 动作的调用验证
- 优化测试环境 localStorage 模拟,使用真实内存存储模拟行为
- 在 InputPrompt 测试中所有调用 mockOnSendPrompt 的断言加入了 { planMode: false } 参数
- 为 Tooltip 相关组件添加了 mock 实现,支持测试中使用
- 为 Switch 组件添加了 mock 实现,模拟复选框行为
- 增加了 Siren 图标组件的 mock,完善图标模拟覆盖
- 保持所有新增代码符合测试结构及命名规范
hqwlkj added 20 commits July 21, 2026 11:25
- 移除旧的 esbuild 打包配置,改用 npm 脚本分步骤构建
- 先构建 webview,再构建扩展,最后打包成 .vsix 文件
- 删除对模板文件的拷贝与清理操作,简化构建过程
- 更新 clean 脚本,移除无用的输出目录删除
- 为发布脚本增加预发布选项,支持版本自动识别和命令行参数
- 修改 package.json,移除无用的 files 配置
- 新增详细的 README 文档,介绍插件功能、配置及使用说明
- 添加 .vscodeignore 文件,排除无关文件以减小发布包体积
- 更新 RELEASE.md,补充预发布命令行参数文档
- 将package.json中的版本号从0.2.0调整为0.1.34
- 确保版本号准确反映当前发布状态
- 修正因版本号错误可能导致的发布或兼容性问题
- 在 ChatProvider 中新增 continueGeneration 方法以处理续写请求
- 修改状态管理,移除对继续提示的已关闭本地存储逻辑
- 优化会话状态显示,只在中断时展示继续提示
- 为用户消息生成唯一 ID,保证消息唯一性
- 在 App 组件中将 ContinuePrompt 的 onContinue 回调绑定到 continueGeneration
- 在路由逻辑中排除 "/continue" 指令的用户消息展示,避免重复发送请求
- 在消息断言中添加id字段类型匹配
- 移除 localStorage 清理操作以简化测试
- 调整 SESSION_STATUS 和 LOAD_SESSION 中断状态测试逻辑,删除对 localStorage 状态的依赖
- 删除无效的本地存储相关测试用例,确保中断状态总是显示提示
- 更新 dismissContinuePrompt 测试,改为只验证动作派发,不依赖 localStorage
- 统一保证中断时提示始终显示,且消除提示操作后的状态正确性验证
- 注释掉了“Open as Editor”、“Open to the Side”和“Open in new Window”三项菜单
- 保留并新增了基于 JSONL 处理的上下文菜单选项
- 简化了上下文菜单内容,方便后续功能扩展
- 优化了菜单组件的可维护性和可读性
- 注释掉了“Open as Editor”、“Open to the Side”和“Open in new Window”三项菜单
- 保留并新增了基于 JSONL 处理的上下文菜单选项
- 简化了上下文菜单内容,方便后续功能扩展
- 优化了菜单组件的可维护性和可读性
- 添加homepage字段指向项目主页
- 配置bugs字段以便报告问题
- 设置galleryBanner颜色和主题
- 关闭qna功能
- 标记价格为免费
- 在 DiffPreview 组件中新增打开文件及查看差异编辑器按钮
- 通过 wrpc 实现打开文件及展示差异编辑器的远程调用
- 在扩展中新增 openDiffEditor 方法,支持反向应用 diff 预览重建原始文件内容
- 通过临时文件机制启动 VS Code 原生差异比较编辑器
- 新增 diff-utils 模块,实现统一 diff 解析与反向应用算法
- 更新路由类型与实现,支持差异编辑器和文件内容拉取接口
- 工具气泡组件显示名称首字母大写,优化显示效果
- 新增字符串首字母大写辅助函数 capitalize,提高代码复用性
- 覆盖 null 和空状态渲染行为,确保无效输入返回 null
- 验证文件路径显示为可点击链接及其点击行为
- 测试 "Open" 按钮渲染及点击事件调用 wrpc.openFile
- 测试 "View Diff" 按钮条件渲染和点击事件调用 wrpc.showDiffEditor
- 验证输出文本渲染及空白处理,确保文本被修剪
- 测试 diff 行的正确渲染,包括新增、删除和上下文行的样式
- 处理和测试各种边界条件如长路径、特殊字符输出、截断 diff 和单行 diff
- 使用模拟函数验证按钮点击逻辑和 wrpc 调用行为
- 引入capitalize工具函数格式化权限请求名称
- 将权限名称改为首字母大写显示,提升界面一致性和可读性
- 更新全局CSS变量,统一主色调为 #4d6bfe,替换原 vscode 主题色
- 修改 ContinuePrompt 和 PermissionPrompt 组件边框及背景为主色调变量
- 调整 PromptAttachments 中附件标签的文字颜色为主色调
- 优化 PromptAttachments 中移除按钮的圆角样式
- 修改 SkillsTags 组件 Badge 圆角为统一圆角样式

refactor(input-prompt): 用下拉菜单替代计划模式开关

- 用 DropdownMenu 替换旧版 Switch 组件控制 planMode
- planMode 状态类型调整为 "true" | "false" 字符串
- 添加下拉选项说明不同模式的行为含义
- 发送消息时将字符串状态转换为布尔值传递
- 优化按钮显示图标及文字切换,区分默认与计划模式

feat(messages): 当消息为空时显示欢迎界面

- 新增无消息时展示 Deep Code AI IDE 欢迎图标和提示文字
- 保持消息渲染逻辑稳定,分角色正确展示各消息气泡
- 改进滚动处理逻辑,自动滚到底部

fix(messages): 移除多余控制台日志语句

- 删除 handleToBottom 函数中的无用 console.log 调试信息
- 新增 DropdownMenuGroup、DropdownMenuLabel、DropdownMenuRadioGroup 和 DropdownMenuRadioItem 的 mock 实现
- 新增 Item、ItemContent、ItemDescription、ItemMedia 和 ItemTitle 组件的 mock 实现
- 新增 Hand 和 SquareChartGantt 图标组件的 mock 实现
- 修改加载状态测试中断按钮的选取方式,从 data-testid 改为 title 属性 "Stop"
- 确保点击中断按钮触发 onInterrupt 回调
- 更新了 ItemDescription 文本内容以反映功能变化
- 从 InputPrompt 组件中删除未使用的 Hand、Siren、Switch 和 Tooltip 相关导入
- 从 Messages 组件中移除未使用的 useImperativeHandle 导入
- 从 SessionList 组件中删除未使用的 Columns2 和 ExternalLink 图标导入
- 从 PromptAttachments 组件中抽离出粘贴图片附件的处理逻辑
- 在 packages/vscode-ide-companion/src/webview/hooks 下新增 usePromptAttachments.ts 文件
- 调整相关组件及测试文件中 usePromptAttachments 的导入路径
- 优化了组件间职责分离,提升代码可维护性和复用性
- 调整 InputPrompt 组件按钮文本大小为 text-xs,提升视觉一致性
- 为 PlanRenderer 组件的 bullet 点和文本添加 text-xs 样式,优化排版
- 在 UserBubble 组件中为 Copy 和 PenLine 图标添加 text-muted-foreground 颜色样式
- 优化复制按钮切换状态时的图标颜色显示,增强交互反馈
- 在 ChatProvider 中添加 sessionListOpen 状态和切换函数 toggleSessionList
- 在 App 组件传递 sessionListOpen 和 onToggleSessionList 给 Header 组件
- Header 组件集成 SessionList 的显示控制,支持展开收起操作
- SessionList 组件支持受控和非受控的展开状态管理,支持展开状态变化回调
- extension.ts 新增命令注册(newchat、settings、history),实现与 Webview 的消息通信触发
- 抽象 openFileInEditor 与 getWorkspaceRoot 函数,简化 extension.ts 相关代码
- package.json 增加新命令配置和视图标题按钮关联
- 优化 Header 组件 UI,去除不必要按钮,并新增会话列表图标及标题样式调整
- 在聊天上下文中新增搜索面板状态及切换动作
- 实现SearchDialog组件支持按消息内容和角色搜索
- 在Header中添加搜索按钮,条件显示并触发搜索面板切换
- 消息列表组件新增scrollToMessage方法,支持滚动定位并高亮指定消息
- sendPrompt方法优化,新增返回sessionId,首次发送提示时设置activeSessionId
- 增加chatService的getSessions接口及相关测试
- 新增挂载activeSessionId的useRef以保证稳定回调读写
- 添加关键帧动画实现消息高亮呼吸灯效果
- 增加相关单元测试覆盖会话列表设置与激活逻辑
- 调整 ContinuePrompt 和 PermissionPrompt 中按钮尺寸为更小图标尺寸,提升界面一致性
- 优化 Messages 组件滚动定位逻辑,加入 IntersectionObserver 确保消息完全可见后应用高亮
- 增加对 IntersectionObserver 及超时清理的支持,防止资源泄漏
- 调整 Messages 组件滚动区域和消息容器样式,修改内边距和宽度管理
- SearchDialog 组件中根据可见性过滤消息,改进搜索结果准确性并美化结果列表显示
- SessionList 组件中搜索输入框和编辑输入框样式优化,更新按钮样式提升交互体验
- 在消息类型定义中新增多字段支持,包含时间戳和参数字段,为扩展功能做准备
- 调整ContinuePrompt和PermissionPrompt组件顶部内边距为pt-2替代py-2
- 新增ATTACHMENT_LABEL和ATTACHMENT_PASTE_MAX常量以统一管理粘贴图片标签和大小限制
- usePromptAttachments支持最大粘贴图片数量限制和超额提示回调,改进粘贴事件逻辑
- InputPrompt新增技能加载动画和激活技能列表展示
- 输入区域优化判断是否含内容逻辑,提升性能
- 优化停止按钮样式和交互
- Messages组件无内容视图添加左右内边距,文本居中显示
- 技能相关组件SkillsPanel和SkillsTags统一使用toTitleCase展示技能名
- toTitleCase函数支持连字符、空格和下划线分隔,智能识别API、ID等缩略词
- router中默认显示提示改为ATTACHMENT_LABEL统一标签显示
- ThemeProvider统一React导入格式,提升代码规范性
- 调整ContinuePrompt和PermissionPrompt组件顶部内边距为pt-2替代py-2
- 新增ATTACHMENT_LABEL和ATTACHMENT_PASTE_MAX常量以统一管理粘贴图片标签和大小限制
- usePromptAttachments支持最大粘贴图片数量限制和超额提示回调,改进粘贴事件逻辑
- InputPrompt新增技能加载动画和激活技能列表展示
- 输入区域优化判断是否含内容逻辑,提升性能
- 优化停止按钮样式和交互
- Messages组件无内容视图添加左右内边距,文本居中显示
- 技能相关组件SkillsPanel和SkillsTags统一使用toTitleCase展示技能名
- toTitleCase函数支持连字符、空格和下划线分隔,智能识别API、ID等缩略词
- router中默认显示提示改为ATTACHMENT_LABEL统一标签显示
- ThemeProvider统一React导入格式,提升代码规范性
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant