Files
Clawd BotandClaude Opus 4.6 ca9b510922 chore: align with upstream openclaw/openclaw and overlay local additions
- Reset master to upstream/main (16,697 commits)
- Overlay 2,271 local-only files (skills, tools, workspace, configs, apps)
- Restore IDENTITY.md and USER.md templates
- Build verified, gateway running, Discord working

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-03 07:40:46 +01:00

11 KiB
Raw Permalink Blame History

Voice Surface UI Reference

Main Interface

┌─────────────────────────────────────────────┐
│                                             │
│         🎤 Voice Surface                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │                                     │   │
│  │    Ready to record                  │   │
│  │                                     │   │
│  └─────────────────────────────────────┘   │
│                                             │
│              ╭─────────╮                    │
│              │         │                    │
│              │  Hold   │  ← Push-to-Talk    │
│              │   to    │     Button         │
│              │  Talk   │                    │
│              │         │                    │
│              ╰─────────╯                    │
│                                             │
│          🟢 Connected                       │
│                                             │
└─────────────────────────────────────────────┘

During Recording

┌─────────────────────────────────────────────┐
│                                             │
│         🎤 Voice Surface                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │                                     │   │
│  │    Recording... (release to send)   │   │
│  │                                     │   │
│  └─────────────────────────────────────┘   │
│                                             │
│              ╭─────────╮                    │
│              │         │                    │
│              │  ◉ REC  │  ← Recording       │
│              │         │     (pulsing)      │
│              │         │                    │
│              │         │                    │
│              ╰─────────╯                    │
│                                             │
│          🟢 Connected                       │
│                                             │
└─────────────────────────────────────────────┘

Processing

┌─────────────────────────────────────────────┐
│                                             │
│         🎤 Voice Surface                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │                                     │   │
│  │    Processing audio...              │   │
│  │                                     │   │
│  └─────────────────────────────────────┘   │
│                                             │
│              ╭─────────╮                    │
│              │         │                    │
│              │  Hold   │  ← Disabled while  │
│              │   to    │     processing     │
│              │  Talk   │                    │
│              │         │                    │
│              ╰─────────╯                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │ You said:                           │   │
│  │ What's the weather today?           │   │
│  └─────────────────────────────────────┘   │
│                                             │
│          🟢 Connected                       │
│                                             │
└─────────────────────────────────────────────┘

Reply Received

┌─────────────────────────────────────────────┐
│                                             │
│         🎤 Voice Surface                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │                                     │   │
│  │    Playing response                 │   │
│  │                                     │   │
│  └─────────────────────────────────────┘   │
│                                             │
│              ╭─────────╮                    │
│              │         │                    │
│              │  Hold   │  ← Ready for next  │
│              │   to    │     interaction    │
│              │  Talk   │                    │
│              │         │                    │
│              ╰─────────╯                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │ You said:                           │   │
│  │ What's the weather today?           │   │
│  └─────────────────────────────────────┘   │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │ OpenClaw:                           │   │
│  │ I don't have real-time weather      │   │
│  │ data access, but I can help you...  │   │
│  └─────────────────────────────────────┘   │
│                                             │
│          🟢 Connected                       │
│                                             │
└─────────────────────────────────────────────┘

Status Messages

The status bar shows real-time pipeline progress:

  1. Ready to record - Idle state
  2. Recording... (release to send) - Capturing audio
  3. Sending audio... - Uploading to server
  4. Processing audio... - Server received data
  5. Audio converted to WAV - Format conversion (if needed)
  6. Transcribing... - Running STT
  7. Thinking... - Agent processing
  8. Generating speech... - Running TTS
  9. Playing response - Audio playback
  10. Ready to record - Back to idle

Error States

┌─────────────────────────────────────────────┐
│                                             │
│         🎤 Voice Surface                    │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │  ⚠️                                  │   │
│  │  Microphone access denied            │   │
│  │                                     │   │
│  └─────────────────────────────────────┘   │
│              (red background)              │
│                                             │
│              ╭─────────╮                    │
│              │         │                    │
│              │  Hold   │  ← Disabled        │
│              │   to    │                    │
│              │  Talk   │                    │
│              │         │                    │
│              ╰─────────╯                    │
│              (grayed out)                   │
│                                             │
│          🔴 Disconnected                    │
│                                             │
└─────────────────────────────────────────────┘

Color Scheme

  • Background: Purple gradient (667eea → 764ba2)
  • Card: White with transparency + blur (glassmorphism)
  • Button (idle): Red gradient (ff6b6b → ff4757)
  • Button (recording): Darker red (ee5a6f → c23866) with pulse animation
  • Button (disabled): Gray (#888)
  • Status (normal): White background with transparency
  • Status (error): Red background with transparency
  • Text: White throughout
  • Connection indicator: 🟢 Green (connected), 🔴 Red (disconnected)

Interactions

Mouse/Touch

  • Press button → Start recording
  • Release button → Stop & send
  • Move away while pressed → Stop & send

Keyboard

  • Spacebar press → Start recording
  • Spacebar release → Stop & send

Visual Feedback

  • Button scales up on hover (1.05x)
  • Button scales down on press (0.95x)
  • Button pulses during recording
  • Status box changes color on error
  • Transcript/reply boxes appear when data received

Accessibility Notes

  • Large touch target (200px × 200px button)
  • High contrast colors
  • Clear status messages
  • Keyboard support (spacebar)
  • Visual feedback for all states
  • No small text or icons requiring precision

Browser Compatibility

Tested on:

  • Chrome/Chromium 90+
  • Firefox 88+
  • Safari 14+ (macOS/iOS)
  • Edge 90+

Required APIs:

  • MediaRecorder (WebM/Opus support)
  • WebSocket
  • getUserMedia
  • Web Audio API (for playback)