@@ -123,7 +123,7 @@ func buildWelcomeMessageWithSnapshot(sess *engine.Session, sessionID string, reg
123123 // Status marks — green ✓ = present, dim ○ = none (not an error),
124124 // red × = actual problem (e.g. Docker enabled but not running). Using a
125125 // neutral mark for "none" avoids the alarming all-red look on a fresh repo.
126- markPresent := greenC + icons .CheckBold () + rst
126+ markPresent := greenC + ansiBold + icons .CheckBold () + rst
127127 markNone := sepC + "○" + rst
128128
129129 totalW := width
@@ -231,8 +231,13 @@ func buildWelcomeMessageWithSnapshot(sess *engine.Session, sessionID string, reg
231231// indicator on the welcome screen (moved out of the footer bar). When the
232232// CONTAINER badge is shown, the redundant iso segment is dropped.
233233func welcomeControlPlaneLine (sess * engine.Session , dimC , rst string , badgeShown bool ) string {
234+ boldIcon := func (color , glyph string ) string {
235+ return color + ansiBold + glyph + ansiReset + color
236+ }
234237 work := sess .WorkMode ()
235- modeIcon := icons .Cog ()
238+ // Use the denser terminal glyphs here. The UI already has the semantic
239+ // text; these icons should add contrast, not vanish into the line height.
240+ modeIcon := icons .Terminal ()
236241 modeLabel := "Action Mode"
237242 modeColor := ansiCyan
238243 switch work {
@@ -250,7 +255,7 @@ func welcomeControlPlaneLine(sess *engine.Session, dimC, rst string, badgeShown
250255 isoColor := ansiAmber
251256 iso := sess .Isolation ().ShortLabel ()
252257
253- isoSeg := " · " + isoColor + isoIcon + " " + iso + rst
258+ isoSeg := " · " + boldIcon ( isoColor , isoIcon ) + " " + iso + rst
254259 if badgeShown {
255260 isoSeg = ""
256261 }
@@ -285,9 +290,9 @@ func welcomeControlPlaneLine(sess *engine.Session, dimC, rst string, badgeShown
285290 }
286291 }
287292
288- return modeColor + modeIcon + " " + modeLabel + rst +
293+ return boldIcon ( modeColor , modeIcon ) + " " + modeLabel + rst +
289294 isoSeg +
290- " · " + trustColor + trustIcon + " " + trustLabel + rst
295+ " · " + boldIcon ( trustColor , trustIcon ) + " " + trustLabel + rst
291296}
292297
293298type mcpServerNamed interface {
@@ -310,6 +315,11 @@ func connectedMCPCount(registry *tool.Registry) int {
310315}
311316
312317func welcomeIndicatorRow (skillsCount int , agentsOK bool , mcpCount int , activeC , idleC , rst , markPresent , markNone string ) string {
318+ boldIcon := func (color , glyph string ) string {
319+ // Keep the label's color after making only the glyph bold. This gives
320+ // narrow Nerd Font icons more visual weight without bolding the copy.
321+ return color + ansiBold + glyph + ansiReset + color
322+ }
313323 skillsColor , skillsMark := idleC , markNone
314324 if skillsCount > 0 {
315325 skillsColor , skillsMark = ansiLightPink , markPresent
@@ -325,10 +335,10 @@ func welcomeIndicatorRow(skillsCount int, agentsOK bool, mcpCount int, activeC,
325335 mcpColor , mcpMark = ansiCyan , markPresent
326336 }
327337 return fmt .Sprintf (
328- "%s%s Skills (%d)%s %s · %s%s AGENTS.md%s %s · %s %s MCPs (%d)%s %s" ,
329- skillsColor , icons .Bolt (), skillsCount , rst , skillsMark ,
330- agentsColor , icons .Robot (), rst , agentsMark ,
331- mcpColor , icons .Network (), mcpCount , rst , mcpMark ,
338+ "%s Skills (%d)%s %s · %s AGENTS.md%s %s · %s MCPs (%d)%s %s" ,
339+ boldIcon ( skillsColor , icons .Bolt () ), skillsCount , rst , skillsMark ,
340+ boldIcon ( agentsColor , icons .Robot () ), rst , agentsMark ,
341+ boldIcon ( mcpColor , icons .Network () ), mcpCount , rst , mcpMark ,
332342 )
333343}
334344
0 commit comments