feat(vela-ui): add placeholder push-to-talk control shell

This commit is contained in:
2026-04-08 20:04:32 +02:00
parent 0d5b53be00
commit 103bb11954
7 changed files with 204 additions and 8 deletions

View File

@@ -35,7 +35,7 @@ Prove the end-to-end interaction model with mocked or stubbed providers.
- [x] bootstrap `vela-gateway` as a runnable Fastify app in the Yarn workspace
- [x] add the first UI voice-session shell with connect/disconnect controls and explicit WebSocket status
- [x] create a minimal mocked-turn UI with transcript and response text over the shared WebSocket session
- create a minimal UI with mic control
- [x] create a minimal UI with mic control
- [x] create a gateway WebSocket session skeleton
- [x] implement a mocked transcript/response vertical slice over the existing WebSocket session
- implement mocked STT flow for partial transcript events
@@ -184,10 +184,12 @@ Polish the system after the core voice loop is reliable.
- `apps/vela-ui` now boots as a minimal SvelteKit app with a starter page
- `apps/vela-ui` now includes a minimal voice-session shell that can connect to the gateway `/ws` endpoint and display developer-visible session status
- `apps/vela-ui` can now trigger one deterministic mocked turn while connected and render the mocked transcript plus assistant response for the active session
- `apps/vela-ui` now exposes a visible push-to-talk mic control shell that sends placeholder `input_audio.append` / `input_audio.commit` events without requesting browser mic permission or capturing real audio
- `apps/vela-ui` now includes browser-level coverage for the mocked transcript/response slice, including connect, disconnect, and disconnected-state trigger guarding
- `apps/vela-gateway` now boots as a minimal Fastify app with `/` and `/health` endpoints
- `apps/vela-gateway` now exposes a minimal `/ws` WebSocket session skeleton with ephemeral in-memory sessions and defensive message handling
- `apps/vela-gateway` now accepts `mocked.turn.trigger` and emits protocol-valid mocked transcript/response events with one in-flight mocked turn per session
- `apps/vela-gateway` now supports placeholder input-audio append/commit cycles before running another mocked turn on the same socket
- `apps/vela-ui` now exposes a cancel control for active mocked turns and keeps already-rendered transcript/response text visible after cancellation
- `apps/vela-gateway` now honors `response.cancel` during mocked turns by stopping pending mocked response events, returning the session to `idle`, and allowing a new mocked turn on the same socket
- `apps/vela-protocol` now provides the shared WebSocket event contract for the UI and gateway