diff --git a/frontend/__tests__/components/features/conversation-panel/conversation-card.test.tsx b/frontend/__tests__/components/features/conversation-panel/conversation-card.test.tsx
index 65020fa669..d069280b00 100644
--- a/frontend/__tests__/components/features/conversation-panel/conversation-card.test.tsx
+++ b/frontend/__tests__/components/features/conversation-panel/conversation-card.test.tsx
@@ -14,6 +14,8 @@ import { renderWithProviders } from "test-utils";
import { formatTimeDelta } from "#/utils/format-time-delta";
import { ConversationCard } from "#/components/features/conversation-panel/conversation-card/conversation-card";
import { clickOnEditButton } from "./utils";
+import { ConversationCardActions } from "#/components/features/conversation-panel/conversation-card/conversation-card-actions";
+import { ConversationStatus } from "#/types/conversation-status";
// We'll use the actual i18next implementation but override the translation function
@@ -431,4 +433,34 @@ describe("ConversationCard", () => {
expect(screen.queryByTestId("ellipsis-button")).not.toBeInTheDocument();
});
+
+ const statusTable: [ConversationStatus, boolean][] = [
+ ["RUNNING", true],
+ ["STARTING", true],
+ ["STOPPED", false],
+ ["ARCHIVED", false],
+ ["ERROR", false],
+ ];
+
+ it.each(statusTable)(
+ "should toggle stop button visibility correctly for status",
+ (status, shouldShow) => {
+ renderWithProviders(
+ ,
+ );
+
+ const stopButton = screen.queryByTestId("stop-button");
+
+ if (shouldShow) {
+ expect(stopButton).toBeInTheDocument();
+ } else {
+ expect(stopButton).not.toBeInTheDocument();
+ }
+ },
+ );
});
diff --git a/frontend/src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx b/frontend/src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx
index 7afa2fed14..28a940955a 100644
--- a/frontend/src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx
+++ b/frontend/src/components/features/conversation-panel/conversation-card/conversation-card-actions.tsx
@@ -59,7 +59,12 @@ export function ConversationCardActions({
onContextMenuToggle(false)}
onDelete={onDelete}
- onStop={conversationStatus !== "STOPPED" ? onStop : undefined}
+ onStop={
+ conversationStatus === "RUNNING" ||
+ conversationStatus === "STARTING"
+ ? onStop
+ : undefined
+ }
onEdit={onEdit}
onDownloadViaVSCode={
conversationId && showOptions ? onDownloadViaVSCode : undefined