diff --git a/src/renderer/src/components/sidebar/SidebarHeader.tsx b/src/renderer/src/components/sidebar/SidebarHeader.tsx index a943e8cd9cd..14e514e9a71 100644 --- a/src/renderer/src/components/sidebar/SidebarHeader.tsx +++ b/src/renderer/src/components/sidebar/SidebarHeader.tsx @@ -26,7 +26,7 @@ const GROUP_BY_OPTIONS = [ const PROPERTY_OPTIONS: { id: WorktreeCardProperty; label: string }[] = [ { id: 'status', label: 'Terminal status' }, - { id: 'unread', label: 'Unread indicator' }, + { id: 'unread', label: 'Bold unread workspaces' }, { id: 'ci', label: 'CI checks' }, { id: 'issue', label: 'Linked issue' }, { id: 'pr', label: 'Linked PR' }, diff --git a/src/renderer/src/components/sidebar/WorktreeCard.tsx b/src/renderer/src/components/sidebar/WorktreeCard.tsx index f394b077a67..924fe07b9d7 100644 --- a/src/renderer/src/components/sidebar/WorktreeCard.tsx +++ b/src/renderer/src/components/sidebar/WorktreeCard.tsx @@ -4,7 +4,7 @@ import { useShallow } from 'zustand/react/shallow' import { useAppStore } from '@/store' import { Badge } from '@/components/ui/badge' import { Tooltip, TooltipTrigger, TooltipContent } from '@/components/ui/tooltip' -import { Bell, GitMerge, LoaderCircle, CircleCheck, CircleX, Server, ServerOff } from 'lucide-react' +import { GitMerge, LoaderCircle, CircleCheck, CircleX, Server, ServerOff } from 'lucide-react' import StatusIndicator from './StatusIndicator' import CacheTimer from './CacheTimer' import WorktreeContextMenu from './WorktreeContextMenu' @@ -26,8 +26,7 @@ import { checksLabel, CONFLICT_OPERATION_LABELS, EMPTY_TABS, - EMPTY_BROWSER_TABS, - FilledBellIcon + EMPTY_BROWSER_TABS } from './WorktreeCardHelpers' import { IssueSection, PrSection, CommentSection } from './WorktreeCardMeta' @@ -53,7 +52,6 @@ const WorktreeCard = React.memo(function WorktreeCard({ hintNumber }: WorktreeCardProps) { const openModal = useAppStore((s) => s.openModal) - const updateWorktreeMeta = useAppStore((s) => s.updateWorktreeMeta) const fetchPRForBranch = useAppStore((s) => s.fetchPRForBranch) const fetchIssue = useAppStore((s) => s.fetchIssue) const cardProps = useAppStore((s) => s.worktreeCardProperties) @@ -317,16 +315,11 @@ const WorktreeCard = React.memo(function WorktreeCard({ }) }, [worktree.id, worktree.displayName, worktree.linkedIssue, worktree.comment, openModal]) - const handleToggleUnreadQuick = useCallback( - (event: React.MouseEvent) => { - event.preventDefault() - event.stopPropagation() - updateWorktreeMeta(worktree.id, { isUnread: !worktree.isUnread }) - }, - [worktree.id, worktree.isUnread, updateWorktreeMeta] - ) - - const unreadTooltip = worktree.isUnread ? 'Mark read' : 'Mark unread' + // Why: the 'unread' card property is the user's opt-out. When off, we render + // as if the workspace is read so bold emphasis never appears — matching the + // old "hide the bell" behavior exactly. The persisted `worktree.isUnread` + // flag is unchanged; only the rendering changes. + const showUnreadEmphasis = cardProps.includes('unread') && worktree.isUnread const cardBody = (
)} - {/* Status indicator on the left */} - {(cardProps.includes('status') || cardProps.includes('unread')) && ( -
- {cardProps.includes('status') && ( - <> -