From 2f8c0b6b268d8391c3da2e85db4d246c30d65157 Mon Sep 17 00:00:00 2001 From: ayana Date: Wed, 11 Jun 2025 19:34:07 -0700 Subject: [PATCH 01/32] Feat: add modal to display for evaluation information in Feedbacks --- .../admin/Evaluations/FeedbackModal.svelte | 73 +++++++++++++++++++ .../admin/Evaluations/Feedbacks.svelte | 16 +++- 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/admin/Evaluations/FeedbackModal.svelte diff --git a/src/lib/components/admin/Evaluations/FeedbackModal.svelte b/src/lib/components/admin/Evaluations/FeedbackModal.svelte new file mode 100644 index 0000000000..68df3d1ba6 --- /dev/null +++ b/src/lib/components/admin/Evaluations/FeedbackModal.svelte @@ -0,0 +1,73 @@ + + + + {#if selectedFeedback} +
+
+
+ {$i18n.t('Feedback Details')} +
+ +
+ +
+
+
+ {$i18n.t('Rating')}: + {selectedFeedback.data.details?.rating ?? '-'} +
+
+ {$i18n.t('Reason')}: + {selectedFeedback.data.reason || '-'} +
+
+ {$i18n.t('Tags')}: + {#if selectedFeedback.data.tags && selectedFeedback.data.tags.length} +
+ {#each selectedFeedback.data.tags as tag} + {tag} + {/each} +
+ {:else} + - + {/if} +
+
+ +
+
+
+
+ {/if} +
diff --git a/src/lib/components/admin/Evaluations/Feedbacks.svelte b/src/lib/components/admin/Evaluations/Feedbacks.svelte index 726028664a..814e863bac 100644 --- a/src/lib/components/admin/Evaluations/Feedbacks.svelte +++ b/src/lib/components/admin/Evaluations/Feedbacks.svelte @@ -18,6 +18,7 @@ import CloudArrowUp from '$lib/components/icons/CloudArrowUp.svelte'; import Pagination from '$lib/components/common/Pagination.svelte'; import FeedbackMenu from './FeedbackMenu.svelte'; + import FeedbackModal from './FeedbackModal.svelte'; import EllipsisHorizontal from '$lib/components/icons/EllipsisHorizontal.svelte'; export let feedbacks = []; @@ -48,6 +49,14 @@ lost: number; }; + let showFeedbackModal = false; + let selectedFeedback = null; + + const openFeedbackModal = (feedback) => { + showFeedbackModal = true; + selectedFeedback = feedback; + }; + ////////////////////// // // CRUD operations @@ -106,6 +115,8 @@ }; + +
{$i18n.t('Feedback History')} @@ -167,7 +178,10 @@ {#each paginatedFeedbacks as feedback (feedback.id)} - + openFeedbackModal(feedback)} + >
From 880323a4e4197b9a6b7108f5b8d9266ee15c4484 Mon Sep 17 00:00:00 2001 From: ayana Date: Thu, 12 Jun 2025 10:53:55 -0700 Subject: [PATCH 02/32] update based on requested changes --- .../admin/Evaluations/FeedbackModal.svelte | 15 ++++++++------- .../components/admin/Evaluations/Feedbacks.svelte | 7 ++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/lib/components/admin/Evaluations/FeedbackModal.svelte b/src/lib/components/admin/Evaluations/FeedbackModal.svelte index 68df3d1ba6..804cd0e481 100644 --- a/src/lib/components/admin/Evaluations/FeedbackModal.svelte +++ b/src/lib/components/admin/Evaluations/FeedbackModal.svelte @@ -1,15 +1,16 @@ @@ -38,17 +39,17 @@
{$i18n.t('Rating')}: - {selectedFeedback.data.details?.rating ?? '-'} + {selectedFeedback?.data?.details?.rating ?? '-'}
{$i18n.t('Reason')}: - {selectedFeedback.data.reason || '-'} + {selectedFeedback?.data?.reason || '-'}
{$i18n.t('Tags')}: - {#if selectedFeedback.data.tags && selectedFeedback.data.tags.length} + {#if selectedFeedback?.data?.tags && selectedFeedback?.data?.tags.length}
- {#each selectedFeedback.data.tags as tag} + {#each selectedFeedback?.data?.tags as tag} {tag} {/each} diff --git a/src/lib/components/admin/Evaluations/Feedbacks.svelte b/src/lib/components/admin/Evaluations/Feedbacks.svelte index 814e863bac..e51fe1f10e 100644 --- a/src/lib/components/admin/Evaluations/Feedbacks.svelte +++ b/src/lib/components/admin/Evaluations/Feedbacks.svelte @@ -57,6 +57,11 @@ selectedFeedback = feedback; }; + const closeFeedbackModal = () => { + showFeedbackModal = false; + selectedFeedback = null; + }; + ////////////////////// // // CRUD operations @@ -115,7 +120,7 @@ }; - +
From d92d555c038583782e7bb57c1a19524978345047 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:13:24 -0400 Subject: [PATCH 03/32] Feat: Show user message timestamps on hover in Chat Bubble UI mode --- .../components/chat/Messages/UserMessage.svelte | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte index 4a61b7190d..6b1c764411 100644 --- a/src/lib/components/chat/Messages/UserMessage.svelte +++ b/src/lib/components/chat/Messages/UserMessage.svelte @@ -107,7 +107,11 @@ }} /> -
+
{#if !($settings?.chatBubble ?? true)}
+ {:else if message.timestamp} +
+ +
{/if}
From fced3efd9840990c7afdb81d434e72f08d2d38c2 Mon Sep 17 00:00:00 2001 From: Jason Kidd Date: Thu, 12 Jun 2025 12:29:08 -0700 Subject: [PATCH 04/32] fix: Trailing slash was never removed from request.base_url because it's not a string but rather a starlette.datastructures.URL --- backend/open_webui/utils/oauth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 6c98ed7dfa..e4ec9cf812 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -537,7 +537,7 @@ class OAuthManager: ) # Redirect back to the frontend with the JWT token - redirect_base_url = request.app.state.config.WEBUI_URL or request.base_url + redirect_base_url = str(request.app.state.config.WEBUI_URL or request.base_url) if isinstance(redirect_base_url, str) and redirect_base_url.endswith("/"): redirect_base_url = redirect_base_url[:-1] redirect_url = f"{redirect_base_url}/auth#token={jwt_token}" From 190400d1e85237da97e638c5898ca3579efe46ea Mon Sep 17 00:00:00 2001 From: T-Rekt Date: Fri, 13 Jun 2025 04:49:17 +0700 Subject: [PATCH 05/32] Fix: page number edge case Fix when document?.metadata?.page == 0 (page 1), the page number will not be displayed --- src/lib/components/chat/Messages/CitationsModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/CitationsModal.svelte b/src/lib/components/chat/Messages/CitationsModal.svelte index 48d77b0b7c..bd21fe1965 100644 --- a/src/lib/components/chat/Messages/CitationsModal.svelte +++ b/src/lib/components/chat/Messages/CitationsModal.svelte @@ -109,7 +109,7 @@ > {decodeString(document?.metadata?.name ?? document.source.name)} - {#if document?.metadata?.page} + {#if Number.isInteger(document?.metadata?.page)} ({$i18n.t('page')} {document.metadata.page + 1}) From edf927516e5e39016aef19e22c936d8f43be5f24 Mon Sep 17 00:00:00 2001 From: ayana Date: Thu, 12 Jun 2025 22:28:06 -0700 Subject: [PATCH 06/32] Add initial modal for the leadderboard as well --- .../admin/Evaluations/Leaderboard.svelte | 33 +++++++- .../admin/Evaluations/LeaderboardModal.svelte | 79 +++++++++++++++++++ 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/admin/Evaluations/LeaderboardModal.svelte diff --git a/src/lib/components/admin/Evaluations/Leaderboard.svelte b/src/lib/components/admin/Evaluations/Leaderboard.svelte index e5d8a21662..6774d6a731 100644 --- a/src/lib/components/admin/Evaluations/Leaderboard.svelte +++ b/src/lib/components/admin/Evaluations/Leaderboard.svelte @@ -7,6 +7,8 @@ import { onMount, getContext } from 'svelte'; import { models } from '$lib/stores'; + import ModelModal from './LeaderboardModal.svelte'; + import Spinner from '$lib/components/common/Spinner.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import MagnifyingGlass from '$lib/components/icons/MagnifyingGlass.svelte'; @@ -51,6 +53,25 @@ lost: number; }; + ////////////////////// + // + // Aggregate Level Modal + // + ////////////////////// + + let showLeaderboardModal = false; + let selectedModel = null; + + const openFeedbackModal = (model) => { + showLeaderboardModal = true; + selectedModel = model; + }; + + const closeLeaderboardModal = () => { + showLeaderboardModal = false; + selectedModel = null; + }; + ////////////////////// // // Rank models by Elo rating @@ -268,6 +289,13 @@ }); + +
@@ -343,7 +371,10 @@ {#each rankedModels as model, modelIdx (model.id)} - + openFeedbackModal(model)} + >
{model?.rating !== '-' ? modelIdx + 1 : '-'} diff --git a/src/lib/components/admin/Evaluations/LeaderboardModal.svelte b/src/lib/components/admin/Evaluations/LeaderboardModal.svelte new file mode 100644 index 0000000000..c89f0989b5 --- /dev/null +++ b/src/lib/components/admin/Evaluations/LeaderboardModal.svelte @@ -0,0 +1,79 @@ + + + + {#if model} +
+
+ {model.name} + {$i18n.t('Details')} +
+ +
+
+
+ {$i18n.t('Top Tags')}: + {#if topTags.length} +
+ {#each topTags as tagInfo} + + {tagInfo.tag} ({tagInfo.count}) + + {/each} +
+ {:else} + - + {/if} +
+
+ +
+
+ {/if} +
From 87a837f8504aa20b4f480e16b1e716e38a52856c Mon Sep 17 00:00:00 2001 From: Sine Jespersen Date: Fri, 13 Jun 2025 10:46:27 +0200 Subject: [PATCH 07/32] add aria label to cog button in connections tab in settings modal --- .../components/chat/Settings/Connections/Connection.svelte | 1 + src/lib/i18n/locales/ar-BH/translation.json | 4 +++- src/lib/i18n/locales/ar/translation.json | 4 +++- src/lib/i18n/locales/bg-BG/translation.json | 4 +++- src/lib/i18n/locales/bn-BD/translation.json | 4 +++- src/lib/i18n/locales/bo-TB/translation.json | 4 +++- src/lib/i18n/locales/ca-ES/translation.json | 4 +++- src/lib/i18n/locales/ceb-PH/translation.json | 4 +++- src/lib/i18n/locales/cs-CZ/translation.json | 4 +++- src/lib/i18n/locales/da-DK/translation.json | 4 +++- src/lib/i18n/locales/de-DE/translation.json | 4 +++- src/lib/i18n/locales/dg-DG/translation.json | 4 +++- src/lib/i18n/locales/el-GR/translation.json | 4 +++- src/lib/i18n/locales/en-GB/translation.json | 4 +++- src/lib/i18n/locales/en-US/translation.json | 4 +++- src/lib/i18n/locales/es-ES/translation.json | 4 +++- src/lib/i18n/locales/et-EE/translation.json | 4 +++- src/lib/i18n/locales/eu-ES/translation.json | 4 +++- src/lib/i18n/locales/fa-IR/translation.json | 4 +++- src/lib/i18n/locales/fi-FI/translation.json | 4 +++- src/lib/i18n/locales/fr-CA/translation.json | 4 +++- src/lib/i18n/locales/fr-FR/translation.json | 4 +++- src/lib/i18n/locales/gl-ES/translation.json | 2 +- src/lib/i18n/locales/he-IL/translation.json | 4 +++- src/lib/i18n/locales/hi-IN/translation.json | 4 +++- src/lib/i18n/locales/hr-HR/translation.json | 4 +++- src/lib/i18n/locales/hu-HU/translation.json | 4 +++- src/lib/i18n/locales/id-ID/translation.json | 4 +++- src/lib/i18n/locales/ie-GA/translation.json | 4 +++- src/lib/i18n/locales/it-IT/translation.json | 4 +++- src/lib/i18n/locales/ja-JP/translation.json | 4 +++- src/lib/i18n/locales/ka-GE/translation.json | 4 +++- src/lib/i18n/locales/ko-KR/translation.json | 4 +++- src/lib/i18n/locales/lt-LT/translation.json | 4 +++- src/lib/i18n/locales/ms-MY/translation.json | 4 +++- src/lib/i18n/locales/nb-NO/translation.json | 4 +++- src/lib/i18n/locales/nl-NL/translation.json | 4 +++- src/lib/i18n/locales/pa-IN/translation.json | 4 +++- src/lib/i18n/locales/pl-PL/translation.json | 4 +++- src/lib/i18n/locales/pt-BR/translation.json | 4 +++- src/lib/i18n/locales/pt-PT/translation.json | 4 +++- src/lib/i18n/locales/ro-RO/translation.json | 4 +++- src/lib/i18n/locales/ru-RU/translation.json | 4 +++- src/lib/i18n/locales/sk-SK/translation.json | 4 +++- src/lib/i18n/locales/sr-RS/translation.json | 4 +++- src/lib/i18n/locales/sv-SE/translation.json | 4 +++- src/lib/i18n/locales/th-TH/translation.json | 4 +++- src/lib/i18n/locales/tk-TW/translation.json | 4 +++- src/lib/i18n/locales/tr-TR/translation.json | 4 +++- src/lib/i18n/locales/uk-UA/translation.json | 4 +++- src/lib/i18n/locales/ur-PK/translation.json | 4 +++- src/lib/i18n/locales/vi-VN/translation.json | 4 +++- src/lib/i18n/locales/zh-CN/translation.json | 4 +++- src/lib/i18n/locales/zh-TW/translation.json | 4 +++- 54 files changed, 158 insertions(+), 53 deletions(-) diff --git a/src/lib/components/chat/Settings/Connections/Connection.svelte b/src/lib/components/chat/Settings/Connections/Connection.svelte index b81ce4d157..ce905e1811 100644 --- a/src/lib/components/chat/Settings/Connections/Connection.svelte +++ b/src/lib/components/chat/Settings/Connections/Connection.svelte @@ -83,6 +83,7 @@
-
+ {/each} -
+ {:else}
Date: Fri, 13 Jun 2025 14:03:35 +0200 Subject: [PATCH 24/32] make taglist a list and add aria-labels --- src/lib/components/common/Tags.svelte | 4 ++-- src/lib/components/common/Tags/TagInput.svelte | 2 ++ src/lib/components/common/Tags/TagList.svelte | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/lib/components/common/Tags.svelte b/src/lib/components/common/Tags.svelte index 0f19eed9d8..6c34b72dee 100644 --- a/src/lib/components/common/Tags.svelte +++ b/src/lib/components/common/Tags.svelte @@ -9,7 +9,7 @@ export let tags = []; -
+
    { @@ -23,4 +23,4 @@ dispatch('add', e.detail); }} /> -
+ diff --git a/src/lib/components/common/Tags/TagInput.svelte b/src/lib/components/common/Tags/TagInput.svelte index a7a1a7891c..b7e914803c 100644 --- a/src/lib/components/common/Tags/TagInput.svelte +++ b/src/lib/components/common/Tags/TagInput.svelte @@ -29,6 +29,7 @@ bind:value={tagName} class=" px-2 cursor-pointer self-center text-xs h-fit bg-transparent outline-hidden line-clamp-1 w-[6.5rem]" placeholder={$i18n.t('Add a tag')} + aria-label={$i18n.t('Add a tag')} list="tagOptions" on:keydown={(event) => { if (event.key === 'Enter') { @@ -48,6 +49,7 @@ viewBox="0 0 16 16" fill="currentColor" stroke-width="2" + aria-hidden="true" class="w-3 h-3" > import { createEventDispatcher } from 'svelte'; + import { getContext } from 'svelte'; + const i18n = getContext('i18n'); import Tooltip from '../Tooltip.svelte'; import XMark from '$lib/components/icons/XMark.svelte'; import Badge from '../Badge.svelte'; @@ -10,7 +12,7 @@ {#each tags as tag} -
@@ -23,10 +25,11 @@ dispatch('delete', tag.name); }} type="button" + aria-label={$i18n.t('Remove this tag from list')} >
-
+
{/each} From 33a3aed698ce6543ca757c1c1c16199f5a1b4bc6 Mon Sep 17 00:00:00 2001 From: Sine Jespersen Date: Fri, 13 Jun 2025 14:42:55 +0200 Subject: [PATCH 25/32] remove repeated classes --- src/lib/components/AddConnectionModal.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/AddConnectionModal.svelte b/src/lib/components/AddConnectionModal.svelte index 990611f1f4..e4f02e2005 100644 --- a/src/lib/components/AddConnectionModal.svelte +++ b/src/lib/components/AddConnectionModal.svelte @@ -268,7 +268,7 @@
Date: Fri, 13 Jun 2025 14:43:03 +0200 Subject: [PATCH 26/32] hide decorative svg --- src/lib/components/common/Tags/TagInput.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/components/common/Tags/TagInput.svelte b/src/lib/components/common/Tags/TagInput.svelte index b7e914803c..9d49fee4c1 100644 --- a/src/lib/components/common/Tags/TagInput.svelte +++ b/src/lib/components/common/Tags/TagInput.svelte @@ -74,6 +74,7 @@
Date: Mon, 16 Jun 2025 09:36:29 +0400 Subject: [PATCH 30/32] refac --- src/app.html | 1 + src/lib/components/layout/Sidebar.svelte | 2 +- static/static/custom.css | 0 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 static/static/custom.css diff --git a/src/app.html b/src/app.html index d19f3d227e..6fa5b79cee 100644 --- a/src/app.html +++ b/src/app.html @@ -24,6 +24,7 @@ href="/opensearch.xml" /> +