Skip to content

CRITICAL: Offline recording UI appears but audio is lost when connection drops #5909

@omi-discord-vector

Description

@omi-discord-vector

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)

  1. Start recording with Omi device connected
  2. Say phrases 1-3 (internet connected)
  3. Disconnect internet (airplane mode / Wi-Fi off)
  4. Observe: app shows offline recording UI/icon
  5. Continue speaking phrases 4-9 (while disconnected)
  6. Reconnect internet
  7. 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.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcaptureLayer: Audio recording, device pairing, BLEflutterflutter workp1Priority: Critical (score 22-29)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions