Commit Graph

510 Commits

Author SHA1 Message Date
LofiSu
0fff2880d3 Merge upstream/experimental and resolve conflicts; citations + path_utils + mode-hover
## 冲突解决 (Resolve conflicts)
- input-box.tsx: 保留 ModeHoverGuide 包裹的模式选择器(PR #26 的 mode-hover-guide)
- message-group.tsx: 保留 getCleanContent / hasCitationsBlock / useParsedCitations
- message-list-item.tsx: 保留 useParsedCitations,移除重复的 MessageLink(使用 CitationAwareLink)
- artifact-file-detail.tsx: 保留 CitationAwareLink、useParsedCitations、contentWithoutCitationsFromParsed
- artifacts.py: 保留 path_utils 与 _extract_citation_urls + remove_citations_block 精简实现
- citations/index.ts: 保留并补充 contentWithoutCitationsFromParsed 导出
- en-US.ts: 保留 Ultra 模式描述 "Reasoning, planning and execution with subagents..."
- zh-CN.ts: 保留「超级」标签,描述保留「思考、计划并执行,可调用子代理分工协作...」

## PR #26 代码改动汇总

### 1. Citations(引用)
- lead_agent prompt: 增加 Web search 与子代理合成时的 citation 提示
- general_purpose: 子代理 system prompt 增加 <citations_format> 说明
- frontend utils: 新增 contentWithoutCitationsFromParsed,removeAllCitations 基于单次解析
- frontend artifact: 使用 contentWithoutCitationsFromParsed(parsed) 避免对同一内容解析两次
- backend artifacts: _extract_citation_urls + remove_citations_block,json 提到顶部

### 2. path_utils(路径解析)
- 新增 backend/src/gateway/path_utils.py:resolve_thread_virtual_path,防 path traversal
- artifacts.py / skills.py:删除内联路径解析,统一使用 path_utils

### 3. Mode hover guide
- input-box: 模式选择器外包 ModeHoverGuide,悬停展示模式说明

### 4. i18n
- en: ultraModeDescription 与 zh: ultraMode / ultraModeDescription 与上游对齐并保留 PR 文案

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 13:01:01 +08:00
LofiSu
2a39947830 feat: citations prompts, path_utils, and citation code cleanup
- Prompt: add citation reminders for web_search and subagent synthesis (lead_agent, general_purpose)
- Gateway: add path_utils for shared thread virtual path resolution; refactor artifacts and skills to use it
- Citations: simplify removeAllCitations (single parse); backend _extract_citation_urls and remove_citations_block cleanup

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 12:55:12 +08:00
LofiSu
8168ea47b3 chore(frontend): remove unused Citation UI components from inline-citation
- Remove InlineCitation, InlineCitationText, InlineCitationCardTrigger
- Remove InlineCitationCarousel and all Carousel subcomponents (Content, Item, Header, Index, Prev, Next)
- Remove InlineCitationQuote
- Drop Carousel/carousel and ArrowLeft/ArrowRight icon imports; keep only CitationLink, CitationAwareLink, CitationsLoadingIndicator and their dependencies

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 12:49:31 +08:00
LofiSu
d265bdb245 feat(frontend): add mode hover guide and adjust mode i18n
## 中文

### 代码改动
- **新增** `frontend/src/components/workspace/mode-hover-guide.tsx`
  - 新增 ModeHoverGuide 组件:接收 mode (flash/thinking/pro/ultra) 与 children,用 Tooltip 包裹
  - hover 时展示该模式名称与简介,支持 showTitle 控制是否显示模式名
  - 文案通过 useI18n 从 inputBox 的 *Mode / *ModeDescription 读取,中英文已支持
- **修改** `frontend/src/components/workspace/input-box.tsx`
  - 在模式选择器触发按钮外包一层 ModeHoverGuide,悬停当前模式时显示说明
- **修改** `frontend/src/core/i18n/locales/zh-CN.ts`
  - ultraModeDescription:改为完整描述「思考、计划并执行,可调用子代理分工协作,适合复杂多步骤任务,能力最强」(不再仅写「专业模式加子代理」)
  - proMode / ultraMode:中文环境下保留英文原文 "Pro"、"Ultra",不再翻译为「专业」「超级」
- **修改** `frontend/src/core/i18n/locales/en-US.ts`
  - ultraModeDescription:改为 "Reasoning, planning and execution with subagents to divide work; best for complex multi-step tasks"

### 说明
为 Flash / 思考 / Pro / Ultra 四种模式增加 hover 说明,并统一超级模式文案与 Pro/Ultra 在中文下的展示。

Co-authored-by: Cursor <cursoragent@cursor.com>

---

## English

### Code changes
- **Add** `frontend/src/components/workspace/mode-hover-guide.tsx`
  - New ModeHoverGuide component: takes mode (flash/thinking/pro/ultra) and children, wraps in Tooltip
  - On hover shows mode name and short description; showTitle toggles mode name in tooltip
  - Copy from useI18n (inputBox *Mode / *ModeDescription), i18n in zh-CN and en-US
- **Update** `frontend/src/components/workspace/input-box.tsx`
  - Wrap mode selector trigger with ModeHoverGuide so hovering shows current mode description
- **Update** `frontend/src/core/i18n/locales/zh-CN.ts`
  - ultraModeDescription: full description (reasoning, planning, execution, subagents, complex tasks); no longer "Pro + subagents" only
  - proMode / ultraMode: keep English "Pro" and "Ultra" in zh locale instead of "专业" / "超级"
- **Update** `frontend/src/core/i18n/locales/en-US.ts`
  - ultraModeDescription: "Reasoning, planning and execution with subagents to divide work; best for complex multi-step tasks"

### Summary
Hover guide for all four modes (Flash / Reasoning / Pro / Ultra); clearer Ultra copy and Pro/Ultra labels in Chinese.
2026-02-09 12:33:16 +08:00
LofiSu
30e1760211 refactor(frontend): simplify and deduplicate Citation-related code
- Extract removeCitationsBlocks in utils, reuse in parseCitations and removeAllCitations
- Add hasCitationsBlock; isCitationsBlockIncomplete now uses it
- Add useParsedCitations hook (parseCitations + buildCitationMap) for message/artifact
- Add CitationAwareLink to unify link rendering (message-list-item + artifact-file-detail)
- Add getCleanContent helper; message-group uses it and useParsedCitations
- ArtifactFileDetail: single useParsedCitations, pass cleanContent/citationMap to Preview
- Stop exporting buildCitationMap and removeCitationsBlocks from citations index
- Remove duplicate MessageLink and inline link logic in artifact preview

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 12:13:06 +08:00
LofiSu
f0423b88ac Merge branch 'hetaoBackend:experimental' into experimental 2026-02-09 11:58:56 +08:00
Henry Li
8b053a4415 feat: update workspace header to conditionally render title based on environment variable 2026-02-09 09:20:32 +08:00
Henry Li
305e8969ef feat: make it golden 2026-02-09 09:15:39 +08:00
Henry Li
ddbda4e38f feat: make the title golden in Ultra mode 2026-02-09 08:59:40 +08:00
LofiSu
2d70aaa969 fix(frontend): citations display + refactor link/citation utils
- Citations: no underline while streaming (message links); artifact markdown external links as citation cards
- Refactor: add isExternalUrl, syntheticCitationFromLink in core/citations; shared externalLinkClass in lib/utils; simplify message-list-item and artifact-file-detail link rendering

修复引用展示并抽离链接/引用工具
- 引用:流式输出时链接不这下划线;Artifact 内 Markdown 外链以引用卡片展示
- 重构:core/citations 新增 isExternalUrl、syntheticCitationFromLink;lib/utils 共享 externalLinkClass;精简消息与 Artifact 中的链接渲染逻辑

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 04:03:15 +08:00
LofiSu
d72aad8063 fix(frontend): build + remove hover tooltips in step links
- Fix Turbopack build: replace raw-loader .md import with inlined about-content.ts; drop raw-loader from next.config and package.json
- Remove all hover tooltips on step-area links (web_fetch, read_file, ls, bash, write_file, web_search) so hidden steps no longer show popups

修复:构建错误与步骤链接悬停提示
- 修复 Turbopack 构建:用内联 about-content.ts 替代 raw-loader 导入 about.md,并移除 next.config 与 package.json 中的 raw-loader
- 移除步骤区域内所有链接的悬停提示(查看网页、读文件、列目录、bash、写文件、网页搜索),隐藏步骤悬停不再弹出内容

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 03:42:16 +08:00
LofiSu
fe06be8258 Revert "fix(frontend): Turbopack about page + remove hover on web search/citations"
This reverts commit 7e9e061f20fcec1f1a9c35be40d9407c05ed82be.
2026-02-09 03:23:51 +08:00
LofiSu
842c4ecac0 fix(frontend): Turbopack about page + remove hover on web search/citations
- About: use aboutMarkdown from about-content.ts instead of raw-loader for
  about.md (fixes Turbopack 'Cannot find module raw-loader')
- Web search: remove Tooltip from web_search and web_fetch result links
- Citations: remove HoverCard from CitationLink so no hover popup on badges

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 03:23:02 +08:00
Henry Li
cebf2599c9 feat: add mode in welcome 2026-02-09 00:41:25 +08:00
Henry Li
25b60e732f feat: set golden color for ultra 2026-02-09 00:30:20 +08:00
Henry Li
f146e35ee7 feat: rewording 2026-02-08 23:44:36 +08:00
Henry Li
8a2351593c feat: add special effect for Ultra mode 2026-02-08 23:22:51 +08:00
Henry Li
010aba1e28 feat: add realtime subagent status report 2026-02-08 22:43:51 +08:00
Henry Li
0355493a16 feat: rewording and add initial animation 2026-02-08 21:24:17 +08:00
Henry Li
5d4cecbb84 refactor: optimize task handling in message list 2026-02-07 18:42:24 +08:00
Henry Li
de8ff9d336 feat: add ambilight 2026-02-07 18:42:08 +08:00
Henry Li
d9a52f07e7 feat: add handling for task timeout and enhance Streamdown plugin for word animation 2026-02-07 18:06:22 +08:00
Henry Li
260953fb81 feat: adjust position 2026-02-07 18:00:24 +08:00
Henry Li
b135449c07 fix: adjust suggestion positioning and height for improved UI layout 2026-02-07 17:56:06 +08:00
Henry Li
3e2883e2a3 feat: support subtasks 2026-02-07 16:14:48 +08:00
LofiSu
e4eb4a65cf Merge pull request #25 from LofiSu/feat/citations
feat(citations): add shared citation components and optimize code
2026-02-07 12:13:32 +08:00
Henry Li
91a05acdf8 feat: enhance workspace navigation menu with conditional rendering and mounted state 2026-02-07 11:10:24 +08:00
Henry Li
a122f76e36 feat: add animations 2026-02-07 10:30:35 +08:00
LofiSu
f0075e0d64 Merge upstream/experimental into feat/citations
Resolved conflicts:
- backend/src/gateway/routers/artifacts.py: Keep citations block removal for markdown downloads
- frontend/src/components/workspace/messages/message-list-item.tsx: Keep improved citation handling with rehypePlugins, humanMessagePlugins, and CitationsLoadingIndicator

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 00:53:16 +08:00
Henry Li
5ed15d79c9 fix: fix markdown table 2026-02-06 22:00:55 +08:00
Henry Li
6b56e68ff2 Merge pull request #24 from LofiSu/fix/upload-files-alignment
fix: 修复用户消息中上传文件的右对齐显示
2026-02-06 21:53:01 +08:00
hetao
9bf3a12c30 feat: send custom event 2026-02-06 17:48:15 +08:00
hetao
449ffbad75 feat: add ultra mode 2026-02-06 17:48:14 +08:00
LofiSu
5484233548 fix(citations): hide citations block in reasoning/thinking content
The reasoning content in message-group.tsx was not being processed
through parseCitations, causing raw <citations> blocks to be visible.
Now reasoning content is parsed to remove citations blocks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 16:12:43 +08:00
LofiSu
582bfaee39 fix(citations): only citation links in citationMap render as badges
Revert streaming logic - only links that are actually in citationMap
should render as badges. This prevents project URLs and other regular
links from being incorrectly rendered as citation badges.

During streaming, links may initially appear as plain links until the
citations block is fully parsed, then they will update to badge style.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 16:10:29 +08:00
LofiSu
e7ea0fc551 fix(citations): render external links as badges during streaming
During streaming when citations are still loading (isLoadingCitations=true),
all external links should be rendered as badges since we don't know yet
which links are citations. After streaming completes, only links in
citationMap are rendered as badges.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 16:09:03 +08:00
LofiSu
f1c3f908c9 fix(citations): parse citations in reasoning content
When only reasoning content exists (no main content), the citations
block was not being parsed and removed. Now reasoning content also
goes through parseCitations to hide the raw citations block.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 16:04:49 +08:00
LofiSu
7c21d8f3a6 fix(artifacts): only render citation badges for links in citationMap
Same fix as message-list-item: project URLs and regular links in
artifact file preview should be rendered as plain links, not badges.
Only actual citations (in citationMap) should be rendered as badges.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 15:55:53 +08:00
Henry Li
70989a949e feat: add 'about' page 2026-02-06 15:18:37 +08:00
Henry Li
bc7837ed6f docs: rewording 2026-02-06 15:18:19 +08:00
LofiSu
5d8c08d3ba fix(citations): only render citation badges for links in citationMap
Project URLs and regular links should be rendered as plain underlined
links, not as citation badges. Only links that are actual citations
(present in citationMap) should be rendered as badges.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 15:15:45 +08:00
LofiSu
49f7cf1662 fix(citations): use markdown link text as fallback for display
When citation data is not available, use the markdown link text
(children) as display text instead of just the domain. This ensures
that links like [OpenJudge](github.com/...) show 'OpenJudge' instead
of just 'github.com'.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 15:06:51 +08:00
Henry Li
23c082f05d docs: add CLAUDE.md 2026-02-06 14:40:52 +08:00
Henry Li
78b6164770 docs: add AGENTS.md 2026-02-06 14:32:48 +08:00
LofiSu
738b71be47 fix(messages): prevent URL autolink bleeding into adjacent text
For human messages, disable remark-gfm autolink feature to prevent
URLs from incorrectly including adjacent text (especially Chinese
characters) as part of the link. This ensures that when users input
"https://example.com 帮我分析", only the URL becomes a link.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 14:30:57 +08:00
LofiSu
6f968242d6 fix(citations): only render CitationLink badges for AI messages
Human messages should display links as plain underlined text,
not as citation badges. This preserves the original user input
appearance when users paste URLs in their messages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 14:28:28 +08:00
Henry Li
b74cf65275 feat: update surprise-me functionality with localization support 2026-02-06 14:21:03 +08:00
Henry Li
22dea3fd43 feat: add surprise-me 2026-02-06 14:04:15 +08:00
Henry Li
f391060573 feat: adjust position 2026-02-06 09:39:20 +08:00
Henry Li
43ebce3b37 feat: remove demo 2026-02-05 09:46:05 +08:00
LofiSu
2debcf421c fix(citations): improve citation link rendering and copy behavior
- Use citation.title for display text in CitationLink to ensure correct
  titles show during streaming (instead of generic "Source" text)
- Render all external links as CitationLink badges for consistent styling
  during streaming output
- Add removeAllCitations when copying message content to clipboard
- Simplify citations_format prompt for cleaner AI output

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-04 16:34:12 +08:00
LofiSu
644229f968 feat(citations): add shared citation components and optimize code
## New Features
- Add `CitationLink` shared component for rendering citation hover cards
- Add `CitationsLoadingIndicator` component for showing loading state
- Add `removeAllCitations` utility to strip all citations from content
- Add backend support for removing citations when downloading markdown files
- Add i18n support for citation loading messages (en-US, zh-CN)

## Code Optimizations
- Remove duplicate `ExternalLinkBadge` component, reuse `CitationLink` instead
- Consolidate `remarkPlugins` config in `streamdownPlugins` to avoid duplication
- Remove unused imports: `Citation`, `buildCitationMap`, `extractDomainFromUrl`, etc.
- Remove unused `messages` parameter from `ToolCall` component
- Remove unused `isWriteFile` parameter from `ArtifactFilePreview` component
- Remove unused `useI18n` hook from `MessageContent` component

## Bug Fixes
- Fix `remarkGfm` plugin configuration that prevented table rendering
- Fix React Hooks rule violation: move `useMemo` to component top level
- Replace `||` with `??` for nullish coalescing in clipboard data

## Code Cleanup
- Remove debug console.log/info statements from:
  - `threads/hooks.ts`
  - `notification/hooks.ts`
  - `memory-settings-page.tsx`
- Fix import order in `message-group.tsx`

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-04 11:56:10 +08:00
hetao
b773bae407 fix: fix frontend rendering issue 2026-02-03 19:38:10 +08:00
LofiSu
3b411fe499 fix: 修复用户消息中上传文件的右对齐显示
在 UploadedFilesList 组件中添加 justify-end 类,确保上传的文件卡片在用户消息中保持右对齐显示,与消息气泡对齐一致。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-03 19:13:17 +08:00
Henry Li
6b53456b39 feat: add memory settings page 2026-02-03 18:18:56 +08:00
Henry Li
86255511e1 docs: add README.md 2026-02-02 23:24:58 +08:00
Henry Li
e84715831f fix: fix position 2026-02-02 16:40:43 +08:00
Henry Li
018241c203 fix: set default state for todo list collapse to true 2026-02-02 14:46:26 +08:00
Henry Li
6f6d799051 fix: set default state for todo list collapse to false 2026-02-02 14:46:10 +08:00
Henry Li
f4f16bfa5c feat: enhance welcome component and input box with skill mode handling and localization updates 2026-02-02 14:44:23 +08:00
Henry Li
ccf21238af feat: update button in skill settings to include icon 2026-02-02 14:31:44 +08:00
Henry Li
b7c9bf557b feat: update button styling for artifacts tooltip 2026-02-02 11:43:02 +08:00
Henry Li
3067f8dd03 feat: add suggestions 2026-02-02 11:21:30 +08:00
Henry Li
6c0e5fffd0 feat: integrate PromptInputProvider into ChatLayout and utilize prompt input controller in ChatPage 2026-02-02 10:18:02 +08:00
Henry Li
867749d7a3 feat: add file icons 2026-02-02 10:02:31 +08:00
Henry Li
37dcee41c0 feat: add file icon 2026-02-02 09:49:44 +08:00
Henry Li
51b4ed3124 feat: adjust tooltips 2026-02-02 09:32:18 +08:00
Henry Li
6d31c1c5cf feat: wrap path and command in Tooltip for enhanced user experience 2026-02-02 09:23:36 +08:00
Henry Li
a66f76f43d fix: update TooltipContent component to handle sideOffset correctly and add shadow styling 2026-02-02 09:23:24 +08:00
Henry Li
90104291ae docs: add comments 2026-02-02 09:11:05 +08:00
Henry Li
54277b9d9e feat: add skeleton 2026-02-02 09:05:33 +08:00
Henry Li
a0a3a3fc02 feat: dynamic title 2026-02-02 09:05:24 +08:00
Henry Li
b540ad4505 feat: use create skill as title 2026-02-02 08:43:37 +08:00
Henry Li
9b77070406 feat: update skills 2026-02-01 11:12:08 +08:00
Henry Li
ec444e1f8b docs: update artifacts 2026-02-01 11:05:00 +08:00
Henry Li
22ef5fb5ba feat: add new demo 2026-02-01 10:58:27 +08:00
Henry Li
e1ecf62afa feat: add tooltip for installation 2026-02-01 10:55:08 +08:00
Henry Li
f5b1412ac0 fix: add translations 2026-01-31 22:49:59 +08:00
Henry Li
ca83ed00f8 docs: rephrasing 2026-01-31 22:42:17 +08:00
Henry Li
bdd2e25e14 feat: implement create skill 2026-01-31 22:31:25 +08:00
hetaoBackend
06511f38e1 feat: add .skill file preview support
Enable previewing .skill files (ZIP archives) by extracting and displaying
their SKILL.md content. Add caching to avoid repeated ZIP extraction.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 22:27:06 +08:00
hetaoBackend
a9e11f6341 feat: add skill installation API endpoint
Add POST /api/skills/install endpoint to install .skill files from
thread's user-data directory. The endpoint extracts the ZIP archive,
validates SKILL.md frontmatter, and installs to skills/custom/.

Frontend Install buttons now call the API instead of downloading.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 22:10:05 +08:00
Henry Li
d3ff5f9d3c fix: fix eslint errors and warnings 2026-01-31 21:46:31 +08:00
Henry Li
cf961328a9 feat: preview the message if possible 2026-01-31 20:22:15 +08:00
Henry Li
e858ef0250 fix: fix eslint errors 2026-01-31 11:11:13 +08:00
Henry Li
5295f5b5b9 feat: add notification 2026-01-31 11:08:27 +08:00
Henry Li
835fd4d0c7 feat: change email 2026-01-30 22:32:47 +08:00
Henry Li
c07c0228f6 fix: fix condition of displaying artifacts 2026-01-30 21:51:18 +08:00
Henry Li
c1182c680c feat: support Github Flavored Markdown 2026-01-30 16:41:18 +08:00
Henry Li
7d024326dc chore: remove 2026-01-30 11:01:09 +08:00
Henry Li
4dffad89ca feat: re-arrange icons 2026-01-29 16:17:41 +08:00
Henry Li
a4f749f939 fix: add max width 2026-01-29 16:12:30 +08:00
Henry Li
a135ddfa48 feat: display mode 2026-01-29 15:57:08 +08:00
Henry Li
62ac3b6b03 feat: use "mode" instead of "thinking_enabled" and "is_plan_mode" 2026-01-29 15:48:50 +08:00
Henry Li
4411af68f5 fix: fix renaming 2026-01-29 15:31:56 +08:00
Henry Li
9d889434c4 feat: add placeholder for image 2026-01-29 15:01:18 +08:00
hetao
75801d9817 fix: fix frontend bug 2026-01-29 13:55:30 +08:00
LofiSu
588673d043 merge: upstream/experimental with citations feature
- Merge upstream changes including image search, tooltips, and UI improvements
- Keep citations feature with inline hover cards
- Resolve conflict in message-list-item.tsx: use upstream img max-width (90%) while preserving citations logic
- Maintain file upload improvements with citations support

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-29 12:55:43 +08:00
LofiSu
849cc4d771 feat: improve file upload message handling and UI
Backend:
- Handle both string and list format for message content in uploads middleware
- Extract text content from structured message blocks
- Add logging for debugging file upload flow

Frontend:
- Separate file display from message bubble for human messages
- Show uploaded files outside the message bubble for cleaner layout
- Improve file card border styling with subtle border color
- Add debug logging for message submission with files

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-29 12:51:21 +08:00
Henry Li
eff241f9f2 feat: enable images in content 2026-01-29 12:51:04 +08:00
LofiSu
e2e0fbf114 fix: hide incomplete citations block during streaming
Improve UX by hiding citations block while it's being streamed:
- Remove complete citations blocks (existing logic)
- Also remove incomplete citations blocks during streaming
- Prevents flickering of raw citations XML in the UI

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-29 12:50:09 +08:00
LofiSu
c14378a312 feat: refine citations format and improve content presentation
Backend:
- Simplify citations prompt format and rules
- Add clear distinction between chat responses and file content
- Enforce full URL usage in markdown links, prohibit [cite-1] format
- Require content-first approach: write full content, then add citations at end

Frontend:
- Hide <citations> block in both chat messages and markdown preview
- Remove top-level Citations/Sources list for cleaner UI
- Auto-remove <citations> block in code editor view for markdown files
- Keep inline citation hover cards for reference details

This ensures citations are presented like Claude: clean content with inline reference badges.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-29 12:29:13 +08:00
Henry Li
6b030d7589 feat: add tooltips 2026-01-29 09:23:06 +08:00
Henry Li
c700bd6841 feat: enhance search_image 2026-01-29 09:19:43 +08:00
Henry Li
8359d842b5 feat: support image_search 2026-01-29 08:59:55 +08:00
Henry Li
7decdbcc83 fix: improve hasPresentFiles function to check for multiple tool calls 2026-01-29 08:59:45 +08:00
hetaoBackend
d4bfed271b feat: display ask_clarification tool messages directly in frontend
Simplify clarification message handling by having the frontend detect and
display ask_clarification tool messages directly, instead of relying on
backend to add an extra AIMessage.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:25:31 +08:00
LofiSu
ad85b72064 feat: add inline citations and thread management features
Citations:
- Add citations parsing utilities for extracting source references from AI responses
- Render inline citations as hover card badges in message content
- Display citation cards with title, URL, and description on hover
- Add citation badge rendering in artifact markdown preview
- Update prompt to guide AI to output citations in correct format

Thread Management:
- Add rename functionality for chat threads with dialog UI
- Add share functionality to copy thread link to clipboard
- Share links use Vercel URL for production accessibility
- Add useRenameThread hook for thread title updates

i18n:
- Add translations for rename, share, cancel, save, and linkCopied

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-28 19:15:11 +08:00
Henry Li
dd2c2011f1 feat: update a new demo 2026-01-28 14:19:00 +08:00
Henry Li
d84a34b7cd feat: add Leica demo 2026-01-28 13:52:41 +08:00
Henry Li
a249b7178a feat: add another Kimi K2.5 demo 2026-01-28 12:17:21 +08:00
Henry Li
e2bcc70a84 feat: add kimi-k2.5 demo with vercel deployment 2026-01-28 10:13:32 +08:00
Henry Li
dab4093103 feat: fallback to textarea when loading 2026-01-28 10:13:17 +08:00
Henry Li
28361ca03c feat: add scroll indicator 2026-01-27 13:15:49 +08:00
Henry Li
ed31dc6aab fix: hide chats when sidebar is not open 2026-01-27 10:41:08 +08:00
Henry Li
cc1fe4e50e fix: eslint 2026-01-27 10:39:44 +08:00
Henry Li
eca2b139cc fix: bugfix 2026-01-27 09:50:42 +08:00
Henry Li
3ce4968e95 feat: auto select the first model as default model 2026-01-26 17:13:34 +08:00
Henry Li
f629e134d4 feat: adjust button 2026-01-25 22:10:50 +08:00
Henry Li
598fed797f fix: many minor fixes 2026-01-25 21:57:57 +08:00
Henry Li
af4fc800ee feat: update demo 2026-01-25 21:57:22 +08:00
Henry Li
87200d1ad1 feat: update translations 2026-01-25 11:54:49 +08:00
Henry Li
c82f705541 fix: fix artifacts in demo mode 2026-01-25 11:42:25 +08:00
Henry Li
74dd09b364 feat: update demos 2026-01-25 11:41:48 +08:00
Henry Li
78bba47769 feat: add Titanic ADA demo 2026-01-25 00:35:42 +08:00
Henry Li
3ac6e58d4f fix: remove tooltip 2026-01-25 00:06:49 +08:00
Henry Li
03b380cb8b fix: fix auto select first artifact 2026-01-24 23:59:41 +08:00
Henry Li
35f2aea510 feat: add new demo 2026-01-24 23:51:38 +08:00
Henry Li
a83e5e238d feat: auto expand in demo mode 2026-01-24 23:51:11 +08:00
Henry Li
2698c26768 chore: update translation 2026-01-24 22:41:40 +08:00
hetao
6e147a772e feat: add environment variable injection for Docker sandbox
- Add environment field to sandbox config for injecting env vars into container
- Support $VAR syntax to resolve values from host environment variables
- Refactor frontend API modules to use centralized getBackendBaseURL()
- Improve Doraemon skill with explicit input/output path arguments
- Add .env.example file

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 22:36:05 +08:00
Henry Li
869af570c9 feat: add i18n 2026-01-24 22:19:37 +08:00
Henry Li
2bdda01657 Merge remote-tracking branch 'refs/remotes/origin/experimental' into experimental 2026-01-24 22:05:15 +08:00
Henry Li
5a27a3beeb feat: expand by default in demo mode 2026-01-24 22:03:38 +08:00
JeffJiang
38081306fe feat: adds docker-based dev environment (#18)
* feat: adds docker-based dev environment

* docs: updates Docker command help

* fix local dev
2026-01-24 22:01:00 +08:00
Henry Li
cae7e67a1f feat: remove over-scroll 2026-01-24 21:14:33 +08:00
Henry Li
72e0f3d081 feat: add new demo 2026-01-24 20:59:06 +08:00
Henry Li
08f1af00b6 feat: support absolute path as image src 2026-01-24 20:58:56 +08:00
Henry Li
cdcadc3fe3 style: update tooltip background class for consistency 2026-01-24 20:58:36 +08:00
Henry Li
6485ed2a50 chore: add new demo 2026-01-24 19:44:06 +08:00
Henry Li
e88b34c0cb chore: delete 2026-01-24 19:43:44 +08:00
Henry Li
2c8a41dc6c style: reformat 2026-01-24 19:40:44 +08:00
Henry Li
72e3ba9b79 feat: add new demo 2026-01-24 19:38:17 +08:00
Henry Li
27df1b5f73 feat: add uploads 2026-01-24 19:38:08 +08:00
Henry Li
a3eb03b105 chore: add new demo 2026-01-24 18:53:13 +08:00
Henry Li
930e6bd46f feat: remove background 2026-01-24 18:48:35 +08:00
Henry Li
6f24a71e1e feat: update save-demo 2026-01-24 18:33:30 +08:00
Henry Li
584c88f0dd feat: add more links 2026-01-24 18:21:50 +08:00
Henry Li
cd63f41b4c feat: support static website 2026-01-24 18:01:27 +08:00
hetao
f6a20a69e3 feat: implement file upload feature 2026-01-23 18:47:39 +08:00
Henry Li
3f4bcd9433 feat: implement the first version of landing page 2026-01-23 13:24:03 +08:00
Henry Li
307972f93e feat: implement the first section of landing page 2026-01-23 00:15:21 +08:00
Henry Li
459d9d0287 fix: fix menu item in side bar collapsed mode 2026-01-22 15:18:42 +08:00
Henry Li
e9ab427326 feat: adjust styles 2026-01-22 14:28:10 +08:00
Henry Li
c48a3f499d docs: rewording 2026-01-22 14:21:03 +08:00
Henry Li
e0f491dcdb feat: add main menu 2026-01-22 14:19:54 +08:00
Henry Li
80b07bcac0 feat: update opacities 2026-01-22 13:50:09 +08:00
Henry Li
8c994293a8 feat: make reasoning mode as default 2026-01-22 13:46:43 +08:00
Henry Li
ec4b3a0ead docs: update description 2026-01-22 13:46:31 +08:00
Henry Li
7d4d706738 feat: put all options into '+' 2026-01-22 13:43:45 +08:00
hetao
31bf49917c feat: add unified development environment with nginx proxy
Add a root-level Makefile to manage frontend, backend, and nginx services:
- `make check` validates required dependencies (Node.js 22+, pnpm, uv, nginx)
- `make install` installs all project dependencies
- `make dev` starts all services with unified port 2026
- `make stop` and `make clean` for cleanup

Update nginx configuration:
- Change port from 8000 to 2026
- Add frontend upstream and routing (port 3000)
- Add /api/langgraph/* routing with path rewriting to LangGraph server
- Keep other /api/* routes to Gateway API
- Route non-API requests to frontend

Update frontend configuration:
- Use relative URLs through nginx proxy by default
- Support environment variables for direct backend access
- Construct full URL for LangGraph SDK compatibility

Clean up backend Makefile by removing nginx and serve targets.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 12:00:46 +08:00
Henry Li
16a499190b feat: show in-progress 2026-01-22 11:56:45 +08:00
Henry Li
aa7436db2f feat: adjust input background in light mode 2026-01-22 11:51:56 +08:00
Henry Li
93842e81a4 feat: adjust styles 2026-01-22 11:42:25 +08:00
Henry Li
54710960cb docs: remove '/' 2026-01-22 11:31:23 +08:00
Henry Li
e8e522c2fe feat: add animations 2026-01-22 09:41:01 +08:00
Henry Li
37e2c3d3c9 feat: update skill settings 2026-01-22 00:38:20 +08:00
Henry Li
1e4e51a80c feat: add Todos 2026-01-22 00:26:11 +08:00
Henry Li
fbe4d27ddd feat: use resolvedTheme instead of systemTheme 2026-01-21 10:48:29 +08:00
Henry Li
11c562eb98 refactor: move 2026-01-21 10:46:43 +08:00
Henry Li
54d29e254f docs: rewording 2026-01-21 10:46:18 +08:00
Henry Li
e3d5b4960f feat: adjust colors 2026-01-21 10:35:50 +08:00
Henry Li
26587ee970 feat: bring back the deer 2026-01-21 10:31:54 +08:00
Henry Li
220fc1c489 feat: auto open artifact 2026-01-21 09:45:55 +08:00
Henry Li
48742d1b59 feat: add code editor 2026-01-21 09:33:33 +08:00
Henry Li
7c6eb4cc8b feat: enlarge shadow 2026-01-21 08:52:30 +08:00
Henry Li
d77b9922a6 feat: make artifact "floating" 2026-01-21 08:50:15 +08:00
Henry Li
a2ca682b0c feat: change color themes 2026-01-21 08:37:30 +08:00
Henry Li
10d253f461 feat: support settings 2026-01-20 23:43:21 +08:00
Henry Li
faba2784e1 feat: save locale in cookies 2026-01-20 16:00:39 +08:00
Henry Li
32a45eb043 feat: implement i18n 2026-01-20 14:06:47 +08:00
Henry Li
a18f37779e docs: rewording 2026-01-20 09:26:29 +08:00
Henry Li
b8f9678d07 feat: use code block to display bash commands 2026-01-19 21:59:23 +08:00
Henry Li
fb265f2b1f feat: support NEXT_PUBLIC_LANGGRAPH_BASE_URL 2026-01-19 21:51:40 +08:00
Henry Li
d7dfffad90 feat: add ToggleGroup 2026-01-19 19:41:46 +08:00
Henry Li
541586dc66 feat: support dynamic loading models 2026-01-19 18:54:04 +08:00
Henry Li
1ef04c94ee fix: fix getBackendBaseURL() 2026-01-19 15:42:19 +08:00
Henry Li
f3f66ee924 feat: add NEXT_PUBLIC_BACKEND_BASE_URL 2026-01-19 11:23:40 +08:00
Henry Li
d8391ca3ea feat: make new chat always on top 2026-01-19 00:00:35 +08:00
Henry Li
63fa500716 fix: decode URL 2026-01-18 20:26:01 +08:00
Henry Li
dc04042b53 feat: support clarification tool 2026-01-18 20:17:32 +08:00
Henry Li
69b225082b feat: re-implement message group 2026-01-18 19:56:07 +08:00
Henry Li
dd80348b76 feat: support SSE write_file(0 2026-01-18 17:13:15 +08:00
Henry Li
8f0bd828d5 feat: add recursion_limit 2026-01-18 13:16:27 +08:00
Henry Li
6bf187c1c2 fix: fix message grouping issues 2026-01-18 13:07:56 +08:00
Henry Li
23dc64fab1 feat: enhance message display 2026-01-18 11:25:46 +08:00
Henry Li
59683fc12e feat: dim the placeholder 2026-01-18 09:57:30 +08:00
Henry Li
92fc19a3aa feat: remove model icon 2026-01-18 09:55:17 +08:00
Henry Li
3f1f6af30c feat: change back to 60px height 2026-01-17 22:01:17 +08:00
Henry Li
7ea7a7864e feat: use default sidebar width 2026-01-17 22:01:08 +08:00
Henry Li
caf761be59 fix: fix z index 2026-01-17 21:34:32 +08:00
Henry Li
5cda2b90fc feat: refine theme 2026-01-17 21:24:49 +08:00
Henry Li
70cd664d3f feat: adjust dark theme 2026-01-17 21:08:05 +08:00
Henry Li
32a77cce84 feat: the DeerFlow theme is back 2026-01-17 20:59:42 +08:00
Henry Li
094553ea42 feat: change light theme 2026-01-17 20:32:27 +08:00
Henry Li
df65010e5f fix: remove unused imports 2026-01-17 19:47:51 +08:00
Henry Li
2bc5f30c4d feat: welcome, again 2026-01-17 19:46:02 +08:00
Henry Li
06068dd07b feat: add reasoning check to message list item rendering 2026-01-17 18:02:19 +08:00
Henry Li
b705a44f3c feat: pull up the input box when creating new thread 2026-01-17 18:02:01 +08:00
Henry Li
85d9baf2b1 feat:enhance focus status 2026-01-17 17:52:15 +08:00
Henry Li
a64b0d226b feat: redesign step counter 2026-01-17 17:45:13 +08:00
Henry Li
97dbcc4bd6 fix: remove unused imports 2026-01-17 17:37:36 +08:00
Henry Li
d8f0f91238 feat: extract ThreadTitle component 2026-01-17 17:37:12 +08:00
Henry Li
f1c6991194 feat: integrated with artifacts in states 2026-01-17 17:21:37 +08:00
Henry Li
384353d613 feat: remove ring 2026-01-17 17:21:05 +08:00
Henry Li
a663bcc37b feat: merge the last thinking with the previous group 2026-01-17 16:10:58 +08:00
Henry Li
584eed0166 fix: do not display 'Untitled' 2026-01-17 15:48:43 +08:00
Henry Li
56da1c990a feat: implement '/chats' 2026-01-17 15:44:49 +08:00
Henry Li
228ec49f70 feat: add date time util 2026-01-17 15:44:38 +08:00
Henry Li
0e8fdf6234 feat: shrink card size 2026-01-17 15:22:00 +08:00
Henry Li
5dc40a9ade feat: add open in new window 2026-01-17 15:19:53 +08:00
Henry Li
962d8f04ec feat: support artifact preview 2026-01-17 15:09:44 +08:00
Henry Li
ec5bbf6b51 feat: set artifacts layout 2026-01-17 11:02:33 +08:00
Henry Li
9d1cf89532 chore: remove unused components 2026-01-17 10:09:43 +08:00
Henry Li
a973c82a1f chore: downgrade shiki since breaking changes 2026-01-17 10:05:55 +08:00
Henry Li
664ccb922f style: format 2026-01-17 00:13:24 +08:00
Henry Li
4e7256a9d8 feat: make BETTER_AUTH_* optional 2026-01-17 00:13:17 +08:00
Henry Li
bb92dec8d5 feat: ignore components from 3rd parties 2026-01-17 00:12:57 +08:00
Henry Li
4613d6e16e refactor: rename 2026-01-17 00:05:19 +08:00
Henry Li
9d64c7e076 feat: integrated with artifacts 2026-01-17 00:02:03 +08:00
Henry Li
34ca58ed1b fix: fix broken when SSE 2026-01-16 23:15:53 +08:00
Henry Li
6464a67230 feat: remember sidebar state 2026-01-16 23:03:39 +08:00
Henry Li
f9853f037c feat: support basic file presenting 2026-01-16 22:35:20 +08:00
Henry Li
93a231cfb1 feat: integrated with artifact resizable 2026-01-16 21:55:31 +08:00
Henry Li
68fbf53fb2 chore: add resizable 2026-01-16 21:54:54 +08:00
Henry Li
91eff99f01 feat: add flip display effect 2026-01-16 20:40:09 +08:00
Henry Li
c265734c6e feat: adjust layout 2026-01-16 20:06:30 +08:00
Henry Li
03f0e3f0c7 refactor: move biz logic to core 2026-01-16 19:51:39 +08:00
Henry Li
7066a3b691 feat: adjust layout and style of tooltip 2026-01-16 19:51:14 +08:00
Henry Li
b72eb61302 refactor: simplify parameter 2026-01-16 19:50:41 +08:00
Henry Li
df396fc246 feat: add copy button 2026-01-16 19:50:23 +08:00
Henry Li
6bd49ab411 chore: remove 2026-01-16 19:50:17 +08:00
Henry Li
f19e3ae8ac fix: lastStep could be empty 2026-01-16 14:38:49 +08:00
Henry Li
52b9d0cffc feat: remove scroll button 2026-01-16 14:38:33 +08:00
Henry Li
2105170d39 Merge remote-tracking branch 'refs/remotes/origin/experimental' into experimental 2026-01-16 14:04:21 +08:00
Henry Li
faf80bb429 feat: rename 'model' to 'model_name' 2026-01-16 14:03:34 +08:00
DanielWalnut
7284eb15f1 feat: add gateway module with FastAPI server (#5)
* chore: add .claude/ to .gitignore

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add gateway module with FastAPI server

- Add new gateway module with FastAPI app for API routing
- Add gateway and serve commands to Makefile
- Add fastapi, httpx, uvicorn, sse-starlette dependencies
- Fix model config retrieval in lead_agent (support both model_name and model)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 13:22:26 +08:00
Henry Li
1f03fb3749 fix: navigate to home only in open-mode 2026-01-16 09:58:16 +08:00
Henry Li
7c6189668c feat: link to home page 2026-01-16 09:56:30 +08:00
Henry Li
028f402ff5 feat: store the local settings 2026-01-16 09:55:02 +08:00
Henry Li
3f2bfded41 feat: enable edit context options 2026-01-16 09:37:04 +08:00
Henry Li
956f8f0cfb refactor: rename 2026-01-16 09:15:04 +08:00
Henry Li
08e0a1da16 chore: remove 2026-01-16 09:14:25 +08:00
Henry Li
e9846c1dda refactor: refine folder structure and rename 2026-01-16 09:13:02 +08:00
Henry Li
61499624a0 feat: adjust message group layout 2026-01-15 23:56:42 +08:00
Henry Li
00ad4206c4 feat: enhance label 2026-01-15 23:47:36 +08:00
Henry Li
c3cb4c348d feat: remove max-w- 2026-01-15 23:47:28 +08:00
Henry Li
9f2b94ed52 feat: implement basic web app 2026-01-15 23:40:21 +08:00
Henry Li
57dfc89ca1 chore: specify project name 2026-01-14 09:58:53 +08:00
Henry Li
c628c7f8db chore: create frontend project from boilerplate 2026-01-14 09:50:26 +08:00