Phase 4 — Markdown Rendering + Typing Indicators + Intent Status #239

Closed
opened 2026-07-15 11:38:50 +00:00 by Mark · 0 comments
Owner

Phase 4: Markdown Rendering + Typing Indicators + Intent Status

Goal: Enhance the chat UI with markdown message rendering, typing indicators when the mesh is processing, and visual display of intent lifecycle states (pending, working, completed, error).

Approach candidates:

  • Markdown rendering via client-side library (marked.js, showdown.js) — lightweight, no build step
  • Typing indicators: animated dots in the message area while awaiting response
  • Intent status: small badge/pill per message showing state transitions (pending→working→completed)
  • Keyboard shortcut for code blocks (triple backtick auto-close)

Outputs:

  • Update runtime/static/js/chat.js — markdown rendering, typing indicator component, status display
  • Update runtime/static/css/chat.css — markdown styles, typing animation, status badges
  • Include markdown library via CDN in runtime/static/index.html
  • Tests in tests/integration/test_chat_ui_enhancements.py

Acceptance criteria:

  • Messages render markdown: bold, italic, code, code blocks, lists, links, images
  • Code blocks have syntax highlighting (or at minimum monospace + background)
  • Typing indicator (animated dots) shows while mesh is processing a response
  • Intent status shows as a colored badge: yellow=pending, blue=working, green=completed, red=error
  • Status transitions animate smoothly (no flicker)
  • Markdown is sanitized (no XSS via <script> tags in message content)
  • Long code blocks are scrollable, not page-breaking
  • Typing indicator disappears promptly when response arrives

Files touched: runtime/static/index.html (amend — add markdown library CDN), runtime/static/js/chat.js (amend), runtime/static/css/chat.css (amend), tests/integration/test_chat_ui_enhancements.py (create)



Decomposed from mesh-seed#133

## Phase 4: Markdown Rendering + Typing Indicators + Intent Status **Goal:** Enhance the chat UI with markdown message rendering, typing indicators when the mesh is processing, and visual display of intent lifecycle states (pending, working, completed, error). **Approach candidates:** - Markdown rendering via client-side library (marked.js, showdown.js) — lightweight, no build step - Typing indicators: animated dots in the message area while awaiting response - Intent status: small badge/pill per message showing state transitions (pending→working→completed) - Keyboard shortcut for code blocks (triple backtick auto-close) **Outputs:** - Update `runtime/static/js/chat.js` — markdown rendering, typing indicator component, status display - Update `runtime/static/css/chat.css` — markdown styles, typing animation, status badges - Include markdown library via CDN in `runtime/static/index.html` - Tests in `tests/integration/test_chat_ui_enhancements.py` **Acceptance criteria:** - [ ] Messages render markdown: **bold**, *italic*, `code`, ```code blocks```, lists, links, images - [ ] Code blocks have syntax highlighting (or at minimum monospace + background) - [ ] Typing indicator (animated dots) shows while mesh is processing a response - [ ] Intent status shows as a colored badge: yellow=pending, blue=working, green=completed, red=error - [ ] Status transitions animate smoothly (no flicker) - [ ] Markdown is sanitized (no XSS via `<script>` tags in message content) - [ ] Long code blocks are scrollable, not page-breaking - [ ] Typing indicator disappears promptly when response arrives **Files touched:** `runtime/static/index.html` (amend — add markdown library CDN), `runtime/static/js/chat.js` (amend), `runtime/static/css/chat.css` (amend), `tests/integration/test_chat_ui_enhancements.py` (create) --- --- _Decomposed from [mesh-seed#133](https://forgejo.tail018ac4.ts.net/Mark/mesh-seed/issues/133)_
Mark changed title from Decompose: CONV-003: Web Chat Interface — Phase 4: Markdown Rendering + Typing Indicators + Intent Status to Phase 4 — Markdown Rendering + Typing Indicators + Intent Status 2026-07-15 11:39:38 +00:00
Mark closed this issue 2026-08-12 15:02:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/mesh-seed#239
No description provided.