ef85f5fd0b
Previously a mid-session SSE drop (server restart / network blip) left the stream closed until the next sign-in — cross-device reactivity (likes, playlist updates, request status, quarantine changes) silently died until app relaunch. Now onClosed / onFailure schedule a reconnect with exponential backoff (1s → 2s → … → 30s cap), reset to 1s on a successful onOpen. Reconnect only fires while signed in; sign-out's disconnect() cancels any pending retry. State swaps (connect/disconnect/scheduleReconnect) are @Synchronized since the OkHttp listener thread and the auth-cookie collector both touch currentSource + backoff. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>