Sergei 8c0e36cae3 Fix Android voice bugs - STT restart and token retry
Critical Android fixes:

BUG 1 - STT not restarting after TTS:
- Problem: isSpeaking delay (300ms iOS visual) blocked Android STT
- Android audio focus conflict: STT cannot start while isSpeaking=true
- Fix: Platform-specific isSpeaking timing
  - iOS: 300ms delay (smooth visual indicator)
  - Android: immediate (allows STT to restart)

BUG 2 - Session expired loop:
- Problem: 401 error → token reset → no retry → user hears error
- Fix: Automatic token refresh and retry on 401
- Flow: 401 → clear token → get new token → retry request
- User never hears "Session expired" unless retry also fails

contexts/VoiceContext.tsx:12-23,387-360
2026-01-28 20:43:42 -08:00
..