feat(vela-ui): add placeholder push-to-talk control shell
This commit is contained in:
@@ -36,7 +36,7 @@ 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 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`), trigger one deterministic mocked turn while connected, and render the mocked user transcript plus mocked assistant response for the active session. Microphone capture, real provider integration, and audio playback are still future work.
|
||||
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`), expose mic control shell interactions that emit placeholder `input_audio.append` / `input_audio.commit` events, trigger one deterministic mocked turn while connected, and render the mocked user transcript plus mocked assistant response for the active session. This remains a shell only: there is no real microphone capture, real provider integration, or audio playback yet.
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
@@ -104,7 +104,7 @@ The current implementation is a minimal Fastify service with `/`, `/health`, and
|
||||
- `GET /ws` documents the route for plain HTTP clients and returns `426 Upgrade Required`
|
||||
- WebSocket upgrades on `/ws` create an ephemeral session immediately
|
||||
- the gateway sends `session.ready` followed by `session.state` (`idle`) when the socket is established
|
||||
- valid minimal client events can move the session between `idle` and `listening`
|
||||
- valid minimal client events, including placeholder `input_audio.append` / `input_audio.commit`, can move the session between `idle` and `listening`
|
||||
- `mocked.turn.trigger` drives a fixed transcript/response event sequence over the existing shared protocol
|
||||
- only one mocked turn is allowed in flight per session at a time
|
||||
- invalid JSON, invalid envelopes, and malformed frames are handled defensively so the process stays up
|
||||
@@ -112,15 +112,15 @@ The current implementation is a minimal Fastify service with `/`, `/health`, and
|
||||
### Current UI shell behavior
|
||||
|
||||
- renders a minimal developer-focused voice-session panel
|
||||
- exposes connect, disconnect, and mocked-turn controls
|
||||
- does not request microphone permission
|
||||
- does not send or process audio data
|
||||
- exposes connect, disconnect, mic-control shell interactions, and mocked-turn controls
|
||||
- does not request microphone permission or capture real microphone audio
|
||||
- only emits placeholder `input_audio.append` / `input_audio.commit` events; it does not send real audio data or play back audio
|
||||
- reads mocked transcript and mocked response events from the shared protocol contract
|
||||
|
||||
## Voice Pipeline
|
||||
|
||||
```text
|
||||
Mocked turn button → Gateway mocked session flow → Transcript events → Response text events → UI
|
||||
Mic control shell / mocked turn button → Placeholder `input_audio.append` / `input_audio.commit` or mocked session flow → Transcript events → Response text events → UI
|
||||
```
|
||||
|
||||
This mocked vertical slice intentionally stands in for the future real pipeline:
|
||||
|
||||
Reference in New Issue
Block a user