Chat
The chat page is OpenJellyfish's core interface for streaming conversations with the AI Agent.
4.1 Conversation List
- Located in the sidebar, shows all historical conversations
- Click + button to create a new conversation
- Click a conversation entry to switch to it
- Hover shows delete button
- Switching back to a conversation still streaming in background auto-restores display
4.2 Message Input
Bottom input area contains:
- Text input: multi-line input (Shift+Enter for newline, Enter to send)
- Capability switches: click to expand capability selection bar
- 🌐 Web: enable web search and fetching (always enabled for Admin by default)
- 🎨 Image: enable AI image generation
- 🔊 Voice: enable TTS voice generation
- 🎬 Video: enable AI video generation
- Plan Mode: enable planning mode, Agent plans first then executes (requires approval)
- Model selector: dropdown to select AI model for current conversation
- Image attachments: three ways to add images
- 📎 Click attachment button to select file
- Ctrl+V to paste clipboard image
- Drag image to input area
- Voice input: click microphone button to start recording → click again to stop → auto-transcribed into input field; press Esc during recording to cancel
- Workspace lock: toolbar lock icon — choose Auto / Manual paths / Agent self-declare (see §4.10); chat header also opens the lock status panel
- Send/Stop button:
- Normal state shows send button (paper plane icon)
- During streaming shows red Stop button — click to abort current reply
4.3 Message Queue (Query Queue)
While the Agent is streaming a reply, you can still type and send — messages enter the queue for the current conversation (shown above the input area) instead of being dropped.
| Behavior | Description |
|---|---|
| Default queue | New messages FIFO; after current turn done, the next item sends automatically |
| ↵ Run now | Return key button on a queued row: abort current stream (partial reply kept), continue on the same SSE connection with that message |
| Edit / reorder | Queued items are editable and can move up/down; queue is limited during HITL approval (queue-only mode) |
Queue applies only to the Admin chat page, not the Service consumer page.
4.4 Streaming Message Display
AI replies display in streaming mode, containing the following block types:
Text Blocks
- Markdown rendered with code highlighting (17 common languages)
- Code blocks use JetBrains Mono font
- Media embedding: auto-recognizes
<<FILE:/generated/xxx.png>>tags, displays images/audio/video/PDF/HTML
Thinking Blocks
- Shows AI's reasoning process (Thinking models only)
- Collapsible/expandable (click header bar)
- Shows three-dot bounce animation during streaming
- Identified by Brain icon
Tool Calls (Tool Indicator)
- Shows tool name and argument preview
- Shows spinning loader while executing
- Shows green checkmark when done
- Results are expandable
- Identified by Wrench icon
Subagent Cards
- Shows subagent task description
- Internal tool calls displayed in chronological order (text/tool/thinking timeline)
- Streams subagent replies in real time
- Identified by Robot icon
Approval Cards (HITL)
- File operation approval: git-style hunk diff for
edit_file; approve or reject - Plan approval: shows Agent's execution plan, can edit before approving or rejecting
- Approval buttons use Check (approve) and X (reject) icons
Streaming File Preview
write_file/edit_fileshow live code preview while LLM streams tool arguments (typewriter effect)- See pending content before HITL approval
Scheduled Task Result Card
- Scheduled task results use a dedicated blue card (distinct from tool calls)
- Task metadata (name, status, output snippet) is collapsible
4.5 History Messages
- User messages appear on the right (pink-purple gradient bubble)
- AI messages appear on the left (with jellyfish logo avatar)
- History messages replay in interleaved order (thinking → text → tool → text → subagent → text…)
- User attachments displayed as thumbnail gallery, click to enlarge
4.6 Smart Scroll
- New messages auto-scroll to bottom
- When user scrolls up to browse history, auto-scroll pauses
- Returns to bottom, auto-scroll resumes
4.7 Stream Recovery
- On backend crash / network interruption, already-generated partial content auto-persists (marked ⚠️ [Connection interrupted — saved generated content])
- Switching back to a conversation still streaming in background shows yellow banner with "Abort & Save" and "Refresh Status" buttons
- Cannot send new messages while streaming (prevents conflicts); use §4.3 queue to append follow-ups mid-stream
4.8 YOLO Mode (Auto-approve)
Enable YOLO mode in Settings → General to auto-approve HITL prompts (write_file / edit_file / propose_plan, etc.) in Admin chat.
- Admin only; Service consumer pages have no HITL flow
- State stored in browser
localStorageper device - After auto-approvals in a conversation, a minimal orange
yolotag appears at the bottom of the input area
4.9 @ File References
Type @ in the input to open a file picker (fuzzy search over docs/, scripts/, generated/, etc.). Selection inserts a [[FILE:/path]] chip.
- On send, backend expands to
<<FILE:/path>>for rendering and file panel navigation - Click file links in chat to reveal the path in the right file panel
4.10 Workspace Lock
Prevents multiple Agent processes (chat, scheduled tasks, subagents) from writing the same directories. Toolbar lock icon modes:
| Mode | Behavior |
|---|---|
| Auto | Prefer exclusive whole workspace; on conflict, lock idle top-level dirs |
| Manual | Lock only paths you select (files or directories) |
| Agent | No pre-lock; Agent calls acquire_workspace at runtime |
Chat header Lock button shows active processes, locked paths, and manual release (does not abort the Agent).
4.11 Left Query Navigation
Floating short bars on the left: one bar per user message. Scroll highlights the visible query; click to jump (works with virtualized long sessions).