cocottetech/@platform/codebase/@features/ai-copilot/docs/voice-input-settings.screen.md
natalie 1b719e1fd7 chore(bootstrap): initial V4 commit
Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac
working tree at ~/Code/@projects/@cocottetech/. node_modules and build
artifacts excluded via .gitignore.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 08:11:41 -07:00

81 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# voice-input-settings.screen
S2 settings category — voice + input config. Implements per [brief S §S2](./S-settings-ia.brief.md). Reached from settings-root.screen.md "Voice & input" card. Voice: working.
## Layout (full-screen sheet)
```
┌─────────────────────────────────────────────────┐
│ ◄ Settings Done │ 56pt
├─────────────────────────────────────────────────┤
│ │
│ ─── Speech-to-text ─── │
│ Recognizer: ● iOS native ○ Cloud (cocotte.io) │
│ Auto-punctuate: ☑ │
│ Auto-stop on silence: [ 2s ▼ ] │
│ │
│ ─── Text-to-speech (Cocotte's voice) ─── │
│ TTS engine: [ system-default ▼ ] │ speech-synthesis MCP picks
│ Voice character: [ warm-alto ▼ ] │ per available voices
│ Speak action receipts: ○ Always ● High-stakes ○ Off│
│ Speed: ━━●━━ 1.0×
│ │
│ ─── Mic / push-to-talk ─── │
│ Tap behavior: ● Push-to-talk ○ Tap-and-release │
│ Long-press behavior: [ Cook-mode ▼ ] │
│ Voice trigger word ("hey cocotte"): ☐ enabled │ opt-in
│ ⓘ Background mic listening uses more battery. │
│ │
│ ─── Composer input ─── │
│ Default keyboard: [ system ▼ ] │
│ Auto-correct: ☑ Predictive text: ☑ │
│ Markdown shortcuts (`**`, `_`, `>`): ☑ │
│ │
│ ─── Voice register override ─── │
│ ○ Auto (let Cocotte pick) ● Hearth ○ Working ○ Plain│
│ ⓘ Forces all Cocotte copy to one register. │
│ │
└─────────────────────────────────────────────────┘
```
## Components
| Component | Notes |
|---|---|
| STT | Recognizer choice (iOS-native = on-device; cloud = `cocotte.io` cloud transcription for hands-busy fidelity). |
| TTS | Engine + character + when-to-speak + speed. Hands off to [speech-synthesis MCP](./_engineering-v2-port-map.md). |
| Mic / PTT | Push-to-talk vs tap-and-release default; long-press routes to cook-mode or alternate. Voice-trigger opt-in (battery impact disclosed). |
| Composer input | Keyboard, autocorrect, predictive, markdown shortcuts. |
| Voice register override | Auto / hearth / working / plain. Auto = brief T register-by-surface; override = global. |
## States
1. **Default (iOS-native STT, system TTS)** — privacy-leaning defaults.
2. **Cloud STT selected** — banner: "Audio is sent to cocotte.io for transcription, retained 30s. Override at any time."
3. **Voice trigger on** — banner: "Background mic on. Battery impact: ~5% / day. Disable if unsure."
4. **Voice register forced** — chip on settings-root.screen.md: "Voice override active."
5. **VoiceOver** — same content read; mic settings have additional VoiceOver hints.
## Interactions
- **Tap recognizer radio** → confirm sheet on cloud-STT switch (privacy disclosure).
- **Tap TTS voice picker** → speech-synthesis MCP voice list.
- **Tap "Speak action receipts"** → updates listen-rule for chat-home receipts.
- **Tap voice register override** → commits; chat-home banner reflects.
## Edge cases
- **No microphone permission** — banner: "Cocotte doesn't have mic access. Grant in iOS Settings to enable voice."
- **TTS voice unavailable** (offline) — fallback to system default with chip "voice unavailable, using system."
- **Reduced-haptics + mic active** — single-haptic on mic-start; no haptic on each word recognized.
## Related
- [Brief S §S2](./S-settings-ia.brief.md) — parent.
- [`voice.md`](./00-system-voice.md) — voice register source.
- [Brief J](./_engineering-v2-port-map.md) — speech-synthesis MCP.
- [Brief X](./X-accessibility.brief.md) — accessibility override layer.
- [chat-home.screen.md](./chat-home.screen.md) — composer mic affordance source.
## Out of scope
- Per-language STT (English-only at P0).
- Custom TTS voice training (defer).