Yes. Compose Message Scroller with Message, Bubble, and Markdown Renderer.
Keep the page shell from scrolling — only the transcript viewport should.
Can we use this shell as a ChatGPT-like product surface?
Yes. Compose Message Scroller with Message, Bubble, and Markdown Renderer.
Keep the page shell from scrolling — only the transcript viewport should.
Should every row show an avatar?
Pick a product rule and stick to it: Avatar on for every row, or Avatar off with no spacer.
Toggle the header to compare — with avatars off, assistant prose lines up with the composer measure padding.
What about attachments and the dense composer?
Use Attachment Group above the draft field, then icon Send / Stop with tooltips.
Enter submits; Shift+Enter inserts a newline. Fake streaming sets isStreaming until tokens finish.
Retry a failed assistant turn from here.
Couldn't generate a response