diff --git a/docs/bold-instead-of-bell.md b/docs/bold-instead-of-bell.md index 98104e1dc55..a0af3dcd491 100644 --- a/docs/bold-instead-of-bell.md +++ b/docs/bold-instead-of-bell.md @@ -80,7 +80,9 @@ the unread signal. This applies to: - The title (`displayName`) — today `font-semibold text-foreground` (`WorktreeCard.tsx:430`) → on read cards becomes - `font-normal text-muted-foreground`. + `font-normal text-foreground` (weight only; color stays at + `text-foreground` to preserve hierarchy against the muted branch + row below, same reasoning as the repo badge). - The repo badge label — today `font-semibold text-foreground` (`WorktreeCard.tsx:508`) → drops to `font-normal text-foreground` on read cards to preserve hierarchy (the repo label must not read @@ -143,17 +145,14 @@ card property is enabled:** ``` - Apply to the display name (`WorktreeCard.tsx:430`): ```tsx - {/* Why: bold = unread is the single attention signal on this card, - mirroring DashboardAgentRow.tsx:262. The base class drops the - always-on font-semibold that was safe when a separate bell carried - the signal; now the title IS the signal, so it must de-bold on - read cards. */} + {/* Why: weight alone carries the unread signal; color stays at + text-foreground in both states so the title keeps hierarchy + against the muted branch row below (muting the title as well + flattened the card — same reasoning as the repo chip below). */}
{worktree.displayName} @@ -263,9 +262,9 @@ becomes: *unread state is automatic; to clear it, open the workspace.* | Card state | Title | Repo badge | Bell | Notes | |---|---|---|---|---| | unread + property on | `font-semibold text-foreground` | `font-semibold text-foreground` | — | Primary target behavior | -| unread + property off | `font-normal text-muted-foreground` | `font-normal text-foreground` | — | Opt-out active; store flag unchanged | -| read + property on | `font-normal text-muted-foreground` | `font-normal text-foreground` | — | Baseline read | -| read + property off | `font-normal text-muted-foreground` | `font-normal text-foreground` | — | Same as read + property on (no signal to hide) | +| unread + property off | `font-normal text-foreground` | `font-normal text-foreground` | — | Opt-out active; store flag unchanged | +| read + property on | `font-normal text-foreground` | `font-normal text-foreground` | — | Baseline read | +| read + property off | `font-normal text-foreground` | `font-normal text-foreground` | — | Same as read + property on (no signal to hide) | | SSH disconnected + unread | bold + `opacity-60` (inherited from card root) | bold + `opacity-60` | — | Dimmed but still bolder than the read cards next to it | | Deleting + unread | bold + `opacity-50 grayscale` | bold + `opacity-50 grayscale` | — | Deleting takes visual priority; acceptable | diff --git a/src/renderer/src/components/sidebar/WorktreeCard.tsx b/src/renderer/src/components/sidebar/WorktreeCard.tsx index 4458b1d893b..924fe07b9d7 100644 --- a/src/renderer/src/components/sidebar/WorktreeCard.tsx +++ b/src/renderer/src/components/sidebar/WorktreeCard.tsx @@ -393,17 +393,15 @@ const WorktreeCard = React.memo(function WorktreeCard({ )} - {/* Why: bold = unread is the single attention signal on this - card, mirroring DashboardAgentRow.tsx:262. The base class - drops the always-on font-semibold that was safe when a - separate bell carried the signal; now the title IS the - signal, so it must de-bold on read cards. */} + {/* Why: weight alone carries the unread signal; color stays + at text-foreground in both states so the title keeps + hierarchy against the muted branch row below (muting the + title as well flattened the card — same reasoning as the + repo chip comment below). */}
{/* Why: the card root is a non-interactive
, so aria-label diff --git a/src/renderer/src/components/sidebar/WorktreeCardMeta.tsx b/src/renderer/src/components/sidebar/WorktreeCardMeta.tsx index a0ec8dbf2b7..2bbe8e7ddab 100644 --- a/src/renderer/src/components/sidebar/WorktreeCardMeta.tsx +++ b/src/renderer/src/components/sidebar/WorktreeCardMeta.tsx @@ -97,7 +97,7 @@ export function PrSection({ pr, onClick }: PrSectionProps): React.JSX.Element { href={pr.url} target="_blank" rel="noreferrer" - className="text-foreground opacity-80 font-medium shrink-0 hover:text-foreground hover:underline" + className="text-foreground opacity-80 shrink-0 hover:text-foreground hover:underline" onClick={(e) => e.stopPropagation()} > PR #{pr.number}