diff --git a/src/features/chat/ui/toolbar.tsx b/src/features/chat/ui/toolbar.tsx index 067e4764..e4bd6de8 100644 --- a/src/features/chat/ui/toolbar.tsx +++ b/src/features/chat/ui/toolbar.tsx @@ -39,13 +39,6 @@ function Toolbar({ model, actions }: { model: ToolbarViewModel; actions: Toolbar <>
- +
@@ -86,7 +86,7 @@ function RuntimeButtons({ model, actions }: { model: ToolbarViewModel; actions: return ( <> { diff --git a/tests/features/chat/ui/renderers/toolbar.test.ts b/tests/features/chat/ui/renderers/toolbar.test.ts index c6c8882a..bb8f1d82 100644 --- a/tests/features/chat/ui/renderers/toolbar.test.ts +++ b/tests/features/chat/ui/renderers/toolbar.test.ts @@ -30,8 +30,8 @@ describe("toolbar renderer decisions", () => { expect(parent.querySelector(".codex-panel__runtime-area")).toBeNull(); expect(parent.querySelector(".codex-panel__runtime-strip")).toBeNull(); expect([...expectPresent(navButtons).children].map((button) => button.getAttribute("aria-label"))).toEqual([ - "Start new chat", "Show thread list", + "Start new chat", "Toggle plan mode", "Toggle auto-review", "Toggle fast mode", @@ -40,6 +40,7 @@ describe("toolbar renderer decisions", () => { ]); const newChatButton = parent.querySelector(".codex-panel__new-chat"); expect(newChatButton?.getAttribute("aria-label")).toBe("Start new chat"); + expect(newChatButton?.dataset["icon"]).toBe("messages-square"); expect(newChatButton?.classList.contains("nav-action-button")).toBe(true); expect(newChatButton?.disabled).toBe(false); newChatButton?.click(); @@ -60,6 +61,7 @@ describe("toolbar renderer decisions", () => { expect(toggleHistory).toHaveBeenCalled(); const planButton = parent.querySelector(".codex-panel__plan-toggle"); expect(planButton?.getAttribute("aria-label")).toBe("Toggle plan mode"); + expect(planButton?.dataset["icon"]).toBe("list-todo"); expect(planButton?.getAttribute("aria-pressed")).toBe("false"); expect(planButton?.classList.contains("codex-panel__runtime-icon")).toBe(true); const autoReviewButton = parent.querySelector(".codex-panel__auto-review-toggle"); @@ -89,6 +91,7 @@ describe("toolbar renderer decisions", () => { expect(parent.querySelector(".codex-panel__status-menu-toggle")?.getAttribute("aria-label")).toBe("Hide panel menu"); expect(parent.querySelector(".codex-panel__status-menu-toggle")?.classList.contains("is-active")).toBe(true); expect(parent.querySelector(".codex-panel__runtime-model")?.getAttribute("aria-label")).toBe("Change model and reasoning effort"); + expect(parent.querySelector(".codex-panel__runtime-model")?.dataset["icon"]).toBe("bot"); expect(parent.querySelector(".codex-panel__runtime-model")?.classList.contains("is-active")).toBe(true); expect(parent.querySelector(".codex-panel__runtime-model")?.classList.contains("nav-action-button")).toBe(true); }); diff --git a/tests/features/threads-view/renderer.test.ts b/tests/features/threads-view/renderer.test.ts index 3a669365..612c49d0 100644 --- a/tests/features/threads-view/renderer.test.ts +++ b/tests/features/threads-view/renderer.test.ts @@ -172,6 +172,7 @@ describe("threads view renderer decisions", () => { const openNewPanel = expectPresent(parent.querySelector('[aria-label="Open new panel"]')); expect(openNewPanel.classList.contains("codex-panel-threads__toolbar-button")).toBe(true); expect(openNewPanel.classList.contains("codex-panel-threads__row-button")).toBe(false); + expect(openNewPanel.dataset["icon"]).toBe("message-square-plus"); openNewPanel.click(); expect(actions.openNewPanel).toHaveBeenCalledOnce(); const rename = expectPresent(parent.querySelector('[aria-label="Rename thread"]')); diff --git a/tests/features/threads-view/view.test.ts b/tests/features/threads-view/view.test.ts index 9215da58..635d7b06 100644 --- a/tests/features/threads-view/view.test.ts +++ b/tests/features/threads-view/view.test.ts @@ -78,6 +78,12 @@ describe("CodexThreadsView", () => { namingMock.generateThreadTitleWithCodex.mockReset(); }); + it("uses a distinct thread view icon", async () => { + const view = await threadsView(); + + expect(view.getIcon()).toBe("list-video"); + }); + it("renders thread list from app-server history", async () => { connectionMock.state.client = clientFixture({ listThreads: vi.fn().mockResolvedValue({ data: [threadFixture({ id: "thread", preview: "Thread preview" })] }),