Problem
When internet connection drops during recording, app shows offline recording indicator/icon (suggesting it's buffering), but audio is actually lost instead of being saved for later sync.
Reproduction (Tested)
- Start recording with Omi device connected
- Say phrases 1-3 (internet connected)
- Disconnect internet (airplane mode / Wi-Fi off)
- Observe: app shows offline recording UI/icon
- Continue speaking phrases 4-9 (while disconnected)
- Reconnect internet
- Continue speaking phrases 10-11 (reconnected)
Expected
- Phrases 1-3: captured ✅
- Phrases 4-9: buffered locally → synced when connection returns ✅
- Phrases 10-11: captured ✅
Actual
- Phrases 1-3: captured ✅
- Phrases 4-9: LOST ❌ (despite offline recording UI showing)
- Phrase 10 onward: captured (only AFTER reconnect) ✅
Evidence
Test conversation: https://h.omi.me/conversations/f968265a-0ef8-4a6b-8088-41a90a20eb82
Shows phrases jump from 3 → 10, confirming 4-9 were lost.
Impact
CRITICAL DATA LOSS BUG:
- Users trust the offline recording UI indicator
- But audio is silently dropped instead of buffered
- No warning that recording failed
- Defeats core "always capture everything" promise
Root Cause (likely)
UI shows offline mode, but backend doesn't actually buffer audio when WebSocket disconnects. Audio frames are dropped (as confirmed in code analysis: no else clause when socket.state != connected).
Severity
HIGH — breaks trust in device reliability for critical recordings (meetings, etc.)
Problem
When internet connection drops during recording, app shows offline recording indicator/icon (suggesting it's buffering), but audio is actually lost instead of being saved for later sync.
Reproduction (Tested)
Expected
Actual
Evidence
Test conversation: https://h.omi.me/conversations/f968265a-0ef8-4a6b-8088-41a90a20eb82
Shows phrases jump from 3 → 10, confirming 4-9 were lost.
Impact
CRITICAL DATA LOSS BUG:
Root Cause (likely)
UI shows offline mode, but backend doesn't actually buffer audio when WebSocket disconnects. Audio frames are dropped (as confirmed in code analysis: no else clause when
socket.state != connected).Severity
HIGH — breaks trust in device reliability for critical recordings (meetings, etc.)