@@ -72,15 +72,6 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
7272 isConnectedRef . current = isConnected
7373 statusRef . current = status
7474
75- // Add debugging to track state changes
76- const contextIdRef = useRef ( Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) )
77- const contextId = contextIdRef . current
78- console . log ( `🐛 WebSocketProvider[${ contextId } ] render:` , {
79- isConnected,
80- wsExists : ! ! ws ,
81- wsState : ws ?. readyState ,
82- status : status . status
83- } )
8475
8576 const pendingRequests = useRef < Map < string , {
8677 addOutput : ( text : string ) => void
@@ -125,7 +116,7 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
125116 } , 100 )
126117 }
127118
128- const initializeConnection = ( ) => {
119+ const initializeConnection = useCallback ( ( ) => {
129120 let localWs : WebSocket | null = null
130121 let timeoutId : NodeJS . Timeout | null = null
131122
@@ -167,12 +158,10 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
167158
168159 case 'authenticated' :
169160 // Authentication successful, request version
170- console . log ( '🐛 WebSocket authenticated, calling setIsConnected(true)' )
171161 localWs ?. send ( JSON . stringify ( {
172162 type : 'version'
173163 } ) )
174164 setIsConnected ( true )
175- console . log ( '🐛 setIsConnected(true) called' )
176165 break
177166
178167 case 'version' :
@@ -292,7 +281,7 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
292281 }
293282
294283 connect ( )
295- }
284+ } , [ ] )
296285
297286 const handleCommandResult = ( result : CommandResult ) => {
298287 const request = pendingRequests . current . get ( result . requestId )
@@ -332,20 +321,6 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
332321 // Use refs to get current values (not stale closure values)
333322 const currentIsConnected = isConnectedRef . current
334323 const currentWs = wsRef . current
335- const currentStatus = statusRef . current
336-
337- // Add extensive debugging
338- console . log ( `🐛 executeCommand[${ contextId } ] called:` , {
339- command,
340- stateIsConnected : isConnected ,
341- refIsConnected : currentIsConnected ,
342- stateWs : ! ! ws ,
343- refWs : ! ! currentWs ,
344- wsState : currentWs ?. readyState ,
345- statusState : currentStatus
346- } )
347-
348- // addOutput(`🐛 DEBUG: refIsConnected=${currentIsConnected}, refWs=${!!currentWs}, wsState=${currentWs?.readyState}, status=${currentStatus.status}`)
349324
350325 if ( ! currentIsConnected || ! currentWs ) {
351326 addOutput ( 'Error: Not connected to daemon' )
@@ -378,7 +353,7 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
378353 }
379354
380355 // Generate unique request ID
381- const requestId = Date . now ( ) . toString ( ) + Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 )
356+ const requestId = Date . now ( ) . toString ( ) + Math . random ( ) . toString ( 36 ) . substring ( 2 , 11 )
382357
383358 // Store the request callbacks
384359 pendingRequests . current . set ( requestId , { addOutput, endOutput } )
@@ -401,12 +376,12 @@ export function WebSocketProvider({ children }: WebSocketProviderProps) {
401376 addOutput ( 'Error: Failed to send command to daemon' )
402377 setTimeout ( endOutput , 100 )
403378 }
404- } , [ contextId ] ) // Only depend on contextId since we use refs for state
379+ } , [ ] ) // Use refs for state to avoid stale closures
405380
406381 // Auto-connect on mount
407382 useEffect ( ( ) => {
408383 initializeConnection ( )
409- } , [ ] )
384+ } , [ initializeConnection ] )
410385
411386 const contextValue : WebSocketContextType = {
412387 status,
0 commit comments