From 5eaf9bc55fbd69adfd49ea400e644746929565ea Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 13 Oct 2026 20:08:01 +0200 Subject: [PATCH] fix: a reply to an app card shows an empty quote When someone replied to an app message that holds only a card, the quote above the reply showed the app's name and nothing else after the channel was opened or reloaded. The quote now shows the card's author, title, description, fields and footer, after a reload, inside threads and for replies that arrive while the channel is open. Fixes #32361 --- backend/open_webui/models/messages.py | 4 ++++ src/lib/components/channel/Messages/Message.svelte | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/backend/open_webui/models/messages.py b/backend/open_webui/models/messages.py index 8b031404e6..cb508f5d85 100644 --- a/backend/open_webui/models/messages.py +++ b/backend/open_webui/models/messages.py @@ -117,6 +117,10 @@ class MessageUserSlimResponse(MessageUserResponse): @field_validator('data', mode='before') def convert_data_to_bool(cls, v): + # A listed reply validates its quoted message twice, so keep the flag. + if isinstance(v, bool): + return v + # No data or not a dict → False if not isinstance(v, dict): return False diff --git a/src/lib/components/channel/Messages/Message.svelte b/src/lib/components/channel/Messages/Message.svelte index 46c3d8dd53..c2eba34efb 100644 --- a/src/lib/components/channel/Messages/Message.svelte +++ b/src/lib/components/channel/Messages/Message.svelte @@ -156,6 +156,17 @@ loadMessageData(); } + const loadReplyToMessageData = async () => { + const res = await getMessageData(localStorage.token, channel?.id, message.reply_to_message.id); + if (res) { + message.reply_to_message.data = res; + } + }; + + $: if (message?.reply_to_message?.app_id && message.reply_to_message.data === true) { + loadReplyToMessageData(); + } + $: messageOutput = Array.isArray(message?.data?.output) ? message.data.output : []; $: hasStructuredOutput = buildOutputDisplayItems(messageOutput).length > 0;