diff --git a/packages/ui/src/sync/event-pipeline.ts b/packages/ui/src/sync/event-pipeline.ts index 77f0636c..70c0d21e 100644 --- a/packages/ui/src/sync/event-pipeline.ts +++ b/packages/ui/src/sync/event-pipeline.ts @@ -245,12 +245,19 @@ export function createEventPipeline(input: EventPipelineInput) { let heartbeat: ReturnType | undefined const markConnected = () => { + const wasDisconnected = disconnected disconnected = false if (hasConnected) { onReconnect?.() return } hasConnected = true + // First successful connect, but an earlier attempt already fired onDisconnect + // (e.g. sidecar was not ready at launch). Consumer state is stuck at + // isConnected=false — fire onReconnect to unstick it. + if (wasDisconnected) { + onReconnect?.() + } } const enqueueEvent = (directory: string, payload: Event) => {