fix(jetbrains): avoid unsafe UI initialization

This commit is contained in:
kirillk
2026-05-28 09:42:05 -04:00
parent c0a551667b
commit e3bfbc7054
2 changed files with 15 additions and 8 deletions
@@ -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)
}
@@ -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, RuntimeException> {
PromptPanel(
project = project,
onSend = { text -> sendPrompt(text) },
onAbort = { controller.abort() },
)
}
sessionContent.add(header, BorderLayout.NORTH)
sessionContent.add(scroll.component, BorderLayout.CENTER)