From b14b1bf6788939f23a437dafd92322bdc6f83cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Wed, 19 Aug 2026 23:35:01 +0000 Subject: [PATCH] green that means "healthy" becomes the success token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fifteen sites across thirteen files where a raw green stood in for a semantic state: connection dots, health lights, completed-job ticks, the copied-to-clipboard check, the installed badge, the checksum-matched line. All of them meant "on / connected / succeeded", and matched each other only because several people happened to pick the same palette number. The values do move: --success is #16a34a where green-500 was #22c55e and emerald-500 #10b981. That is the point — one token, so a theme can change its mind once, and under plain.css (the leak-detection theme, which greys --success to #404040) these now go colourless instead of staying green. Left alone, deliberately: the confetti palette and the Start button in start-confetti-button, the duck-avatar debug HUD, MetricCard's up/down delta ramp, CommandBlock's check on its hardcoded dark block, the react-email template, and the plain.css comment that names the anti-pattern. Reds are untouched — that is a separate pass, so some ternaries now read bg-success : bg-red-500 until it happens. Co-Authored-By: Claude Opus 5 --- .../officer-web/Screens/Dashboard/Activity/ActivityScreen.tsx | 2 +- src/apps/officer-web/Screens/Dashboard/Browser/TabList.tsx | 2 +- src/apps/officer-web/Screens/Dashboard/Jobs/JobDetail.tsx | 2 +- src/apps/officer-web/Screens/Dashboard/Jobs/JobsPage.tsx | 2 +- .../Dashboard/Settings/IntegrationsSettings/ApifyConfig.tsx | 2 +- .../Dashboard/Settings/IntegrationsSettings/BrowserRelay.tsx | 4 ++-- .../Dashboard/Settings/IntegrationsSettings/GoogleAccount.tsx | 2 +- .../Settings/IntegrationsSettings/GoogleOAuthConfig.tsx | 2 +- .../Dashboard/Settings/ServerSettings/AIHarnessesSection.tsx | 4 ++-- src/workspaces/components/CheckMark.tsx | 2 +- src/workspaces/officerdev/src/apps/AppStore/AppStoreList.tsx | 2 +- src/workspaces/officerdev/src/apps/QrTransfer/Receiver.tsx | 2 +- src/workspaces/officerdev/src/apps/Terminal/Headers.tsx | 2 +- 13 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/apps/officer-web/Screens/Dashboard/Activity/ActivityScreen.tsx b/src/apps/officer-web/Screens/Dashboard/Activity/ActivityScreen.tsx index ef660cb1..efdc59a6 100644 --- a/src/apps/officer-web/Screens/Dashboard/Activity/ActivityScreen.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Activity/ActivityScreen.tsx @@ -102,7 +102,7 @@ export const ActivityScreen = () => { title={t.cwd} > {t.id} diff --git a/src/apps/officer-web/Screens/Dashboard/Browser/TabList.tsx b/src/apps/officer-web/Screens/Dashboard/Browser/TabList.tsx index 0f160e04..a5712f11 100644 --- a/src/apps/officer-web/Screens/Dashboard/Browser/TabList.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Browser/TabList.tsx @@ -43,7 +43,7 @@ export const TabList = () => { Browser
diff --git a/src/apps/officer-web/Screens/Dashboard/Jobs/JobDetail.tsx b/src/apps/officer-web/Screens/Dashboard/Jobs/JobDetail.tsx index 8a6d745a..917a9d96 100644 --- a/src/apps/officer-web/Screens/Dashboard/Jobs/JobDetail.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Jobs/JobDetail.tsx @@ -142,7 +142,7 @@ const StatusIcon = ({ status, className }: { status: string; className?: string switch (status) { case 'completed': case 'complete': - return ; + return ; case 'failed': case 'error': return ; diff --git a/src/apps/officer-web/Screens/Dashboard/Jobs/JobsPage.tsx b/src/apps/officer-web/Screens/Dashboard/Jobs/JobsPage.tsx index 6cb9202f..837c9b41 100644 --- a/src/apps/officer-web/Screens/Dashboard/Jobs/JobsPage.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Jobs/JobsPage.tsx @@ -44,7 +44,7 @@ const formatDate = (iso: string) => const StatusIcon = ({ status }: { status: JobSummary['status'] }) => { switch (status) { case 'completed': - return ; + return ; case 'failed': return ; case 'running': diff --git a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/ApifyConfig.tsx b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/ApifyConfig.tsx index fb82ebb4..d9d8c9e1 100644 --- a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/ApifyConfig.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/ApifyConfig.tsx @@ -54,7 +54,7 @@ export const ApifyConfig = () => { {status && (
{status.configured ? 'API token configured' : 'Not configured'} diff --git a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/BrowserRelay.tsx b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/BrowserRelay.tsx index e7a045ee..86dd223e 100644 --- a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/BrowserRelay.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/BrowserRelay.tsx @@ -63,7 +63,7 @@ export const BrowserRelay = () => {
{isConnected ? (
-
+

Connected

@@ -193,7 +193,7 @@ const CredentialRow = ({ label, value, masked, copied, onCopy }: CredentialRowPr onClick={onCopy} className="shrink-0 p-1 rounded hover:bg-duck-dark/10 dark:hover:bg-foreground/10 cursor-pointer" > - {copied ? : } + {copied ? : }

); diff --git a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleAccount.tsx b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleAccount.tsx index 5dc8b5cf..31aaf569 100644 --- a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleAccount.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleAccount.tsx @@ -71,7 +71,7 @@ export const GoogleAccount = () => { {status.connected ? ( <>
-
+

Connected

{status.email}

diff --git a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleOAuthConfig.tsx b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleOAuthConfig.tsx index f6beaa96..3a89495a 100644 --- a/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleOAuthConfig.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Settings/IntegrationsSettings/GoogleOAuthConfig.tsx @@ -221,7 +221,7 @@ const CredentialStatus = ({ status, isVerifying }: { status: VerifyStatus; isVer return (
-
+
{status.valid ? 'Credentials valid' : (status.error ?? 'Invalid credentials')} diff --git a/src/apps/officer-web/Screens/Dashboard/Settings/ServerSettings/AIHarnessesSection.tsx b/src/apps/officer-web/Screens/Dashboard/Settings/ServerSettings/AIHarnessesSection.tsx index 586bec8b..e3ea139c 100644 --- a/src/apps/officer-web/Screens/Dashboard/Settings/ServerSettings/AIHarnessesSection.tsx +++ b/src/apps/officer-web/Screens/Dashboard/Settings/ServerSettings/AIHarnessesSection.tsx @@ -290,7 +290,7 @@ export const AIHarnessesSection = () => { {localProviders.map((lp: LocalProviderEntry) => (
{lp.name} @@ -439,7 +439,7 @@ export const AIHarnessesSection = () => { { return ( -
+