Decompose: CONV-003: Web Chat Interface #133
Labels
No labels
blocked:children
blocked:commit-ready-failed
blocked:depends-231
blocked:depends-236
blocked:depends-237
blocked:depends-238
blocked:depends-239
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-lint
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:no-changes
blocked:no-procedure
blocked:preflight
blocked:verify-failed
bug
enhancement
feature-request
high-priority
in-progress
lint-cleanup
needs-decompose
needs-triage
ops-retry
ops-task
phase-5
quickfix
security/medium
self-building
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/mesh-seed#133
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Overview
Browser-based chat UI for interacting with the mesh. Builds on the existing CONV-001 (thread infrastructure, #131, closed) and CONV-002 (multi-turn context, #132, closed) to provide a web-based conversational interface.
Current State
cli/mesh_cli.py,cli/client.py)runtime/http_entrypoint.pywith REST APIflask-socketiois already a project dependency (in pyproject.toml)Technology Options
Non-goals
P1: WebSocket Backend + Static File Serving
Goal: Extend the Flask HTTP entrypoint with WebSocket support (Flask-SocketIO) for real-time bidirectional messaging, and serve static frontend files.
Approach candidates:
runtime/http_entrypoint.py— already a dependency, natural fit with existing Flask appOutputs:
runtime/ws_handler.py— WebSocket/SocketIO event handlers for chat messagingruntime/static/— directory for frontend static files, served by Flaskcli/web.pyorcli/commands/web.py— optional CLI entrypoint to start web servertests/unit/test_ws_handler.pyAcceptance criteria:
Files touched:
runtime/http_entrypoint.py(amend — add SocketIO),runtime/ws_handler.py(create),runtime/__init__.py(amend),runtime/static/(create),tests/unit/test_ws_handler.py(create),pyproject.toml(verify flask-socketio is listed)P2: Chat Window UI + Message Display + Input
Goal: Build the core web chat interface — a single-page HTML/JS/CSS app with a chat window displaying user/assistant/system messages and a text input area, connected to the WebSocket backend.
Approach candidates:
Outputs:
runtime/static/index.html— main chat page shellruntime/static/css/chat.css— chat UI stylesruntime/static/js/chat.js— chat client: WebSocket connection, message rendering, input handlingruntime/static/js/mesh_api.js— REST API client for thread management (CONV-001 endpoints)tests/integration/test_chat_ui.pyAcceptance criteria:
Files touched:
runtime/static/index.html(create),runtime/static/css/chat.css(create),runtime/static/js/chat.js(create),runtime/static/js/mesh_api.js(create),tests/integration/test_chat_ui.py(create)P3: Thread Sidebar + Multi-Conversation Support
Goal: Add a thread sidebar listing all conversations, allowing the user to create, select, and switch between multiple concurrent chat conversations. Leverages the CONV-001 thread API.
Approach candidates:
Outputs:
runtime/static/css/sidebar.css— sidebar styles (responsive)runtime/static/js/sidebar.js— sidebar component: thread list, create, switch, deleteruntime/static/index.html— integrate sidebar layoutruntime/static/js/chat.js— thread-aware message routingruntime/static/js/thread_api.js— REST API client for thread CRUDtests/integration/test_thread_sidebar.pyAcceptance criteria:
Files touched:
runtime/static/index.html(amend),runtime/static/css/sidebar.css(create),runtime/static/js/sidebar.js(create),runtime/static/js/thread_api.js(create),runtime/static/js/chat.js(amend — thread context),tests/integration/test_thread_sidebar.py(create)P4: 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:
Outputs:
runtime/static/js/chat.js— markdown rendering, typing indicator component, status displayruntime/static/css/chat.css— markdown styles, typing animation, status badgesruntime/static/index.htmltests/integration/test_chat_ui_enhancements.pyAcceptance criteria:
code,code blocks, lists, links, images<script>tags in message content)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)P5: Auth/Session + Mobile Responsive + Error Handling
Goal: Add basic authentication/session management, ensure the UI works well on mobile devices, and polish error handling with retry capabilities.
Approach candidates:
Outputs:
runtime/static/login.html— minimal login page (if auth is implemented)runtime/static/js/auth.js— auth/session client: login, token refresh, session checkruntime/static/css/chat.css— responsive breakpoints, mobile layoutruntime/ws_handler.py— auth verification on WebSocket connectruntime/static/js/chat.jstests/integration/test_auth_session.pyandtests/integration/test_mobile_responsive.pyAcceptance criteria:
Files touched:
runtime/ws_handler.py(amend — auth on connect),runtime/static/login.html(create),runtime/static/js/auth.js(create),runtime/static/index.html(amend — auth check),runtime/static/js/chat.js(amend — error/retry),runtime/static/css/chat.css(amend — responsive),tests/integration/test_auth_session.py(create),tests/integration/test_mobile_responsive.py(create)Related
Priority
MEDIUM - User-facing feature
Auto-triage: needs decompose
Marked
triage-approved+needs-decompose. decompose-executor will pick this up and break it into implementable sub-issues.CONV-003: Web Chat Interfaceto Decompose: CONV-003: Web Chat InterfaceThis issue has been decomposed into the following sub-issues:
Each sub-issue has been labeled with
triage-approvedand is ready for queue routing.