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({