diff --git a/src/ui/components/main/AgentControls.tsx b/src/ui/components/main/AgentControls.tsx index 4e37ace..8bb1906 100644 --- a/src/ui/components/main/AgentControls.tsx +++ b/src/ui/components/main/AgentControls.tsx @@ -36,6 +36,7 @@ export function AgentControls({ onClick={toggleAgent} disabled={updateConfig.isPending} title={isEnabled ? "Pause agent" : "Resume agent"} + aria-label={isEnabled ? "Pause agent" : "Resume agent"} > {isEnabled ? ( diff --git a/src/ui/components/settings/sections/BudgetSection.tsx b/src/ui/components/settings/sections/BudgetSection.tsx index 7b329f1..f788b1f 100644 --- a/src/ui/components/settings/sections/BudgetSection.tsx +++ b/src/ui/components/settings/sections/BudgetSection.tsx @@ -53,6 +53,7 @@ export function BudgetSection() { max={100} step={5} className="w-full" + aria-label={`Budget ceiling: ${ceiling}% of weekly budget`} />

diff --git a/src/ui/components/settings/sections/SchedulingSection.tsx b/src/ui/components/settings/sections/SchedulingSection.tsx index ea3f12a..edbf8ca 100644 --- a/src/ui/components/settings/sections/SchedulingSection.tsx +++ b/src/ui/components/settings/sections/SchedulingSection.tsx @@ -194,31 +194,44 @@ export function SchedulingSection() { sublabel={`The agent will work between ${settings.scheduleStart} and ${settings.scheduleEnd}. Times are in ${settings.scheduleTimezone || detectedTimezone}.`} >

- - updateSetting({ - key: "scheduleStart", - value: e.target.value, - }) - } - className="rounded-md border border-input bg-transparent px-2 py-1.5 text-xs outline-none focus:ring-1 focus:ring-ring" - /> - + + - - updateSetting({ - key: "scheduleEnd", - value: e.target.value, - }) - } - className="rounded-md border border-input bg-transparent px-2 py-1.5 text-xs outline-none focus:ring-1 focus:ring-ring" - /> +
diff --git a/src/ui/components/sidebar/AiStatusCard.tsx b/src/ui/components/sidebar/AiStatusCard.tsx index 43a963c..b757af8 100644 --- a/src/ui/components/sidebar/AiStatusCard.tsx +++ b/src/ui/components/sidebar/AiStatusCard.tsx @@ -33,10 +33,16 @@ export function AiStatusCard() { : 0; const remainingPercent = 100 - usedPercent; - // Bar color + // Bar color and budget level label let barColor = "bg-foreground"; - if (remainingPercent <= 10) barColor = "bg-red-500"; - else if (remainingPercent <= 30) barColor = "bg-amber-500"; + let budgetLevel = ""; + if (remainingPercent <= 10) { + barColor = "bg-red-500"; + budgetLevel = "Critical"; + } else if (remainingPercent <= 30) { + barColor = "bg-amber-500"; + budgetLevel = "Low"; + } // Status display let icon: React.ReactNode; @@ -136,7 +142,14 @@ export function AiStatusCard() { {/* Budget bar */} {budget && (
-
+

+ {budgetLevel && ( + + {budgetLevel} + {" \u00B7 "} + + )} {Math.round(available / 1000)}k remaining

diff --git a/src/ui/components/sidebar/ProjectItem.tsx b/src/ui/components/sidebar/ProjectItem.tsx index 131bbd9..e02233e 100644 --- a/src/ui/components/sidebar/ProjectItem.tsx +++ b/src/ui/components/sidebar/ProjectItem.tsx @@ -61,7 +61,15 @@ export function ProjectItem({ {initial} {hasUnseenReview && ( - + <> + diff --git a/src/ui/components/sidebar/ProjectList.tsx b/src/ui/components/sidebar/ProjectList.tsx index a1dd8b1..cb5eadb 100644 --- a/src/ui/components/sidebar/ProjectList.tsx +++ b/src/ui/components/sidebar/ProjectList.tsx @@ -38,16 +38,17 @@ export function ProjectList({ search }: ProjectListProps) { return ( -
+
    {filtered.map((repo) => ( - setSelectedRepository(repo.id)} - /> +
  • + setSelectedRepository(repo.id)} + /> +
  • ))} -
+
); } diff --git a/src/ui/components/tasks/TaskRow.tsx b/src/ui/components/tasks/TaskRow.tsx index b4ade6c..d0d681a 100644 --- a/src/ui/components/tasks/TaskRow.tsx +++ b/src/ui/components/tasks/TaskRow.tsx @@ -129,7 +129,7 @@ export function TaskRow({ const stateIcon = (() => { if (isQueued) { return ( - + ); @@ -141,6 +141,7 @@ export function TaskRow({