)
})
diff --git a/src/renderer/src/components/sidebar/WorktreeList.tsx b/src/renderer/src/components/sidebar/WorktreeList.tsx
index 2259014c548..27222698b74 100644
--- a/src/renderer/src/components/sidebar/WorktreeList.tsx
+++ b/src/renderer/src/components/sidebar/WorktreeList.tsx
@@ -15,7 +15,6 @@ import {
FolderInput,
FolderPlus,
Plus,
- Server,
Shapes,
SlidersHorizontal,
Trash2
@@ -473,26 +472,26 @@ function SectionMetricsBadge({ count }: { count: number }): React.JSX.Element {
)
}
-function HostHeaderHealthIcon({ health }: { health: HostHeaderRow['health'] }): React.JSX.Element {
+function HostHeaderHealthIcon({
+ health
+}: {
+ health: HostHeaderRow['health']
+}): React.JSX.Element | null {
+ // Why: healthy is the default state — indicating it adds noise. Only states
+ // needing attention (connecting, blocked, error, disconnected) get a mark.
if (health === 'connecting') {
- return
+ return
}
if (health === 'blocked' || health === 'error') {
- return
+ return
}
- return (
-
- )
+ if (health === 'disconnected') {
+ return
+ }
+ return null
}
-function getHostHeaderDetail(row: HostHeaderRow): { text: string; isWarning: boolean } {
+function getHostHeaderDetail(row: HostHeaderRow): { text: string; isWarning: boolean } | null {
// Why: a blocked compatibility verdict gets a compact warning treatment so one
// skewed host stands out without altering how its siblings render.
if (row.health === 'blocked') {
@@ -512,7 +511,12 @@ function getHostHeaderDetail(row: HostHeaderRow): { text: string; isWarning: boo
isWarning: true
}
}
- return { text: row.detail, isWarning: false }
+ // Why: the transport suffix only earns space on remote hosts; "This
+ // computer" on Local Mac is noise.
+ if (row.kind !== 'local') {
+ return { text: row.detail, isWarning: false }
+ }
+ return null
}
function HostSectionHeader({
@@ -525,14 +529,14 @@ function HostSectionHeader({
const detail = getHostHeaderDetail(row)
return (
- {/* Why: host headers are group labels, not cards — they must read as a
- lighter tier than the host scope strip above, mirroring the other
- sidebar group headers (clickable row, hover chevron, same type). */}
+ {/* Why: host headers are quiet group labels, one tier below workspace
+ cards — uppercase muted type, no icon, status mark only when the
+ host needs attention (matches the design doc's sidebar mock). */}