Commit Graph

82 Commits

Author SHA1 Message Date
Henry Li
99e8f22d1d feat: add handling for task timeout and enhance Streamdown plugin for word animation 2026-02-07 18:06:22 +08:00
Henry Li
a016332a37 feat: support subtasks 2026-02-07 16:14:48 +08:00
ruitanglin
2331c67446 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
hetao
172813720a feat: send custom event 2026-02-06 17:48:15 +08:00
hetao
926c322c36 feat: add ultra mode 2026-02-06 17:48:14 +08:00
Henry Li
44742c6353 feat: add 'about' page 2026-02-06 15:18:37 +08:00
ruitanglin
c8c4d2fc95 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
Henry Li
765e35fc70 feat: update surprise-me functionality with localization support 2026-02-06 14:21:03 +08:00
ruitanglin
c67f1af889 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
94acb15c0c feat: add memory settings page 2026-02-03 18:18:56 +08:00
Henry Li
010eadecca feat: enhance welcome component and input box with skill mode handling and localization updates 2026-02-02 14:44:23 +08:00
Henry Li
154fbb0ba3 feat: add suggestions 2026-02-02 11:21:30 +08:00
Henry Li
c587460dbc feat: add file icons 2026-02-02 10:02:31 +08:00
Henry Li
8bb4c35416 feat: add file icon 2026-02-02 09:49:44 +08:00
Henry Li
7274f9a6ae feat: adjust tooltips 2026-02-02 09:32:18 +08:00
Henry Li
be65130a06 feat: dynamic title 2026-02-02 09:05:24 +08:00
Henry Li
4721f1a890 feat: add tooltip for installation 2026-02-01 10:55:08 +08:00
Henry Li
8a2fb353c6 fix: add translations 2026-01-31 22:49:59 +08:00
Henry Li
f3d7fea9ce docs: rephrasing 2026-01-31 22:42:17 +08:00
Henry Li
8639dde3ad feat: implement create skill 2026-01-31 22:31:25 +08:00
hetaoBackend
f31258dd10 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
624f758163 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
718bb947d0 fix: fix eslint errors and warnings 2026-01-31 21:46:31 +08:00
Henry Li
b8281be892 fix: fix eslint errors 2026-01-31 11:11:13 +08:00
Henry Li
47fe2f8195 feat: add notification 2026-01-31 11:08:27 +08:00
Henry Li
618b3e1e8f feat: support Github Flavored Markdown 2026-01-30 16:41:18 +08:00
Henry Li
7bf15cb777 feat: use "mode" instead of "thinking_enabled" and "is_plan_mode" 2026-01-29 15:48:50 +08:00
Henry Li
caf469d2ab fix: fix renaming 2026-01-29 15:31:56 +08:00
ruitanglin
ac283b92aa 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
ruitanglin
ce9731c10a 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
ruitanglin
6ae4868780 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
ruitanglin
4b63e70b7e 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
d787b1ca54 feat: support image_search 2026-01-29 08:59:55 +08:00
Henry Li
946031b79f fix: improve hasPresentFiles function to check for multiple tool calls 2026-01-29 08:59:45 +08:00
hetaoBackend
73a1d32a5b 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
ruitanglin
33c47e0c56 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
574dfd2b05 feat: auto select the first model as default model 2026-01-26 17:13:34 +08:00
Henry Li
e6cac2cae4 feat: update translations 2026-01-25 11:54:49 +08:00
Henry Li
fecc5faacf fix: fix artifacts in demo mode 2026-01-25 11:42:25 +08:00
Henry Li
099fb727cc feat: auto expand in demo mode 2026-01-24 23:51:11 +08:00
Henry Li
2eb9bb2167 chore: update translation 2026-01-24 22:41:40 +08:00
hetao
5671642dbe 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
48b5428000 feat: add i18n 2026-01-24 22:19:37 +08:00
Henry Li
4aef821344 feat: support absolute path as image src 2026-01-24 20:58:56 +08:00
Henry Li
3c40446ade feat: add more links 2026-01-24 18:21:50 +08:00
Henry Li
ebda30c7cf feat: support static website 2026-01-24 18:01:27 +08:00
hetao
1fe37fdb6c feat: implement file upload feature 2026-01-23 18:47:39 +08:00
Henry Li
9df56299c1 docs: rewording 2026-01-22 14:21:03 +08:00
Henry Li
e1378123f5 feat: add main menu 2026-01-22 14:19:54 +08:00
Henry Li
99eb2474b3 feat: make reasoning mode as default 2026-01-22 13:46:43 +08:00