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
Henry Li
cbe0f3b32f
feat: update translations
2026-02-09 13:57:46 +08:00
LofiSu
1c9a969a70
i18n(zh-CN): keep Pro and Ultra as English in mode labels
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 13:02:54 +08:00
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
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
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
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
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
d9a52f07e7
feat: add handling for task timeout and enhance Streamdown plugin for word animation
2026-02-07 18:06:22 +08:00
Henry Li
3e2883e2a3
feat: support subtasks
2026-02-07 16:14:48 +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
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
Henry Li
70989a949e
feat: add 'about' page
2026-02-06 15:18:37 +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
Henry Li
b74cf65275
feat: update surprise-me functionality with localization support
2026-02-06 14:21:03 +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
6b53456b39
feat: add memory settings page
2026-02-03 18:18:56 +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
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
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
a0a3a3fc02
feat: dynamic title
2026-02-02 09:05:24 +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
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
c1182c680c
feat: support Github Flavored Markdown
2026-01-30 16:41:18 +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
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
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
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
3ce4968e95
feat: auto select the first model as default model
2026-01-26 17:13:34 +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
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
08f1af00b6
feat: support absolute path as image src
2026-01-24 20:58:56 +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
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
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
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
54d29e254f
docs: rewording
2026-01-21 10:46:18 +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
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
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
06068dd07b
feat: add reasoning check to message list item rendering
2026-01-17 18:02:19 +08:00
Henry Li
f1c6991194
feat: integrated with artifacts in states
2026-01-17 17:21:37 +08:00
Henry Li
a663bcc37b
feat: merge the last thinking with the previous group
2026-01-17 16:10:58 +08:00
Henry Li
228ec49f70
feat: add date time util
2026-01-17 15:44:38 +08:00
Henry Li
962d8f04ec
feat: support artifact preview
2026-01-17 15:09:44 +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
03f0e3f0c7
refactor: move biz logic to core
2026-01-16 19:51:39 +08:00
Henry Li
b72eb61302
refactor: simplify parameter
2026-01-16 19:50:41 +08:00
Henry Li
faf80bb429
feat: rename 'model' to 'model_name'
2026-01-16 14:03:34 +08:00
Henry Li
028f402ff5
feat: store the local settings
2026-01-16 09:55:02 +08:00
Henry Li
e9846c1dda
refactor: refine folder structure and rename
2026-01-16 09:13:02 +08:00
Henry Li
9f2b94ed52
feat: implement basic web app
2026-01-15 23:40:21 +08:00