Chat UX

The chat screen is the primary CE workspace. A signed-in user selects or creates a chat, sends a prompt to the currently loaded main model, watches the answer stream back, and keeps the result in their own history.

Admin model controls decide which local model is loaded. Normal users work with that loaded model rather than choosing or launching models themselves.

Main Flow

Chat list

The sidebar lets users create a new chat, switch chats, rename a chat, or delete a chat. On mobile, selecting or creating a chat closes the full-screen sidebar.

Send and stream

The prompt is sent over Socket.IO. The assistant response streams into the active chat and is saved when generation completes and the session is still valid.

Stop generation

During generation, the Send button changes to Stop. The active assistant bubble can also show an in-bubble Stop button. Both request cancellation for the active generation.

Prompt limit

New user messages over 20,000 characters are rejected with a message asking the user to shorten the prompt or attach content as a file.

Rendering

Response display

Streaming text appears as it arrives. After completion, Markdown is rendered through the app's sanitizer path, code blocks are enhanced, and math notation is passed to local MathJax assets when available.

Reasoning display

When the model stream provides reasoning content or recognizable thought tags, the UI can show a separate reasoning/thoughts section apart from the final answer.

Attachments

Area Behavior
Supported content Users can attach common text and code files, including txt, markdown, Python, JavaScript, TypeScript, HTML, CSS, JSON, XML, YAML, CSV, logs, shell scripts, SQL, Java, C/C++, C#, Go, and Rust files.
Default limits Seeded settings allow 8 files, 1 MB per file, 4 MB total, and an 80,000 character attachment context budget.
Validation The server checks filename shape, extension, text content, null bytes, per-file size, total size, and the configured context limit.
Model context Attachment text is chunked by lines and added to the model request. Truncation notices are included when configured limits are reached.

Edit and Variants

Edit latest prompt

Users can edit the latest prompt. The edit creates a new prompt version instead of rewriting older saved rows.

Regenerate response

Regenerate uses the latest active prompt in the selected session and creates another response version for that turn.

Variant picker

Previous and next controls switch between latest-turn variants. The selected variant is saved for that user's session.

History Tools

ExportUsers can export their own chats as JSON, CSV, or Markdown.
ImportUsers can import JSON or CSV chats and choose append or overwrite behavior. Imports are capped at 10 MB and 25,000 rows/items.
Clear historyUsers can clear all of their own chat history from the Chat History drawer.
Raw debugThe Debug button sends a short prompt to the model and shows the raw response path used by the app. Debug output is unavailable while a benchmark is running.