- Rewrite ChatMessageList with @tanstack/react-virtual useVirtualizer (estimateSize: 80, overscan: 5) - Dynamic height measurement via measureElement ref - Streaming message appended as synthetic __streaming__ entry - virtualizer.measure() called on streamingContent change (Pitfall 3) - Jump-to-bottom button when scrolled >200px from bottom - 3 Skeleton loading placeholders - Add editMessage, truncateMessagesAfter, deleteMessage to chatApi - Add postMessageAndStream and savePartialMessage (were missing from prior plan) - Fix duplicate ChatConversation type exports in packages/shared/src/index.ts (Rule 1 - Bug)
15 lines
579 B
TypeScript
15 lines
579 B
TypeScript
import { describe, it, expect } from "vitest";
|
|
|
|
describe("ChatMessageList", () => {
|
|
it("exports ChatMessageList component", async () => {
|
|
const mod = await import("./ChatMessageList");
|
|
expect(mod.ChatMessageList).toBeDefined();
|
|
});
|
|
|
|
it.todo("renders messages using virtualizer");
|
|
it.todo("auto-scrolls to bottom when new messages arrive");
|
|
it.todo("shows loading skeleton when isLoading");
|
|
it.todo("shows empty state when no messages");
|
|
it.todo("appends streaming message as synthetic entry");
|
|
it.todo("shows jump-to-bottom button when scrolled up");
|
|
});
|