From cf797410e1a5dea272961bc529de3e53a2c2c2fa Mon Sep 17 00:00:00 2001 From: shrimbly Date: Sat, 28 Mar 2026 20:02:40 +1300 Subject: [PATCH] design: improve workflow browser visual hierarchy and listing design - Add folder icon with background per row for clear visual anchoring - Show directory basename as secondary text under workflow name - Right-align timestamps as de-emphasized metadata - Add project count in header - Richer empty state with icon and two-line message - Border-based hover/active states instead of flat background tint - Footer actions get small icons for scannability - Deduplicate browseAndSetDir handler Co-Authored-By: Claude Opus 4.6 --- .../quickstart/WorkflowBrowserView.tsx | 159 +++++++++++------- 1 file changed, 97 insertions(+), 62 deletions(-) diff --git a/src/components/quickstart/WorkflowBrowserView.tsx b/src/components/quickstart/WorkflowBrowserView.tsx index 0e33b98a..07256067 100644 --- a/src/components/quickstart/WorkflowBrowserView.tsx +++ b/src/components/quickstart/WorkflowBrowserView.tsx @@ -33,6 +33,10 @@ function formatRelativeTime(timestamp: number): string { return `${months}mo ago`; } +function dirBasename(dirPath: string): string { + return dirPath.split("/").filter(Boolean).pop() || dirPath; +} + export function WorkflowBrowserView({ onBack, onWorkflowLoaded, @@ -71,27 +75,13 @@ export function WorkflowBrowserView({ } }, []); - // Fetch workflows when default directory is set useEffect(() => { if (defaultDir) { fetchWorkflows(defaultDir); } }, [defaultDir, fetchWorkflows]); - const handleChooseFolder = useCallback(async () => { - try { - const res = await fetch("/api/browse-directory"); - const result = await res.json(); - if (result.success && !result.cancelled && result.path) { - setWorkflowsDirectory(result.path); - setDefaultDir(result.path); - } - } catch { - setError("Failed to open directory picker"); - } - }, []); - - const handleChangeFolder = useCallback(async () => { + const browseAndSetDir = useCallback(async () => { try { const res = await fetch("/api/browse-directory"); const result = await res.json(); @@ -205,7 +195,7 @@ export function WorkflowBrowserView({

- ))} + + ); + })} )} {error && workflows.length > 0 && ( -

{error}

+

{error}

)} {/* Footer */} -
+
- ยท