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"
- />
-
+
+
+ Start time
+
+
+ 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"
+ />
+
+
to
-
- 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"
- />
+
+
+ End time
+
+
+ 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 && (
-
+ <>
+
+
+ Has tasks awaiting review
+
+ >
)}
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({
@@ -151,6 +152,7 @@ export function TaskRow({
@@ -161,6 +163,7 @@ export function TaskRow({
@@ -171,6 +174,7 @@ export function TaskRow({
@@ -181,6 +185,7 @@ export function TaskRow({
@@ -203,6 +208,7 @@ export function TaskRow({
{showActions ? (
@@ -288,6 +295,7 @@ export function TaskRow({