Repository navigation
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Part of the voice-in-the-chat epic #333 (linked as parent). Waits on the epic's needs-review approval.
Mockup: see #333.
User story
As a person talking to eve by voice, I want my spoken turns and eve's replies shown as chat text, so that I can read answers while I talk.
Acceptance criteria
- The chat screen shows a mode control with three choices: Text, Talk and Hands-free.
- One tap on the mode control changes the mode.
- In Text and Talk modes, the chat shows each spoken turn and each reply as text.
- A spoken turn shows a microphone mark.
- In Talk mode, eve records speech only while the person holds the Talk button.
- In Talk mode, the chat shows the person's words while they speak.
- The speaker control sets whether eve speaks replies in Text and Talk modes.
- The speaker control is off on a device that has not set it.
- The device keeps the speaker setting after a reload.
- In Text and Talk modes, the person can attach an image to their next turn.
- The desktop and the phone show the same mode control.
What I'd notice: a Text · Talk segment above the chat box, a speaker button in the chat header, and a big hold-to-talk button in Talk.
Tasks
- Mode control in the chat composer (Hands-free segment present, wired in batch 2).
- Talk: hold button reusing
stt-manager.js; live words in the pending bubble. - Speaker control in the chat header; device-local, off by default.
- Microphone mark on spoken turns.
- Image attach beside the hold button.
- Carry
docs/mockups/fromfeat/333-voice-in-chatintomainwith this PR. - Feature map rows and a journey for the simple path.
Contract
Pinned by the planner on #333 ("#334: mode control, Text and Talk, speaker"); copied here so the ownership is on this issue.
Ownership:
- 1A (UI):
public/voice-modes.js(new),public/index.html,public/apple/voice.css,public/features/tts.js,public/app.js,public/panes/views.js,public/core/constants.js,public/message-renderer.js,CLAUDE.md,docs/mockups/voice-modes.html,docs/mockups/voice-modes.png. - 1B (partials):
public/stt-manager.js,public/stt-server-backend.js,public/message-dispatcher.js,ws/voice-messages.js,docs/api.md. - Tests:
test/e2e/g9-voice-modes.spec.js(new),docs/FEATURES.md(G9.38–G9.42, retire G9.32 and G9.34).
Interfaces, wire shapes and waits: see the contract comment on #333.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
barelyworkingcode commentedon Oct 10, 2026
Approved with epic #333 by the owner on 2026-10-10 (inherits the epic's approval). Scheduled last: start only after everything else is stable; #333 is blocked by #310 and #321.
Merge pull request #366 from barelyworkingcode/feat/334-voice-modes