From bc4c704d12577f2e426c47e89179b8bf910d6740 Mon Sep 17 00:00:00 2001 From: Dev Lead Agent Date: Tue, 14 Apr 2026 05:21:04 +0000 Subject: [PATCH] fix(canvas): raise minimum text size in Legend and WorkspaceNode to meet WCAG readability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UX Audit Run 6 critical finding: Legend panel and workspace node cards used 8px and 9px text (6–7pt), which is physically unreadable and fails WCAG minimum guidelines. - Legend.tsx: raise all text-[8px]/[9px]/[10px] → text-[11px] across every sub-component (StatusItem labels, TierItem badge+label, CommItem icon+label, section headers) - WorkspaceNode.tsx: raise text-[8px]/[9px] → text-[10px] for all readable labels in the main card (status text, skill badges, task/error banners, tier badge, sub count, Team Members header) and TeamMemberChip primary name/role text Compact 7px elements inside TeamMemberChip (tier/sub badges, status micropills) retained to preserve dense canvas layout — only human-readable labels were upgraded. Co-Authored-By: Claude Sonnet 4.6 --- canvas/src/components/Legend.tsx | 18 ++++++++--------- canvas/src/components/WorkspaceNode.tsx | 26 ++++++++++++------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/canvas/src/components/Legend.tsx b/canvas/src/components/Legend.tsx index cac6f773..ea39f373 100644 --- a/canvas/src/components/Legend.tsx +++ b/canvas/src/components/Legend.tsx @@ -3,11 +3,11 @@ export function Legend() { return (
-
Legend
+
Legend
{/* Status */}
-
Status
+
Status
@@ -20,7 +20,7 @@ export function Legend() { {/* Tiers */}
-
Tier
+
Tier
@@ -30,7 +30,7 @@ export function Legend() { {/* Communication */}
-
Communication
+
Communication
@@ -46,7 +46,7 @@ function StatusItem({ color, label }: { color: string; label: string }) { return (
- {label} + {label}
); } @@ -54,8 +54,8 @@ function StatusItem({ color, label }: { color: string; label: string }) { function TierItem({ tier, label, color }: { tier: number; label: string; color: string }) { return (
- T{tier} - {label} + T{tier} + {label}
); } @@ -63,8 +63,8 @@ function TierItem({ tier, label, color }: { tier: number; label: string; color: function CommItem({ icon, color, label }: { icon: string; color: string; label: string }) { return (
- {icon} - {label} + {icon} + {label}
); } diff --git a/canvas/src/components/WorkspaceNode.tsx b/canvas/src/components/WorkspaceNode.tsx index 3b884d12..246fb512 100644 --- a/canvas/src/components/WorkspaceNode.tsx +++ b/canvas/src/components/WorkspaceNode.tsx @@ -126,11 +126,11 @@ export function WorkspaceNode({ id, data }: NodeProps>)
{hasChildren && ( - + {descendantCount} sub )} - + {tierCfg.label}
@@ -179,7 +179,7 @@ export function WorkspaceNode({ id, data }: NodeProps>) {skills.slice(0, 4).map((skill) => ( >) ))} {skills.length > 4 && ( - + +{skills.length - 4} )} @@ -206,7 +206,7 @@ export function WorkspaceNode({ id, data }: NodeProps>)
- {data.currentTask} + {data.currentTask}
)} @@ -220,15 +220,15 @@ export function WorkspaceNode({ id, data }: NodeProps>) }} className="flex items-center gap-1.5 mt-1 w-full bg-sky-950/30 px-2 py-1 rounded-md border border-sky-800/30 hover:bg-sky-900/40 transition-colors text-left" > - - Restart to apply changes + + Restart to apply changes )} {/* Bottom row: status / active tasks */}
{data.status !== "online" ? ( -
>) {data.activeTasks > 0 && (
- + {data.activeTasks} task{data.activeTasks > 1 ? "s" : ""}
@@ -251,7 +251,7 @@ export function WorkspaceNode({ id, data }: NodeProps>) {/* Degraded error preview */} {data.status === "degraded" && data.lastSampleError && (
{data.lastSampleError} @@ -294,7 +294,7 @@ function EmbeddedTeam({ members, depth, onSelect, onExtract }: { const useGrid = depth === 0 && members.length >= 2; return (
-
Team Members
+
Team Members
- + {data.name}
@@ -386,7 +386,7 @@ function TeamMemberChip({ {/* Role */} {data.role && ( -
{data.role}
+
{data.role}
)} {/* Skills */}