Commit Graph

9 Commits

Author SHA1 Message Date
Haze
be800f6cfc fix(channel): Feishu channel gateway wont restart after config (#291)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Haze <hazeone@users.noreply.github.com>
2026-03-04 21:45:44 +08:00
paisley
5049709c5d fix(ui): use custom ConfirmDialog for deletions to prevent input blocking on Windows (#282) 2026-03-04 11:38:16 +08:00
Haze
8a49c66891 fix(chat): enhance file handling and error reporting in ChatInput (#80) 2026-02-13 20:43:42 +08:00
Haze
36fb4bffc7 feat(chat): implement file upload support with staging and media handle (#77) 2026-02-13 18:23:47 +08:00
Felix
8ab1b3af36 misc: provider icons, tooltip in chat toolbar, conditionally display the "Open Skills Folder" button and update "Documentation" to "Website" in settings (#60) 2026-02-12 11:11:28 +08:00
Felix
816a0e24a2 misc: chat stop button and tool typing indicator and prevent sending message during composition (#37) 2026-02-10 19:12:22 +08:00
Haze
e6317cafd6 chore(frontend): fix corn task (#3) 2026-02-07 01:28:38 +08:00
Haze
7fded9bf8d refactor(chat): remove instruction text from ChatInput component
- Removed the instruction text for sending messages (Enter to send, Shift+Enter for new line) from the ChatInput component to streamline the UI.
2026-02-06 04:59:40 +08:00
Haze
3468d1bdf4 feat(chat): native React chat page with session selector and streaming
Replace the iframe-based Control UI embed with a native React
implementation that communicates directly with the Gateway via
gateway:rpc IPC calls and chat event streaming.

New components:
- ChatToolbar: session selector dropdown, refresh button, thinking toggle
- ChatMessage: message bubbles with markdown (react-markdown + GFM),
  collapsible thinking blocks, tool use cards, image attachments
- ChatInput: textarea with Enter to send, Shift+Enter for new line
- message-utils: extractText/extractThinking/extractImages/extractToolUse
  ported from OpenClaw's message-extract.ts

Rewritten chat store with:
- Session management (sessions.list, switchSession)
- Proper chat.history loading with raw message preservation
- chat.send with idempotencyKey and run tracking
- Streaming via handleChatEvent (delta/final/error/aborted)
- Thinking toggle (show/hide reasoning blocks)
2026-02-06 04:49:01 +08:00