118 Commits

Author SHA1 Message Date
Your Name
231d726b37 fix: 完善智能自动模式对话流程
修复内容:
1. 前端:检查用户最后一条消息是否有图片(而不是整个对话最后一条)
2. 前端:useEffect 依赖项添加 selectedModelId
3. 后端:错误回退时也生成友好消息
4. 后端:保存消息时添加完整的数据库字段
5. 分析器:增加颜色调整关键词匹配(改成X色、换成X色)

现在大模型(Qwen3 VL)会生成自然对话回复

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 02:18:30 +08:00
Your Name
ddada59db1 fix: 使用特殊标记保持占位图显示
问题:对话消息发送后占位图消失
解决:
1. 后端在对话消息末尾加上 <!-- GENERATING_IMAGE --> 标记
2. 前端检测到此标记时继续显示占位图
3. 渲染时清理掉这个标记(用户看不到)
4. 数据库保存时不带标记(纯对话)

流程:
1. 用户发送请求
2. AI回复对话(带标记)+ 占位图继续显示
3. 图片生成后显示

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 02:12:08 +08:00
Your Name
920fb5aa95 fix: 添加延迟让前端渲染对话消息
在发送对话消息后等待500ms,让前端有时间渲染第一条消息,
然后再开始第二轮(图片生成),这样不会在同一个回复里重叠

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 02:04:31 +08:00
Your Name
ff9f45858b feat: 智能自动模式先对话再生图
流程:
1. 用户发送请求(图片+文字)
2. AI立即回复对话('好的,我来帮你...')
3. 显示占位图(正在生成中...)
4. 图片生成后显示

修改:
- 后端:先发送对话消息,再调用生图API
- 前端:检查用户消息后所有assistant消息是否有图片
- 只有图片出现才隐藏占位图,对话文字不影响

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 02:00:21 +08:00
Your Name
73d1ab7912 fix: 智能自动模式对话和图片合并发送
修复流程:
1. 用户发送请求
2. 显示占位图
3. 图片生成后显示(对话文字 + 图片)

- 将对话消息和图片合并成一条消息
- 对话文字在前,图片在后
- 占位图显示到图片出现为止

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 01:56:18 +08:00
Your Name
6462fe2456 feat: 智能自动模式先对话再生图
修复内容:
1. 修复变量名 smartAutoHistoryImage -> smartAutoHistoryImages
2. 修复 model-router.ts 循环依赖问题
3. 智能自动模式显示占位图(当用户发送图片时)
4. 先发送对话消息(如:好的,我来帮你...),再生成图片
5. 让用户感受到是在和AI对话,而不是机器执行

流程:
用户发送请求 -> AI回复对话 -> 显示生图占位图 -> 显示生成结果

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 00:08:37 +08:00
Your Name
0901bc6329 feat: 支持历史多张图片的连续编辑
- 从历史对话中提取多张图片,支持多图融合编辑
- 收集同一条消息中的所有图片(用户上传或AI生成)
- 将所有历史图片注入到后续编辑请求中
- 日志输出图片数量便于调试

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 23:41:07 +08:00
Your Name
691e9862e7 feat: 自动使用历史图片进行连续对话编辑
- 用户没有发送新图片时,自动使用历史中最近的图片
- 支持连续对话场景:换颜色、调整、重做等
- 优先使用AI生成的图片,其次是用户上传的图片
- 让对话更自然,不需要每次都重新上传图片

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 23:37:23 +08:00
Your Name
760509100c fix: 保持用户消息原样显示,AI自然对话后再执行编辑
- 用户发送的消息不再被修改,保持原样显示
- 优化后的提示词只用于API调用,不影响用户消息
- AI会先用自然语言回复用户,再显示编辑结果

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 23:29:30 +08:00
Your Name
8763e8d53f feat: 智能图片编辑系统 - 意图分析、提示词优化、模型路由
新增智能自动模式功能:
- smart-analyzer.ts: 智能意图分析器,识别抠图/换背景/增强等8种子意图
- prompt-optimizer.ts: 提示词优化器,将简单输入转为专业提示词
- model-router.ts: 智能模型路由器,根据意图选择最佳模型
- 修改route.ts集成新模块,替换原有关键词匹配逻辑

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 23:15:11 +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
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
876386ecec fix: properly center video tutorial modal and fix featured image dialog overflow
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 21:51:35 +08:00
Your Name
da3c6bb135 fix: allow empty coverUrl in tutorial videos API
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 21:42:55 +08:00
Your Name
db070f8a37 fix: increase request body size limit to 500MB for video uploads
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 21:32:07 +08:00
Your Name
4e42b3e1c1 fix: use xhr.upload.onloadend to correctly show compressing stage
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 21:27:45 +08:00
Your Name
acc9407ec7 fix: improve video upload progress UI with better stage indicators
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 21:22:21 +08:00
Your Name
344c9bc956 feat: add real-time video upload progress bar with stage indicators
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 21:17:35 +08:00
Your Name
b99b3e5718 perf: optimize video playback and encoding for better web streaming experience
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 20:54:25 +08:00
Your Name
e861fc5203 feat: add multi-video tutorial support with dropdown menu and video management
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 20:48:14 +08:00
Your Name
024ec19c70 feat: add tutorial video button and ranking visibility toggle in navbar settings
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 20:37:29 +08:00
Your Name
c44c8cff6a feat: add toolbox1/toolbox2 name and enable settings in navbar config
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-31 11:11:58 +08:00
Your Name
a76e97eec0 fix: save provider and photoroomApiKey in RMBG config 2026-01-27 22:22:37 +08:00
Your Name
ab583c38ef feat: add PhotoRoom background removal support in RMBG settings 2026-01-27 22:15:29 +08:00
Your Name
59bc3636e1 feat: rename scene fusion to detail replace, add auto-retry up to 10 times 2026-01-27 21:47:59 +08:00
Your Name
ee4bb14736 feat: add banner settings to admin panel for configuring ad banner text and link 2026-01-26 22:26:44 +08:00
Your Name
0c4a2a455e fix: create new canvas instead of redirecting when canvas not found 2026-01-26 22:17:58 +08:00
Your Name
8e82b0ea99 fix: use Button with router.push for reliable navigation
- Replace Link components with Button + router.push
- Add e.preventDefault() and e.stopPropagation() to prevent event issues
- Fix file list button click handler in CanvasChatPanel
- Ensures single click navigation works consistently
2026-01-26 21:31:58 +08:00
Your Name
2566c00cb1 fix: redirect /canvas to new canvas editor instead of list page
- Replace full-screen canvas list with auto-redirect to new canvas
- Ensures users always enter canvas editor mode directly
- Use Link component for reliable navigation in top navbar
2026-01-26 21:24:25 +08:00
Your Name
676be1c70c feat: switch file list from dialog to inline panel
- Replace dialog-based file list with inline panel in sidebar
- Click file list button now switches panel content instead of opening popup
- Add CanvasFileListPanel component for embedded file list view
- Fix thumbnail property name and type casting issues
- Add placeholder handleAction function
2026-01-26 21:19:52 +08:00
Your Name
9385b6f6d6 feat: implement auto-save, auto-title, and canvas file list sidebar
- Remove manual rename and save buttons from canvas header
- Add auto-save logic with debounce
- Add AI auto-titling and thumbnail generation based on canvas content
- Add CanvasFileList sidebar for managing canvases
- Direct entry to new canvas from top navigation
- Add new API endpoint for auto-titling
2026-01-24 22:50:34 +08:00
Your Name
7704a799f8 fix: update canvas chat panel header to match official design 2026-01-24 22:29:31 +08:00
Your Name
77b2b765ea fix: remove quick tools tab from canvas sidebar 2026-01-24 22:21:51 +08:00
Your Name
3c2943e1cb feat: integrate image editing tools into canvas sidebar and optimize UI 2026-01-24 22:18:03 +08:00
Your Name
39c726b5af fix: shrink canvas toolbar and restore chat banner 2026-01-24 22:03:17 +08:00
Your Name
1ad0bc8db6 fix: remove logo from canvas chat panel greeting 2026-01-24 21:57:55 +08:00
Your Name
601900f933 fix: adjust canvas UI layout - vertical toolbar and header position 2026-01-24 21:48:05 +08:00
Your Name
30950a89dc fix: adjust canvas layout - move toolbar to left, save to left, increase chat height 2026-01-24 21:40:46 +08:00
Your Name
f5c52bfdc6 feat: redesign chat panel to match LOVART style 2026-01-24 21:36:05 +08:00
Your Name
79e5a870e1 feat: comprehensive UI redesign for infinite canvas (LOVART style) 2026-01-24 21:27:36 +08:00
Your Name
f289eca90c feat: integrate chat panel into canvas sidebar
- Add CanvasChatPanel component for AI conversation in canvas
- Auto-sync generated images from chat to canvas nodes
- Add tabbed interface to switch between AI Chat and Quick Tools
- Widen sidebar to 384px to accommodate chat interface
- Extract image URLs from messages and create canvas nodes automatically
2026-01-24 21:19:25 +08:00
Your Name
6a2cbb1b49 feat: use image URLs instead of Base64 for canvas image operations
- Modified ImageNode to upload images to storage bucket before use
- Updated RMBG API to support imageUrl parameter (fetch from URL and convert to Base64 internally)
- Updated Enhance API to support imageUrl parameter
- Updated canvas service layer to use imageUrl for all image processing APIs
- All processed images are saved to storage bucket and user gallery
2026-01-24 20:58:15 +08:00
Your Name
0d5742a7a8 fix: add missing Settings import in canvas editor page
Fixed ReferenceError: Settings is not defined by adding the Settings icon import from lucide-react.
2026-01-24 20:48:53 +08:00
Your Name
485d6c0615 feat: use main navbar for canvas page 2026-01-24 20:30:36 +08:00
Your Name
1a9f453a20 fix: use correct function names for AI model queries 2026-01-24 20:23:41 +08:00
Your Name
c7ffcda87b feat: add infinite canvas feature with AI image generation
- Add canvas project and node database tables
- Create canvas workspace with drag, resize, zoom and pan
- Add ImageNode with background removal, enhance, extend, angle edit, scene fusion
- Add VideoNode with playback controls
- Add TextNode for text editing
- Integrate AI image generation API (Gemini/Alibaba)
- Implement viewport culling for performance optimization
- Add canvas entry in top navigation bar
2026-01-24 19:48:13 +08:00
Your Name
da99fbdc93 fix: improve error handling for streaming response in scene fusion 2026-01-22 19:41:58 +08:00
Your Name
bec71cf195 feat: implement streaming response for scene fusion - show images as they complete 2026-01-22 19:33:06 +08:00
Your Name
b8efd6b096 fix: optimize scene fusion prompts - use 'reference' approach for better product preservation 2026-01-18 22:03:06 +08:00
Your Name
0333f1953e fix: use 'auto' value instead of empty string for Select component 2026-01-18 21:45:52 +08:00