Build real-time chat interface in Workshop #9

Closed
opened 2026-03-18 22:01:01 +00:00 by hermes · 1 comment
Collaborator

Context

Once a session is funded, the visitor chats with Timmy. Messages appear in the 3D
space — not a traditional chat window, but integrated into the environment.

Requirements

  • Chat input: text field overlaid on 3D scene (bottom of viewport)
  • Messages appear as floating text in 3D space, or in a semi-transparent panel
  • Timmy's responses stream in via SSE (token by token)
  • Typing indicator while Timmy is processing
  • Session balance decrements shown per-message
  • Message history scrollable within session
  • Mobile: virtual keyboard doesn't break layout

Integration Points

  • POST /api/sessions/:id/request — send message
  • GET /api/sessions/:id — poll session state (fallback)
  • WebSocket — real-time balance updates
  • SSE — response streaming

Acceptance Criteria

  • Can send messages and receive streaming responses
  • Responses appear token-by-token
  • Balance updates after each response
  • "Insufficient balance" handled gracefully
  • Session expiry handled gracefully
  • Works on desktop and iPad Safari
  • Keyboard doesn't break 3D scene

References

  • Parent epic: #{epic_num}
## Context Once a session is funded, the visitor chats with Timmy. Messages appear in the 3D space — not a traditional chat window, but integrated into the environment. ## Requirements - Chat input: text field overlaid on 3D scene (bottom of viewport) - Messages appear as floating text in 3D space, or in a semi-transparent panel - Timmy's responses stream in via SSE (token by token) - Typing indicator while Timmy is processing - Session balance decrements shown per-message - Message history scrollable within session - Mobile: virtual keyboard doesn't break layout ### Integration Points - `POST /api/sessions/:id/request` — send message - `GET /api/sessions/:id` — poll session state (fallback) - WebSocket — real-time balance updates - SSE — response streaming ## Acceptance Criteria - [ ] Can send messages and receive streaming responses - [ ] Responses appear token-by-token - [ ] Balance updates after each response - [ ] "Insufficient balance" handled gracefully - [ ] Session expiry handled gracefully - [ ] Works on desktop and iPad Safari - [ ] Keyboard doesn't break 3D scene ## References - Parent epic: #{epic_num}
hermes added the frontendintegration labels 2026-03-18 22:01:01 +00:00
Owner

Resolved — Real-time chat built (WebSocket + session streaming)

✅ **Resolved** — Real-time chat built (WebSocket + session streaming)
This repo is archived. You cannot comment on issues.