46 Commits

Author SHA1 Message Date
Your Name
0f1ca3f590 重构生图占位状态机并修复结果展示时序 2026-02-07 21:10:17 +08:00
Your Name
1fd0db078a 修复生图结果消息被覆盖不显示 2026-02-07 20:57:57 +08:00
Your Name
79d54f0a92 优化切换生图模型后的参数工具同步逻辑 2026-02-07 20:51:10 +08:00
Your Name
3a20c5a36d 新增RUXA生图服务商并打通聊天/画布链路 2026-02-07 20:09:31 +08:00
Your Name
9fae58cfd3 fix: close image placeholder on generation end
Emit generation end markers for success/failure and scope marker handling to the latest request so placeholders stop on errors.
2026-02-03 20:45:47 +08:00
Your Name
20efbbbb53 fix: trigger image placeholder after analysis
Send a dedicated generation-start marker when image generation begins and stop embedding markers in assistant text.
2026-02-03 19:45:49 +08:00
Your Name
0cc791a71e fix: delay image placeholder until text shows
Guard the auto image-loading placeholder so it starts only after a visible text reply and cancel pending timers when the image arrives.
2026-02-03 16:59:23 +08:00
Your Name
00f2e32631 fix: 画图标注完成后先上传图片到服务器获取URL,避免使用base64 2026-02-03 10:56:31 +08:00
Your Name
f2d7aff7c6 feat: 添加去水印功能 - 图片工具栏新增去水印按钮,系统设置新增PicWish API配置 2026-02-03 10:32:54 +08:00
Your Name
b8279e4b93 fix: 修复 huanke-gemini 占位图不显示问题
- 在 messages.tsx 中将 huanke-gemini 和 gemini-image 纳入 isGeminiModel 判断
- 在 chat.tsx 中将 huanke-gemini 和 gemini-image 记录为 gemini 类型的生成任务
- 确保使用 huanke-gemini 时显示 Gemini 图片生成占位图
2026-02-02 00:23:31 +08:00
Your Name
a779555f3f fix: 更新 chat 和 dynamic-provider 配置
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 11:24:05 +08:00
Your Name
a6a267e819 fix: 修复占位图和图片显示问题
1. 移除 onFinish 中的数据库重新加载逻辑(时机不对,会打断图片生成流程)
2. 保留 appendedMessages 和 mergedMessages 合并逻辑
3. 修复 dynamic-provider.ts 的循环依赖(使用动态导入)
4. 不在 onFinish 中调用 completeGeneration(),因为图片可能还在生成

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 11:18:39 +08:00
Your Name
d6073ec091 fix: 改进消息合并逻辑,确保历史消息不丢失
1. 简化 initialMessagesRef 初始化
2. 在 mergedMessages 中使用 baseMessages 作为后备
3. 添加 initialMessages 到 useMemo 依赖数组

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 11:11:22 +08:00
Your Name
12ae592746 fix: 修复历史消息消失和用户消息重复问题
1. 移除 wrappedSendMessage,避免用户消息 ID 冲突导致重复
2. 添加 initialMessagesRef 保存初始消息,防止历史消息丢失
3. 改进 mergedMessages 逻辑:合并 初始消息 + useChat消息 + appendedMessages
4. 使用 Map 进行去重,按创建时间排序

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 11:04:29 +08:00
Your Name
05236a7b86 fix: 在 onFinish 后从数据库重新加载消息
这是根治方案 B:
1. 添加 GET /api/messages 端点从数据库获取消息
2. 在 onFinish 后延迟 500ms,然后从数据库重新加载消息
3. 更新 setMessages 和清空 appendedMessages

这确保了 data-appendMessage 保存到数据库的消息能正确显示

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 10:58:08 +08:00
Your Name
2fc702b543 fix: 优化占位图显示时序
1. AI 文字回复显示后延迟 3 秒再显示动态占位图
2. 延迟期间隐藏占位图,让用户有时间阅读文字
3. 只有 isGeneratingImageFlag=true 时才显示图片生成占位图

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 10:42:28 +08:00
Your Name
b60afb16cb fix: 使用 wrappedSendMessage 保存用户消息到独立状态
1. 创建 wrappedSendMessage 包装函数
2. 在发送消息时同时保存用户消息到 appendedMessages
3. 这样即使 useChat 重置消息状态,用户消息也会保留在 mergedMessages 中

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 10:35:03 +08:00
Your Name
b3d37f815a fix: 使用独立的 appendedMessages 状态避免与 useChat 冲突
参考 lobe-chat-pro 的架构,将 data-appendMessage 消息存储在
独立的状态中,通过 mergedMessages 合并后传递给组件,
避免直接修改 useChat 的内部状态导致消息丢失

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 10:29:21 +08:00
Your Name
3737b1ce99 fix: 修复占位图逻辑和移除导致错误的刷新
1. 移除 onFinish 中的 router.refresh(),它导致 React 错误
2. 简化占位图逻辑:hasImageContent 优先级最高
3. 当有图片内容时,无论其他标记如何,都隐藏占位图

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 10:20:59 +08:00
Your Name
096faa257a debug: 添加图片检测日志
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 03:09:03 +08:00
Your Name
22b9ad0d70 fix: 使用 requestAnimationFrame 立即添加消息
问题:延迟到 onFinish 处理消息导致消息被 useChat 重置
解决:使用 requestAnimationFrame 在收到消息时立即添加,避免延迟

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 03:04:07 +08:00
Your Name
c6180e8610 fix: 修复智能自动模式占位图提前消失问题
问题:
- appendMessage 放入队列延迟处理导致 GENERATING_IMAGE 标记无法被及时检测
- status 变成 ready 时占位图消失,但图片还在生成中

解决方案:
- 添加 isGeneratingImageFlag 状态来跟踪图片生成进度
- 在收到包含 GENERATING_IMAGE 标记的消息时立即设置标志
- 在收到包含图片的消息时清除标志
- 将标志传递给 Messages 组件用于占位图显示判断

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 02:49:52 +08:00
Your Name
ed4c2fe8cd debug: 添加更多消息追踪日志
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 02:40:45 +08:00
Your Name
8d580ad3ab chore: sync local changes
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 22:39:49 +08:00
Your Name
81d2489649 refactor: clean up debug logs and simplify message handling
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 22:36:29 +08:00
Your Name
ddd0006f1e fix: use replaceState instead of redirect to preserve message state
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 22:25:58 +08:00
Your Name
cd5669a8bf fix: redirect to /chat/id after image generation to ensure messages load correctly
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 22:20:08 +08:00
Your Name
2fdf27e611 debug: add logging to track message state during image generation
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 22:18:02 +08:00
Your Name
2e62d17317 fix: preserve chat context after image generation by updating URL to /chat/id
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 22:11:29 +08:00
Your Name
c674e7e861 debug: 添加图片处理按钮状态调试日志
- 在 chat.tsx 中添加状态重置日志
- 在 image-preview.tsx 中添加按钮状态监控
- 帮助定位按钮变灰问题
2026-01-18 11:30:10 +08:00
Your Name
e9d9d14d07 fix: 修复阿里生图模型动态占位卡片不显示问题
- 在 chat.tsx 中添加 alibaba-image 类型到 startGeneration
- 确保 pendingGeneration 记录正确的 modelType
2026-01-12 14:05:55 +08:00
Your Name
604d7425ad fix: 完成角度编辑功能的组件传递链,使按钮正确显示 2026-01-11 00:29:54 +08:00
Your Name
a473d9710c 修复GEMINI生图二次对话4K/2K问题
- 修复ImageParamsBar组件的useEffect逻辑,确保参数正确同步
- 修复chat.tsx中imageParams的初始化,确保所有字段都有值
- 解决二次对话时选择4K但生成2K的问题
- 确保从localStorage恢复的参数能正确传递给ImageParamsBar组件

问题根源:
- ImageParamsBar的useEffect只在initialParams存在时执行
- 如果initialParams是undefined,会使用默认值2K
- imageParams可能未正确传递,导致参数丢失

修复方案:
- 修改useEffect条件判断,使用!== undefined而不是truthy检查
- 确保imageParams始终有完整的默认值结构
- 添加详细的分析报告文档
2026-01-02 21:18:46 +08:00
Your Name
f641038992 fix: 添加sessionStorage错误处理,解决部分用户无法访问的问题
- 为所有sessionStorage操作添加try-catch错误处理
- 在sessionStorage不可用时(如隐私模式)优雅降级
- 避免浏览器扩展注入脚本导致的错误影响应用运行
- 确保即使sessionStorage被禁用,应用也能正常工作
2025-12-29 16:33:54 +08:00
Your Name
1f213bb92d feat: 图像拓展功能优化和防重复点击
- 图像拓展API改为使用URL方式,避免Base64长度限制(61440字节)
- 先将图片上传到S3获取公网URL,再调用Dashscope API
- 添加防重复点击功能,处理中时禁用所有图片处理按钮
- 添加自动滚动功能,点击处理按钮后自动滚动到最新消息
- 处理完成后也会自动滚动到底部显示结果
2025-12-29 16:18:46 +08:00
Your Name
7526a0159c feat: 完善图片编辑功能和UI优化
- 修复浏览器favicon未更新问题(使用settings.favicon)
- 将'图片标注'组件名改为'图片编辑'(所有相关文本和注释)
- 在顶部导航栏添加'图片编辑'按钮,支持上传图片进行编辑
- 图片编辑完成后自动添加到聊天输入框(通过sessionStorage传递)
- 优化图片编辑组件下载按钮UI(更明显的样式,添加文字标签)
- 图片处理结果(变清晰/抠图/图像拓展)自动保存到相册和生图记录
- 优化图片编辑确认逻辑,优先使用处理后的图片
2025-12-29 11:24:47 +08:00
Your Name
7c253e04a0 feat: 添加图像拓展功能
- 新增 /api/extend 路由,集成阿里云Dashscope图像拓展API
- 在系统设置'本地AI设置'中添加图像拓展API配置(API密钥、X/Y轴放大倍数)
- 在图片标注组件中添加'图像拓展'按钮(橙色,Expand图标)
- 在聊天对话图片上添加'图像拓展'按钮,支持动态占位卡片
- 更新ImageProcessingLoading组件支持extend类型(橙色主题)
- 处理后的图片上传到S3,保存到数据库(modelId: extend-1.0)
- 同步到我的相册和出图记录
- 添加完整的API调用文档
2025-12-29 10:54:32 +08:00
Your Name
0ea84c36a6 fix: 修复抠图功能消息的持久保存格式 2025-12-29 09:14:16 +08:00
Your Name
b39ce3dcc2 fix: 修复图片处理消息的持久保存格式
- 修正 ChatMessage 类型使用 metadata.createdAt 而不是直接的 createdAt
- 确保保存到数据库的消息格式正确,可以正确加载和显示
2025-12-29 09:13:29 +08:00
Your Name
1c7bd9e2d0 feat: 在聊天对话中为图片添加变清晰和抠图功能
- 在图片预览组件左上角添加变清晰和抠图按钮
- 创建图片处理加载组件(类似Gemini生图的动态卡片效果)
- 实现点击按钮后的处理逻辑:创建临时消息、调用API、更新消息
- 添加消息保存API用于保存处理后的图片消息
- 当消息文本为'正在变清晰...'或'正在抠图...'时显示动态加载组件
- 处理完成后替换加载卡片为处理后的图片并保存到数据库
2025-12-29 09:10:52 +08:00
Your Name
712041bbeb 添加模型后备功能和优化图片生成 2025-12-19 15:30:18 +08:00
Your Name
b36edf51f1 修复页面切换后图片生成结果不更新问题 2025-12-19 02:01:22 +08:00
Your Name
b3da726b2d 完善图片生成状态管理和显示 2025-12-19 01:54:20 +08:00
Your Name
0447cc9743 添加图片生成状态管理功能 2025-12-19 01:30:58 +08:00
Your Name
4c25d433f8 优化图片预览和标注功能 2025-12-19 01:12:08 +08:00
Your Name
53ddb7e585 Initial commit - clean repository 2025-12-17 20:15:18 +08:00