feat(vela-ui): add voice session shell
Add a minimal UI shell that connects to the gateway WebSocket and exposes developer-visible session state. Align the architecture, protocol, setup, integration, and backlog docs with the current UI increment.
This commit is contained in:
@@ -36,18 +36,35 @@ The repository now includes separate runnable workspaces for the UI and gateway
|
||||
- PWA enabled
|
||||
- WebSocket client
|
||||
|
||||
The current implementation is a minimal SvelteKit app with a single starter page. PWA behavior, microphone capture, and the WebSocket client are later increments.
|
||||
The current implementation is a minimal SvelteKit app with a single voice-session shell page. The shipped UI can open and close a browser WebSocket connection to the gateway `/ws` endpoint, show explicit connection status (`not connected`, `connecting`, `connected`, `disconnected`, `error`), and surface session metadata for developers. Microphone capture, transcript rendering, interrupt controls, streamed assistant response display, and audio playback are not part of the current shell and remain future work.
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
Current shell responsibilities:
|
||||
|
||||
- connection state rendering
|
||||
- developer-oriented session metadata rendering
|
||||
- browser session connect/disconnect controls
|
||||
|
||||
Future UI responsibilities:
|
||||
|
||||
- audio capture from microphone
|
||||
- audio playback for TTS
|
||||
- UI state rendering
|
||||
- session management
|
||||
- broader voice-session UI state rendering
|
||||
- interrupt handling
|
||||
|
||||
#### Main Screen
|
||||
|
||||
Current shell:
|
||||
|
||||
- developer-focused voice-session panel
|
||||
- connect button
|
||||
- disconnect button
|
||||
- connection status indicator
|
||||
- session metadata display
|
||||
|
||||
Future interactive voice screen:
|
||||
|
||||
- large mic button
|
||||
- live transcript
|
||||
- streamed assistant response text
|
||||
@@ -85,6 +102,14 @@ The current implementation is a minimal Fastify service with `/`, `/health`, and
|
||||
- valid minimal client events can move the session between `idle` and `listening`
|
||||
- invalid JSON, invalid envelopes, and malformed frames are handled defensively so the process stays up
|
||||
|
||||
### Current UI shell behavior
|
||||
|
||||
- renders a minimal developer-focused voice-session panel
|
||||
- exposes connect and disconnect controls only
|
||||
- does not request microphone permission
|
||||
- does not send or process audio data
|
||||
- reads `session.ready`, `session.state`, and `error` messages from the shared protocol contract
|
||||
|
||||
## Voice Pipeline
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user