Commit Graph

105 Commits

Author SHA1 Message Date
mt
9eb494b1b4 feat(brand): 聊天页 sxwz 模式下输入框左移 172px
- ChatPage 接入 useBrand,brand === 'sxwz' 时主容器和输入框 translate-x-[-172px]
- 退出对话回欢迎页时同步关闭 artifacts 面板
2026-06-10 17:51:53 +08:00
63563ce6a3 feat: 重置会话时新增checkbox,清除当前会话的memory 2026-06-02 10:21:33 +08:00
92b6bcc5fb feat(ThreadMemoryPanel): 新增会话记忆下拉面板并完成 i18n 接入 2026-05-18 16:03:53 +08:00
fc9a30c784 fix: 修复图标属性名为小驼峰 2026-05-18 16:03:53 +08:00
88732e58c4 feat: 使用大模型美观输出,等待用户输入之后,大模型输出规范json,再反序列化存入数据库。 2026-05-18 16:03:53 +08:00
cb56507767 fix: 重置按钮放在头部,返回按钮的逻辑不变 2026-05-07 10:34:53 +08:00
b7f2001914 fix:修复需求遗留问题:hasSubmitted变量。现在不需要通过第一次发出对话来切换欢迎页和对话页 2026-05-07 10:17:34 +08:00
08e8de5e3e fix(workspace): 恢复先删后建并修复新会话初始化时序
- 新会话初始化改为 delete -> create

- 通过初始化就绪门控,确保 history 在创建完成后再加载

- 发送消息前等待初始化完成,避免与初始化并发
2026-04-28 18:34:18 +08:00
1fd7a5d4f7 fix(backend): 修复 replace 标记泄漏到展示层 2026-04-24 18:37:30 +08:00
6853ed71bc refactor(workspace): 将颜色 token 重命名为语义化命名 2026-04-24 18:37:30 +08:00
54ef439226 fix(08): 用主题色替换留存的 white/black 工具颜色, 2026-04-23 10:31:09 +08:00
287d45bb48 feat(08-02): token化 thread page 与 layout/header 颜色
- 将 page/layout/header 中指定硬编码颜色替换为 ws-* token utility
- 将返回箭头 SVG 迁移为 currentColor + token class,移除 hex 颜色字面量
- 通过 Task 1 验收扫描与 guard:colors
2026-04-23 10:25:34 +08:00
170b5484c9 style: lint prettier 2026-04-20 10:34:57 +08:00
9758ae8a3a refactor: 不使用硬编码,而全部使用i18n 2026-04-16 16:00:41 +08:00
12a21808f9 refactor: 预留空位,先删除旧逻辑再重新实现 2026-04-16 11:41:36 +08:00
c4fe34ed23 feat(ui): 宋对ui和输入框placeholder更改 2026-04-16 11:15:20 +08:00
ccfeabc95b style:prettier 2026-04-14 09:49:17 +08:00
f19474a47c feat(route): 前往对话页的按钮 2026-04-14 09:49:17 +08:00
2ab49325da feat:10分钟更换一次slogan 2026-04-14 09:49:17 +08:00
df26d69798 feat(artifact): 禁用自动打开artifact面板的功能 2026-04-14 09:49:17 +08:00
87b73e2b08 fix(frontend): 进入/new预创建会话并强制跳转聊天态 2026-04-14 09:49:17 +08:00
a914c1dc19 fix(frontend): hide history reliably in welcome mode 2026-04-14 09:49:17 +08:00
ce02c40b87 fix(frontend): stabilize thread id when sending messages 2026-04-14 09:49:17 +08:00
f378108fb4 feat: 修改测试标识的位置,并写死会话标题为“来,一起学习工作吧” 2026-04-14 09:49:17 +08:00
0028e142f7 feat: 生成中禁用返回按钮 2026-04-14 09:49:17 +08:00
1243bd0aac fix: 修复新会话重复请求并更新部署脚本默认目标 2026-04-08 16:54:04 +08:00
25111a9b03 fix: 使用is_chatting的使用,is_chatting=true的时候才会显示对话页 2026-04-08 16:54:04 +08:00
a8cfe1c42e refactor(frontend): 将会话状态标识从 show_reuse_welcome 重命名为 is_chatting 2026-04-08 11:44:42 +08:00
4e95838f1f refactor(frontend): 将复用欢迎态路由参数统一为 show_reuse_welcome 2026-04-08 10:44:08 +08:00
43471aacd1 feat: 删除不需要的TodoList组件 2026-04-07 16:37:02 +08:00
1606d79bcb fix: 收紧threadId的类型为string,删除无用isNewRoute变量,合并状态判断showInputBox至showWelcomeStyle 2026-04-07 16:08:42 +08:00
af21bbd163 feat(02-01): 移除 isnew 路由逻辑并收敛线程单路径
- 新会话仅由 /workspace/chats/new 路由控制

- 删除 isnew 参数分支并同步 iframe 跳转逻辑
2026-04-07 12:53:49 +08:00
0f607441c8 feat(chats): implement dynamic styling based on xclaw_used parameter 2026-04-05 23:39:44 +08:00
b412b5193b feat(skills): support batch skill bootstrap via content_ids; clear parent dir once before per-skill write 2026-04-05 18:37:55 +08:00
5de7a2ab46 fix: centralize UUID generation and validate query thread_id for skillBootstrap; ensure single execution and correct thread dir 2026-04-05 18:37:55 +08:00
DanielWalnut
2a150f5d4a
fix: unblock concurrent threads and workspace hydration (#1839)
* fix: unblock concurrent threads and workspace hydration

* fix: restore async title generation

* fix: address PR review feedback

* style: format lead agent prompt
2026-04-04 21:19:35 +08:00
Admire
9735d73b83
fix(ui): avoid follow-up suggestion overlap (#1777)
* fix(ui): avoid follow-up suggestion overlap

* fix(ui): address followup review feedback

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-04-03 15:48:41 +08:00
Admire
0eb6550cf4
fix(frontend): persist model selection per thread (#1553)
* fix(frontend): persist model selection per thread

* fix(frontend): apply thread model override on fallback

* refactor(frontend): split thread settings hook

* fix frontend local storage guards
2026-04-01 23:27:03 +08:00
greatmengqi
084dc7e748
ci: enforce code formatting checks for backend and frontend (#1536) 2026-03-29 15:34:38 +08:00
Matt Van Horn
b40b05f623
feat(frontend): display token usage per conversation turn (#1229)
Surface the usage_metadata that PR #1218 added to the streaming API.
A compact indicator in the chat header shows cumulative tokens consumed
per thread, with a tooltip breakdown of input/output/total counts.

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-24 08:59:35 +08:00
Ben Ghorbel Mohamed Aziz
38ace61617
feat(web): add conversation export as Markdown and JSON (#1002)
* feat(web): add conversation export as Markdown and JSON (#976)

Add the ability to export conversations in Markdown and JSON formats,
accessible from both the chat header and the sidebar context menu.

- Add export utility (formatThreadAsMarkdown, formatThreadAsJSON) with
  support for user/assistant messages, thinking blocks, and tool calls
- Add ExportTrigger component in chat header (appears when messages exist)
- Add Export submenu to sidebar dropdown (fetches full thread state on demand)
- Add i18n translations for en-US and zh-CN

Closes #976

Made-with: Cursor

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update thread creation timestamp to updated_at

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-23 08:21:54 +08:00
Simon Su
ceab7fac14
fix: improve MiniMax code plan integration (#1169)
This PR improves MiniMax Code Plan integration in DeerFlow by fixing three issues in the current flow: stream errors were not clearly surfaced in the UI, the frontend could not display the actual provider model ID, and MiniMax reasoning output could leak into final assistant content as inline <think>...</think>. The change adds a MiniMax-specific adapter, exposes real model IDs end-to-end, and adds a frontend fallback for historical messages.
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-20 17:18:59 +08:00
Ryanba
f737fbeae8
fix(frontend): block duplicate sends during uploads (#1165)
* fix(frontend): block duplicate sends during uploads

Expose pre-submit upload work as a busy state so the chat input does not allow a second send while the first attachment is still uploading.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* docs(frontend): document upload and stream ownership

Record that thread hooks own upload-before-submit state while the chat page owns composer busy wiring, so future changes do not reintroduce duplicate socket or upload state handling.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(frontend): separate upload busy state from streaming

Keep uploads from reusing the streaming stop state so duplicate submits are blocked without turning the composer into a stop button during file uploads.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

---------

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-18 15:10:27 +08:00
JeffJiang
fdacb1c3a5
fix(chat): update navigation method to prevent state loss during thread remount (#1107) 2026-03-12 14:57:17 +08:00
LofiSu
5d4fd9cf72
fix(frontend): fix new-chat navigation stale state issue (#1077)
- Use router.replace() instead of history.replaceState() so Next.js
  router's internal state is updated on chat start. This ensures
  subsequent "New Chat" clicks are treated as a real cross-route
  navigation (actual-id → "new") rather than a no-op same-path
  navigation, which was causing stale content to persist.

- In ChatLayout, increment the SubtasksProvider key only when
  navigating TO "new" from a non-"new" route. This forces a full
  remount for a fresh new-chat state without remounting when the URL
  transitions from "new" → actual-id (which would interrupt streaming).

Made-with: Cursor

Co-authored-by: DanielWalnut <45447813+hetaoBackend@users.noreply.github.com>
2026-03-11 13:51:51 +08:00
null4536251
9d2144d431
feat: may_ask (#981)
* feat: u may ask

* chore: adjust code according to CR

* chore: adjust code according to CR

* ut: test for suggestions.py

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-06 22:39:58 +08:00
JeffJiang
7de94394d4
feat(agent):Supports custom agent and chat experience with refactoring (#957)
* feat: add agent management functionality with creation, editing, and deletion

* feat: enhance agent creation and chat experience

- Added AgentWelcome component to display agent description on new thread creation.
- Improved agent name validation with availability check during agent creation.
- Updated NewAgentPage to handle agent creation flow more effectively, including enhanced error handling and user feedback.
- Refactored chat components to streamline message handling and improve user experience.
- Introduced new bootstrap skill for personalized onboarding conversations, including detailed conversation phases and a structured SOUL.md template.
- Updated localization files to reflect new features and error messages.
- General code cleanup and optimizations across various components and hooks.

* Refactor workspace layout and agent management components

- Updated WorkspaceLayout to use useLayoutEffect for sidebar state initialization.
- Removed unused AgentFormDialog and related edit functionality from AgentCard.
- Introduced ArtifactTrigger component to manage artifact visibility.
- Enhanced ChatBox to handle artifact selection and display.
- Improved message list rendering logic to avoid loading states.
- Updated localization files to remove deprecated keys and add new translations.
- Refined hooks for local settings and thread management to improve performance and clarity.
- Added temporal awareness guidelines to deep research skill documentation.

* feat: refactor chat components and introduce thread management hooks

* feat: improve artifact file detail preview logic and clean up console logs

* feat: refactor lead agent creation logic and improve logging details

* feat: validate agent name format and enhance error handling in agent setup

* feat: simplify thread search query by removing unnecessary metadata

* feat: update query key in useDeleteThread and useRenameThread for consistency

* feat: add isMock parameter to thread and artifact handling for improved testing

* fix: reorder import of setup_agent for consistency in builtins module

* feat: append mock parameter to thread links in CaseStudySection for testing purposes

* fix: update load_agent_soul calls to use cfg.name for improved clarity

* fix: update date format in apply_prompt_template for consistency

* feat: integrate isMock parameter into artifact content loading for enhanced testing

* docs: add license section to SKILL.md for clarity and attribution

* feat(agent): enhance model resolution and agent configuration handling

* chore: remove unused import of _resolve_model_name from agents

* feat(agent): remove unused field

* fix(agent): set default value for requested_model_name in _resolve_model_name function

* feat(agent): update get_available_tools call to handle optional agent_config and improve middleware function signature

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-03 21:32:01 +08:00
Zhiyunyao
a138d5388a
feat: add reasoning_effort configuration support for Doubao/GPT-5 models (#947)
* feat: Add reasoning effort configuration support

* Add `reasoning_effort` parameter to model config and agent initialization
* Support reasoning effort levels (minimal/low/medium/high) for Doubao/GPT-5 models
* Add UI controls in input box for reasoning effort selection
* Update doubao-seed-1.8 example config with reasoning effort support

Fixes & Cleanup:
* Ensure UTF-8 encoding for file operations
* Remove unused imports

* fix: set reasoning_effort to None for unsupported models

* fix: unit test error

* Update frontend/src/components/workspace/input-box.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-02 20:49:41 +08:00
Zhiyunyao
72df234636
refactor(frontend): optimize network queries and improve code readability (#919)
* refactor(frontend): optimize network queries and improve code readability
- useThreadStream: Add useStream with fetchStateHistory: {limit: 1}
- useThreads: Add select fields and disable refetchOnWindowFocus
- useModels: Disable refetchOnWindowFocus
- ChatPage and titleOfThread: Improve thread title logic
- loadModels: Refactor code for better readability

* fix: address the review comments of Copilot

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-02 20:35:46 +08:00
LofiSu
b3a1f018ab fix: 修复新建技能后输入框无法编辑的问题
问题:点击新建技能按钮后,对话框中预设的文字无法删除或修改
原因:useEffect 依赖项包含 promptInputController.textInput,该对象在每次输入时都会重新创建,导致 useEffect 重复执行并覆盖用户输入
解决:使用 useRef 保存 setInput 方法,并跟踪已设置的初始值,确保 useEffect 只在初始值变化时执行一次

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 12:39:44 +08:00