diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/collapsed-sidebar-menu/collapsed-sidebar-menu.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/collapsed-sidebar-menu/collapsed-sidebar-menu.tsx index a57934dfb44..d29e742c0a0 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/collapsed-sidebar-menu/collapsed-sidebar-menu.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/collapsed-sidebar-menu/collapsed-sidebar-menu.tsx @@ -300,7 +300,7 @@ export function CollapsedChatFlyoutItem({ diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx index 0b0515f5b59..02d5fc061a1 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx @@ -195,6 +195,13 @@ const SidebarChatItem = memo(function SidebarChatItem({ }) { const dragGhostRef = useRef(null) + /** + * The trailing slot fits one glyph, and the dot wins over the pin: it reports + * transient state (a run in progress, or an unread reply elsewhere), while pinning + * is persistent and already conveyed by the row sorting to the top of the list. + */ + const showStatusDot = isActive || (!isCurrentRoute && isUnread) + function handleDragStart(e: React.DragEvent) { e.dataTransfer.effectAllowed = 'copyMove' e.dataTransfer.setData( @@ -238,12 +245,12 @@ const SidebarChatItem = memo(function SidebarChatItem({ >
{chat.name}
{chat.id !== 'new' && ( -
- {(isActive || (!isCurrentRoute && isUnread)) && ( +
+ {showStatusDot && (