@@ -142,13 +142,14 @@ private extension WidgetWindowsController {
142142await updateWidgetsAndNotifyChangeOfEditor ( immediately: false )
143143case . mainWindowChanged:
144144await updateWidgetsAndNotifyChangeOfEditor ( immediately: false )
145- case . moved,
146- . resized,
147- . windowMoved,
148- . windowResized,
149- . windowMiniaturized,
150- . windowDeminiaturized:
145+ case . windowMiniaturized, . windowDeminiaturized:
151146await updateWidgets ( immediately: false )
147+ case . resized,
148+ . moved,
149+ . windowMoved,
150+ . windowResized:
151+ await updateWidgets ( immediately: false )
152+ await updateChatWindowLocation ( )
152153case . created, . uiElementDestroyed, . xcodeCompletionPanelChanged,
153154. applicationDeactivated:
154155continue
@@ -339,8 +340,7 @@ extension WidgetWindowsController {
339340
340341 // Generate a default location when no workspace is opened
341342private func generateDefaultLocation( ) -> WidgetLocation {
342- let mainScreen = NSScreen . main?? NSScreen . screens. first!
343- let chatPanelFrame = UpdateLocationStrategy . getChatPanelFrame ( mainScreen)
343+ let chatPanelFrame = UpdateLocationStrategy . getChatPanelFrame ( isAttachedToXcodeEnabled: false )
344344
345345return WidgetLocation (
346346 widgetFrame: . zero,
@@ -444,6 +444,18 @@ extension WidgetWindowsController {
444444
445445 updateWindowOpacityTask= task
446446}
447+
448+ @MainActor
449+ func updateChatWindowLocation( ) {
450+ let state = store. withState { $0}
451+ let isAttachedToXcodeEnabled = UserDefaults . shared. value ( for: \. autoAttachChatToXcode)
452+ if isAttachedToXcodeEnabled{
453+ if state. chatPanelState. isPanelDisplayed && !windows. chatPanelWindow. isWindowHidden{
454+ let frame = UpdateLocationStrategy . getChatPanelFrame ( isAttachedToXcodeEnabled: isAttachedToXcodeEnabled)
455+ windows. chatPanelWindow. setFrame ( frame, display: true , animate: true )
456+ }
457+ }
458+ }
447459
448460func updateWindowLocation(
449461 animated: Bool ,
@@ -481,8 +493,11 @@ extension WidgetWindowsController {
481493 animate: animated
482494)
483495}
484-
485- if isChatPanelDetached{
496+
497+ let isAttachedToXcodeEnabled = UserDefaults . shared. value ( for: \. autoAttachChatToXcode)
498+ if isAttachedToXcodeEnabled{
499+ // update in `updateChatWindowLocation`
500+ } else if isChatPanelDetached{
486501 // don't update it!
487502} else {
488503 windows. chatPanelWindow. setFrame (
@@ -523,10 +538,10 @@ extension WidgetWindowsController {
523538
524539@MainActor
525540func adjustChatPanelWindowLevel( ) async {
541+ let window = windows. chatPanelWindow
542+
526543let disableFloatOnTopWhenTheChatPanelIsDetached = UserDefaults . shared
527544. value ( for: \. disableFloatOnTopWhenTheChatPanelIsDetached)
528-
529- let window = windows. chatPanelWindow
530545guard disableFloatOnTopWhenTheChatPanelIsDetachedelse {
531546 window. setFloatOnTop ( true )
532547return
@@ -549,7 +564,7 @@ extension WidgetWindowsController {
549564} else {
550565false
551566}
552-
567+
553568if !floatOnTopWhenOverlapsXcode || !latestAppIsXcodeOrExtension{
554569 window. setFloatOnTop ( false )
555570} else {