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;