From e3bfbc7054f34770aeec2bb775bbf13055051d4c Mon Sep 17 00:00:00 2001 From: kirillk Date: Thu, 28 May 2026 09:41:10 -0400 Subject: [PATCH] fix(jetbrains): avoid unsafe UI initialization --- .../ai/kilocode/client/KiloToolWindowFactory.kt | 10 +++++++--- .../kotlin/ai/kilocode/client/session/SessionUi.kt | 13 ++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/KiloToolWindowFactory.kt b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/KiloToolWindowFactory.kt index 99c596b3d7c..d449a5a1da4 100644 --- a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/KiloToolWindowFactory.kt +++ b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/KiloToolWindowFactory.kt @@ -4,7 +4,6 @@ import ai.kilocode.client.app.KiloWorkspaceService import ai.kilocode.client.app.Workspace import ai.kilocode.client.session.SessionSidePanelManager import ai.kilocode.log.KiloLog -import com.intellij.openapi.actionSystem.ActionGroup import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.components.service import com.intellij.openapi.project.DumbAware @@ -64,8 +63,13 @@ class KiloToolWindowFactory : ToolWindowFactory, DumbAware { toolWindow.contentManager.setSelectedContent(content) manager.newSession() - val toolbar = ActionManager.getInstance().getAction("Kilo.ToolWindowToolbar") - if (toolbar is ActionGroup) toolWindow.setTitleActions(toolbar.getChildren(null).toList()) + val actions = listOfNotNull( + ActionManager.getInstance().getAction("Kilo.NewSession"), + ActionManager.getInstance().getAction("Kilo.History"), + ActionManager.getInstance().getAction("Kilo.ShowProfile"), + ActionManager.getInstance().getAction("Kilo.Settings"), + ) + toolWindow.setTitleActions(actions) } catch (e: Exception) { LOG.error("Failed to set up Kilo tool window content", e) } diff --git a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt index 19628c239a0..7f502d36877 100644 --- a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt +++ b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/SessionUi.kt @@ -40,6 +40,7 @@ import com.intellij.ide.BrowserUtil import com.intellij.ide.ui.LafManagerListener import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.application.ReadAction import com.intellij.openapi.components.service import com.intellij.openapi.editor.colors.EditorColorsListener import com.intellij.openapi.editor.colors.EditorColorsManager @@ -256,11 +257,13 @@ class SessionUi( scroll = SessionScroll(root, sessionContent, messageBody, blankBody) connection = ConnectionPanel(this, controller) - prompt = PromptPanel( - project = project, - onSend = { text -> sendPrompt(text) }, - onAbort = { controller.abort() }, - ) + prompt = ReadAction.computeBlocking { + PromptPanel( + project = project, + onSend = { text -> sendPrompt(text) }, + onAbort = { controller.abort() }, + ) + } sessionContent.add(header, BorderLayout.NORTH) sessionContent.add(scroll.component, BorderLayout.CENTER)