diff --git a/webui/src/components/settings/SettingsView.tsx b/webui/src/components/settings/SettingsView.tsx
index 75282570..1b3c03a7 100644
--- a/webui/src/components/settings/SettingsView.tsx
+++ b/webui/src/components/settings/SettingsView.tsx
@@ -3496,10 +3496,16 @@ function AutomationsSettings({
"inline-flex h-8 min-w-0 shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-[11px] px-3 text-[12px] font-medium text-muted-foreground transition-colors",
filter === option.value &&
"bg-background text-foreground shadow-[0_8px_20px_rgba(15,23,42,0.07)] dark:bg-background/80",
+ automationFilterToneClass(option.value, option.count, filter === option.value),
)}
>
{option.label}
-
+
{option.count}
@@ -4562,6 +4568,42 @@ function automationMatchesFilter(job: SessionAutomationJob, filter: AutomationFi
return true;
}
+const AUTOMATION_FILTER_TONES: Partial<
+ Record
+> = {
+ active: {
+ text: "text-emerald-600 dark:text-emerald-400",
+ selectedText: "text-emerald-700 dark:text-emerald-300",
+ count: "bg-emerald-500/10 text-emerald-700 dark:text-emerald-300",
+ },
+ paused: {
+ text: "text-amber-600 dark:text-amber-400",
+ selectedText: "text-amber-700 dark:text-amber-300",
+ count: "bg-amber-500/10 text-amber-700 dark:text-amber-300",
+ },
+ failed: {
+ text: "text-rose-600 dark:text-rose-400",
+ selectedText: "text-rose-700 dark:text-rose-300",
+ count: "bg-rose-500/10 text-rose-700 dark:text-rose-300",
+ },
+ system: {
+ text: "text-sky-600 dark:text-sky-400",
+ selectedText: "text-sky-700 dark:text-sky-300",
+ count: "bg-sky-500/10 text-sky-700 dark:text-sky-300",
+ },
+};
+
+function automationFilterToneClass(value: AutomationFilter, count: number, selected: boolean): string {
+ const tone = AUTOMATION_FILTER_TONES[value];
+ if (count <= 0 || !tone) return "";
+ return selected ? tone.selectedText : tone.text;
+}
+
+function automationFilterCountClass(value: AutomationFilter, count: number): string {
+ const tone = AUTOMATION_FILTER_TONES[value];
+ return count > 0 && tone ? tone.count : "";
+}
+
function automationStatus(
job: SessionAutomationJob,
tx: (key: string, fallback: string, values?: Record) => string,