From a7c0e07d8f83581c1e545a9ceedbeff4ac10fc15 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 6 Apr 2026 10:45:25 +0100 Subject: [PATCH] fix: flush pending changesets on actual reconnect, not just initial connect setUpSocket() only runs during initialization. Move handleUserChanges() to the reconnect code path so pending edits are flushed when the connection is re-established. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/static/js/collab_client.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/static/js/collab_client.ts b/src/static/js/collab_client.ts index a0d20fb2a..50271db38 100644 --- a/src/static/js/collab_client.ts +++ b/src/static/js/collab_client.ts @@ -152,7 +152,6 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad) const setUpSocket = () => { setChannelState('CONNECTED'); doDeferredActions(); - handleUserChanges(); initialStartConnectTime = Date.now(); @@ -364,6 +363,11 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad) if (newChannelState !== channelState) { channelState = newChannelState; callbacks.onChannelStateChange(channelState, moreInfo); + if (channelState === 'CONNECTED') { + // Flush any pending user changes whenever we become connected, + // including after a reconnect (not just the initial connection). + handleUserChanges(); + } } };