Commit Graph

185 Commits

Author SHA1 Message Date
gaoziman
c776fb95b7 feat(前端): 聊天钩子支持文档上传和解析
- 集成文档类型检测工具
- 支持PDF/Word/Excel文件上传
- PDF文档转Base64传给后端API
- Office文档(Word/Excel)传给后端解析
- 文本文件直接读取内容
- 添加文档大小验证
2025-12-22 23:22:39 +08:00
gaoziman
2344024e84 feat(依赖): 添加word-extractor库支持.doc文件解析
- 安装 word-extractor@1.0.4 依赖
- 新增 src/types/word-extractor.d.ts 类型声明
  - WordExtractor 类
  - Document 类及其方法类型
  - 支持 Buffer 和文件路径两种输入方式
2025-12-22 23:22:26 +08:00
gaoziman
fa260137ac feat(文档解析): 添加PDF/Word/Excel文档解析工具
- 新增 src/lib/document-parser.ts: 后端文档解析器
  - 支持 Word 文档(.doc/.docx)解析
  - 支持 Excel 文档(.xlsx)转Markdown表格
  - PDF文档直接传递给Claude API原生处理

- 新增 src/utils/document-utils.ts: 前端文档工具
  - 文档类型检测函数
  - 文件大小验证
  - Base64编码转换
2025-12-22 23:22:13 +08:00
gaoziman
be03aebb09 feat(页面): 聊天页面集成视频展示和链接预览
- MessageBubble.tsx 消息气泡组件:
  - 新增 searchVideos 属性接收视频搜索结果
  - 新增 onLinkClick 属性支持链接点击回调
  - 在消息内容中渲染 SearchVideosGrid 组件
  - 将 onLinkClick 传递给 MarkdownRenderer
- chat/[id]/page.tsx 聊天页面:
  - 添加 LinkPreviewModal 链接预览弹窗状态管理
  - 新增 handleLinkClick 处理链接点击打开预览
  - MessageBubble 传递 searchVideos 和 onLinkClick
  - 渲染 LinkPreviewModal 组件
2025-12-22 22:01:19 +08:00
gaoziman
e0b82b6257 feat(聊天): 集成视频搜索功能和优化Stream处理
- useStreamChat.ts Hook更新:
  - 新增 SearchVideoData 类型定义
  - StreamMessage 支持 tool_search_videos 事件类型
  - ChatMessage 添加 searchVideos 属性
  - 添加 saveMessageSearchVideos 函数保存视频到数据库
  - pendingSearchVideosRef 临时存储等待messageId的视频
  - 处理视频搜索事件更新UI状态
- chat/route.ts API更新:
  - 创建 createSafeStreamWriter 安全写入器
  - 解决客户端断开连接时的"Controller is already closed"错误
  - 所有 controller.enqueue 替换为 safeWriter.write
  - 添加 tool_search_videos 事件发送逻辑
  - mita_search 工具描述更新支持视频搜索
  - Claude/OpenAI/Codex格式工具定义添加video scope
2025-12-22 22:00:50 +08:00
gaoziman
2852f746f0 feat(组件): 添加链接预览弹窗功能
- LinkPreviewModal: 浮岛浏览器风格链接预览组件
  - 仿macOS窗口设计,三色圆点关闭按钮
  - 地址栏显示域名和路径,支持点击复制
  - 支持网页iframe嵌入预览
  - 支持图片直接预览显示
  - 加载状态和错误处理(不支持嵌入的站点)
  - 支持亮色/暗色主题自适应
  - ESC关闭和新窗口打开功能
- MarkdownRenderer: 添加链接点击回调
  - 新增 onLinkClick 属性支持拦截链接点击
  - 图片链接在灯箱打开,普通链接在预览窗口打开
2025-12-22 22:00:08 +08:00
gaoziman
ecf11e6b2b feat(组件): 添加视频搜索结果展示和播放组件
- SearchVideosGrid: 视频搜索结果网格展示组件
  - 支持3列响应式布局
  - 显示视频封面、标题、时长、作者、平台标签
  - 封面图片懒加载和加载状态动画
  - 点击卡片打开播放弹窗
- VideoPlayerModal: 视频播放弹窗组件
  - 支持B站、YouTube视频嵌入播放
  - 悬浮选集面板(仿B站原生设计)
  - 自动获取B站视频选集信息
  - 支持选集切换和播放状态指示
  - 不支持嵌入的视频显示跳转提示
  - ESC关闭和键盘快捷键支持
- EpisodeList: 视频选集列表组件
  - 显示选集编号、标题、时长
  - 当前播放集高亮显示
  - 支持滚动和加载状态
2025-12-22 21:59:25 +08:00
gaoziman
cab19672e0 feat(API): 添加视频选集信息获取接口
- 新增 /api/video/episodes 端点
- 支持解析B站视频链接(BV号和AV号格式)
- 调用B站 API 获取视频分P信息
- 返回选集列表包含: 分P编号、标题、时长、cid等
- 对非B站视频返回空选集列表
2025-12-22 21:57:25 +08:00
gaoziman
1e81e9151b feat(工具): 秘塔搜索支持视频搜索功能
- metasoSearch.ts 添加视频搜索支持:
  - 新增 MetasoVideoResult 接口定义视频搜索结果
  - scope 参数支持 'video' 类型
  - 添加视频搜索结果解析逻辑
  - formatMetasoSearchResults 支持视频结果格式化
  - formatMetasoSearchResultsShort 添加视频结果简短格式
- executor.ts 工具执行器更新:
  - ToolExecutionResult 新增 searchVideos 字段
  - mita_search 工具支持视频搜索 scope
  - 视频搜索默认返回5条结果
2025-12-22 21:56:42 +08:00
gaoziman
159009dd56 feat(类型): 添加视频搜索类型定义和工具函数
- 新增 SearchVideoData 类型定义,包含视频标题、链接、时长、作者等字段
- 新增 Message 类型的 searchVideos 属性用于存储视频搜索结果
- 添加 videoUtils.ts 视频工具函数库:
  - parseVideoUrl: 解析B站/YouTube/抖音视频链接
  - formatDuration: 格式化视频时长显示
  - getPlatformName/getPlatformColor: 获取平台名称和主题色
  - detectPlatform: 检测视频平台类型
  - supportsEmbed: 判断是否支持嵌入播放
  - getEmbedUrlWithPage: 生成带选集参数的嵌入URL
  - supportsEpisodes: 判断是否支持选集功能
2025-12-22 21:56:16 +08:00
gaoziman
92ec88e1a3 style(组件): 优化搜索图片网格卡片样式
- 调整圆角为更精致的 rounded 样式
- 更新背景色支持亮色/暗色主题
- 使用 ring 替代 border 实现更细腻的边框效果
- 添加精细的阴影层次感
- 优化 hover 状态的阴影过渡效果
2025-12-22 14:34:07 +08:00
gaoziman
8bfe420676 feat(页面): 添加秘塔AI配置界面和聊天页面增强
设置页面:
- 新增秘塔AI配置区块
- 支持秘塔API Key的配置和清除
- 添加秘塔平台链接和工具使用说明

聊天页面:
- 从数据库加载搜索图片和使用工具数据
- 将数据传递给 MessageBubble 组件展示
2025-12-22 12:38:06 +08:00
gaoziman
615a59567d feat(组件): 添加搜索图片展示和工具使用提示
SearchImagesGrid (新增):
- 瀑布流布局展示搜索图片
- 智能动态回填机制,自动替换加载失败的图片
- 支持图片灯箱预览
- 显示图片来源链接

MessageBubble:
- 添加工具使用提示栏,显示本次对话使用的工具
- 集成 SearchImagesGrid 展示图片搜索结果
- 支持 Markdown 中图片链接在灯箱中打开

MarkdownRenderer:
- 添加图片链接点击回调支持
- 识别并处理图片URL链接
2025-12-22 12:36:31 +08:00
gaoziman
3459f3821f feat(Hooks): 支持秘塔配置和图片搜索结果处理
useSettings:
- 添加 metasoApiKeyConfigured 状态
- 支持秘塔API Key的更新操作

useStreamChat:
- 添加 SearchImageData 类型定义
- 处理 tool_search_images 事件,实时展示搜索图片
- 处理 tool_used 事件,追踪使用的工具
- 添加搜索图片的数据库持久化逻辑
- ChatMessage 接口添加 searchImages 和 usedTools 字段
2025-12-22 12:23:22 +08:00
gaoziman
5a6a147bd8 feat(API): 集成秘塔AI工具和工具追踪功能
聊天API (chat/route.ts):
- 添加秘塔API Key解密和传递
- 集成工具使用追踪,记录每次对话使用的工具
- 支持图片搜索结果的流式返回
- 添加 tool_used 和 tool_search_images 事件类型

设置API (settings/route.ts):
- 支持秘塔API Key的加密存储和清除
- 更新默认工具列表包含秘塔工具

消息API (messages/route.ts):
- 支持搜索图片数据的追加保存
2025-12-22 12:22:34 +08:00
gaoziman
f0cc0eb996 refactor(类型): 添加工具使用和图片搜索相关类型
- Message 接口添加 usedTools 和 searchImages 字段
- 新增 SearchImageData 接口定义搜索图片数据结构
2025-12-22 12:21:47 +08:00
gaoziman
97d89f44ac feat(工具): 实现秘塔AI搜索和网页读取工具
秘塔搜索 (mita_search):
- 支持网页搜索和图片搜索两种模式
- 图片搜索包含智能验证和动态回填机制
- 自动过滤无效图片URL,确保返回有效结果

秘塔阅读 (mita_reader):
- 将网页内容转换为结构化Markdown格式
- 支持URL格式验证和错误处理

工具执行器更新:
- 添加 metasoApiKey 选项支持
- 集成秘塔搜索和阅读工具到执行流程
- 返回搜索图片数据供前端展示
2025-12-22 12:21:17 +08:00
gaoziman
baf27ceca6 feat(数据库): 添加秘塔AI工具配置和搜索图片支持
- 在 userSettings 表添加 metasoApiKey 和 metasoApiKeyConfigured 字段
- 更新默认工具列表,添加 mita_search 和 mita_reader
- 在 messages 表添加 usedTools 和 searchImages 字段
- 新增 SearchImageData 接口定义图片搜索结果类型
- 添加秘塔搜索和秘塔阅读器工具的种子数据
- 更新数据库名称配置从 lioncode_ui 到 cchcode_ui
2025-12-22 12:01:36 +08:00
gaoziman
5ad191684a refactor(前端): 移除 useSettings 中的 code_execution 默认配置
- 从前端默认设置中移除 code_execution 工具
2025-12-22 00:21:33 +08:00
gaoziman
1c28484091 refactor(聊天): 移除 code_execution 工具完整实现
- 移除系统提示词中的代码执行相关说明
- 移除图表绘制规范说明
- 移除 Claude/OpenAI/Codex 格式的 code_execution 工具定义
2025-12-22 00:21:23 +08:00
gaoziman
d581b8668a refactor(API): 移除 code_execution 工具相关配置
- 用户注册时默认工具列表移除 code_execution
- 设置接口默认工具列表移除 code_execution
- 工具列表接口过滤掉 code_execution 工具
2025-12-22 00:21:13 +08:00
gaoziman
65028e37ed refactor(数据库): 移除 code_execution 工具配置
- 从 userSettings 表的 defaultTools 默认值中移除 code_execution
- 从种子数据中移除 code_execution 工具定义
- 调整 web_fetch 工具的排序值
2025-12-22 00:21:02 +08:00
gaoziman
c18bb27794 fix(首页): 使用真实登录用户昵称显示问候语
- 移除 mock 数据中的 currentUser 引用
- 使用 AuthProvider 获取真实登录用户信息
- 未登录时显示默认昵称"用户"
2025-12-22 00:09:33 +08:00
gaoziman
d4de4381f2 style(样式): 添加细滚动条样式类
- 新增 scrollbar-thin 样式类用于小区域滚动
- 优化滚动条视觉效果,宽度更细更美观
2025-12-22 00:09:02 +08:00
gaoziman
249362a6eb feat(集成): 集成提示词优化功能到页面
- 在 layout.tsx 中添加 PromptOptimizerProvider
- 在 AppLayout 和聊天页面添加 PromptOptimizer 浮动按钮
- ChatInput 组件监听并消费优化后的提示词
- 优化结果可自动填入输入框
2025-12-22 00:08:30 +08:00
gaoziman
57bb1ffab7 feat(状态管理): 添加提示词优化 Provider
- 新增 PromptOptimizerProvider 管理优化后提示词状态
- 提供 setOptimizedPrompt 和 consumeOptimizedPrompt 方法
- 实现优化结果到输入框的状态传递
- 导出相关 hooks 和组件
2025-12-22 00:07:46 +08:00
gaoziman
31d227dca9 feat(组件): 添加提示词优化工具组件
- 新增 PromptOptimizer 浮动按钮组件
- 新增 PromptOptimizerModal 优化弹窗组件
- 支持简洁版和详细版两种优化模式
- 支持快捷键 Cmd/Ctrl + Shift + P 快速打开
- 支持优化历史记录查看和管理
- 支持一键使用优化后的提示词
2025-12-22 00:07:06 +08:00
gaoziman
4b4732a583 feat(API): 添加提示词优化相关接口
- 新增 /api/prompt/optimize 接口用于调用 AI 优化提示词
- 支持简洁版和详细版两种优化模式
- 支持 Claude 原生格式和 OpenAI 兼容格式
- 新增 /api/prompt/history 接口管理优化历史记录
- 支持查询和删除历史记录
2025-12-22 00:06:26 +08:00
gaoziman
fae1dfb7c9 feat(数据库): 添加提示词优化历史表
- 新增 prompt_optimizations 表存储用户的提示词优化历史
- 支持记录原始提示词、优化后提示词和优化模式
- 添加相应的数据库迁移文件
2025-12-22 00:05:44 +08:00
gaoziman
6e37e61420 feat(聊天): 支持 OpenAI 兼容格式的 API 调用
- 新增 handleOpenAICompatibleChat 处理函数
- 支持第三方中转站的 /v1/chat/completions 端点
- 优化处理器选择逻辑(apiFormat -> isCodex -> Claude原生)
- 过滤空内容消息避免 API 错误
- 规范化 URL 处理,避免双斜杠问题
- 支持多模态消息和工具调用
2025-12-21 21:15:07 +08:00
gaoziman
99ca472dd2 feat(设置): 添加 API 格式选择功能
支持在 Claude 原生格式和 OpenAI 兼容格式之间切换:
- 新增 api_format 数据库字段和迁移脚本
- 更新设置 Hook 类型定义
- 扩展设置 API 支持 apiFormat 读写
- 添加设置页面 API 格式选择 UI 组件
2025-12-21 21:14:41 +08:00
gaoziman
c341b0d67d chore: 更新默认模型版本为 claude-sonnet-4-5-20250929
- 更新注册接口默认模型配置
- 更新会话创建默认模型
- 更新助手页面默认模型
- 更新新对话弹窗默认模型
2025-12-21 21:14:06 +08:00
gaoziman
fbac280be3 style(组件): 调整新对话弹窗圆角样式
将弹窗圆角从 rounded-xl 改为 rounded-md,与其他弹窗保持一致
2025-12-21 16:53:52 +08:00
gaoziman
19bac12c9b fix(代码执行): 修复沙箱引擎阻塞和超时问题
- 为 alert/confirm/prompt 提供 mock 实现,避免执行阻塞
- 为 DOM API 提供 fallback,防止元素不存在时报错
- 优化 TypeScript 转译,完善类型注解移除逻辑
- 添加 allow-same-origin 确保 postMessage 正常工作
- 改进危险 API 限制,提供友好错误提示
2025-12-21 16:51:33 +08:00
gaoziman
30156458ba feat(代码执行): 增强远程引擎多语言 Unicode 支持
- 改进错误信息处理,提供更清晰的错误提示
- 添加 Go 语言非 ASCII 字符转义支持
- 添加 Kotlin、C#、C/C++ 标准 Unicode 转义
- 添加 Rust、Swift 大括号格式转义 \u{XXXX}
- 添加 Ruby、PHP 字符串转义支持
2025-12-21 16:34:07 +08:00
gaoziman
c2dcf9b23f perf(代码执行): 优化 Pyodide 引擎加载机制
- 升级 Pyodide 版本从 v0.24.1 到 v0.27.0
- 添加多 CDN 备用机制,提高加载成功率
- 加载失败时自动切换到备用 CDN
- 改进加载进度提示和错误处理
2025-12-21 16:33:48 +08:00
gaoziman
79b871d203 feat(笔记): 实现完整的笔记管理功能
- 新增笔记列表页面,支持搜索、筛选和排序
- 新增笔记卡片组件,展示笔记摘要和标签
- 新增笔记详情弹框,支持查看和编辑
- 新增保存到笔记弹框,从 AI 回复快速保存
- 侧边栏添加我的笔记入口
- AI 消息添加保存到笔记按钮
2025-12-21 16:05:03 +08:00
gaoziman
bd83bc501d feat(API): 实现笔记管理接口
- GET /api/notes: 获取用户笔记列表,支持搜索和筛选
- POST /api/notes: 创建新笔记
- PUT /api/notes/[noteId]: 更新笔记内容
- DELETE /api/notes/[noteId]: 删除笔记
- 支持置顶和归档操作
2025-12-21 16:04:28 +08:00
gaoziman
6d45e3575d feat(数据库): 添加笔记表结构
- 新增 notes 表,存储用户笔记数据
- 支持标题、内容、标签等字段
- 关联对话和消息来源
- 添加置顶和归档状态
2025-12-21 16:04:08 +08:00
gaoziman
92ab731c62 feat(设置): 添加 CCH 服务地址配置功能
- 新增服务地址输入框,支持自定义 CCH 服务 URL
- 服务地址与 API Key 一起保存到用户设置
- 页面加载时自动填充已保存的服务地址
2025-12-21 16:03:46 +08:00
gaoziman
d6dc77f63a feat(聊天): 实现 AI 消息重新生成功能
- 消息 API 新增 DELETE 方法支持删除单条消息
- useStreamChat Hook 添加 regenerateMessage 方法
- 聊天页面添加 handleRegenerate 处理逻辑
- MessageBubble 组件添加重新生成按钮(仅 AI 消息显示)
- MessageBubble 使用 Tooltip 替代原生 title 属性
- 移除未使用的 ActionButton 组件和点赞/踩按钮
2025-12-21 14:33:08 +08:00
gaoziman
f50766b742 feat(组件): 新增 Tooltip 组件并优化输入区交互体验
- 新增通用 Tooltip 组件,支持上下左右四个方向显示
- ChatInput 组件使用 Tooltip 替代原生 title 属性
- ChatInput 添加附件图标改为 Paperclip,更直观
- ToolsDropdown 工具按钮添加 Tooltip 提示
- 优化按钮 cursor 样式,提升交互体验
2025-12-21 14:32:48 +08:00
gaoziman
3b0683faf9 style(界面): 优化设置页面和 API Key 配置提示
- 聊天页面添加 API Key 未配置提示卡片
- 移除设置页面的 CCH URL 配置项(使用默认值)
- 简化保存配置逻辑
2025-12-21 14:04:08 +08:00
gaoziman
fd6c93cb30 fix(聊天): 添加用户认证和 API Key 解密
- 聊天前检查用户登录状态
- 获取当前用户的设置和 API Key
- 使用时解密 API Key
- 优化未配置 API Key 的错误提示
2025-12-21 14:04:01 +08:00
gaoziman
058ea85daa feat(设置): 实现用户级别设置隔离
- 设置 API 改为基于当前登录用户
- 注册时自动创建默认用户设置
- API Key 加密后存储到数据库
- 添加默认设置常量和格式化函数
2025-12-21 14:03:55 +08:00
gaoziman
2e8033a8ae feat(安全): 添加 API Key 加密存储功能
- 使用 AES-256-GCM 算法加密 API Key
- 支持加密/解密/检测功能
- 兼容旧的明文存储数据
2025-12-21 14:03:46 +08:00
gaoziman
269fc798aa feat(代码块): 集成代码运行功能
- 添加运行/停止按钮交互
- 显示 Pyodide 加载进度(Python)
- 集成执行结果展示组件
- 添加更多语言的 Prism 语法高亮支持
- 优化高亮失败的降级处理
2025-12-21 03:20:37 +08:00
gaoziman
70902a2541 refactor(执行结果): 重构代码执行结果组件
- 使用 CSS 变量适配亮暗主题
- 添加结果折叠/展开功能
- 添加输出复制功能
- 优化成功/错误状态显示样式
- 显示执行时间和引擎信息
2025-12-21 03:20:31 +08:00
gaoziman
d6f2c47ddc feat(API): 添加代码执行 API 路由
- 创建 /api/code/execute 接口
- 集成 Piston API 支持多语言远程执行
- 添加执行超时和错误处理
2025-12-21 03:20:24 +08:00
gaoziman
192cd175da feat(代码运行): 添加多语言代码执行引擎
- 实现 sandbox 引擎支持 JavaScript/TypeScript 执行
- 实现 pyodide 引擎支持 Python 浏览器端执行
- 实现 remote 引擎支持 Java/Go/C/C++/Rust 等远程执行
- 添加语言配置和入口点检测逻辑
- 支持执行状态回调和加载进度显示
2025-12-21 03:20:16 +08:00
gaoziman
2e5120dc72 fix(HTML预览): 修复链接点击影响父窗口问题
- 注入 <base target="_blank"> 标签
- 智能检测现有 head/html 标签位置注入
- 确保预览中的链接在新标签页打开
- 避免链接影响主应用页面
2025-12-21 02:47:27 +08:00
gaoziman
b3d5a47072 feat(代码块): 添加长代码折叠/展开功能
- 超过60行代码自动折叠,预览前30行
- 添加渐变遮罩和展开按钮交互
- 显示总行数和剩余行数信息
- 展开状态下显示收起按钮
- 复制功能始终复制完整代码
- 优化代码区域布局使用 flex 结构
2025-12-21 02:47:21 +08:00
gaoziman
4eab17155e style(字体): 优化字体系统使用相对单位
- 移除 ChatInput 和 MessageBubble 中的固定字体大小类
- MarkdownRenderer 标题和内容使用 em 相对单位
- 表格字体大小改为相对单位保持比例
- 聊天输入框添加 z-20 层级避免被代码块遮挡
2025-12-21 02:47:13 +08:00
gaoziman
470e34e7a8 refactor(代码块): 使用 CSS 变量重构代码块组件样式
- 使用 CSS 变量替代硬编码颜色值
- 添加 Mac 风格红黄绿交通灯按钮装饰
- 优化工具栏布局和间距
- 支持亮色/暗色主题自动切换
- 改进行号显示样式
2025-12-21 01:56:41 +08:00
gaoziman
99660ae4f6 style(代码块): 添加代码块 CSS 变量和亮暗主题语法高亮
- 添加代码块相关 CSS 变量(背景色、边框、行号、阴影等)
- 实现亮色主题语法高亮(Claude Style)
- 实现暗色主题语法高亮(Mac Style 紫灰主题)
- 添加 Mac 红黄绿按钮显示控制变量
- 优化 Prism.js 代码高亮样式,支持主题切换
2025-12-21 01:56:32 +08:00
gaoziman
1ef4a31d5d style(界面): 优化聊天页面布局和用户菜单显示
- 调整聊天输入区域左内边距以适配侧边栏
- 移除用户菜单中的 plan 信息显示
- 简化用户信息展示
2025-12-21 01:15:55 +08:00
gaoziman
600d899532 refactor(聊天头部): 使用 IconRenderer 组件渲染助手图标
- 替换原有的 emoji 图标为 IconRenderer 组件
- 支持 Lucide 图标和表情符号的统一渲染
- 优化图标样式和主题色适配
2025-12-21 01:15:35 +08:00
gaoziman
372946de9d style(聊天): 统一消息气泡和输入框圆角样式
- 将输入框圆角从 rounded-[18px] 改为 rounded-md
- 将用户消息气泡圆角从 rounded-[18px] 改为 rounded-md
- 将助手消息气泡圆角从 rounded-2xl 改为 rounded-md
- 保持界面风格一致性
2025-12-21 01:15:19 +08:00
gaoziman
1c114a764e feat(代码块): 添加 HTML 代码预览功能
- 在代码块工具栏添加预览按钮
- 支持 HTML/HTM 类型代码的实时预览
- 集成 HtmlPreviewModal 模态框组件
2025-12-21 01:15:02 +08:00
gaoziman
959fedf1d0 feat(组件): 新增 HTML 预览模态框组件
- 支持桌面端、平板、手机三种设备预览模式
- 提供代码视图和预览视图切换
- 支持全屏预览和代码下载功能
- 添加键盘快捷键 ESC 关闭和 F11 全屏
2025-12-21 01:14:44 +08:00
gaoziman
5307255844 style(界面): 优化聊天页面和侧边栏样式
- 聊天页面集成 ChatHeader 组件显示助手信息
- 添加淡入、滑入等动画效果样式
- 优化侧边栏布局和新对话按钮交互
- 统一分类标签的视觉样式
2025-12-20 20:46:51 +08:00
gaoziman
a5fcc9edae feat(对话): 扩展对话管理支持助手关联
- 对话创建接口支持关联助手ID和系统提示词
- 对话查询接口返回关联的助手信息
- 聊天接口支持使用助手系统提示词
- useConversations Hook 扩展助手相关参数
2025-12-20 20:46:35 +08:00
gaoziman
2d4bdfb7f5 feat(聊天): 添加新对话弹窗和聊天头部组件
- 新增 NewChatModal 新对话弹窗,支持快速开始和助手选择
- 新增 ChatHeader 聊天头部组件,显示当前助手和模型信息
- 支持搜索助手和显示收藏助手
- 集成 IconRenderer 显示助手图标
2025-12-20 20:46:19 +08:00
gaoziman
c987fcf909 feat(助手库): 添加助手库页面和组件
- 新增助手库页面,支持分类浏览和搜索
- 新增 AssistantCard 助手卡片组件
- 新增 AssistantDetailModal 助手详情弹窗
- 新增 AssistantEditModal 助手编辑弹窗
- 新增 AssistantSelector 助手选择器组件
- 集成 IconRenderer 组件显示 lucide 图标
2025-12-20 20:46:05 +08:00
gaoziman
34aa3e50cf feat(API): 添加助手管理接口
- 新增助手 CRUD 接口 (GET/POST/PUT/DELETE)
- 新增助手分类查询接口
- 新增助手收藏/取消收藏接口
- 新增最近使用助手查询接口
- 支持按分类、搜索关键词筛选助手
2025-12-20 20:45:56 +08:00
gaoziman
ee112a5ea3 feat(数据库): 添加助手系统数据表结构
- 新增 assistant_categories 助手分类表
- 新增 assistants 助手表,支持系统提示词和标签
- 新增 assistant_favorites 用户收藏表
- 添加数据库迁移脚本 0006_safe_spitfire.sql
- 添加助手种子数据脚本
2025-12-20 20:45:44 +08:00
gaoziman
bcb2141915 feat(图标系统): 添加图标选择器和渲染器组件
- 新增 icons.ts 图标配置文件,定义图标分类和中文标签
- 新增 IconRenderer 组件,支持渲染 lucide 图标和 emoji
- 新增 IconPicker 组件,提供分类浏览和搜索功能
- 支持向后兼容已有的 emoji 图标数据
2025-12-20 20:45:34 +08:00
gaoziman
66a58a2d3d feat(API): 添加文件上传接口
- 实现 POST /api/files/upload 端点
- 支持图片、PDF、Word、Excel、文本、代码等格式
- 限制最大文件大小为 20MB
- 自动创建 public/uploads 目录存储上传文件
- 使用 nanoid 生成唯一文件名
- 返回文件信息包含 URL、大小、类型等
- 提供 GET 端点获取上传配置
2025-12-20 12:15:49 +08:00
gaoziman
cb86380e7f feat(页面): 聊天页面集成文件上传功能和动画样式
聊天页面更新:
- handleSend 方法扩展支持文件参数
- 将上传的文件转换为 sendMessage 所需格式
- 从数据库加载历史消息的上传图片和文档
- MessageBubble 组件传递 uploadedImages 和 uploadedDocuments

全局样式更新:
- 添加 fadeInFast 和 fadeOutFast 淡入淡出动画
- 添加 scaleInFast 缩放动画
- 用于模态框和灯箱的平滑过渡效果
2025-12-20 12:15:03 +08:00
gaoziman
4cb3f162e3 feat(组件): 聊天输入框和消息气泡支持文件上传
ChatInput 组件:
- 集成 useFileUpload Hook 实现文件管理
- 支持拖拽文件到输入框上传
- 支持 Ctrl+V 粘贴图片
- 添加文件选择按钮和隐藏的 file input
- 拖拽时显示覆盖层提示
- 输入框上方显示已选文件预览

MessageBubble 组件:
- 显示用户上传的图片缩略图
- 点击图片打开 Lightbox 大图预览
- 显示用户上传的文档卡片
- 点击文档打开预览弹窗
- 代码执行图片也支持点击放大
2025-12-20 12:14:41 +08:00
gaoziman
00b8589e03 feat(API): 扩展聊天接口支持多模态消息
请求参数扩展:
- 新增 displayMessage 字段用于数据库存储原始用户输入
- 新增 images 字段支持用户上传的图片(Base64格式)
- 新增 uploadedImages 和 uploadedDocuments 用于持久化

多模态消息处理:
- Claude API 支持 image 类型内容块
- Codex API 支持 input_image 格式
- 用户消息保存时存储上传的图片和文档

系统提示词增强:
- 添加文档深度分析规范
- 定义七步文档分析框架
- 包含批判性评价和实践价值分析指导
2025-12-20 12:14:18 +08:00
gaoziman
acf17557c2 feat(Hooks): 添加文件上传Hook和扩展流式聊天支持
useFileUpload Hook:
- 实现文件添加、删除、清空功能
- 支持拖拽上传和粘贴上传
- 文件类型验证和大小限制
- 管理上传进度状态

useStreamChat Hook 扩展:
- 新增 UploadedFile 和 UploadedDocument 接口
- 支持图片文件转换为 Base64 格式
- 识别并读取文本类文件内容
- 扩展 sendMessage 参数支持文件数组
- 将文档内容附加到消息中发送给 AI
2025-12-20 12:13:56 +08:00
gaoziman
d98e540037 feat(组件): 添加文件预览列表组件
- 实现 FilePreviewItem 展示单个文件信息
- 根据文件类型显示对应图标和颜色
- 图片文件显示缩略图预览
- 显示文件名、大小和上传状态
- 支持上传进度条展示
- 提供悬浮删除按钮
2025-12-20 12:13:35 +08:00
gaoziman
cb01e2dffb feat(UI): 添加模态框、图片灯箱和文档预览组件
Modal 组件:
- 支持 ESC 键关闭和点击遮罩关闭
- 可配置关闭按钮显示、最大宽度、全屏模式
- 添加淡入和缩放动画效果

ImageLightbox 组件:
- 支持多图片浏览和左右键导航
- 实现缩放、下载功能
- 支持触摸手势滑动切换
- 底部指示点和图片计数显示

DocumentPreview 组件:
- 支持代码文件语法高亮显示
- Markdown 文件渲染预览
- 提供复制和下载功能
2025-12-20 12:13:15 +08:00
gaoziman
e99c72f02a feat(类型): 添加文件上传类型定义
- 定义 FileType 类型支持多种文件格式(图片、PDF、文档、代码等)
- 实现 UploadFile 接口包含完整的文件上传状态管理
- 添加 FileUploadConfig 配置接口和默认配置
- 提供 MIME 类型与文件类型映射
- 实现文件大小格式化和验证工具函数
2025-12-20 12:12:54 +08:00
gaoziman
799fb3ab58 feat(数据库): 扩展消息表支持用户上传的图片和文档
- 新增 uploadedImages 字段存储用户上传的图片(Base64编码数组)
- 新增 uploadedDocuments 字段存储用户上传的文档数据
- 定义 UploadedDocumentData 接口,包含文档名称、大小、类型和内容
2025-12-20 12:12:33 +08:00
gaoziman
e2679208aa style(渲染): 优化Markdown渲染和数据格式
- 行内代码简化样式,仅使用等宽字体
- 列表项标记颜色调整为品牌色
- Mock数据更新适配新的模型格式
- 首页模型格式转换逻辑更新
2025-12-20 01:05:25 +08:00
gaoziman
2a4ede5726 feat(页面): 聊天页面标题增强功能
- 标题区域新增下拉菜单,支持重命名和删除对话
- 添加内联标题编辑模式
- 优化模型格式转换,区分 name 和 displayName
- 完善键盘快捷键支持(Enter 确认、Escape 取消)
2025-12-20 01:05:11 +08:00
gaoziman
3112bc1f42 feat(组件): 优化侧边栏和消息交互
- 侧边栏新增对话重命名功能
- 优化下拉菜单交互,添加点击外部关闭
- 用户消息气泡新增悬停复制按钮
- 调整菜单文案为英文保持统一
2025-12-20 01:04:56 +08:00
gaoziman
844df69b7c feat(组件): 模型选择器支持多模型类型
- ModelSelector 组件支持可选的 selectedModel
- ModelCardSelector 新增 Claude 和 Codex 模型分组展示
- 添加模型类型切换提示,提醒用户不同模型的功能差异
- 优化模型选择交互体验
2025-12-20 01:04:42 +08:00
gaoziman
da19858c2d refactor(API): 重构聊天接口支持多模型类型
- 拆分 Claude 和 Codex 模型的处理逻辑为独立函数
- 新增 handleClaudeChat 函数处理 Claude 系列模型
- 新增 handleCodexChat 函数处理 Codex 系列模型(OpenAI Response API 格式)
- 添加 isCodexModel 工具函数用于模型类型判断
- 优化代码结构,提高可维护性
2025-12-20 01:04:28 +08:00
gaoziman
55dcb618af feat(类型): 更新模型类型定义
- Model 接口新增 displayName 字段
- 添加 modelType 类型(claude | codex)用于区分模型类型
2025-12-20 01:04:14 +08:00
gaoziman
c978504f4a feat(数据库): 添加多模型类型支持
- 在 models 表中新增 modelType 字段,支持区分 claude 和 codex 类型
- 添加 Codex 系列模型数据(gpt-5.1-codex, gpt-5.1-codex-max, gpt-5.2-codex)
- 更新 Claude 模型的 displayName 命名
- 新增数据库迁移文件
2025-12-20 01:04:02 +08:00
gaoziman
54578ddd2d chore: 更新Mock数据和工具服务
- 更新 mock 数据配置
- 优化 webFetch 工具服务
2025-12-19 22:37:42 +08:00
gaoziman
ac5f555163 refactor(UI): 整合认证功能并优化界面
- 布局集成 AuthProvider 和 Toaster 组件
- 更新应用标题为 LionCode
- 侧边栏集成用户信息展示
- 设置页面支持已登录用户
- 用户菜单添加登出功能
- 优化全局样式
2025-12-19 22:37:19 +08:00
gaoziman
a7e846d733 feat(API): 对话接口添加用户数据隔离
- 获取对话列表时按用户过滤
- 创建对话时关联当前用户
- 删除对话时验证所有权
- 所有对话操作需要登录认证
2025-12-19 22:36:56 +08:00
gaoziman
bfbeef726d feat(组件): 添加通用UI组件
- 添加 BrandIcon 品牌图标组件
- 添加 ThemeToggle 主题切换组件
- 添加 Toast 消息提示组件
2025-12-19 22:36:42 +08:00
gaoziman
abcea67980 feat(页面): 实现认证相关页面UI
- 实现登录页面,支持邮箱验证码登录
- 实现注册页面,支持邮箱验证注册
- 实现重置密码页面
- 统一认证页面布局和样式
2025-12-19 22:36:32 +08:00
gaoziman
b0b912274f feat(认证): 添加认证状态管理和路由保护
- 实现 AuthProvider 管理全局认证状态
- 实现 middleware 路由保护中间件
- 支持受保护路由自动重定向到登录页
- 支持已登录用户自动跳转首页
2025-12-19 22:36:21 +08:00
gaoziman
733c93a91c feat(认证): 实现用户认证API和工具库
- 实现 JWT Token 生成和验证
- 实现登录、注册、登出、重置密码 API
- 实现邮箱验证码发送功能(配置从环境变量读取)
- 实现密码加密和验证工具
- 支持获取当前用户信息
2025-12-19 22:36:08 +08:00
gaoziman
629ff540fc feat(数据库): 添加用户认证相关数据表
- 新增 users 用户表,支持邮箱注册和登录
- 新增 verification_codes 验证码表,支持多种验证场景
- 为 user_settings 表添加 userId 关联字段
- 为 conversations 表添加 userId 关联字段
- 定义表关系实现用户数据隔离
- 更新数据库迁移文件
2025-12-19 22:35:54 +08:00
gaoziman
7d8a6a6939 feat(前端): 流式聊天支持 Pyodide 图形渲染
useStreamChat.ts:
- 处理 pyodide_execution_required 事件触发浏览器端执行
- 处理 tool_execution_result 事件接收服务端执行结果
- 添加 Pyodide 加载状态管理和进度显示
- 实现图片数据保存到数据库
- ChatMessage 类型增加 images 和 pyodideStatus 属性

page.tsx:
- 从数据库加载历史消息的图片数据
- 传递 images 和 pyodideStatus 到 MessageBubble 组件
2025-12-19 20:21:00 +08:00
gaoziman
e5c5593686 feat(组件): 消息气泡支持图形展示
MessageBubble.tsx:
- 集成 CodeExecutionResult 组件显示代码执行图片
- 添加 Pyodide 加载状态显示
- 支持 images 和 pyodideStatus 属性
- 新增 ToolResultDisplay 子组件处理工具结果

MarkdownRenderer.tsx:
- 修复图片组件属性传递问题
- 改用 spread 操作符传递所有 img 属性
2025-12-19 20:20:33 +08:00
gaoziman
58d288637a feat(组件): 添加代码执行结果展示组件
- 新增 CodeExecutionResult 组件展示代码执行输出和图形
- 支持 Base64 图片渲染和点击放大查看
- 显示执行引擎(Pyodide/Piston)和执行时间
- 新增 PyodideLoading 组件显示 Python 环境加载进度
- 支持暗色主题
2025-12-19 20:20:11 +08:00
gaoziman
5fe0552338 feat(API): 聊天接口支持 Pyodide 图形代码执行
- 添加图表绘制规范到系统提示词
- 支持发送 pyodide_execution_required 事件通知前端
- 工具执行结果增加图片数据传递
- 优化图表绘制指导(单次绘图、子图展示、中文支持)
2025-12-19 20:19:51 +08:00
gaoziman
5cc4fbb7a0 feat(API): 添加消息更新接口
- 新增 PATCH /api/messages/[messageId] 用于更新消息
- 支持更新消息的图片数据(用于保存 Pyodide 执行结果)
- 支持追加模式更新图片数组
- 新增 GET /api/messages/[messageId] 获取单个消息
2025-12-19 20:19:26 +08:00
gaoziman
68ba9b3204 feat(工具): 实现混合代码执行架构
codeExecution.ts:
- 实现 Pyodide + Piston 混合执行架构
- Python 图形代码使用 Pyodide 在浏览器端执行
- 其他代码使用 Piston API 在服务端执行
- 响应增加 images、engine、executionTime 字段

executor.ts:
- 集成代码分析工具判断执行方式
- 支持返回 requiresPyodide 标记浏览器端执行需求
- 传递图片数据到执行结果
2025-12-19 20:18:58 +08:00
gaoziman
ef45e14534 feat(工具): 添加 Pyodide 浏览器端 Python 运行时
- 实现基于 WebAssembly 的 Python 运行环境
- 支持 matplotlib 图形渲染并输出为 Base64 图片
- 实现中文字体加载(Noto Sans SC)
- 预注册 seaborn-whitegrid 等多种图表样式
- 单例模式管理 Pyodide 实例,优化加载性能
2025-12-19 20:18:34 +08:00
gaoziman
ba4e00a341 feat(工具): 添加代码分析工具模块
- 新增 codeAnalyzer.ts 用于分析代码特征
- 实现 detectGraphicsCode 检测图形绘制代码
- 实现 shouldUsePyodide 判断是否使用浏览器端执行
- 支持 matplotlib、seaborn、plotly 等可视化库检测
2025-12-19 20:18:11 +08:00
gaoziman
bfcaf5a53a feat(类型): 添加工具调用相关类型定义
- 添加 ToolCall 接口定义工具调用记录
- 添加 ToolResult 接口定义工具执行结果
- 支持图片数据、执行引擎和执行时间属性
2025-12-19 20:17:50 +08:00