diff --git a/apps/desktop/src/components/assistant-ui/tool-fallback.tsx b/apps/desktop/src/components/assistant-ui/tool-fallback.tsx
index 6f3e7edd340..1a1087f55f1 100644
--- a/apps/desktop/src/components/assistant-ui/tool-fallback.tsx
+++ b/apps/desktop/src/components/assistant-ui/tool-fallback.tsx
@@ -136,7 +136,7 @@ function ToolGlyph({ copy, icon, status }: { copy: ToolStatusCopy; icon?: string
const node = status ? (
statusGlyph(status, copy)
) : icon ? (
-
+
) : null
return node ? {node} : null
diff --git a/apps/desktop/src/components/chat/code-card.tsx b/apps/desktop/src/components/chat/code-card.tsx
index 46997caa4d7..02df72ea573 100644
--- a/apps/desktop/src/components/chat/code-card.tsx
+++ b/apps/desktop/src/components/chat/code-card.tsx
@@ -46,11 +46,12 @@ function CodeCardTitle({ className, children, ...props }: React.ComponentProps<'
)
}
-function CodeCardIcon({ className, ...props }: CodiconProps) {
+function CodeCardIcon({ className, filled = true, ...props }: CodiconProps) {
return (
)
diff --git a/apps/desktop/src/components/ui/codicon.tsx b/apps/desktop/src/components/ui/codicon.tsx
index b079216884c..daacd625b8a 100644
--- a/apps/desktop/src/components/ui/codicon.tsx
+++ b/apps/desktop/src/components/ui/codicon.tsx
@@ -3,16 +3,24 @@ import type * as React from 'react'
import { cn } from '@/lib/utils'
export interface CodiconProps extends React.HTMLAttributes {
+ /** Thickens outline glyphs so they read as filled at small sizes (tool rows). */
+ filled?: boolean
name: string
size?: number | string
spinning?: boolean
}
-export function Codicon({ className, name, size, spinning, style, ...props }: CodiconProps) {
+export function Codicon({ className, filled, name, size, spinning, style, ...props }: CodiconProps) {
return (
diff --git a/apps/desktop/src/styles.css b/apps/desktop/src/styles.css
index 2bd7556d848..6016ae2e18c 100644
--- a/apps/desktop/src/styles.css
+++ b/apps/desktop/src/styles.css
@@ -5,6 +5,14 @@
@import '@vscode/codicons/dist/codicon.css';
@custom-variant dark (&:is(.dark *));
+/* In-thread tool/code glyphs render codicons at ~14px. Outline icons read
+ thin at that scale; a hairline stroke on the glyph pseudo-element fills
+ them without swapping icon semantics. */
+.codicon.codicon-modifier-filled::before {
+ -webkit-text-stroke: 0.45px currentColor;
+ paint-order: stroke fill;
+}
+
/* Sidebar sections: tall viewports give each its own scroller; compact ones
(this variant) flatten everything into one shared scroll. See ChatSidebar. */
@custom-variant compact (@media (max-height: 768px));