肖应宇
c2464c3449
refactor(workspace): 将颜色 token 重命名为语义化命名
2026-04-24 17:08:15 +08:00
肖应宇
54ef439226
fix(08): 用主题色替换留存的 white/black 工具颜色,
2026-04-23 10:31:09 +08:00
肖应宇
3d4e180a05
feat(08-02): token化 input/suggestion/streaming 颜色
...
- 将 input-box 与 suggestion 的硬编码颜色和 SVG fill/stroke 迁移为 ws token/currentColor
- 移除 task 验收范围内的颜色/arbitrary 命中并保持 hover/active 可见
- 通过 lint 与 typecheck(仅保留仓库既有 warnings)
2026-04-23 10:27:06 +08:00
肖应宇
eb45bba7ff
feat(tour):漫游导航
2026-04-20 15:42:03 +08:00
肖应宇
170b5484c9
style: lint prettier
2026-04-20 10:34:57 +08:00
肖应宇
27414fc4e1
feat(phase-07): compose attachment/skill priority hints on submit
2026-04-17 11:00:12 +08:00
肖应宇
9758ae8a3a
refactor: 不使用硬编码,而全部使用i18n
2026-04-16 16:00:41 +08:00
肖应宇
dae911af70
feat(phase-07): archive post-acceptance mention/upload patchset
2026-04-16 11:15:20 +08:00
肖应宇
c4fe34ed23
feat(ui): 宋对ui和输入框placeholder更改
2026-04-16 11:15:20 +08:00
肖应宇
7ea2bceb78
fix(workspace): 统一折叠思考块代码以消除流式抖动
...
- 移除思考链代码块按长度判断的折叠策略,改为默认折叠\n- 为思考内容与 reasoning-only 路径添加代码块默认折叠渲染\n- 调整流式 Markdown 渲染参数,降低流式重排与闪烁
2026-04-16 11:15:20 +08:00
肖应宇
99e0fe13fd
feat(phase-06): add reference file contract and submit payload helper
2026-04-16 11:15:19 +08:00
肖应宇
ccfeabc95b
style:prettier
2026-04-14 09:49:17 +08:00
肖应宇
41c6d7cf65
fix: ctrl+enter键不能换行的问题
2026-04-14 09:49:17 +08:00
肖应宇
84d59ec46d
fix: 修复剪贴板没有统一使用copyToClipboard的问题
2026-04-14 09:49:17 +08:00
肖应宇
842cd22c00
feat: 完成显示docx, pptx, xlsx文件
2026-04-14 09:49:17 +08:00
肖应宇
cd2a41b8a6
feat(frontend): 优化工作区输入框与 artifacts 展示体验
...
改进工作区核心交互,提升输入与结果查看的一致性和可用性。
调整 prompt 输入相关组件逻辑,优化输入行为与状态反馈
更新 workspace input-box 交互细节,改善可用性与稳定性
优化 message-group 展示逻辑,增强消息区域可读性
调整 artifact-file-detail 预览相关实现,为后续 Office 文件展示做准备
补充并更新 thread-routing e2e 用例,覆盖关键路由与交互回归场景
2026-04-14 09:49:17 +08:00
肖应宇
f6065dea55
feat: enter换行,取消enter发送
2026-04-14 09:49:17 +08:00
肖应宇
7012693802
feat(03): align workspace visual layer with legacy baseline
2026-04-07 14:34:22 +08:00
luobo
1c0051c1db
fix(frontend): keep prompt attachments from breaking before upload ( #1833 )
...
* fix(frontend): preserve prompt attachment files during upload
* fix(frontend): harden prompt attachment fallback and tests
---------
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-04-04 14:54:35 +08:00
luobo
144c9b2464
fix(frontend): block unsupported .app uploads ( #1834 )
...
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-04-04 14:42:26 +08:00
yangzheli
636053fb6d
fix(frontend): add missing rel="noopener noreferrer" to target="_blank" links ( #1741 )
...
* fix(frontend): add missing rel="noopener noreferrer" to target="_blank" links
Prevent tabnabbing attacks and referrer leakage by ensuring all
external links with target="_blank" include both noopener and
noreferrer in the rel attribute.
Made-with: Cursor
* style: fix code formatting
2026-04-02 17:32:52 +08:00
Sleepy Ranx 🌙
866cf4ef73
fix(frontend): prevent submit during IME composition ( #1562 )
2026-03-29 22:36:38 +08:00
greatmengqi
084dc7e748
ci: enforce code formatting checks for backend and frontend ( #1536 )
2026-03-29 15:34:38 +08:00
7. Sun
49f2e38fbf
fix: prevent SpeechRecognition instance leaks on render ( #1369 )
...
* fix: remove unstable dependencies from speech recognition effect
* fix: use refs to prevent stale closures in speech recognition
* 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-28 16:20:38 +08:00
7. Sun
d7bdb1a4b9
fix: remove unused radix Icon import from suggestion ( #1368 )
...
* fix: use create_chat_model for summarization alias
* fix: remove unused radix Icon import from suggestion
---------
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-26 21:14:56 +08:00
haibow
e399d09e8f
Fix line numbering ( #954 )
...
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-03-02 20:43:58 +08:00
LofiSu
46048c76ce
chore: 移除所有 Citations 相关逻辑,为后续重构做准备
...
- Backend: 删除 lead_agent / general_purpose 中的 citations_format 与引用相关 reminder;artifacts 下载不再对 markdown 做 citation 清洗,统一走 FileResponse,保留 Response 用于二进制 inline
- Frontend: 删除 core/citations 模块、inline-citation、safe-citation-content;新增 MarkdownContent 仅做 Markdown 渲染;消息/artifact 预览与复制均使用原始 content
- i18n: 移除 citations 命名空间(loadingCitations、loadingCitationsWithCount)
- 技能与 demo: 措辞改为 references,demo 数据去掉 <citations> 块
- 文档: 更新 CLAUDE/AGENTS/README 描述,新增按文件 diff 的代码变更总结
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 16:24:01 +08:00
LofiSu
cef8d389fd
refactor(frontend): consolidate citation logic, slim exports and impl
...
- SafeCitationContent: add loadingOnly and renderBody props.
- loadingOnly: show only loading indicator or null (e.g. write_file step).
- renderBody(parsed): custom body renderer (e.g. artifact preview).
- message-group write_file: use SafeCitationContent(content, isLoading,
rehypePlugins, loadingOnly) instead of local useParsedCitations +
shouldShowCitationLoading + CitationsLoadingIndicator. Pass rehypePlugins
into ToolCall.
- artifact-file-detail markdown preview: use SafeCitationContent with
renderBody((p) => <ArtifactFilePreview ... cleanContent={p.cleanContent}
citationMap={p.citationMap} />). Remove local shouldShowCitationLoading
and CitationsLoadingIndicator branch.
- core/citations: inline buildCitationMap into use-parsed-citations, remove
from utils; stop exporting hasCitationsBlock (internal to shouldShowCitationLoading).
- inline-citation: make InlineCitationCard, InlineCitationCardBody,
InlineCitationSource file-private (no longer exported).
Co-authored-by: Cursor <cursoragent@cursor.com>
---
refactor(前端): 收拢引用逻辑、精简导出与实现
- SafeCitationContent 新增 loadingOnly、renderBody。
- loadingOnly:仅显示加载或 null(如 write_file 步骤)。
- renderBody(parsed):自定义正文渲染(如 artifact 预览)。
- message-group write_file:改用 SafeCitationContent(loadingOnly),去掉
本地 useParsedCitations + shouldShowCitationLoading + CitationsLoadingIndicator,
并向 ToolCall 传入 rehypePlugins。
- artifact-file-detail 的 markdown 预览:改用 SafeCitationContent +
renderBody 渲染 ArtifactFilePreview,去掉本地加载判断与
CitationsLoadingIndicator 分支。
- core/citations:buildCitationMap 内联到 use-parsed-citations 并从 utils
删除;hasCitationsBlock 不再导出(仅 shouldShowCitationLoading 内部使用)。
- inline-citation:InlineCitationCard/Body/Source 改为文件内私有,不再导出。
2026-02-09 15:58:59 +08:00
LofiSu
4f9d1d524e
feat(frontend): unify citation logic and prevent half-finished citations
...
- Add SafeCitationContent as single component for citation-aware body:
useParsedCitations + shouldShowCitationLoading; show loading until
citations complete, then render body with createCitationMarkdownComponents.
Supports optional remarkPlugins, rehypePlugins, isHuman, img.
- Refactor MessageListItem: assistant message body now uses
SafeCitationContent only; remove duplicate useParsedCitations,
shouldShowCitationLoading, createCitationMarkdownComponents and
CitationsLoadingIndicator logic. Human messages keep plain
AIElementMessageResponse (no citation parsing).
- Use SafeCitationContent for clarification, present-files (message-list),
thinking steps and write_file loading (message-group), subtask result
(subtask-card). Artifact markdown preview keeps same guard
(shouldShowCitationLoading) with ArtifactFilePreview.
- Unify loading condition: shouldShowCitationLoading(rawContent,
cleanContent, isLoading) is the single source of truth. Show loading when
(isLoading && hasCitationsBlock(rawContent)) or when
(hasCitationsBlock(rawContent) && hasUnreplacedCitationRefs(cleanContent))
so Pro/Ultra modes also show "loading citations" and half-finished
[cite-N] never appear.
- message-group write_file: replace hasCitationsBlock + threadIsLoading
with shouldShowCitationLoading(fileContent, cleanContent,
threadIsLoading && isLast) for consistency.
- citations/utils: parse incomplete <citations> during streaming;
remove isCitationsBlockIncomplete; keep hasUnreplacedCitationRefs
internal; document display rule in file header.
Co-authored-by: Cursor <cursoragent@cursor.com>
---
feat(前端): 统一引用逻辑并杜绝半成品引用
- 新增 SafeCitationContent 作为引用正文的唯一出口:内部使用
useParsedCitations + shouldShowCitationLoading,在引用未就绪时只显示
「正在整理引用」,就绪后用 createCitationMarkdownComponents 渲染正文;
支持可选 remarkPlugins、rehypePlugins、isHuman、img。
- 重构 MessageListItem:助手消息正文仅通过 SafeCitationContent 渲染,
删除重复的 useParsedCitations、shouldShowCitationLoading、
createCitationMarkdownComponents、CitationsLoadingIndicator 等逻辑;
用户消息仍用 AIElementMessageResponse,不做引用解析。
- 澄清、present-files(message-list)、思考步骤与 write_file 加载
(message-group)、子任务结果(subtask-card)均使用
SafeCitationContent;Artifact 的 markdown 预览仍用同一 guard
shouldShowCitationLoading,正文由 ArtifactFilePreview 渲染。
- 统一加载条件:shouldShowCitationLoading(rawContent, cleanContent,
isLoading) 为唯一判断。在「流式中且已有引用块」或「有引用块且
cleanContent 中仍有未替换的 [cite-N]」时仅显示加载,从而在 Pro/Ultra
下也能看到「正在整理引用」,且永不出现半成品 [cite-N]。
- message-group 的 write_file:用 shouldShowCitationLoading(
fileContent, cleanContent, threadIsLoading && isLast) 替代
hasCitationsBlock + threadIsLoading,与其他场景一致。
- citations/utils:流式时解析未闭合的 <citations>;移除
isCitationsBlockIncomplete;hasUnreplacedCitationRefs 保持内部使用;
在文件头注释中说明展示规则。
2026-02-09 15:01:51 +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
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
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
b135449c07
fix: adjust suggestion positioning and height for improved UI layout
2026-02-07 17:56:06 +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
a122f76e36
feat: add animations
2026-02-07 10:30:35 +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
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
Henry Li
3067f8dd03
feat: add suggestions
2026-02-02 11:21:30 +08:00
Henry Li
867749d7a3
feat: add file icons
2026-02-02 10:02:31 +08:00
Henry Li
a4f749f939
fix: add max width
2026-01-29 16:12:30 +08:00
Henry Li
28361ca03c
feat: add scroll indicator
2026-01-27 13:15:49 +08:00
Henry Li
cd63f41b4c
feat: support static website
2026-01-24 18:01:27 +08:00
Henry Li
7d4d706738
feat: put all options into '+'
2026-01-22 13:43:45 +08:00
Henry Li
1e4e51a80c
feat: add Todos
2026-01-22 00:26:11 +08:00
Henry Li
11c562eb98
refactor: move
2026-01-21 10:46:43 +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
b8f9678d07
feat: use code block to display bash commands
2026-01-19 21:59:23 +08:00