mirror of
https://github.com/open-webui/open-webui
synced 2025-06-23 02:16:52 +00:00
Merge branch 'dev' into sort-feedbacks
This commit is contained in:
commit
5a4a293a93
@ -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}"
|
||||
|
@ -24,6 +24,7 @@
|
||||
href="/opensearch.xml"
|
||||
/>
|
||||
<script src="/static/loader.js" defer></script>
|
||||
<link rel="stylesheet" href="/static/custom.css" />
|
||||
|
||||
<script>
|
||||
function resizeIframe(obj) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
import { getContext, onMount } from 'svelte';
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
import { models } from '$lib/stores';
|
||||
import { settings } from '$lib/stores';
|
||||
import { verifyOpenAIConnection } from '$lib/apis/openai';
|
||||
import { verifyOllamaConnection } from '$lib/apis/ollama';
|
||||
|
||||
@ -258,11 +258,17 @@
|
||||
|
||||
<div class="flex gap-2 mt-1.5">
|
||||
<div class="flex flex-col w-full">
|
||||
<div class=" mb-0.5 text-xs text-gray-500">{$i18n.t('URL')}</div>
|
||||
<label
|
||||
for="url-input"
|
||||
class={`mb-0.5 text-xs text-gray-500
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>{$i18n.t('URL')}</label
|
||||
>
|
||||
|
||||
<div class="flex-1">
|
||||
<input
|
||||
class="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden"
|
||||
id="url-input"
|
||||
class={`w-full text-sm bg-transparent ${($settings?.highContrastMode ?? false) ? 'placeholder:text-gray-700 dark:placeholder:text-gray-100' : 'outline-hidden placeholder:text-gray-300 dark:placeholder:text-gray-700'}`}
|
||||
type="text"
|
||||
bind:value={url}
|
||||
placeholder={$i18n.t('API Base URL')}
|
||||
@ -279,11 +285,13 @@
|
||||
verifyHandler();
|
||||
}}
|
||||
type="button"
|
||||
aria-label={$i18n.t('Verify Connection')}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
class="w-4 h-4"
|
||||
>
|
||||
<path
|
||||
@ -296,19 +304,27 @@
|
||||
</Tooltip>
|
||||
|
||||
<div class="flex flex-col shrink-0 self-end">
|
||||
<label class="sr-only" for="toggle-connection"
|
||||
>{$i18n.t('Toggle whether current connection is active.')}</label
|
||||
>
|
||||
<Tooltip content={enable ? $i18n.t('Enabled') : $i18n.t('Disabled')}>
|
||||
<Switch bind:state={enable} />
|
||||
<Switch id="toggle-connection" bind:state={enable} />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-2 mt-2">
|
||||
<div class="flex flex-col w-full">
|
||||
<div class=" mb-0.5 text-xs text-gray-500">{$i18n.t('Key')}</div>
|
||||
<div
|
||||
class={`mb-0.5 text-xs text-gray-500
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>
|
||||
{$i18n.t('Key')}
|
||||
</div>
|
||||
|
||||
<div class="flex-1">
|
||||
<SensitiveInput
|
||||
className="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden"
|
||||
inputClassName={`w-full text-sm bg-transparent ${($settings?.highContrastMode ?? false) ? 'placeholder:text-gray-700 dark:placeholder:text-gray-100' : 'outline-hidden placeholder:text-gray-300 dark:placeholder:text-gray-700'}`}
|
||||
bind:value={key}
|
||||
placeholder={$i18n.t('API Key')}
|
||||
required={false}
|
||||
@ -317,7 +333,12 @@
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col w-full">
|
||||
<div class=" mb-1 text-xs text-gray-500">{$i18n.t('Prefix ID')}</div>
|
||||
<label
|
||||
for="prefix-id-input"
|
||||
class={`mb-0.5 text-xs text-gray-500
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>{$i18n.t('Prefix ID')}</label
|
||||
>
|
||||
|
||||
<div class="flex-1">
|
||||
<Tooltip
|
||||
@ -326,8 +347,9 @@
|
||||
)}
|
||||
>
|
||||
<input
|
||||
class="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden"
|
||||
class={`w-full text-sm bg-transparent ${($settings?.highContrastMode ?? false) ? 'placeholder:text-gray-700 dark:placeholder:text-gray-100' : 'outline-hidden placeholder:text-gray-300 dark:placeholder:text-gray-700'}`}
|
||||
type="text"
|
||||
id="prefix-id-input"
|
||||
bind:value={prefixId}
|
||||
placeholder={$i18n.t('Prefix ID')}
|
||||
autocomplete="off"
|
||||
@ -340,11 +362,17 @@
|
||||
{#if azure}
|
||||
<div class="flex gap-2 mt-2">
|
||||
<div class="flex flex-col w-full">
|
||||
<div class=" mb-1 text-xs text-gray-500">{$i18n.t('API Version')}</div>
|
||||
<label
|
||||
for="api-version-input"
|
||||
class={`mb-0.5 text-xs text-gray-500
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>{$i18n.t('API Version')}</label
|
||||
>
|
||||
|
||||
<div class="flex-1">
|
||||
<input
|
||||
class="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden"
|
||||
id="api-version-input"
|
||||
class={`w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 ${($settings?.highContrastMode ?? false) ? 'placeholder:text-gray-700 dark:placeholder:text-gray-100' : 'outline-hidden placeholder:text-gray-300 dark:placeholder:text-gray-700'}`}
|
||||
type="text"
|
||||
bind:value={apiVersion}
|
||||
placeholder={$i18n.t('API Version')}
|
||||
@ -358,7 +386,12 @@
|
||||
|
||||
<div class="flex gap-2 mt-2">
|
||||
<div class="flex flex-col w-full">
|
||||
<div class=" mb-1.5 text-xs text-gray-500">{$i18n.t('Tags')}</div>
|
||||
<div
|
||||
class={`mb-0.5 text-xs text-gray-500
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>
|
||||
{$i18n.t('Tags')}
|
||||
</div>
|
||||
|
||||
<div class="flex-1">
|
||||
<Tags
|
||||
@ -383,18 +416,26 @@
|
||||
|
||||
<div class="flex flex-col w-full">
|
||||
<div class="mb-1 flex justify-between">
|
||||
<div class="text-xs text-gray-500">{$i18n.t('Model IDs')}</div>
|
||||
<div
|
||||
class={`mb-0.5 text-xs text-gray-500
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>
|
||||
{$i18n.t('Model IDs')}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{#if modelIds.length > 0}
|
||||
<div class="flex flex-col">
|
||||
<ul class="flex flex-col">
|
||||
{#each modelIds as modelId, modelIdx}
|
||||
<div class=" flex gap-2 w-full justify-between items-center">
|
||||
<li class=" flex gap-2 w-full justify-between items-center">
|
||||
<div class=" text-sm flex-1 py-1 rounded-lg">
|
||||
{modelId}
|
||||
</div>
|
||||
<div class="shrink-0">
|
||||
<button
|
||||
aria-label={$i18n.t(`Remove {{MODELID}} from list.`, {
|
||||
MODELID: modelId
|
||||
})}
|
||||
type="button"
|
||||
on:click={() => {
|
||||
modelIds = modelIds.filter((_, idx) => idx !== modelIdx);
|
||||
@ -403,11 +444,14 @@
|
||||
<Minus strokeWidth="2" className="size-3.5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{/each}
|
||||
</div>
|
||||
</ul>
|
||||
{:else}
|
||||
<div class="text-gray-500 text-xs text-center py-2 px-10">
|
||||
<div
|
||||
class={`text-gray-500 text-xs text-center py-2 px-10
|
||||
${($settings?.highContrastMode ?? false) ? 'text-gray-800 dark:text-gray-100' : ''}`}
|
||||
>
|
||||
{#if ollama}
|
||||
{$i18n.t('Leave empty to include all models from "{{url}}/api/tags" endpoint', {
|
||||
url: url
|
||||
@ -429,17 +473,22 @@
|
||||
<hr class=" border-gray-100 dark:border-gray-700/10 my-1.5 w-full" />
|
||||
|
||||
<div class="flex items-center">
|
||||
<label class="sr-only" for="add-model-id-input">{$i18n.t('Add a model ID')}</label>
|
||||
<input
|
||||
class="w-full py-1 text-sm rounded-lg bg-transparent {modelId
|
||||
? ''
|
||||
: 'text-gray-500'} placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden"
|
||||
: 'text-gray-500'} {($settings?.highContrastMode ?? false)
|
||||
? 'dark:placeholder:text-gray-100 placeholder:text-gray-700'
|
||||
: 'placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden'}"
|
||||
bind:value={modelId}
|
||||
id="add-model-id-input"
|
||||
placeholder={$i18n.t('Add a model ID')}
|
||||
/>
|
||||
|
||||
<div>
|
||||
<button
|
||||
type="button"
|
||||
aria-label={$i18n.t('Add')}
|
||||
on:click={() => {
|
||||
addModelHandler();
|
||||
}}
|
||||
|
80
src/lib/components/admin/Evaluations/FeedbackModal.svelte
Normal file
80
src/lib/components/admin/Evaluations/FeedbackModal.svelte
Normal file
@ -0,0 +1,80 @@
|
||||
<script lang="ts">
|
||||
import Modal from '$lib/components/common/Modal.svelte';
|
||||
import { getContext } from 'svelte';
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let show = false;
|
||||
export let selectedFeedback = null;
|
||||
|
||||
export let onClose: () => void = () => {};
|
||||
|
||||
const close = () => {
|
||||
show = false;
|
||||
onClose();
|
||||
};
|
||||
</script>
|
||||
|
||||
<Modal size="sm" bind:show>
|
||||
{#if selectedFeedback}
|
||||
<div>
|
||||
<div class="flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
|
||||
<div class="text-lg font-medium self-center">
|
||||
{$i18n.t('Feedback Details')}
|
||||
</div>
|
||||
<button class="self-center" on:click={close} aria-label="Close">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="w-5 h-5"
|
||||
>
|
||||
<path
|
||||
d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col md:flex-row w-full px-5 pb-4 md:space-x-4 dark:text-gray-200">
|
||||
<div class="flex flex-col w-full">
|
||||
<div class="flex flex-col w-full mb-2">
|
||||
<div class=" mb-1 text-xs text-gray-500">{$i18n.t('Rating')}</div>
|
||||
|
||||
<div class="flex-1">
|
||||
<span>{selectedFeedback?.data?.details?.rating ?? '-'}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col w-full mb-2">
|
||||
<div class=" mb-1 text-xs text-gray-500">{$i18n.t('Reason')}</div>
|
||||
|
||||
<div class="flex-1">
|
||||
<span>{selectedFeedback?.data?.reason || '-'}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-2">
|
||||
{#if selectedFeedback?.data?.tags && selectedFeedback?.data?.tags.length}
|
||||
<div class="flex flex-wrap gap-1 mt-1">
|
||||
{#each selectedFeedback?.data?.tags as tag}
|
||||
<span class="px-2 py-0.5 rounded bg-gray-100 dark:bg-gray-800 text-xs">{tag}</span
|
||||
>
|
||||
{/each}
|
||||
</div>
|
||||
{:else}
|
||||
<span>-</span>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex justify-end pt-3">
|
||||
<button
|
||||
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
|
||||
type="button"
|
||||
on:click={close}
|
||||
>
|
||||
{$i18n.t('Close')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</Modal>
|
@ -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';
|
||||
|
||||
import ChevronUp from '$lib/components/icons/ChevronUp.svelte';
|
||||
@ -92,6 +93,19 @@
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
|
||||
let showFeedbackModal = false;
|
||||
let selectedFeedback = null;
|
||||
|
||||
const openFeedbackModal = (feedback) => {
|
||||
showFeedbackModal = true;
|
||||
selectedFeedback = feedback;
|
||||
};
|
||||
|
||||
const closeFeedbackModal = () => {
|
||||
showFeedbackModal = false;
|
||||
selectedFeedback = null;
|
||||
};
|
||||
|
||||
//////////////////////
|
||||
//
|
||||
@ -151,6 +165,8 @@
|
||||
};
|
||||
</script>
|
||||
|
||||
<FeedbackModal bind:show={showFeedbackModal} {selectedFeedback} onClose={closeFeedbackModal} />
|
||||
|
||||
<div class="mt-0.5 mb-2 gap-1 flex flex-row justify-between">
|
||||
<div class="flex md:self-center text-lg font-medium px-0.5">
|
||||
{$i18n.t('Feedback History')}
|
||||
@ -288,7 +304,10 @@
|
||||
</thead>
|
||||
<tbody class="">
|
||||
{#each paginatedFeedbacks as feedback (feedback.id)}
|
||||
<tr class="bg-white dark:bg-gray-900 dark:border-gray-850 text-xs">
|
||||
<tr
|
||||
class="bg-white dark:bg-gray-900 dark:border-gray-850 text-xs cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 transition"
|
||||
on:click={() => openFeedbackModal(feedback)}
|
||||
>
|
||||
<td class=" py-0.5 text-right font-semibold">
|
||||
<div class="flex justify-center">
|
||||
<Tooltip content={feedback?.user?.name}>
|
||||
|
@ -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';
|
||||
@ -66,6 +68,25 @@
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
//
|
||||
// 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
|
||||
@ -305,6 +326,13 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<ModelModal
|
||||
bind:show={showLeaderboardModal}
|
||||
model={selectedModel}
|
||||
{feedbacks}
|
||||
onClose={closeLeaderboardModal}
|
||||
/>
|
||||
|
||||
<div class="mt-0.5 mb-2 gap-1 flex flex-col md:flex-row justify-between">
|
||||
<div class="flex md:self-center text-lg font-medium px-0.5 shrink-0 items-center">
|
||||
<div class=" gap-1">
|
||||
@ -475,7 +503,10 @@
|
||||
</thead>
|
||||
<tbody class="">
|
||||
{#each sortedModels as model, modelIdx (model.id)}
|
||||
<tr class="bg-white dark:bg-gray-900 dark:border-gray-850 text-xs group">
|
||||
<tr
|
||||
class="bg-white dark:bg-gray-900 dark:border-gray-850 text-xs group cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 transition"
|
||||
on:click={() => openFeedbackModal(model)}
|
||||
>
|
||||
<td class="px-3 py-1.5 text-left font-medium text-gray-900 dark:text-white w-fit">
|
||||
<div class=" line-clamp-1">
|
||||
{model?.rating !== '-' ? modelIdx + 1 : '-'}
|
||||
|
77
src/lib/components/admin/Evaluations/LeaderboardModal.svelte
Normal file
77
src/lib/components/admin/Evaluations/LeaderboardModal.svelte
Normal file
@ -0,0 +1,77 @@
|
||||
<script lang="ts">
|
||||
import Modal from '$lib/components/common/Modal.svelte';
|
||||
import { getContext } from 'svelte';
|
||||
export let show = false;
|
||||
export let model = null;
|
||||
export let feedbacks = [];
|
||||
export let onClose: () => void = () => {};
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
const close = () => {
|
||||
show = false;
|
||||
onClose();
|
||||
};
|
||||
|
||||
$: topTags = model ? getTopTagsForModel(model.id, feedbacks) : [];
|
||||
|
||||
const getTopTagsForModel = (modelId: string, feedbacks: any[], topN = 5) => {
|
||||
const tagCounts = new Map();
|
||||
feedbacks
|
||||
.filter((fb) => fb.data.model_id === modelId)
|
||||
.forEach((fb) => {
|
||||
(fb.data.tags || []).forEach((tag) => {
|
||||
tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
|
||||
});
|
||||
});
|
||||
return Array.from(tagCounts.entries())
|
||||
.sort((a, b) => b[1] - a[1])
|
||||
.slice(0, topN)
|
||||
.map(([tag, count]) => ({ tag, count }));
|
||||
};
|
||||
</script>
|
||||
|
||||
<Modal size="sm" bind:show>
|
||||
{#if model}
|
||||
<div class="flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
|
||||
<div class="text-lg font-medium self-center">
|
||||
{model.name}
|
||||
</div>
|
||||
<button class="self-center" on:click={close} aria-label="Close">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="w-5 h-5"
|
||||
>
|
||||
<path
|
||||
d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div class="px-5 pb-4 dark:text-gray-200">
|
||||
<div class="mb-2">
|
||||
{#if topTags.length}
|
||||
<div class="flex flex-wrap gap-1 mt-1">
|
||||
{#each topTags as tagInfo}
|
||||
<span class="px-2 py-0.5 rounded bg-gray-100 dark:bg-gray-800 text-xs">
|
||||
{tagInfo.tag} <span class="text-gray-500">({tagInfo.count})</span>
|
||||
</span>
|
||||
{/each}
|
||||
</div>
|
||||
{:else}
|
||||
<span>-</span>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex justify-end pt-3">
|
||||
<button
|
||||
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
|
||||
type="button"
|
||||
on:click={close}
|
||||
>
|
||||
{$i18n.t('Close')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</Modal>
|
@ -109,7 +109,7 @@
|
||||
>
|
||||
{decodeString(document?.metadata?.name ?? document.source.name)}
|
||||
</a>
|
||||
{#if document?.metadata?.page}
|
||||
{#if Number.isInteger(document?.metadata?.page)}
|
||||
<span class="text-xs text-gray-500 dark:text-gray-400">
|
||||
({$i18n.t('page')}
|
||||
{document.metadata.page + 1})
|
||||
|
@ -225,7 +225,7 @@
|
||||
<div
|
||||
class=" snap-center w-full max-w-full m-1 border {history.messages[messageId]
|
||||
?.modelIdx == modelIdx
|
||||
? `border-gray-100 dark:border-gray-850 border-[1.5px] ${
|
||||
? `bg-gray-50 dark:bg-gray-850 border-gray-100 dark:border-gray-800 border-2 ${
|
||||
$mobile ? 'min-w-full' : 'min-w-80'
|
||||
}`
|
||||
: `border-gray-100 dark:border-gray-850 border-dashed ${
|
||||
|
@ -107,7 +107,11 @@
|
||||
}}
|
||||
/>
|
||||
|
||||
<div class=" flex w-full user-message" dir={$settings.chatDirection} id="message-{message.id}">
|
||||
<div
|
||||
class=" flex w-full user-message group"
|
||||
dir={$settings.chatDirection}
|
||||
id="message-{message.id}"
|
||||
>
|
||||
{#if !($settings?.chatBubble ?? true)}
|
||||
<div class={`shrink-0 ltr:mr-3 rtl:ml-3`}>
|
||||
<ProfileImage
|
||||
@ -143,6 +147,16 @@
|
||||
{/if}
|
||||
</Name>
|
||||
</div>
|
||||
{:else if message.timestamp}
|
||||
<div class="flex justify-end pb-1 pr-2">
|
||||
<div
|
||||
class="text-xs invisible group-hover:visible text-gray-400 font-medium first-letter:capitalize translate-y-[1px]"
|
||||
>
|
||||
<Tooltip content={dayjs(message.timestamp * 1000).format('LLLL')}>
|
||||
<span class="line-clamp-1">{formatDate(message.timestamp * 1000)}</span>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="chat-{message.role} w-full min-w-full markdown-prose">
|
||||
|
@ -83,6 +83,7 @@
|
||||
<div class="flex gap-1">
|
||||
<Tooltip content={$i18n.t('Configure')} className="self-start">
|
||||
<button
|
||||
aria-label={$i18n.t('Open modal to configure connection')}
|
||||
class="self-center p-1 bg-transparent hover:bg-gray-100 dark:bg-gray-900 dark:hover:bg-gray-850 rounded-lg transition"
|
||||
on:click={() => {
|
||||
showConfigModal = true;
|
||||
|
@ -2,6 +2,7 @@
|
||||
import { createEventDispatcher, tick } from 'svelte';
|
||||
import { Switch } from 'bits-ui';
|
||||
export let state = true;
|
||||
export let id = '';
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
@ -10,6 +11,7 @@
|
||||
|
||||
<Switch.Root
|
||||
bind:checked={state}
|
||||
{id}
|
||||
class="flex h-5 min-h-5 w-9 shrink-0 cursor-pointer items-center rounded-full px-[3px] mx-[1px] transition {state
|
||||
? ' bg-emerald-600'
|
||||
: 'bg-gray-200 dark:bg-transparent'} outline outline-1 outline-gray-100 dark:outline-gray-800"
|
||||
|
@ -9,7 +9,7 @@
|
||||
export let tags = [];
|
||||
</script>
|
||||
|
||||
<div class="flex flex-row flex-wrap gap-1 line-clamp-1">
|
||||
<ul class="flex flex-row flex-wrap gap-1 line-clamp-1">
|
||||
<TagList
|
||||
{tags}
|
||||
on:delete={(e) => {
|
||||
@ -23,4 +23,4 @@
|
||||
dispatch('add', e.detail);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</ul>
|
||||
|
@ -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"
|
||||
>
|
||||
<path
|
||||
@ -72,6 +74,7 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 16 16"
|
||||
aria-hidden="true"
|
||||
fill="currentColor"
|
||||
class="w-3 h-3 {showTagInput ? 'rotate-45' : ''} transition-all transform"
|
||||
>
|
||||
|
@ -1,5 +1,7 @@
|
||||
<script lang="ts">
|
||||
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}
|
||||
<Tooltip content={tag.name}>
|
||||
<div
|
||||
<li
|
||||
class="relative group/tags px-1.5 py-[0.2px] gap-0.5 flex justify-between h-fit max-h-fit w-fit items-center rounded-full bg-gray-500/20 text-gray-700 dark:text-gray-200 transition cursor-pointer"
|
||||
>
|
||||
<div class=" text-[0.7rem] font-medium self-center line-clamp-1 w-fit">
|
||||
@ -23,10 +25,11 @@
|
||||
dispatch('delete', tag.name);
|
||||
}}
|
||||
type="button"
|
||||
aria-label={$i18n.t('Remove this tag from list')}
|
||||
>
|
||||
<XMark className="size-3" strokeWidth="2.5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</Tooltip>
|
||||
{/each}
|
||||
|
@ -8,6 +8,7 @@
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width={strokeWidth}
|
||||
aria-hidden="true"
|
||||
stroke="currentColor"
|
||||
class={className}
|
||||
>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
aria-hidden="true"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width={strokeWidth}
|
||||
stroke="currentColor"
|
||||
|
@ -10,6 +10,7 @@
|
||||
stroke-width={strokeWidth}
|
||||
stroke="currentColor"
|
||||
class={className}
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15" />
|
||||
</svg>
|
||||
|
@ -507,7 +507,7 @@
|
||||
<img
|
||||
crossorigin="anonymous"
|
||||
src="{WEBUI_BASE_URL}/static/favicon.png"
|
||||
class=" size-5 -translate-x-1.5 rounded-full"
|
||||
class="sidebar-new-chat-icon size-5 -translate-x-1.5 rounded-full"
|
||||
alt="logo"
|
||||
/>
|
||||
</div>
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "خطاء! أنت تستخدم طريقة غير مدعومة (الواجهة الأمامية فقط). يرجى تقديم واجهة WebUI من الواجهة الخلفية.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "فتح محادثة جديده",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "خطاء! أنت تستخدم طريقة غير مدعومة (الواجهة الأمامية فقط). يرجى تقديم واجهة WebUI من الواجهة الخلفية.",
|
||||
"Open file": "فتح الملف",
|
||||
"Open in full screen": "فتح في وضع ملء الشاشة",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "فتح محادثة جديده",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "تستخدم واجهة WebUI أداة faster-whisper داخليًا.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Използвате неподдържан метод (само фронтенд). Моля, сервирайте WebUI от бекенда.",
|
||||
"Open file": "Отвори файл",
|
||||
"Open in full screen": "Отвори на цял екран",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Отвори нов чат",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI използва вътрешно по-бързо-whisper.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "আপনি একটা আনসাপোর্টেড পদ্ধতি (শুধু ফ্রন্টএন্ড) ব্যবহার করছেন। দয়া করে WebUI ব্যাকএন্ড থেকে চালনা করুন।",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "নতুন চ্যাট খুলুন",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ཨོའོ། ཁྱེད་ཀྱིས་རྒྱབ་སྐྱོར་མེད་པའི་ཐབས་ལམ་ཞིག་ (མདུན་ངོས་ཁོ་ན།) བེད་སྤྱོད་གཏོང་བཞིན་འདུག རྒྱབ་སྣེ་ནས་ WebUI མཁོ་སྤྲོད་བྱེད་རོགས།",
|
||||
"Open file": "ཡིག་ཆ་ཁ་ཕྱེ་བ།",
|
||||
"Open in full screen": "ཡོངས་གནས་ངོས་སུ་ཁ་ཕྱེ་བ།",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "ཁ་བརྡ་གསར་པ་ཁ་ཕྱེ་བ།",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI ཡིས་ནང་ཁུལ་དུ་ faster-whisper བེད་སྤྱོད་བྱེད།",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ui! Estàs utilitzant un mètode no suportat (només frontend). Si us plau, serveix la WebUI des del backend.",
|
||||
"Open file": "Obrir arxiu",
|
||||
"Open in full screen": "Obrir en pantalla complerta",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Obre un xat nou",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI pot utilitzar eines de servidors OpenAPI.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI utilitza faster-whisper internament.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! ",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Ablihi ang bag-ong diskusyon",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Jejda! Používáte nepodporovanou metodu (pouze frontend). Prosím, spusťte WebUI ze serverové části (backendu).",
|
||||
"Open file": "Otevřít soubor",
|
||||
"Open in full screen": "Otevřít na celou obrazovku",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Otevřít nový chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI interně používá faster-whisper.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Du bruger en metode, der ikke understøttes (kun frontend). Kør WebUI fra backend.",
|
||||
"Open file": "Åbn fil",
|
||||
"Open in full screen": "Åbn i fuld skærm",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Åbn ny chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI bruger faster-whisper internt.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppla! Sie verwenden eine nicht unterstützte Methode (nur Frontend). Bitte stellen Sie die WebUI vom Backend bereit.",
|
||||
"Open file": "Datei öffnen",
|
||||
"Open in full screen": "Im Vollbildmodus öffnen",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Neuen Chat öffnen",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI kann Werkzeuge verwenden, die von irgendeinem OpenAPI-Server bereitgestellt werden.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI verwendet intern faster-whisper.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Open new bark",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ωχ! Χρησιμοποιείτε μια μη υποστηριζόμενη μέθοδο (μόνο frontend). Παρακαλώ σερβίρετε το WebUI από το backend.",
|
||||
"Open file": "Άνοιγμα αρχείου",
|
||||
"Open in full screen": "Άνοιγμα σε πλήρη οθόνη",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Άνοιγμα νέας συνομιλίας",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Το Open WebUI χρησιμοποιεί το faster-whisper εσωτερικά.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "¡vaya! Estás usando un método no soportado (solo interface frontal-frontend). Por favor sirve WebUI desde el interface trasero (servidor backend).",
|
||||
"Open file": "Abrir archivo",
|
||||
"Open in full screen": "Abrir en pantalla completa",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Abrir nuevo chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open-WebUI puede usar herramientas proporcionadas por cualquier servidor OpenAPI",
|
||||
"Open WebUI uses faster-whisper internally.": "Open-WebUI usa faster-whisper internamente.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oih! Kasutate toetamatut meetodit (ainult kasutajaliides). Palun serveerige WebUI tagarakendusest.",
|
||||
"Open file": "Ava fail",
|
||||
"Open in full screen": "Ava täisekraanil",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Ava uus vestlus",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI kasutab sisemiselt faster-whisper'it.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ui! Onartzen ez den metodo bat erabiltzen ari zara (frontend soilik). Mesedez, zerbitzatu WebUI-a backendetik.",
|
||||
"Open file": "Ireki fitxategia",
|
||||
"Open in full screen": "Ireki pantaila osoan",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Ireki txat berria",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI-k faster-whisper erabiltzen du barnean.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "اوه! شما از یک روش پشتیبانی نشده (فقط frontend) استفاده می کنید. لطفاً WebUI را از بکند اجرا کنید.",
|
||||
"Open file": "باز کردن فایل",
|
||||
"Open in full screen": "باز کردن در تمام صفحه",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "باز کردن گپ جدید",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI می\u200cتواند از ابزارهای ارائه شده توسط هر سرور OpenAPI استفاده کند.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI به صورت داخلی از faster-whisper استفاده می\u200cکند.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hups! Käytät ei-tuettua menetelmää (vain frontend). Palvele WebUI:ta backendistä.",
|
||||
"Open file": "Avaa tiedosto",
|
||||
"Open in full screen": "Avaa koko näytön tilaan",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Avaa uusi keskustelu",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI voi käyttää minkä tahansa OpenAPI-palvelimen tarjoamia työkaluja.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI käyttää faster-whisperia sisäisesti.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups\u00a0! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Ouvrir une nouvelle discussion",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups ! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
|
||||
"Open file": "Ouvrir le fichier",
|
||||
"Open in full screen": "Ouvrir en plein écran",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Ouvrir une nouvelle conversation",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI utilise faster-whisper en interne.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "אופס! אתה משתמש בשיטה לא נתמכת (רק חזית). אנא שרת את ממשק המשתמש האינטרנטי מהשרת האחורי.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "פתח צ'אט חדש",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "उफ़! आप एक असमर्थित विधि (केवल फ्रंटएंड) का उपयोग कर रहे हैं। कृपया बैकएंड से WebUI सर्वे करें।",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "नई चैट खोलें",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Koristite nepodržanu metodu (samo frontend). Molimo poslužite WebUI s backend-a.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Otvorite novi razgovor",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppá! Nem támogatott módszert használ (csak frontend). Kérjük, szolgálja ki a WebUI-t a backend-ről.",
|
||||
"Open file": "Fájl megnyitása",
|
||||
"Open in full screen": "Megnyitás teljes képernyőn",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Új beszélgetés megnyitása",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Az Open WebUI bármely OpenAPI szerver által biztosított eszközöket használhat.",
|
||||
"Open WebUI uses faster-whisper internally.": "Az Open WebUI belsőleg a faster-whispert használja.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Anda menggunakan metode yang tidak didukung (hanya untuk frontend). Silakan sajikan WebUI dari backend.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Buka obrolan baru",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Tá modh gan tacaíocht á úsáid agat (tosaigh amháin). Freastal ar an WebUI ón gcúltaca le do thoil.",
|
||||
"Open file": "Oscail comhad",
|
||||
"Open in full screen": "Oscail i scáileán iomlán",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Oscail comhrá nua",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Is féidir le WebUI Oscailte uirlisí a úsáid a sholáthraíonn aon fhreastalaí OpenAPI.",
|
||||
"Open WebUI uses faster-whisper internally.": "Úsáideann Open WebUI cogar níos tapúla go hinmheánach.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Stai utilizzando un metodo non supportato (solo frontend). Si prega di servire la WebUI dal backend.",
|
||||
"Open file": "Apri file",
|
||||
"Open in full screen": "Apri a schermo intero",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Apri nuova chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI può utilizzare tool forniti da qualsiasi server OpenAPI.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI utilizza faster-whisper internamente.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "おっと! サポートされていない方法 (フロントエンドのみ) を使用しています。バックエンドから WebUI を提供してください。",
|
||||
"Open file": "ファイルを開く",
|
||||
"Open in full screen": "全画面表示",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "新しいチャットを開く",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "OpenWebUI は任意のOpenAPI サーバーが提供するツールを使用できます。",
|
||||
"Open WebUI uses faster-whisper internally.": "OpenWebUI は内部でfaster-whisperを使用します。",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ვაი! იყენებთ მხარდაუჭერელ მეთოდს (მხოლოდ წინაბოლო). შედით WebUI-ზე უკანაბოლოდან.",
|
||||
"Open file": "ფაილის გახსნა",
|
||||
"Open in full screen": "მთელ ეკრანზე გახსნა",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "ახალი ჩატის გახსნა",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "이런! 지원되지 않는 방식(프론트엔드만)을 사용하고 계십니다. 백엔드에서 WebUI를 제공해주세요.",
|
||||
"Open file": "파일 열기",
|
||||
"Open in full screen": "전체화면으로 열기",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "새 채팅 열기",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI는 모든 OpenAPI 서버에서 제공하는 도구를 사용할 수 있습니다.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI는 내부적으로 패스트 위스퍼를 사용합니다.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Naudojate nepalaikomą (front-end) web ui rėžimą. Prašau serviruokite WebUI iš back-end",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Atverti naują pokalbį",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Maaf, Anda menggunakan kaedah yang tidak disokong (bahagian 'frontend' sahaja). Sila sediakan WebUI dari 'backend'.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Buka perbualan baru",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oi! Du bruker en ikke-støttet metode (bare frontend). Du må kjøre WebUI fra backend.",
|
||||
"Open file": "Åpne fil",
|
||||
"Open in full screen": "Åpne i fullskjerm",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Åpne ny chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI bruker faster-whisper internt.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oeps! Je gebruikt een niet-ondersteunde methode (alleen frontend). Serveer de WebUI vanuit de backend.",
|
||||
"Open file": "Open bestand",
|
||||
"Open in full screen": "Open in volledig scherm",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Open nieuwe chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI gebruikt faster-whisper intern",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ਓਹੋ! ਤੁਸੀਂ ਇੱਕ ਅਣਸਮਰਥਿਤ ਢੰਗ ਵਰਤ ਰਹੇ ਹੋ (ਸਿਰਫ਼ ਫਰੰਟਐਂਡ)। ਕਿਰਪਾ ਕਰਕੇ ਵੈਬਯੂਆਈ ਨੂੰ ਬੈਕਐਂਡ ਤੋਂ ਸਰਵ ਕਰੋ।",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "ਨਵੀਂ ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Używasz nieobsługiwanej metody (tylko interfejs użytkownika). Proszę serwować WebUI z poziomu backendu.",
|
||||
"Open file": "Otwórz plik",
|
||||
"Open in full screen": "Otwórz na pełny ekran",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Otwórz nową rozmowę",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI korzysta wewnętrznie z szybszego faster-whisper.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Você está usando um método não suportado (somente frontend). Por favor, sirva a WebUI a partir do backend.",
|
||||
"Open file": "Abrir arquivo",
|
||||
"Open in full screen": "Abrir em tela cheia",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Abrir novo chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI usa faster-whisper internamente.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Epá! Você está a usar um método não suportado (somente frontend). Por favor, sirva o WebUI a partir do backend.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Abrir nova conversa",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Utilizați o metodă nesuportată (doar frontend). Vă rugăm să serviți WebUI din backend.",
|
||||
"Open file": "Deschide fișierul",
|
||||
"Open in full screen": "Deschide în ecran complet",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Deschide conversație nouă",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI folosește faster-whisper intern.",
|
||||
|
@ -209,8 +209,8 @@
|
||||
"Clone Chat": "Клонировать чат",
|
||||
"Clone of {{TITLE}}": "Клон {{TITLE}}",
|
||||
"Close": "Закрыть",
|
||||
"Close modal": "",
|
||||
"Close settings modal": "",
|
||||
"Close modal": "Закрыть окно",
|
||||
"Close settings modal": "Закрыть окно настроек",
|
||||
"Code execution": "Исполнение кода",
|
||||
"Code Execution": "Исполнение кода",
|
||||
"Code Execution Engine": "Механизм исполнения кода",
|
||||
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Вы используете неподдерживаемый метод (только фронтенд). Пожалуйста, обслуживайте веб-интерфейс из бэкенда.",
|
||||
"Open file": "Открыть файл",
|
||||
"Open in full screen": "Открыть на весь экран",
|
||||
"Open modal to configure connection": "Открыть окно настроек подключения",
|
||||
"Open new chat": "Открыть новый чат",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI может использовать инструменты, предоставляемые любым сервером OpenAPI.",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI использует более быстрый внутренний интерфейс whisper.",
|
||||
@ -1209,7 +1210,7 @@
|
||||
"This action cannot be undone. Do you wish to continue?": "Это действие нельзя отменить. Вы хотите продолжить?",
|
||||
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Этот канал был создан {{createdAt}}. Это самое начало канала {{channelName}}.",
|
||||
"This chat won't appear in history and your messages will not be saved.": "Этот чат не появится в истории, и ваши сообщения не будут сохранены.",
|
||||
"This chat won’t appear in history and your messages will not be saved.": "",
|
||||
"This chat won’t appear in history and your messages will not be saved.": "Этот чат не появится в истории, и ваши сообщения не будут сохранены.",
|
||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Это обеспечивает сохранение ваших ценных разговоров в безопасной базе данных на вашем сервере. Спасибо!",
|
||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Это экспериментальная функция, она может работать не так, как ожидалось, и может быть изменена в любое время.",
|
||||
"This model is not publicly available. Please select another model.": "Эта модель недоступна в открытом доступе. Пожалуйста, выберите другую модель.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Jejda! Používate nepodporovanú metódu (iba frontend). Prosím, spustite WebUI zo serverovej časti (backendu).",
|
||||
"Open file": "Otvoriť súbor",
|
||||
"Open in full screen": "Otvoriť na celú obrazovku",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Otvoriť nový chat",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI interne používa faster-whisper.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Користите неподржани метод (само фронтенд). Молимо вас да покренете WebUI са бекенда.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Покрени ново ћаскање",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppsan! Du använder en ej stödd metod (endast frontend). Vänligen servera WebUI från backend.",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Öppna ny chatt",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "อุ๊บส์! คุณกำลังใช้วิธีที่ไม่รองรับ (เฉพาะเว็บส่วนหน้า) กรุณาให้บริการ WebUI จากเว็บส่วนแบ็กเอนด์",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "เปิดแชทใหม่",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
||||
"Open file": "",
|
||||
"Open in full screen": "",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hop! Desteklenmeyen bir yöntem kullanıyorsunuz (yalnızca önyüz). Lütfen WebUI'yi arkayüzden sunun.",
|
||||
"Open file": "Dosyayı aç",
|
||||
"Open in full screen": "Tam ekranda aç",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Yeni sohbet aç",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI OpenAPI tarafından sağlanan araçları kullanabilir",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI, dahili olarak daha hızlı-fısıltı kullanır.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Ви використовуєте непідтримуваний метод (тільки для фронтенду). Будь ласка, обслуговуйте WebUI з бекенду.",
|
||||
"Open file": "Відкрити файл",
|
||||
"Open in full screen": "Відкрити на весь екран",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Відкрити новий чат",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI використовує faster-whisper внутрішньо.",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "اوہ! آپ ایک غیر معاون طریقہ استعمال کر رہے ہیں (صرف فرنٹ اینڈ) براہ کرم ویب یو آئی کو بیک اینڈ سے پیش کریں",
|
||||
"Open file": "فائل کھولیں",
|
||||
"Open in full screen": "پوری اسکرین میں کھولیں",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "نیا چیٹ کھولیں",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "اوپن ویب یو آئی اندرونی طور پر فاسٹر وِسپر استعمال کرتا ہے",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Rất tiếc! Bạn đang sử dụng một phương thức không được hỗ trợ (chỉ dành cho frontend). Vui lòng cung cấp phương thức cho WebUI từ phía backend.",
|
||||
"Open file": "Mở tệp",
|
||||
"Open in full screen": "Mở toàn màn hình",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "Mở nội dung chat mới",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI sử dụng faster-whisper bên trong.",
|
||||
|
@ -209,8 +209,8 @@
|
||||
"Clone Chat": "克隆对话",
|
||||
"Clone of {{TITLE}}": "{{TITLE}} 的副本",
|
||||
"Close": "关闭",
|
||||
"Close modal": "",
|
||||
"Close settings modal": "",
|
||||
"Close modal": "关闭弹窗",
|
||||
"Close settings modal": "关闭设置弹窗",
|
||||
"Code execution": "代码执行",
|
||||
"Code Execution": "代码执行",
|
||||
"Code Execution Engine": "代码执行引擎",
|
||||
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "你正在使用不被支持的方法(仅运行前端服务)。需要后端提供 WebUI 服务。",
|
||||
"Open file": "打开文件",
|
||||
"Open in full screen": "全屏打开",
|
||||
"Open modal to configure connection": "打开外部连接配置弹窗",
|
||||
"Open new chat": "打开新对话",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI 可使用任何 OpenAPI 服务器提供的工具。",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI 使用内置 faster-whisper",
|
||||
@ -1194,7 +1195,7 @@
|
||||
"The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "批处理大小决定了一次可以处理多少个文本请求。更高的批处理大小可以提高模型的性能和速度,但也需要更多内存。",
|
||||
"The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "本插件的开发者是社区中充满热情的志愿者。如果此插件有帮助到您,请考虑为开发贡献一份力量。",
|
||||
"The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "排行榜基于 Elo 评级系统并实时更新。",
|
||||
"The format to return a response in. Format can be json or a JSON schema.": "",
|
||||
"The format to return a response in. Format can be json or a JSON schema.": "响应返回格式。可为 json 或 JSON schema。",
|
||||
"The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "输入音频的语言。以 ISO-639-1 格式(例如:en)指定输入语言可提高准确性和响应速度。留空则自动检测语言。",
|
||||
"The LDAP attribute that maps to the mail that users use to sign in.": "映射到用户登录时使用的邮箱的 LDAP 属性。",
|
||||
"The LDAP attribute that maps to the username that users use to sign in.": "映射到用户登录时使用的用户名的 LDAP 属性。",
|
||||
@ -1209,13 +1210,13 @@
|
||||
"This action cannot be undone. Do you wish to continue?": "此操作无法撤销。你确认要继续吗?",
|
||||
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "此频道创建于{{createdAt}},这里是{{channelName}}频道的开始",
|
||||
"This chat won't appear in history and your messages will not be saved.": "此对话不会出现在历史记录中,且您的消息不会被保存",
|
||||
"This chat won’t appear in history and your messages will not be saved.": "",
|
||||
"This chat won’t appear in history and your messages will not be saved.": "此对话不会出现在历史记录中,且您的消息不会被保存",
|
||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "这将确保您的宝贵对话被安全地保存到后台数据库中。感谢!",
|
||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "这是一个实验性功能,可能不会如预期那样工作,而且可能随时发生变化。",
|
||||
"This model is not publicly available. Please select another model.": "此模型未公开。请选择其他模型",
|
||||
"This option controls how long the model will stay loaded into memory following the request (default: 5m)": "",
|
||||
"This option controls how long the model will stay loaded into memory following the request (default: 5m)": "此选项控制模型请求后在内存中保持加载状态的时长(默认:5分钟)",
|
||||
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "此选项控制刷新上下文时保留多少 Token。例如,如果设置为 2,则将保留对话上下文的最后 2 个 Token。保留上下文有助于保持对话的连续性,但可能会降低响应新主题的能力。",
|
||||
"This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "",
|
||||
"This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "此选项用于启用或禁用 Ollama 的推理功能,该功能允许模型在生成响应前进行思考。启用后,模型需要花些时间处理对话上下文,从而生成更缜密的回复。",
|
||||
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "此项用于设置模型在其响应中可以生成的最大 Token 数。增加此限制可让模型提供更长的答案,但也可能增加生成无用或不相关内容的可能性。",
|
||||
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "此选项将会删除文件集中所有文件,并用新上传的文件替换。",
|
||||
"This response was generated by \"{{model}}\"": "此回复由 \"{{model}}\" 生成",
|
||||
|
@ -910,6 +910,7 @@
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "哎呀!您使用了不支援的方法(僅限前端)。請從後端提供 WebUI。",
|
||||
"Open file": "開啟檔案",
|
||||
"Open in full screen": "全螢幕開啟",
|
||||
"Open modal to configure connection": "",
|
||||
"Open new chat": "開啟新的對話",
|
||||
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI 可使用任何 OpenAPI 伺服器提供的工具。",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI 使用內部 faster-whisper。",
|
||||
|
0
static/static/custom.css
Normal file
0
static/static/custom.css
Normal file
@ -39,5 +39,8 @@ export default defineConfig({
|
||||
},
|
||||
worker: {
|
||||
format: 'es'
|
||||
},
|
||||
esbuild: {
|
||||
pure: ['console.log', 'console.debug']
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user