From 0c599892ff418fdbb8506a6ce79658435fe4b66e Mon Sep 17 00:00:00 2001 From: Adam Bowker Date: Thu, 9 Jul 2026 17:50:51 -0400 Subject: [PATCH] fix(bluebird): hide redundant task title under Thread heading in task view In the channels task view (`/website/$channelId/tasks/$taskId`), the docked thread sidebar repeated the task title directly under its "Thread" heading. The TaskDetail header right next to it already names the task, so the line was noise. Add an optional `showTaskTitle` prop (default true) to `ThreadPanel`, forward it through `ThreadSidebar`, and pass `showTaskTitle={false}` from the task route. The channel home feed keeps the default, where the title still usefully identifies which task's thread was opened. Generated-By: PostHog Code Task-Id: 9379e6fe-3846-468c-a040-107290049030 --- .../ui/src/features/canvas/components/ThreadPanel.tsx | 8 +++++++- .../ui/src/features/canvas/components/ThreadSidebar.tsx | 4 ++++ .../router/routes/website/$channelId/tasks/$taskId.tsx | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/features/canvas/components/ThreadPanel.tsx b/packages/ui/src/features/canvas/components/ThreadPanel.tsx index 4cd1b38221..78a3760d85 100644 --- a/packages/ui/src/features/canvas/components/ThreadPanel.tsx +++ b/packages/ui/src/features/canvas/components/ThreadPanel.tsx @@ -135,6 +135,7 @@ export function ThreadPanel({ onClose, collapsed, onToggleCollapsed, + showTaskTitle = true, }: { taskId: string; /** The thread's task when the caller already has it; fetched otherwise. */ @@ -142,6 +143,11 @@ export function ThreadPanel({ onClose?: () => void; collapsed?: boolean; onToggleCollapsed?: () => void; + /** + * Show the task title under the "Thread" heading. Hidden in the task detail + * view, where the TaskDetail header already names the task. + */ + showTaskTitle?: boolean; }) { const client = useOptionalAuthenticatedClient(); const { data: currentUser } = useCurrentUser({ client }); @@ -240,7 +246,7 @@ export function ThreadPanel({ Thread - {task && ( + {showTaskTitle && task && ( {task.title || "Untitled task"} diff --git a/packages/ui/src/features/canvas/components/ThreadSidebar.tsx b/packages/ui/src/features/canvas/components/ThreadSidebar.tsx index 211248318f..fb4d7703dd 100644 --- a/packages/ui/src/features/canvas/components/ThreadSidebar.tsx +++ b/packages/ui/src/features/canvas/components/ThreadSidebar.tsx @@ -14,11 +14,14 @@ export function ThreadSidebar({ taskId, task, onClose, + showTaskTitle, }: { taskId: string; /** The thread's task when the caller already has it; fetched otherwise. */ task?: Task; onClose?: () => void; + /** Forwarded to ThreadPanel; hidden in the task detail view. */ + showTaskTitle?: boolean; }) { const collapsed = useThreadPanelStore((s) => s.collapsed); const width = useThreadPanelStore((s) => s.width); @@ -60,6 +63,7 @@ export function ThreadSidebar({ task={task} onClose={onClose} onToggleCollapsed={() => toggleCollapsed(true)} + showTaskTitle={showTaskTitle} /> ); diff --git a/packages/ui/src/router/routes/website/$channelId/tasks/$taskId.tsx b/packages/ui/src/router/routes/website/$channelId/tasks/$taskId.tsx index 80488d9cf0..636d36a766 100644 --- a/packages/ui/src/router/routes/website/$channelId/tasks/$taskId.tsx +++ b/packages/ui/src/router/routes/website/$channelId/tasks/$taskId.tsx @@ -68,7 +68,7 @@ function ChannelTaskDetailRoute() { channelId={channelId} /> - + ); }