From e810986f44e4938977ecde45e3807ddfe1946163 Mon Sep 17 00:00:00 2001 From: UIUX Designer Date: Thu, 16 Apr 2026 07:53:00 +0000 Subject: [PATCH] =?UTF-8?q?fix(wcag):=20sweep=20text-zinc-600=E2=86=92zinc?= =?UTF-8?q?-500=20across=209=20components=20with=20small=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit zinc-600 on zinc-900/950 background ≈ 2.6:1 contrast (WCAG AA requires 4.5:1 for text under 18pt). Found 15 instances across 9 components where small-text data labels used this low-contrast pairing. Files and what they label: EmptyState.tsx:132 — skill count + model on template cards (new-user visible) SidePanel.tsx:230 — workspace ID in panel footer (copyable, functional) ActivityTab.tsx:210 — entry timestamp (8px) ActivityTab.tsx:214 — expand chevron affordance (9px) ActivityTab.tsx:236 — "→" direction arrow between agents (9px) ActivityTab.tsx:278 — entry ID (8px, font-mono) ScheduleTab.tsx:284 — empty-state description text (9px) ScheduleTab.tsx:320 — schedule prompt preview (9px, truncate) ScheduleTab.tsx:323 — last/next/run-count metadata row (8px) SkillsTab.tsx:380 — "Examples" section header (9px uppercase) TracesTab.tsx:132 — trace ID (8px, font-mono) AgentCommsPanel.tsx:166 — message timestamp (9px) secrets-section.tsx:59 — secret key name (9px, font-mono) secrets-section.tsx:308 — encryption notice (9px) MissingKeysModal.tsx:175 — missing key identifier (9px, font-mono) Fix: zinc-600 → zinc-500 across all 15 instances. Purely cosmetic — no logic, no layout, no interactive behaviour changed. Co-Authored-By: Claude Sonnet 4.6 --- canvas/src/components/EmptyState.tsx | 2 +- canvas/src/components/MissingKeysModal.tsx | 2 +- canvas/src/components/SidePanel.tsx | 2 +- canvas/src/components/tabs/ActivityTab.tsx | 8 ++++---- canvas/src/components/tabs/ScheduleTab.tsx | 6 +++--- canvas/src/components/tabs/SkillsTab.tsx | 2 +- canvas/src/components/tabs/TracesTab.tsx | 2 +- canvas/src/components/tabs/chat/AgentCommsPanel.tsx | 2 +- canvas/src/components/tabs/config/secrets-section.tsx | 4 ++-- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/canvas/src/components/EmptyState.tsx b/canvas/src/components/EmptyState.tsx index 0fb684be..ebaa0289 100644 --- a/canvas/src/components/EmptyState.tsx +++ b/canvas/src/components/EmptyState.tsx @@ -129,7 +129,7 @@ export function EmptyState() { {t.description || "No description"}

{t.skill_count > 0 && ( -

+

{t.skill_count} skill{t.skill_count !== 1 ? "s" : ""} {t.model ? ` · ${t.model}` : ""}

diff --git a/canvas/src/components/MissingKeysModal.tsx b/canvas/src/components/MissingKeysModal.tsx index ab66bece..31f3bb2d 100644 --- a/canvas/src/components/MissingKeysModal.tsx +++ b/canvas/src/components/MissingKeysModal.tsx @@ -172,7 +172,7 @@ export function MissingKeysModal({
{entry.label}
-
+
{entry.key}
diff --git a/canvas/src/components/SidePanel.tsx b/canvas/src/components/SidePanel.tsx index c655114c..34582ceb 100644 --- a/canvas/src/components/SidePanel.tsx +++ b/canvas/src/components/SidePanel.tsx @@ -227,7 +227,7 @@ export function SidePanel() { {/* Footer — workspace ID */}
- + {selectedNodeId}
diff --git a/canvas/src/components/tabs/ActivityTab.tsx b/canvas/src/components/tabs/ActivityTab.tsx index d61b0660..68d942a6 100644 --- a/canvas/src/components/tabs/ActivityTab.tsx +++ b/canvas/src/components/tabs/ActivityTab.tsx @@ -207,11 +207,11 @@ function ActivityRow({ )} - + {formatTime(entry.created_at)} - + {expanded ? "▼" : "▶"} @@ -233,7 +233,7 @@ function ActivityRow({ {resolveName(entry.source_id)} )} - + {entry.target_id && ( {resolveName(entry.target_id)} @@ -275,7 +275,7 @@ function ActivityRow({ {entry.response_body && ( )} -
+
ID: {entry.id}
diff --git a/canvas/src/components/tabs/ScheduleTab.tsx b/canvas/src/components/tabs/ScheduleTab.tsx index f82f6f86..3fb97b24 100644 --- a/canvas/src/components/tabs/ScheduleTab.tsx +++ b/canvas/src/components/tabs/ScheduleTab.tsx @@ -281,7 +281,7 @@ export function ScheduleTab({ workspaceId }: Props) {
No schedules yet
-
+
Add a schedule to run tasks automatically — daily scans, periodic reports, standup reminders.
@@ -317,10 +317,10 @@ export function ScheduleTab({ workspaceId }: Props) { ({sched.timezone}) )}
-
+
{sched.prompt.slice(0, 80)}{sched.prompt.length > 80 ? "..." : ""}
-
+
Last: {relativeTime(sched.last_run_at)} Next: {relativeTime(sched.next_run_at)} Runs: {sched.run_count} diff --git a/canvas/src/components/tabs/SkillsTab.tsx b/canvas/src/components/tabs/SkillsTab.tsx index 86bd9eca..d5085733 100644 --- a/canvas/src/components/tabs/SkillsTab.tsx +++ b/canvas/src/components/tabs/SkillsTab.tsx @@ -377,7 +377,7 @@ export function SkillsTab({ data }: Props) { {skill.examples.length > 0 && (
-
Examples
+
Examples
{skill.examples.slice(0, 2).map((example, index) => (
)} -
+
{trace.id}
diff --git a/canvas/src/components/tabs/chat/AgentCommsPanel.tsx b/canvas/src/components/tabs/chat/AgentCommsPanel.tsx index bcc83b75..18a36884 100644 --- a/canvas/src/components/tabs/chat/AgentCommsPanel.tsx +++ b/canvas/src/components/tabs/chat/AgentCommsPanel.tsx @@ -163,7 +163,7 @@ export function AgentCommsPanel({ workspaceId }: { workspaceId: string }) { {msg.responseText}
)} -
+
{new Date(msg.timestamp).toLocaleTimeString()}
diff --git a/canvas/src/components/tabs/config/secrets-section.tsx b/canvas/src/components/tabs/config/secrets-section.tsx index 33b8ccbb..6ffd2a15 100644 --- a/canvas/src/components/tabs/config/secrets-section.tsx +++ b/canvas/src/components/tabs/config/secrets-section.tsx @@ -56,7 +56,7 @@ function SecretRow({ label, secretKey, isSet, scope, globalMode, onSave, onDelet
{label}
- {secretKey} + {secretKey} {isSet && ( ••••• @@ -305,7 +305,7 @@ export function SecretsSection({ workspaceId }: { workspaceId: string }) { )} -
+
Values are encrypted and never exposed to the browser. {globalMode ? " Global keys are shared across all workspaces. Restart workspaces to apply changes."