tweak(ui): refine user message hover meta

Moves the interrupted state into the user message hover metadata and updates the copy tooltip to 'Copy message'.
This commit is contained in:
David Hill
2026-02-17 15:02:06 +00:00
parent 2cac848823
commit 14684d8e75
17 changed files with 25 additions and 8 deletions

View File

@@ -562,7 +562,13 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
const meta = createMemo(() => { const meta = createMemo(() => {
const agent = props.message.agent const agent = props.message.agent
const items = [agent ? agent[0]?.toUpperCase() + agent.slice(1) : "", provider(), model(), stamp()] const items = [
agent ? agent[0]?.toUpperCase() + agent.slice(1) : "",
provider(),
model(),
stamp(),
props.interrupted ? i18n.t("ui.message.interrupted") : "",
]
return items.filter((x) => !!x).join(" \u00B7 ") return items.filter((x) => !!x).join(" \u00B7 ")
}) })
@@ -618,18 +624,13 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
<HighlightedText text={text()} references={inlineFiles()} agents={agents()} /> <HighlightedText text={text()} references={inlineFiles()} agents={agents()} />
</div> </div>
<div data-slot="user-message-copy-wrapper" data-interrupted={props.interrupted ? "" : undefined}> <div data-slot="user-message-copy-wrapper" data-interrupted={props.interrupted ? "" : undefined}>
<Show when={props.interrupted}>
<span data-slot="user-message-interrupted" class="text-13-regular text-text-weak cursor-default">
{i18n.t("ui.message.interrupted")}
</span>
</Show>
<Show when={meta()}> <Show when={meta()}>
<span data-slot="user-message-meta" class="text-12-regular text-text-weak cursor-default"> <span data-slot="user-message-meta" class="text-12-regular text-text-weak cursor-default">
{meta()} {meta()}
</span> </span>
</Show> </Show>
<Tooltip <Tooltip
value={copied() ? i18n.t("ui.message.copied") : i18n.t("ui.message.copy")} value={copied() ? i18n.t("ui.message.copied") : i18n.t("ui.message.copyMessage")}
placement="top" placement="top"
gutter={4} gutter={4}
> >
@@ -642,7 +643,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
event.stopPropagation() event.stopPropagation()
handleCopy() handleCopy()
}} }}
aria-label={copied() ? i18n.t("ui.message.copied") : i18n.t("ui.message.copy")} aria-label={copied() ? i18n.t("ui.message.copied") : i18n.t("ui.message.copyMessage")}
/> />
</Tooltip> </Tooltip>
</div> </div>

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "توسيع الرسالة", "ui.message.expand": "توسيع الرسالة",
"ui.message.collapse": "طي الرسالة", "ui.message.collapse": "طي الرسالة",
"ui.message.copy": "نسخ", "ui.message.copy": "نسخ",
"ui.message.copyMessage": "نسخ الرسالة",
"ui.message.copied": "تم النسخ!", "ui.message.copied": "تم النسخ!",
"ui.message.interrupted": "تمت المقاطعة", "ui.message.interrupted": "تمت المقاطعة",
"ui.message.attachment.alt": "مرفق", "ui.message.attachment.alt": "مرفق",

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "Expandir mensagem", "ui.message.expand": "Expandir mensagem",
"ui.message.collapse": "Recolher mensagem", "ui.message.collapse": "Recolher mensagem",
"ui.message.copy": "Copiar", "ui.message.copy": "Copiar",
"ui.message.copyMessage": "Copiar mensagem",
"ui.message.copied": "Copiado!", "ui.message.copied": "Copiado!",
"ui.message.interrupted": "Interrompido", "ui.message.interrupted": "Interrompido",
"ui.message.attachment.alt": "anexo", "ui.message.attachment.alt": "anexo",

View File

@@ -101,6 +101,7 @@ export const dict = {
"ui.message.expand": "Proširi poruku", "ui.message.expand": "Proširi poruku",
"ui.message.collapse": "Sažmi poruku", "ui.message.collapse": "Sažmi poruku",
"ui.message.copy": "Kopiraj", "ui.message.copy": "Kopiraj",
"ui.message.copyMessage": "Kopiraj poruku",
"ui.message.copied": "Kopirano!", "ui.message.copied": "Kopirano!",
"ui.message.interrupted": "Prekinuto", "ui.message.interrupted": "Prekinuto",
"ui.message.attachment.alt": "prilog", "ui.message.attachment.alt": "prilog",

View File

@@ -96,6 +96,7 @@ export const dict = {
"ui.message.expand": "Udvid besked", "ui.message.expand": "Udvid besked",
"ui.message.collapse": "Skjul besked", "ui.message.collapse": "Skjul besked",
"ui.message.copy": "Kopier", "ui.message.copy": "Kopier",
"ui.message.copyMessage": "Kopier besked",
"ui.message.copied": "Kopieret!", "ui.message.copied": "Kopieret!",
"ui.message.interrupted": "Afbrudt", "ui.message.interrupted": "Afbrudt",
"ui.message.attachment.alt": "vedhæftning", "ui.message.attachment.alt": "vedhæftning",

View File

@@ -100,6 +100,7 @@ export const dict = {
"ui.message.expand": "Nachricht erweitern", "ui.message.expand": "Nachricht erweitern",
"ui.message.collapse": "Nachricht reduzieren", "ui.message.collapse": "Nachricht reduzieren",
"ui.message.copy": "Kopieren", "ui.message.copy": "Kopieren",
"ui.message.copyMessage": "Nachricht kopieren",
"ui.message.copied": "Kopiert!", "ui.message.copied": "Kopiert!",
"ui.message.interrupted": "Unterbrochen", "ui.message.interrupted": "Unterbrochen",
"ui.message.attachment.alt": "Anhang", "ui.message.attachment.alt": "Anhang",

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "Expand message", "ui.message.expand": "Expand message",
"ui.message.collapse": "Collapse message", "ui.message.collapse": "Collapse message",
"ui.message.copy": "Copy", "ui.message.copy": "Copy",
"ui.message.copyMessage": "Copy message",
"ui.message.copied": "Copied", "ui.message.copied": "Copied",
"ui.message.interrupted": "Interrupted", "ui.message.interrupted": "Interrupted",
"ui.message.attachment.alt": "attachment", "ui.message.attachment.alt": "attachment",

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "Expandir mensaje", "ui.message.expand": "Expandir mensaje",
"ui.message.collapse": "Colapsar mensaje", "ui.message.collapse": "Colapsar mensaje",
"ui.message.copy": "Copiar", "ui.message.copy": "Copiar",
"ui.message.copyMessage": "Copiar mensaje",
"ui.message.copied": "¡Copiado!", "ui.message.copied": "¡Copiado!",
"ui.message.interrupted": "Interrumpido", "ui.message.interrupted": "Interrumpido",
"ui.message.attachment.alt": "adjunto", "ui.message.attachment.alt": "adjunto",

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "Développer le message", "ui.message.expand": "Développer le message",
"ui.message.collapse": "Réduire le message", "ui.message.collapse": "Réduire le message",
"ui.message.copy": "Copier", "ui.message.copy": "Copier",
"ui.message.copyMessage": "Copier le message",
"ui.message.copied": "Copié !", "ui.message.copied": "Copié !",
"ui.message.interrupted": "Interrompu", "ui.message.interrupted": "Interrompu",
"ui.message.attachment.alt": "pièce jointe", "ui.message.attachment.alt": "pièce jointe",

View File

@@ -96,6 +96,7 @@ export const dict = {
"ui.message.expand": "メッセージを展開", "ui.message.expand": "メッセージを展開",
"ui.message.collapse": "メッセージを折りたたむ", "ui.message.collapse": "メッセージを折りたたむ",
"ui.message.copy": "コピー", "ui.message.copy": "コピー",
"ui.message.copyMessage": "メッセージをコピー",
"ui.message.copied": "コピーしました!", "ui.message.copied": "コピーしました!",
"ui.message.interrupted": "中断", "ui.message.interrupted": "中断",
"ui.message.attachment.alt": "添付ファイル", "ui.message.attachment.alt": "添付ファイル",

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "메시지 펼치기", "ui.message.expand": "메시지 펼치기",
"ui.message.collapse": "메시지 접기", "ui.message.collapse": "메시지 접기",
"ui.message.copy": "복사", "ui.message.copy": "복사",
"ui.message.copyMessage": "메시지 복사",
"ui.message.copied": "복사됨!", "ui.message.copied": "복사됨!",
"ui.message.interrupted": "중단됨", "ui.message.interrupted": "중단됨",
"ui.message.attachment.alt": "첨부 파일", "ui.message.attachment.alt": "첨부 파일",

View File

@@ -100,6 +100,7 @@ export const dict: Record<Keys, string> = {
"ui.message.expand": "Utvid melding", "ui.message.expand": "Utvid melding",
"ui.message.collapse": "Skjul melding", "ui.message.collapse": "Skjul melding",
"ui.message.copy": "Kopier", "ui.message.copy": "Kopier",
"ui.message.copyMessage": "Kopier melding",
"ui.message.copied": "Kopiert!", "ui.message.copied": "Kopiert!",
"ui.message.interrupted": "Avbrutt", "ui.message.interrupted": "Avbrutt",
"ui.message.attachment.alt": "vedlegg", "ui.message.attachment.alt": "vedlegg",

View File

@@ -96,6 +96,7 @@ export const dict = {
"ui.message.expand": "Rozwiń wiadomość", "ui.message.expand": "Rozwiń wiadomość",
"ui.message.collapse": "Zwiń wiadomość", "ui.message.collapse": "Zwiń wiadomość",
"ui.message.copy": "Kopiuj", "ui.message.copy": "Kopiuj",
"ui.message.copyMessage": "Kopiuj wiadomość",
"ui.message.copied": "Skopiowano!", "ui.message.copied": "Skopiowano!",
"ui.message.interrupted": "Przerwano", "ui.message.interrupted": "Przerwano",
"ui.message.attachment.alt": "załącznik", "ui.message.attachment.alt": "załącznik",

View File

@@ -96,6 +96,7 @@ export const dict = {
"ui.message.expand": "Развернуть сообщение", "ui.message.expand": "Развернуть сообщение",
"ui.message.collapse": "Свернуть сообщение", "ui.message.collapse": "Свернуть сообщение",
"ui.message.copy": "Копировать", "ui.message.copy": "Копировать",
"ui.message.copyMessage": "Копировать сообщение",
"ui.message.copied": "Скопировано!", "ui.message.copied": "Скопировано!",
"ui.message.interrupted": "Прервано", "ui.message.interrupted": "Прервано",
"ui.message.attachment.alt": "вложение", "ui.message.attachment.alt": "вложение",

View File

@@ -97,6 +97,7 @@ export const dict = {
"ui.message.expand": "ขยายข้อความ", "ui.message.expand": "ขยายข้อความ",
"ui.message.collapse": "ย่อข้อความ", "ui.message.collapse": "ย่อข้อความ",
"ui.message.copy": "คัดลอก", "ui.message.copy": "คัดลอก",
"ui.message.copyMessage": "คัดลอกข้อความ",
"ui.message.copied": "คัดลอกแล้ว!", "ui.message.copied": "คัดลอกแล้ว!",
"ui.message.interrupted": "ถูกขัดจังหวะ", "ui.message.interrupted": "ถูกขัดจังหวะ",
"ui.message.attachment.alt": "ไฟล์แนบ", "ui.message.attachment.alt": "ไฟล์แนบ",

View File

@@ -101,6 +101,7 @@ export const dict = {
"ui.message.expand": "展开消息", "ui.message.expand": "展开消息",
"ui.message.collapse": "收起消息", "ui.message.collapse": "收起消息",
"ui.message.copy": "复制", "ui.message.copy": "复制",
"ui.message.copyMessage": "复制消息",
"ui.message.copied": "已复制!", "ui.message.copied": "已复制!",
"ui.message.interrupted": "已中断", "ui.message.interrupted": "已中断",
"ui.message.attachment.alt": "附件", "ui.message.attachment.alt": "附件",

View File

@@ -101,6 +101,7 @@ export const dict = {
"ui.message.expand": "展開訊息", "ui.message.expand": "展開訊息",
"ui.message.collapse": "收合訊息", "ui.message.collapse": "收合訊息",
"ui.message.copy": "複製", "ui.message.copy": "複製",
"ui.message.copyMessage": "複製訊息",
"ui.message.copied": "已複製!", "ui.message.copied": "已複製!",
"ui.message.interrupted": "已中斷", "ui.message.interrupted": "已中斷",
"ui.message.attachment.alt": "附件", "ui.message.attachment.alt": "附件",