fix: align message content below avatars

This commit is contained in:
mesalogo
2026-09-07 14:02:59 +08:00
parent 237b8a8cee
commit dbb7c2fc80
3 changed files with 61 additions and 19 deletions
+34
View File
@@ -74,6 +74,40 @@ describe('ChatTimeline', () => {
expect(rule).not.toContain('contain-intrinsic')
})
it('places message identity above the message body', () => {
const messages: Message[] = [
{
id: 'assistant-message',
role: 'assistant',
content: 'Answer',
createdAt: 1_775_000_000_000,
state: 'complete'
}
]
const { container } = render(
<ChatTimeline
artifactById={new Map()}
conversationId="conversation-1"
hiddenMessageCount={0}
isUnusedConversation={false}
locale="zh-CN"
messageStartIndex={0}
messages={messages}
{...callbacks}
retryContent=""
totalMessageCount={messages.length}
/>
)
const message = container.querySelector('.message')
const header = message?.querySelector('.message__header')
const body = message?.querySelector('.message__body')
expect(header).toContainElement(message?.querySelector('.message__avatar') ?? null)
expect(header).toContainElement(message?.querySelector('.message__meta') ?? null)
expect(Array.from(message?.children ?? [])).toEqual([header, body])
})
it('enables HTML rendering only for completed Agent output', () => {
const messages: Message[] = [
{
+10 -8
View File
@@ -532,14 +532,14 @@ function ChatMessageRowView({
ref={(element) => onArticleRef(message.id, element)}
tabIndex={-1}
>
<div className="message__avatar">
{message.role === 'assistant' ? (
<Bot size={18} />
) : (
<UserRound size={18} />
)}
</div>
<div className="message__body">
<div className="message__header">
<div className="message__avatar">
{message.role === 'assistant' ? (
<Bot size={18} />
) : (
<UserRound size={18} />
)}
</div>
<div className="message__meta">
<strong>
{message.role === 'assistant' ? 'GoodBuddy' : t('chat.user')}
@@ -557,6 +557,8 @@ function ChatMessageRowView({
)}
<span>{formatTime(message.createdAt, locale)}</span>
</div>
</div>
<div className="message__body">
{message.attachments && message.attachments.length > 0 && (
<div
aria-label={t('chat.attachments.region')}
+17 -11
View File
@@ -5311,15 +5311,24 @@ button > svg {
}
.message {
display: grid;
display: flex;
min-width: 0;
padding: 17px 8px;
gap: 12px;
grid-template-columns: 30px minmax(0, 1fr);
flex-direction: column;
gap: 8px;
}
.message--user {
grid-template-columns: minmax(0, 1fr) 30px;
.message__header {
display: flex;
min-width: 0;
align-items: center;
gap: 12px;
}
.message--user .message__header {
width: min(78%, 720px);
align-self: flex-end;
flex-direction: row-reverse;
}
.route-loading-status {
@@ -5374,6 +5383,7 @@ button > svg {
.message__avatar {
display: grid;
flex: 0 0 auto;
width: 29px;
height: 29px;
place-items: center;
@@ -5384,8 +5394,6 @@ button > svg {
}
.message--user .message__avatar {
grid-column: 2;
grid-row: 1;
border-color: var(--accent-selected);
background: var(--accent-subtle);
color: var(--accent);
@@ -5398,15 +5406,13 @@ button > svg {
.message--user .message__body {
width: min(78%, 720px);
grid-column: 1;
grid-row: 1;
justify-self: end;
align-self: flex-end;
}
.message__meta {
display: flex;
min-width: 0;
align-items: center;
margin: 1px 0 8px;
gap: 8px;
}