fix(jetbrains): show solid auto-approve shield

This commit is contained in:
kirillk
2026-05-26 17:06:57 -04:00
parent 050ab05360
commit 1eeab9f5ff
5 changed files with 15 additions and 29 deletions
@@ -69,6 +69,7 @@ class PromptPanel(
private val SEND_ICON: Icon = IconLoader.getIcon("/icons/send.svg", PromptPanel::class.java)
private val STOP_ICON: Icon = IconLoader.getIcon("/icons/stop.svg", PromptPanel::class.java)
private val SHIELD_ICON: Icon = IconLoader.getIcon("/icons/shield.svg", PromptPanel::class.java)
private val SHIELD_FILLED_ICON: Icon = IconLoader.getIcon("/icons/shield-filled.svg", PromptPanel::class.java)
}
val mode = ModePicker()
@@ -298,7 +299,7 @@ class PromptPanel(
private fun syncAutoApprove() {
auto.isSelected = autoApprove
auto.icon = SHIELD_ICON
auto.icon = if (autoApprove) SHIELD_FILLED_ICON else SHIELD_ICON
auto.toolTipText = if (autoApprove) {
KiloBundle.message("prompt.action.autoApprove.enabled.tooltip")
} else {
@@ -421,7 +422,6 @@ class PromptPanel(
override fun paintComponent(g: Graphics) {
if (over) paintHover(g)
super.paintComponent(g)
if (autoApprove) paintDot(g)
}
private fun paintHover(g: Graphics) {
@@ -436,24 +436,6 @@ class PromptPanel(
}
}
private fun paintDot(g: Graphics) {
val dot = JBUI.scale(SessionUiStyle.View.Prompt.AUTO_DOT_SIZE)
val off = JBUI.scale(SessionUiStyle.View.Prompt.AUTO_DOT_OFFSET)
val outline = JBUI.scale(SessionUiStyle.View.Prompt.AUTO_DOT_OUTLINE)
val x = width - dot - off
val y = height - dot - off
val g2 = g.create() as Graphics2D
try {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
g2.color = style.editorScheme.defaultBackground
g2.fillOval(x - outline, y - outline, dot + outline * 2, dot + outline * 2)
g2.color = SessionUiStyle.View.Prompt.autoApproveActive()
g2.fillOval(x, y, dot, dot)
} finally {
g2.dispose()
}
}
private fun sync(value: Boolean) {
if (over == value) return
over = value
@@ -49,9 +49,6 @@ object SessionUiStyle {
const val EDITOR_LINES = 3
const val EDITOR_CHROME = 16
const val SEND_BUTTON_SIZE = 24
const val AUTO_DOT_SIZE = 6
const val AUTO_DOT_OFFSET = 2
const val AUTO_DOT_OUTLINE = 2
const val CORNER_ARC = 6
const val FOCUS_WIDTH = 2
const val PANEL_VERTICAL_PADDING = 8
@@ -59,11 +56,6 @@ object SessionUiStyle {
const val CONTROL_GAP = 4
const val SHELL_VERTICAL_PADDING = 6
const val SHELL_HORIZONTAL_PADDING = 8
fun autoApproveActive(): Color = JBColor.namedColor(
"Kilo.Prompt.autoApproveActiveForeground",
Color(0x73, 0xc9, 0x91),
)
}
/** Reasoning block preview sizing. */
@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.99935 2.08203L17.0827 4.3737V9.92565C17.0827 14.0694 13.3327 16.2487 9.99935 18.047C6.66602 16.2487 2.91602 14.0694 2.91602 9.92565V4.3737L9.99935 2.08203Z" fill="#000000"/>
<path d="M7.49935 9.3737L9.16602 11.0404L12.4994 7.70703" stroke="#FFFFFF" stroke-width="1.4" stroke-linecap="square" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 437 B

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.99935 2.08203L17.0827 4.3737V9.92565C17.0827 14.0694 13.3327 16.2487 9.99935 18.047C6.66602 16.2487 2.91602 14.0694 2.91602 9.92565V4.3737L9.99935 2.08203Z" fill="#FFFFFF"/>
<path d="M7.49935 9.3737L9.16602 11.0404L12.4994 7.70703" stroke="#000000" stroke-width="1.4" stroke-linecap="square" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 437 B

@@ -131,13 +131,17 @@ class PromptPanelTest : BasePlatformTestCase() {
panel.setAutoApprove(true)
assertTrue(button.isSelected)
assertSame(icon, button.icon)
assertNotSame(icon, button.icon)
assertEquals(KiloBundle.message("prompt.action.autoApprove.disable"), button.accessibleContext.accessibleName)
assertEquals(KiloBundle.message("prompt.action.autoApprove.enabled.tooltip"), button.toolTipText)
button.doClick()
assertEquals(false, seen)
panel.setAutoApprove(false)
assertSame(icon, button.icon)
}
fun `test auto approve button sits next to send button`() {