From 22fc2b0ad4f53e9a2b69172fd0117ce095fc4d45 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 1263c0382..4bc74e692 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(); }; @@ -357,6 +356,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(); + } } };