From 88d2fbfee9fb55fa3bbb5c8708cfba82720c1fba Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sun, 7 Jun 2026 15:27:58 +0900 Subject: feat(chat): restyle transcript — left-aligned, bubbleless assistant, tool cards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All messages flow left in one column via the DaisyUI chat-start grid: - user keeps a primary speech bubble; - assistant/system/error render in a transparent (invisible) chat-bubble so they read as plain prose yet inherit identical left spacing, capped to a readable max-w-5xl column; - tool call/result render as regular (non-speech) rounded cards, nested in the same grid so they line up too; - role header labels dropped; chat-wide left padding added. Alignment uses specificity-based variants (no !important). --- src/features/chat/ui.test.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/features/chat/ui.test.ts') diff --git a/src/features/chat/ui.test.ts b/src/features/chat/ui.test.ts index ac8f640..2099257 100644 --- a/src/features/chat/ui.test.ts +++ b/src/features/chat/ui.test.ts @@ -20,7 +20,6 @@ describe("ChatView", () => { render(ChatView, { props: { chunks } }); expect(screen.getByText("Hello world")).toBeInTheDocument(); - expect(screen.getByText("assistant")).toBeInTheDocument(); }); it("renders multiple chunks", () => { @@ -145,8 +144,10 @@ describe("ChatView", () => { render(ChatView, { props: { chunks } }); - const bubble = screen.getByText("Streaming...").closest(".chat-bubble"); - expect(bubble).toHaveClass("opacity-50"); + // Assistant chunks are no longer in a bubble; the provisional marker now + // lives on the plain wrapper that directly contains the text. + const wrapper = screen.getByText("Streaming...").closest("div"); + expect(wrapper).toHaveClass("opacity-50"); }); it("renders empty transcript", () => { -- cgit v1.2.3