From 8d109fae1de2d66a9304c1d489d56a015cee1553 Mon Sep 17 00:00:00 2001 From: Theodore Li Date: Tue, 14 Apr 2026 09:30:05 -0700 Subject: [PATCH 1/3] fix(ui): handle long file paths and names in search modal --- .../search-modal/components/command-items.tsx | 27 ++++++++++++------- .../search-modal/components/search-groups.tsx | 2 +- .../sidebar/components/search-modal/utils.ts | 2 +- .../w/components/sidebar/sidebar.tsx | 8 +++--- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx index 7b845995acb..742a4a6765c 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx @@ -58,7 +58,7 @@ export const MemoizedWorkflowItem = memo( onSelect: () => void color: string name: string - folderPath?: string + folderPath?: string[] isCurrent?: boolean }) { return ( @@ -71,13 +71,20 @@ export const MemoizedWorkflowItem = memo( backgroundClip: 'padding-box', }} /> - - {name} - {isCurrent && ' (current)'} + + {name} + {isCurrent && (current)} - {folderPath && ( - - {folderPath} + {folderPath && folderPath.length > 0 && ( + + {folderPath.length > 1 && ( + + {folderPath.slice(0, -1).join(' / ')} + + )} + + {folderPath.length > 1 ? ` / ${folderPath[folderPath.length - 1]}` : folderPath[0]} + )} @@ -127,9 +134,9 @@ export const MemoizedWorkspaceItem = memo( }) { return ( - - {name} - {isCurrent && ' (current)'} + + {name} + {isCurrent && (current)} ) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/search-groups.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/search-groups.tsx index 4fd1ceaf9cb..1fd4707fabb 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/search-groups.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/search-groups.tsx @@ -163,7 +163,7 @@ export const WorkflowsGroup = memo(function WorkflowsGroup({ {items.map((workflow) => ( onSelect(workflow)} color={workflow.color} name={workflow.name} diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/utils.ts b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/utils.ts index 538d90c1a92..7d44c1d9550 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/utils.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/utils.ts @@ -11,7 +11,7 @@ export interface WorkflowItem { name: string href: string color: string - folderPath?: string + folderPath?: string[] isCurrent?: boolean } 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 f899d6f0895..587d17cc9e3 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx @@ -637,16 +637,14 @@ export const Sidebar = memo(function Sidebar() { () => regularWorkflows.map((workflow) => { const folderPath = workflow.folderId - ? getFolderPath(folderMap, workflow.folderId) - .map((folder) => folder.name) - .join(' / ') - : '' + ? getFolderPath(folderMap, workflow.folderId).map((folder) => folder.name) + : [] return { id: workflow.id, name: workflow.name, href: `/workspace/${workspaceId}/w/${workflow.id}`, color: workflow.color, - folderPath: folderPath || undefined, + folderPath: folderPath.length > 0 ? folderPath : undefined, isCurrent: workflow.id === workflowId, } }), From 5a66ddf30a97263ad2d98f7e153dd289fc9deaec Mon Sep 17 00:00:00 2001 From: Theodore Li Date: Tue, 14 Apr 2026 09:45:40 -0700 Subject: [PATCH 2/3] Handle long subfolder names --- .../search-modal/components/command-items.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx index 742a4a6765c..b04303bd5ab 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx @@ -78,13 +78,14 @@ export const MemoizedWorkflowItem = memo( {folderPath && folderPath.length > 0 && ( {folderPath.length > 1 && ( - - {folderPath.slice(0, -1).join(' / ')} - + <> + + {folderPath.slice(0, -1).join(' / ')} + + / + )} - - {folderPath.length > 1 ? ` / ${folderPath[folderPath.length - 1]}` : folderPath[0]} - + {folderPath[folderPath.length - 1]} )} From 110fc2ee92a40bf505b33d834f717cf82d956264 Mon Sep 17 00:00:00 2001 From: Theodore Li Date: Tue, 14 Apr 2026 09:46:32 -0700 Subject: [PATCH 3/3] fix memo --- .../components/search-modal/components/command-items.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx index b04303bd5ab..a618748eb6d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/components/command-items.tsx @@ -95,8 +95,10 @@ export const MemoizedWorkflowItem = memo( prev.value === next.value && prev.color === next.color && prev.name === next.name && - prev.folderPath === next.folderPath && - prev.isCurrent === next.isCurrent + prev.isCurrent === next.isCurrent && + (prev.folderPath === next.folderPath || + (prev.folderPath?.length === next.folderPath?.length && + (prev.folderPath ?? []).every((segment, i) => segment === next.folderPath?.[i]))) ) export const MemoizedTaskItem = memo(