diff --git a/canvas/components.json b/canvas/components.json index 8f8b0f3f..0b0911e0 100644 --- a/canvas/components.json +++ b/canvas/components.json @@ -4,10 +4,9 @@ "rsc": true, "tsx": true, "tailwind": { - "config": "tailwind.config.ts", "css": "src/app/globals.css", - "baseColor": "zinc", - "cssVariables": false + "baseColor": "neutral", + "cssVariables": true }, "aliases": { "components": "@/components", diff --git a/canvas/src/app/orgs/page.tsx b/canvas/src/app/orgs/page.tsx index 48bb7128..3c5576ef 100644 --- a/canvas/src/app/orgs/page.tsx +++ b/canvas/src/app/orgs/page.tsx @@ -283,7 +283,7 @@ function OrgCTA({ org }: { org: Org }) { return ( Open @@ -293,7 +293,7 @@ function OrgCTA({ org }: { org: Org }) { return ( Complete payment @@ -303,7 +303,7 @@ function OrgCTA({ org }: { org: Org }) { return ( Contact support @@ -395,7 +395,7 @@ function CreateOrgForm({ onCreated }: { onCreated: (slug: string) => void }) { diff --git a/canvas/src/app/page.tsx b/canvas/src/app/page.tsx index e3759b71..137cd623 100644 --- a/canvas/src/app/page.tsx +++ b/canvas/src/app/page.tsx @@ -87,7 +87,7 @@ export default function Home() { setHydrationError(null); window.location.reload(); }} - className="px-4 py-2 bg-accent-strong hover:bg-accent text-ink rounded-md text-sm" + className="px-4 py-2 bg-accent-strong hover:bg-accent text-white rounded-md text-sm" > Retry @@ -129,7 +129,7 @@ brew services start redis`}

diff --git a/canvas/src/components/ApprovalBanner.tsx b/canvas/src/components/ApprovalBanner.tsx index fdbbb461..5d36efc5 100644 --- a/canvas/src/components/ApprovalBanner.tsx +++ b/canvas/src/components/ApprovalBanner.tsx @@ -73,14 +73,14 @@ export function ApprovalBanner() { diff --git a/canvas/src/components/AuditTrailPanel.tsx b/canvas/src/components/AuditTrailPanel.tsx index a688046a..434347bd 100644 --- a/canvas/src/components/AuditTrailPanel.tsx +++ b/canvas/src/components/AuditTrailPanel.tsx @@ -174,7 +174,7 @@ export function AuditTrailPanel({ workspaceId }: Props) { {entries.length === 0 ? ( /* Empty state */
- +

No audit events yet

Delegation, decision, gate, and human-in-the-loop events will appear here. diff --git a/canvas/src/components/BatchActionBar.tsx b/canvas/src/components/BatchActionBar.tsx index d4c4a540..004b3205 100644 --- a/canvas/src/components/BatchActionBar.tsx +++ b/canvas/src/components/BatchActionBar.tsx @@ -83,7 +83,7 @@ export function BatchActionBar() { className="fixed bottom-6 left-1/2 -translate-x-1/2 z-[200] flex items-center gap-3 px-4 py-2.5 rounded-2xl bg-surface-sunken/95 border border-line/70 shadow-2xl shadow-black/50 backdrop-blur-md" > {/* Selection count badge */} - + {count} selected diff --git a/canvas/src/components/ConfirmDialog.tsx b/canvas/src/components/ConfirmDialog.tsx index 773f2709..93961db4 100644 --- a/canvas/src/components/ConfirmDialog.tsx +++ b/canvas/src/components/ConfirmDialog.tsx @@ -93,10 +93,10 @@ export function ConfirmDialog({ const confirmColors = confirmVariant === "danger" - ? "bg-red-600 hover:bg-red-500 text-ink" + ? "bg-red-600 hover:bg-red-500 text-white" : confirmVariant === "warning" - ? "bg-amber-600 hover:bg-amber-500 text-ink" - : "bg-accent-strong hover:bg-accent text-ink"; + ? "bg-amber-600 hover:bg-amber-500 text-white" + : "bg-accent-strong hover:bg-accent text-white"; // Render via Portal so the fixed-position dialog escapes any containing block // (e.g. parents with transform, filter, will-change that break position:fixed). diff --git a/canvas/src/components/ConversationTraceModal.tsx b/canvas/src/components/ConversationTraceModal.tsx index 378beda0..60d6e3ff 100644 --- a/canvas/src/components/ConversationTraceModal.tsx +++ b/canvas/src/components/ConversationTraceModal.tsx @@ -161,7 +161,7 @@ export function ConversationTraceModal({ open, workspaceId: _workspaceId, onClos ? "bg-cyan-500" : isReceive ? "bg-accent" - : "bg-zinc-600" + : "bg-surface-card" }`} />

diff --git a/canvas/src/components/CookieConsent.tsx b/canvas/src/components/CookieConsent.tsx index 8d6f7c74..6b607b04 100644 --- a/canvas/src/components/CookieConsent.tsx +++ b/canvas/src/components/CookieConsent.tsx @@ -137,7 +137,7 @@ export function CookieConsent() { diff --git a/canvas/src/components/CreateWorkspaceDialog.tsx b/canvas/src/components/CreateWorkspaceDialog.tsx index f4702127..b47e2564 100644 --- a/canvas/src/components/CreateWorkspaceDialog.tsx +++ b/canvas/src/components/CreateWorkspaceDialog.tsx @@ -310,7 +310,7 @@ export function CreateWorkspaceButton() { return ( - diff --git a/canvas/src/components/DeleteCascadeConfirmDialog.tsx b/canvas/src/components/DeleteCascadeConfirmDialog.tsx index 87c3e16d..949437c3 100644 --- a/canvas/src/components/DeleteCascadeConfirmDialog.tsx +++ b/canvas/src/components/DeleteCascadeConfirmDialog.tsx @@ -155,7 +155,7 @@ export function DeleteCascadeConfirmDialog({ disabled={!checked} className={`px-3.5 py-1.5 text-[13px] rounded-lg transition-colors ${checked - ? "bg-red-600 hover:bg-red-500 text-ink cursor-pointer" + ? "bg-red-600 hover:bg-red-500 text-white cursor-pointer" : "bg-red-900/30 text-bad/40 cursor-not-allowed" }`} > diff --git a/canvas/src/components/EmptyState.tsx b/canvas/src/components/EmptyState.tsx index 57d395c9..2452ef1a 100644 --- a/canvas/src/components/EmptyState.tsx +++ b/canvas/src/components/EmptyState.tsx @@ -169,9 +169,9 @@ export function EmptyState() {
Drag to nest workspaces into teams - | + | Right-click for actions - | + | Press ⌘K to search
diff --git a/canvas/src/components/ErrorBoundary.tsx b/canvas/src/components/ErrorBoundary.tsx index a84a1f67..5925b135 100644 --- a/canvas/src/components/ErrorBoundary.tsx +++ b/canvas/src/components/ErrorBoundary.tsx @@ -83,7 +83,7 @@ export class ErrorBoundary extends React.Component< diff --git a/canvas/src/components/ExternalConnectModal.tsx b/canvas/src/components/ExternalConnectModal.tsx index 7809bfda..ba63005b 100644 --- a/canvas/src/components/ExternalConnectModal.tsx +++ b/canvas/src/components/ExternalConnectModal.tsx @@ -256,7 +256,7 @@ function SnippetBlock({ diff --git a/canvas/src/components/MemoryInspectorPanel.tsx b/canvas/src/components/MemoryInspectorPanel.tsx index 2fc2e4dd..1c43f194 100644 --- a/canvas/src/components/MemoryInspectorPanel.tsx +++ b/canvas/src/components/MemoryInspectorPanel.tsx @@ -167,7 +167,7 @@ export function MemoryInspectorPanel({ workspaceId }: Props) { className={[ "px-3 py-1 text-[11px] rounded transition-colors", activeScope === scope - ? "bg-accent-strong text-ink" + ? "bg-accent-strong text-white" : "bg-surface-card text-ink-mid hover:bg-surface-card hover:text-ink", ].join(" ")} > @@ -269,7 +269,7 @@ export function MemoryInspectorPanel({ workspaceId }: Props) { ) : entries.length === 0 ? ( debouncedQuery ? (
- +

No memories match your search

@@ -290,7 +290,7 @@ export function MemoryInspectorPanel({ workspaceId }: Props) {
) : (
- +

No {activeScope} memories

{activeScope === "LOCAL" diff --git a/canvas/src/components/MissingKeysModal.tsx b/canvas/src/components/MissingKeysModal.tsx index a4f71408..09d20cdc 100644 --- a/canvas/src/components/MissingKeysModal.tsx +++ b/canvas/src/components/MissingKeysModal.tsx @@ -451,7 +451,7 @@ function ProviderPickerModal({ @@ -492,7 +492,7 @@ function ProviderPickerModal({ !selectorValue.providerId || (showModelInput && model.trim() === "") } - className="px-3.5 py-1.5 text-[12px] bg-accent-strong hover:bg-accent text-ink rounded-lg transition-colors disabled:opacity-40" + className="px-3.5 py-1.5 text-[12px] bg-accent-strong hover:bg-accent text-white rounded-lg transition-colors disabled:opacity-40" > {allSaved ? "Deploy" : entries.length > 1 ? "Add Keys" : "Add Key"} @@ -706,7 +706,7 @@ function AllKeysModal({ type="button" onClick={() => handleSaveKey(index)} disabled={!entry.value.trim() || entry.saving} - className="px-3 py-1.5 bg-accent-strong hover:bg-accent text-[11px] rounded text-ink disabled:opacity-30 transition-colors shrink-0" + className="px-3 py-1.5 bg-accent-strong hover:bg-accent text-[11px] rounded text-white disabled:opacity-30 transition-colors shrink-0" > {entry.saving ? "..." : "Save"} @@ -748,7 +748,7 @@ function AllKeysModal({ type="button" onClick={handleAddKeysAndDeploy} disabled={!allSaved || anySaving} - className="px-3.5 py-1.5 text-[12px] bg-accent-strong hover:bg-accent text-ink rounded-lg transition-colors disabled:opacity-40" + className="px-3.5 py-1.5 text-[12px] bg-accent-strong hover:bg-accent text-white rounded-lg transition-colors disabled:opacity-40" > {anySaving ? "Saving..." : allSaved ? "Deploy" : "Add Keys"} diff --git a/canvas/src/components/OnboardingWizard.tsx b/canvas/src/components/OnboardingWizard.tsx index 28723942..501fa957 100644 --- a/canvas/src/components/OnboardingWizard.tsx +++ b/canvas/src/components/OnboardingWizard.tsx @@ -181,7 +181,7 @@ export function OnboardingWizard() { @@ -428,7 +428,7 @@ function StrictEnvRow({ type="button" onClick={() => onSave(envKey)} disabled={d?.saving || !d?.value.trim()} - className="px-2 py-1 text-[10px] rounded bg-accent-strong hover:bg-accent text-ink disabled:opacity-40 disabled:cursor-not-allowed" + className="px-2 py-1 text-[10px] rounded bg-accent-strong hover:bg-accent text-white disabled:opacity-40 disabled:cursor-not-allowed" > {d?.saving ? "…" : "Save"} @@ -520,7 +520,7 @@ function AnyOfEnvGroup({ type="button" onClick={() => onSave(m)} disabled={d?.saving || !d?.value.trim()} - className="px-2 py-1 text-[10px] rounded bg-accent-strong hover:bg-accent text-ink disabled:opacity-40 disabled:cursor-not-allowed" + className="px-2 py-1 text-[10px] rounded bg-accent-strong hover:bg-accent text-white disabled:opacity-40 disabled:cursor-not-allowed" > {d?.saving ? "…" : "Save"} diff --git a/canvas/src/components/PricingTable.tsx b/canvas/src/components/PricingTable.tsx index 6b652b5f..8bd58f93 100644 --- a/canvas/src/components/PricingTable.tsx +++ b/canvas/src/components/PricingTable.tsx @@ -130,7 +130,7 @@ function PlanCard({ disabled={loading} className={`mt-6 rounded-lg px-4 py-3 text-sm font-medium ${ plan.highlighted - ? "bg-accent-strong text-ink hover:bg-accent disabled:bg-blue-900" + ? "bg-accent-strong text-white hover:bg-accent disabled:bg-blue-900" : "border border-line bg-surface-sunken text-ink hover:bg-surface-card disabled:opacity-50" }`} > diff --git a/canvas/src/components/ProvisioningTimeout.tsx b/canvas/src/components/ProvisioningTimeout.tsx index df900f2f..2602d9cb 100644 --- a/canvas/src/components/ProvisioningTimeout.tsx +++ b/canvas/src/components/ProvisioningTimeout.tsx @@ -341,7 +341,7 @@ export function ProvisioningTimeout({ type="button" onClick={() => handleRetry(entry.workspaceId)} disabled={isRetrying || isCancelling || retryCooldown.has(entry.workspaceId)} - className="px-3 py-1.5 bg-amber-600 hover:bg-amber-500 text-[11px] font-medium rounded-lg text-ink disabled:opacity-40 transition-colors" + className="px-3 py-1.5 bg-amber-600 hover:bg-amber-500 text-[11px] font-medium rounded-lg text-white disabled:opacity-40 transition-colors" > {isRetrying ? "Retrying..." : retryCooldown.has(entry.workspaceId) ? "Wait..." : "Retry"} @@ -389,7 +389,7 @@ export function ProvisioningTimeout({ diff --git a/canvas/src/components/TemplatePalette.tsx b/canvas/src/components/TemplatePalette.tsx index 79252c23..1acca3e0 100644 --- a/canvas/src/components/TemplatePalette.tsx +++ b/canvas/src/components/TemplatePalette.tsx @@ -476,7 +476,7 @@ export function TemplatePalette() { onClick={() => setOpen(!open)} className={`fixed top-4 left-4 z-40 w-9 h-9 flex items-center justify-center rounded-lg transition-colors ${ open - ? "bg-accent-strong text-ink" + ? "bg-accent-strong text-white" : "bg-surface-sunken/90 border border-line/50 text-ink-mid hover:text-ink hover:border-line" }`} title="Template Palette" diff --git a/canvas/src/components/TermsGate.tsx b/canvas/src/components/TermsGate.tsx index aafb23d8..cc32b9a6 100644 --- a/canvas/src/components/TermsGate.tsx +++ b/canvas/src/components/TermsGate.tsx @@ -105,7 +105,7 @@ export function TermsGate({ children }: { children: React.ReactNode }) { type="button" onClick={accept} disabled={submitting} - className="rounded bg-emerald-600 px-4 py-2 text-sm font-medium text-ink hover:bg-emerald-500 disabled:opacity-50" + className="rounded bg-emerald-600 px-4 py-2 text-sm font-medium text-white hover:bg-emerald-500 disabled:opacity-50" > {submitting ? "Saving…" : "I agree"} diff --git a/canvas/src/components/Toolbar.tsx b/canvas/src/components/Toolbar.tsx index 68d15eab..230e5227 100644 --- a/canvas/src/components/Toolbar.tsx +++ b/canvas/src/components/Toolbar.tsx @@ -154,7 +154,7 @@ export function Toolbar() { {counts.failed > 0 && ( )} - + {counts.roots} workspace{counts.roots !== 1 ? "s" : ""} {counts.children > 0 && + {counts.children} sub} diff --git a/canvas/src/components/WorkspaceNode.tsx b/canvas/src/components/WorkspaceNode.tsx index 400a7cc6..8dbdeb38 100644 --- a/canvas/src/components/WorkspaceNode.tsx +++ b/canvas/src/components/WorkspaceNode.tsx @@ -165,7 +165,7 @@ export function WorkspaceNode({ id, data }: NodeProps>)

@@ -318,7 +318,7 @@ export function WorkspaceNode({ id, data }: NodeProps>)
diff --git a/canvas/src/components/canvas/OrgCancelButton.tsx b/canvas/src/components/canvas/OrgCancelButton.tsx index d2da6fda..644b2e01 100644 --- a/canvas/src/components/canvas/OrgCancelButton.tsx +++ b/canvas/src/components/canvas/OrgCancelButton.tsx @@ -130,7 +130,7 @@ export function OrgCancelButton({ rootId, rootName, workspaceCount }: Props) { type="button" onClick={() => setConfirming(false)} disabled={submitting} - className="px-2 py-0.5 rounded bg-surface-card/80 hover:bg-zinc-600 text-[10px] text-ink" + className="px-2 py-0.5 rounded bg-surface-card/80 hover:bg-surface-card text-[10px] text-ink" > No diff --git a/canvas/src/components/tabs/ActivityTab.tsx b/canvas/src/components/tabs/ActivityTab.tsx index 035c0520..9a144cfe 100644 --- a/canvas/src/components/tabs/ActivityTab.tsx +++ b/canvas/src/components/tabs/ActivityTab.tsx @@ -111,7 +111,7 @@ export function ActivityTab({ workspaceId }: Props) { @@ -137,7 +137,7 @@ export function ActivityTab({ workspaceId }: Props) { {!loading && !error && activities.length === 0 && (
No activity recorded yet
-
+
Activity logs appear when agents communicate or perform tasks
diff --git a/canvas/src/components/tabs/BudgetSection.tsx b/canvas/src/components/tabs/BudgetSection.tsx index 33d7ee72..58d94b09 100644 --- a/canvas/src/components/tabs/BudgetSection.tsx +++ b/canvas/src/components/tabs/BudgetSection.tsx @@ -243,7 +243,7 @@ export function BudgetSection({ workspaceId }: Props) { onClick={handleSave} disabled={saving} data-testid="budget-save-btn" - className="px-4 py-1.5 bg-accent-strong hover:bg-accent active:bg-accent-strong rounded-lg text-xs font-medium text-ink disabled:opacity-50 transition-colors" + className="px-4 py-1.5 bg-accent-strong hover:bg-accent active:bg-accent-strong rounded-lg text-xs font-medium text-white disabled:opacity-50 transition-colors" > {saving ? "Saving…" : "Save"} diff --git a/canvas/src/components/tabs/ChannelsTab.tsx b/canvas/src/components/tabs/ChannelsTab.tsx index 0a321e5c..bdb5b0e9 100644 --- a/canvas/src/components/tabs/ChannelsTab.tsx +++ b/canvas/src/components/tabs/ChannelsTab.tsx @@ -366,7 +366,7 @@ export function ChannelsTab({ workspaceId }: Props) { )} @@ -392,7 +392,7 @@ export function ChannelsTab({ workspaceId }: Props) {
diff --git a/canvas/src/components/tabs/ChatTab.tsx b/canvas/src/components/tabs/ChatTab.tsx index df3bd23b..b44047a3 100644 --- a/canvas/src/components/tabs/ChatTab.tsx +++ b/canvas/src/components/tabs/ChatTab.tsx @@ -901,7 +901,7 @@ function MyChatPanel({ workspaceId, data }: Props) { diff --git a/canvas/src/components/tabs/ConfigTab.tsx b/canvas/src/components/tabs/ConfigTab.tsx index f729fa02..da2eb206 100644 --- a/canvas/src/components/tabs/ConfigTab.tsx +++ b/canvas/src/components/tabs/ConfigTab.tsx @@ -65,11 +65,11 @@ function AgentCardSection({ workspaceId }: { workspaceId: string }) { {error &&
{error}
}
+ className="px-2 py-1 bg-surface-card hover:bg-surface-card text-[10px] rounded text-ink-mid">Cancel
) : ( @@ -955,7 +955,7 @@ export function ConfigTab({ workspaceId }: Props) { type="button" onClick={() => handleSave(true)} disabled={!isDirty || saving} - className="px-3 py-1.5 bg-accent-strong hover:bg-accent text-xs rounded text-ink disabled:opacity-30 transition-colors" + className="px-3 py-1.5 bg-accent-strong hover:bg-accent text-xs rounded text-white disabled:opacity-30 transition-colors" > {saving ? "Restarting..." : "Save & Restart"} @@ -963,14 +963,14 @@ export function ConfigTab({ workspaceId }: Props) { type="button" onClick={() => handleSave(false)} disabled={!isDirty || saving} - className="px-3 py-1.5 bg-surface-card hover:bg-zinc-600 text-xs rounded text-ink-mid disabled:opacity-30 transition-colors" + className="px-3 py-1.5 bg-surface-card hover:bg-surface-card text-xs rounded text-ink-mid disabled:opacity-30 transition-colors" > Save diff --git a/canvas/src/components/tabs/DetailsTab.tsx b/canvas/src/components/tabs/DetailsTab.tsx index a644f874..171542bf 100644 --- a/canvas/src/components/tabs/DetailsTab.tsx +++ b/canvas/src/components/tabs/DetailsTab.tsx @@ -166,7 +166,7 @@ export function DetailsTab({ workspaceId, data }: Props) { type="button" onClick={handleSave} disabled={saving} - className="px-3 py-1 bg-accent-strong hover:bg-accent text-xs rounded text-ink disabled:opacity-50" + className="px-3 py-1 bg-accent-strong hover:bg-accent text-xs rounded text-white disabled:opacity-50" > {saving ? "Saving..." : "Save"} @@ -179,7 +179,7 @@ export function DetailsTab({ workspaceId, data }: Props) { setRole(data.role || ""); setTier(data.tier); }} - className="px-3 py-1 bg-surface-card hover:bg-zinc-600 text-xs rounded text-ink-mid" + className="px-3 py-1 bg-surface-card hover:bg-surface-card text-xs rounded text-ink-mid" > Cancel @@ -208,7 +208,7 @@ export function DetailsTab({ workspaceId, data }: Props) { type="button" onClick={handleRestart} disabled={restarting} - className="px-3 py-1 bg-green-700 hover:bg-green-600 text-xs rounded text-ink disabled:opacity-50" + className="px-3 py-1 bg-green-700 hover:bg-green-600 text-xs rounded text-white disabled:opacity-50" > {restarting ? "Restarting..." : data.status === "failed" ? "Retry" : "Restart"} @@ -217,7 +217,7 @@ export function DetailsTab({ workspaceId, data }: Props) { @@ -322,7 +322,7 @@ export function DetailsTab({ workspaceId, data }: Props) { @@ -334,7 +334,7 @@ export function DetailsTab({ workspaceId, data }: Props) { // Return focus to the trigger so keyboard users aren't stranded deleteButtonRef.current?.focus(); }} - className="px-3 py-1 bg-surface-card hover:bg-zinc-600 text-xs rounded text-ink-mid" + className="px-3 py-1 bg-surface-card hover:bg-surface-card text-xs rounded text-ink-mid" > Cancel diff --git a/canvas/src/components/tabs/EventsTab.tsx b/canvas/src/components/tabs/EventsTab.tsx index 38699ae3..266d6389 100644 --- a/canvas/src/components/tabs/EventsTab.tsx +++ b/canvas/src/components/tabs/EventsTab.tsx @@ -65,7 +65,7 @@ export function EventsTab({ workspaceId }: Props) { {events.length} events diff --git a/canvas/src/components/tabs/FilesTab.tsx b/canvas/src/components/tabs/FilesTab.tsx index 3a42b7f3..2f3c7381 100644 --- a/canvas/src/components/tabs/FilesTab.tsx +++ b/canvas/src/components/tabs/FilesTab.tsx @@ -165,8 +165,8 @@ export function FilesTab({ workspaceId }: Props) {

Delete all {files.filter((f) => !f.dir).length} files? This cannot be undone.

- - + +
)} @@ -179,8 +179,8 @@ export function FilesTab({ workspaceId }: Props) {

Delete {confirmDelete}{files.find((f) => f.path === confirmDelete && f.dir) ? " and all its contents" : ""}?

- - + +
)} diff --git a/canvas/src/components/tabs/MemoryTab.tsx b/canvas/src/components/tabs/MemoryTab.tsx index d096148d..a0afb81d 100644 --- a/canvas/src/components/tabs/MemoryTab.tsx +++ b/canvas/src/components/tabs/MemoryTab.tsx @@ -137,14 +137,14 @@ export function MemoryTab({ workspaceId }: Props) { @@ -177,7 +177,7 @@ export function MemoryTab({ workspaceId }: Props) { @@ -212,21 +212,21 @@ export function MemoryTab({ workspaceId }: Props) { @@ -262,7 +262,7 @@ export function MemoryTab({ workspaceId }: Props) { @@ -272,7 +272,7 @@ export function MemoryTab({ workspaceId }: Props) { setShowAdd(false); setError(null); }} - className="px-3 py-1 bg-surface-card hover:bg-zinc-600 text-xs rounded text-ink-mid" + className="px-3 py-1 bg-surface-card hover:bg-surface-card text-xs rounded text-ink-mid" > Cancel @@ -340,7 +340,7 @@ export function MemoryTab({ workspaceId }: Props) { diff --git a/canvas/src/components/tabs/ScheduleTab.tsx b/canvas/src/components/tabs/ScheduleTab.tsx index 0ee16573..0a4ae02d 100644 --- a/canvas/src/components/tabs/ScheduleTab.tsx +++ b/canvas/src/components/tabs/ScheduleTab.tsx @@ -271,7 +271,7 @@ export function ScheduleTab({ workspaceId }: Props) { @@ -320,7 +320,7 @@ export function ScheduleTab({ workspaceId }: Props) { ? "bg-red-400" : sched.last_status === "ok" ? "bg-emerald-400" - : "bg-zinc-600" + : "bg-surface-card" }`} title={sched.enabled ? "Click to disable" : "Click to enable"} /> diff --git a/canvas/src/components/tabs/TracesTab.tsx b/canvas/src/components/tabs/TracesTab.tsx index 2d99a5bc..17668566 100644 --- a/canvas/src/components/tabs/TracesTab.tsx +++ b/canvas/src/components/tabs/TracesTab.tsx @@ -70,7 +70,7 @@ export function TracesTab({ workspaceId }: Props) {

No traces yet

-
+
How to enable tracing

Set LANGFUSE_HOST, LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY as workspace secrets to enable tracing. diff --git a/canvas/src/components/tabs/chat/AttachmentViews.tsx b/canvas/src/components/tabs/chat/AttachmentViews.tsx index 498fd02d..5120c9d1 100644 --- a/canvas/src/components/tabs/chat/AttachmentViews.tsx +++ b/canvas/src/components/tabs/chat/AttachmentViews.tsx @@ -58,7 +58,7 @@ export function AttachmentChip({ const toneClasses = tone === "user" ? "border-blue-400/30 bg-accent-strong/20 hover:bg-accent-strong/30 text-blue-100" - : "border-line/50 bg-surface-card/40 hover:bg-zinc-600/50 text-ink"; + : "border-line/50 bg-surface-card/40 hover:bg-surface-card/50 text-ink"; return (

)} @@ -184,7 +184,7 @@ function CustomSecretRow({ secretKey, scope, globalMode, onSave, onDelete }: {
)} @@ -298,7 +298,7 @@ export function SecretsSection({ workspaceId, requiredEnv }: { workspaceId: stri + className="px-2 py-1 bg-surface-card hover:bg-surface-card text-[10px] rounded text-ink-mid">Cancel
) : (