Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions apps/web/src/components/Sidebar.logic.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1267,8 +1267,8 @@ describe("resolveThreadStatusPill", () => {
}),
).toMatchObject({
label: "Waiting",
colorClass: "text-sidebar-muted-foreground",
dotClass: "bg-sidebar-muted-foreground",
colorClass: "text-sky-700 dark:text-sky-300/60",
dotClass: "bg-sky-500/60 dark:bg-sky-300/50",
pulse: false,
});
});
Expand Down Expand Up @@ -1404,8 +1404,8 @@ describe("resolveProjectStatusIndicator", () => {
it("ranks waiting below active work and above plan-ready", () => {
const waiting = {
label: "Waiting" as const,
colorClass: "text-sidebar-muted-foreground",
dotClass: "bg-sidebar-muted-foreground",
colorClass: "text-sky-700 dark:text-sky-300/60",
dotClass: "bg-sky-500/60 dark:bg-sky-300/50",
pulse: false,
};

Expand Down
8 changes: 4 additions & 4 deletions apps/web/src/components/Sidebar.logic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -946,8 +946,8 @@ export function resolveThreadRowClassName(input: {
// unlabeled resting state — the agent stopped and is waiting on the user,
// whether it finished, asked a question, or proposed a plan. Waiting
// (runtime status "idle") is the agent stopped with background work that will
// wake it (subagents, monitors): not the user's turn yet, so it renders grey
// like working, not as a false Done. Commands it left running, such as a dev
// wake it (subagents, monitors): not the user's turn yet, so it renders as a
// dimmed working, not as a false Done. Commands it left running, such as a dev
// server, do not hold the thread; it reads as ready.
// Unread completion is tracked separately: it describes whether a ready
// thread needs attention, not what the thread is currently doing.
Expand Down Expand Up @@ -1209,8 +1209,8 @@ export function resolveThreadStatusPill(input: {
if (backgroundWorkHoldsCompletion(thread.pendingBackgroundTasks ?? [])) {
return {
label: "Waiting",
colorClass: "text-sidebar-muted-foreground",
dotClass: "bg-sidebar-muted-foreground",
colorClass: "text-sky-700 dark:text-sky-300/60",
dotClass: "bg-sky-500/60 dark:bg-sky-300/50",
pulse: false,
};
}
Expand Down
8 changes: 5 additions & 3 deletions apps/web/src/components/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1302,11 +1302,13 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: {
}
: status === "waiting"
? {
// Waiting is calm background presence (post-settle background
// roster), not active progress, so the label keeps full strength.
// Waiting is background work still in flight (post-settle
// background roster): working's hue without an icon, so it reads
// as in motion but not the foreground turn. Dimmed only in dark
// mode; a lighter blue on the light sidebar drops below 4.5:1.
label: "Waiting",
icon: null,
className: "text-muted-foreground",
className: "text-sky-700 dark:text-info/70",
}
: status === "approval"
? {
Expand Down
Loading