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

4.6 KiB
Raw Blame History

voice-input-settings.screen

S2 settings category — voice + input config. Implements per brief S §S2. 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.
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.

Out of scope

  • Per-language STT (English-only at P0).
  • Custom TTS voice training (defer).