"vscode:/vscode.git/clone" did not exist on "941bcdc2e541aaa2e1f1964e43991eff81d0ce5d"
Unverified Commit 8eb81c91 authored by Timothy Jaeryang Baek's avatar Timothy Jaeryang Baek Committed by GitHub
Browse files

Merge pull request #2735 from open-webui/dev

0.2.1
parents 72354e06 6e818e36
......@@ -70,6 +70,7 @@ jobs:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=tag
flavor: |
prefix=cache-${{ matrix.platform }}-
......
......@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.2.1] - 2024-06-02
### Added
- **🖱️ Single Model Export Button**: Easily export models with just one click using the new single model export button.
- **🖥️ Advanced Parameters Support**: Added support for `num_thread`, `use_mmap`, and `use_mlock` parameters for Ollama.
- **🌐 Improved Vietnamese Translation**: Enhanced Vietnamese language support for a better user experience for our Vietnamese-speaking community.
### Fixed
- **🔧 OpenAI URL API Save Issue**: Corrected a problem preventing the saving of OpenAI URL API settings.
- **🚫 Display Issue with Disabled Ollama API**: Fixed the display bug causing models to appear in settings when the Ollama API was disabled.
### Changed
- **💡 Versioning Update**: As a reminder from our previous update, version 0.2.y will focus primarily on bug fixes, while major updates will be designated as 0.x from now on for better version tracking.
## [0.2.0] - 2024-06-01
### Added
......
......@@ -906,44 +906,77 @@ async def generate_chat_completion(
if model_info.params:
payload["options"] = {}
payload["options"]["mirostat"] = model_info.params.get("mirostat", None)
payload["options"]["mirostat_eta"] = model_info.params.get(
"mirostat_eta", None
)
payload["options"]["mirostat_tau"] = model_info.params.get(
"mirostat_tau", None
)
payload["options"]["num_ctx"] = model_info.params.get("num_ctx", None)
if model_info.params.get("mirostat", None):
payload["options"]["mirostat"] = model_info.params.get("mirostat", None)
payload["options"]["repeat_last_n"] = model_info.params.get(
"repeat_last_n", None
)
payload["options"]["repeat_penalty"] = model_info.params.get(
"frequency_penalty", None
)
if model_info.params.get("mirostat_eta", None):
payload["options"]["mirostat_eta"] = model_info.params.get(
"mirostat_eta", None
)
payload["options"]["temperature"] = model_info.params.get(
"temperature", None
)
payload["options"]["seed"] = model_info.params.get("seed", None)
if model_info.params.get("mirostat_tau", None):
payload["options"]["stop"] = (
[
bytes(stop, "utf-8").decode("unicode_escape")
for stop in model_info.params["stop"]
]
if model_info.params.get("stop", None)
else None
)
payload["options"]["mirostat_tau"] = model_info.params.get(
"mirostat_tau", None
)
payload["options"]["tfs_z"] = model_info.params.get("tfs_z", None)
if model_info.params.get("num_ctx", None):
payload["options"]["num_ctx"] = model_info.params.get("num_ctx", None)
payload["options"]["num_predict"] = model_info.params.get(
"max_tokens", None
)
payload["options"]["top_k"] = model_info.params.get("top_k", None)
if model_info.params.get("repeat_last_n", None):
payload["options"]["repeat_last_n"] = model_info.params.get(
"repeat_last_n", None
)
if model_info.params.get("frequency_penalty", None):
payload["options"]["repeat_penalty"] = model_info.params.get(
"frequency_penalty", None
)
if model_info.params.get("temperature", None):
payload["options"]["temperature"] = model_info.params.get(
"temperature", None
)
if model_info.params.get("seed", None):
payload["options"]["seed"] = model_info.params.get("seed", None)
if model_info.params.get("stop", None):
payload["options"]["stop"] = (
[
bytes(stop, "utf-8").decode("unicode_escape")
for stop in model_info.params["stop"]
]
if model_info.params.get("stop", None)
else None
)
if model_info.params.get("tfs_z", None):
payload["options"]["tfs_z"] = model_info.params.get("tfs_z", None)
payload["options"]["top_p"] = model_info.params.get("top_p", None)
if model_info.params.get("max_tokens", None):
payload["options"]["num_predict"] = model_info.params.get(
"max_tokens", None
)
if model_info.params.get("top_k", None):
payload["options"]["top_k"] = model_info.params.get("top_k", None)
if model_info.params.get("top_p", None):
payload["options"]["top_p"] = model_info.params.get("top_p", None)
if model_info.params.get("use_mmap", None):
payload["options"]["use_mmap"] = model_info.params.get("use_mmap", None)
if model_info.params.get("use_mlock", None):
payload["options"]["use_mlock"] = model_info.params.get(
"use_mlock", None
)
if model_info.params.get("num_thread", None):
payload["options"]["num_thread"] = model_info.params.get(
"num_thread", None
)
if model_info.params.get("system", None):
# Check if the payload already has a system message
......
{
"name": "open-webui",
"version": "0.2.0",
"version": "0.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "open-webui",
"version": "0.2.0",
"version": "0.2.1",
"dependencies": {
"@pyscript/core": "^0.4.32",
"@sveltejs/adapter-node": "^1.3.1",
......
{
"name": "open-webui",
"version": "0.2.0",
"version": "0.2.1",
"private": true,
"scripts": {
"dev": "npm run pyodide:fetch && vite dev --host",
......
......@@ -20,6 +20,9 @@
tfs_z: '',
num_ctx: '',
max_tokens: '',
use_mmap: null,
use_mlock: null,
num_thread: null,
template: null
};
......@@ -559,6 +562,7 @@
</div>
{/if}
</div>
<div class=" py-0.5 w-full justify-between">
<div class="flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Max Tokens (num_predict)')}</div>
......@@ -604,6 +608,93 @@
</div>
{/if}
</div>
<div class=" py-0.5 w-full justify-between">
<div class="flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('use_mmap (Ollama)')}</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
type="button"
on:click={() => {
params.use_mmap = (params?.use_mmap ?? null) === null ? true : null;
}}
>
{#if (params?.use_mmap ?? null) === null}
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
{:else}
<span class="ml-2 self-center">{$i18n.t('On')}</span>
{/if}
</button>
</div>
</div>
<div class=" py-0.5 w-full justify-between">
<div class="flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('use_mlock (Ollama)')}</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
type="button"
on:click={() => {
params.use_mlock = (params?.use_mlock ?? null) === null ? true : null;
}}
>
{#if (params?.use_mlock ?? null) === null}
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
{:else}
<span class="ml-2 self-center">{$i18n.t('On')}</span>
{/if}
</button>
</div>
</div>
<div class=" py-0.5 w-full justify-between">
<div class="flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('num_thread (Ollama)')}</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
type="button"
on:click={() => {
params.num_thread = (params?.num_thread ?? null) === null ? 2 : null;
}}
>
{#if (params?.num_thread ?? null) === null}
<span class="ml-2 self-center">{$i18n.t('Default')}</span>
{:else}
<span class="ml-2 self-center">{$i18n.t('Custom')}</span>
{/if}
</button>
</div>
{#if (params?.num_thread ?? null) !== null}
<div class="flex mt-0.5 space-x-2">
<div class=" flex-1">
<input
id="steps-range"
type="range"
min="1"
max="256"
step="1"
bind:value={params.num_thread}
class="w-full h-2 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
/>
</div>
<div class="">
<input
bind:value={params.num_thread}
type="number"
class=" bg-transparent text-center w-14"
min="1"
max="256"
step="1"
/>
</div>
</div>
{/if}
</div>
<div class=" py-0.5 w-full justify-between">
<div class="flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Template')}</div>
......
<script lang="ts">
import { models, user } from '$lib/stores';
import { createEventDispatcher, onMount, getContext } from 'svelte';
import { createEventDispatcher, onMount, getContext, tick } from 'svelte';
const dispatch = createEventDispatcher();
import {
......@@ -74,23 +74,48 @@
};
const updateOpenAIHandler = async () => {
// Check if API KEYS length is same than API URLS length
if (OPENAI_API_KEYS.length !== OPENAI_API_BASE_URLS.length) {
// if there are more keys than urls, remove the extra keys
if (OPENAI_API_KEYS.length > OPENAI_API_BASE_URLS.length) {
OPENAI_API_KEYS = OPENAI_API_KEYS.slice(0, OPENAI_API_BASE_URLS.length);
}
// if there are more urls than keys, add empty keys
if (OPENAI_API_KEYS.length < OPENAI_API_BASE_URLS.length) {
const diff = OPENAI_API_BASE_URLS.length - OPENAI_API_KEYS.length;
for (let i = 0; i < diff; i++) {
OPENAI_API_KEYS.push('');
}
}
}
OPENAI_API_BASE_URLS = await updateOpenAIUrls(localStorage.token, OPENAI_API_BASE_URLS);
OPENAI_API_KEYS = await updateOpenAIKeys(localStorage.token, OPENAI_API_KEYS);
await models.set(await getModels());
};
const updateOllamaUrlsHandler = async () => {
OLLAMA_BASE_URLS = await updateOllamaUrls(localStorage.token, OLLAMA_BASE_URLS);
OLLAMA_BASE_URLS = OLLAMA_BASE_URLS.filter((url) => url !== '');
console.log(OLLAMA_BASE_URLS);
const ollamaVersion = await getOllamaVersion(localStorage.token).catch((error) => {
toast.error(error);
return null;
});
if (OLLAMA_BASE_URLS.length === 0) {
ENABLE_OLLAMA_API = false;
await updateOllamaConfig(localStorage.token, ENABLE_OLLAMA_API);
if (ollamaVersion) {
toast.success($i18n.t('Server connection verified'));
await models.set(await getModels());
toast.info($i18n.t('Ollama API disabled'));
} else {
OLLAMA_BASE_URLS = await updateOllamaUrls(localStorage.token, OLLAMA_BASE_URLS);
const ollamaVersion = await getOllamaVersion(localStorage.token).catch((error) => {
toast.error(error);
return null;
});
if (ollamaVersion) {
toast.success($i18n.t('Server connection verified'));
await models.set(await getModels());
}
}
};
......@@ -286,6 +311,10 @@
bind:state={ENABLE_OLLAMA_API}
on:change={async () => {
updateOllamaConfig(localStorage.token, ENABLE_OLLAMA_API);
if (OLLAMA_BASE_URLS.length === 0) {
OLLAMA_BASE_URLS = [''];
}
}}
/>
</div>
......
<script lang="ts">
export let className = 'size-4';
export let strokeWidth = '1.5';
</script>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width={strokeWidth}
stroke="currentColor"
class={className}
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"
/>
</svg>
......@@ -126,6 +126,13 @@
saveAs(blob, `models-export-${Date.now()}.json`);
};
const exportModelHandler = async (model) => {
let blob = new Blob([JSON.stringify([model])], {
type: 'application/json'
});
saveAs(blob, `${model.id}-${Date.now()}.json`);
};
const positionChangeHanlder = async () => {
// Get the new order of the models
const modelIds = Array.from(document.getElementById('model-list').children).map((child) =>
......@@ -322,6 +329,9 @@
cloneHandler={() => {
cloneModelHandler(model);
}}
exportHandler={() => {
exportModelHandler(model);
}}
hideHandler={() => {
hideModelHandler(model);
}}
......
......@@ -11,6 +11,7 @@
import Share from '$lib/components/icons/Share.svelte';
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
import DocumentDuplicate from '$lib/components/icons/DocumentDuplicate.svelte';
import ArrowDownTray from '$lib/components/icons/ArrowDownTray.svelte';
const i18n = getContext('i18n');
......@@ -18,6 +19,8 @@
export let shareHandler: Function;
export let cloneHandler: Function;
export let exportHandler: Function;
export let hideHandler: Function;
export let deleteHandler: Function;
export let onClose: Function;
......@@ -66,6 +69,17 @@
<div class="flex items-center">{$i18n.t('Clone')}</div>
</DropdownMenu.Item>
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
on:click={() => {
exportHandler();
}}
>
<ArrowDownTray />
<div class="flex items-center">{$i18n.t('Export')}</div>
</DropdownMenu.Item>
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
on:click={() => {
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "أدخل الصلاحيات",
"Error": "",
"Experimental": "تجريبي",
"Export": "",
"Export All Chats (All Users)": "تصدير جميع الدردشات (جميع المستخدمين)",
"Export Chats": "تصدير جميع الدردشات",
"Export Documents Mapping": "تصدير وثائق الخرائط",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ملاحظة: إذا قمت بتعيين الحد الأدنى من النقاط، فلن يؤدي البحث إلا إلى إرجاع المستندات التي لها نقاط أكبر من أو تساوي الحد الأدنى من النقاط.",
"Notifications": "إشعارات",
"November": "نوفمبر",
"num_thread (Ollama)": "",
"October": "اكتوبر",
"Off": "أغلاق",
"Okay, Let's Go!": "حسنا دعنا نذهب!",
"OLED Dark": "OLED داكن",
"Ollama": "Ollama",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Ollama الاصدار",
"On": "تشغيل",
"Only": "فقط",
......@@ -497,6 +500,8 @@
"Use '#' in the prompt input to load and select your documents.": "أستخدم '#' في المحادثة لربطهامن المستندات",
"Use Gravatar": "Gravatar أستخدم",
"Use Initials": "Initials أستخدم",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "مستخدم",
"User Permissions": "صلاحيات المستخدم",
"Users": "المستخدمين",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "Въведете вашата роля",
"Error": "",
"Experimental": "Експериментално",
"Export": "",
"Export All Chats (All Users)": "Експортване на всички чатове (За всички потребители)",
"Export Chats": "Експортване на чатове",
"Export Documents Mapping": "Експортване на документен мапинг",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Забележка: Ако зададете минимален резултат, търсенето ще върне само документи с резултат, по-голям или равен на минималния резултат.",
"Notifications": "Десктоп Известия",
"November": "Ноември",
"num_thread (Ollama)": "",
"October": "Октомври",
"Off": "Изкл.",
"Okay, Let's Go!": "ОК, Нека започваме!",
"OLED Dark": "OLED тъмно",
"Ollama": "Ollama",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Ollama Версия",
"On": "Вкл.",
"Only": "Само",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "Използвайте '#' във промпта за да заредите и изберете вашите документи.",
"Use Gravatar": "Използвайте Gravatar",
"Use Initials": "Използвайте Инициали",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "потребител",
"User Permissions": "Права на потребителя",
"Users": "Потребители",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "আপনার রোল লিখুন",
"Error": "",
"Experimental": "পরিক্ষামূলক",
"Export": "",
"Export All Chats (All Users)": "সব চ্যাট এক্সপোর্ট করুন (সব ইউজারের)",
"Export Chats": "চ্যাটগুলো এক্সপোর্ট করুন",
"Export Documents Mapping": "ডকুমেন্টসমূহ ম্যাপিং এক্সপোর্ট করুন",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "দ্রষ্টব্য: আপনি যদি ন্যূনতম স্কোর সেট করেন তবে অনুসন্ধানটি কেবলমাত্র ন্যূনতম স্কোরের চেয়ে বেশি বা সমান স্কোর সহ নথিগুলি ফেরত দেবে।",
"Notifications": "নোটিফিকেশনসমূহ",
"November": "নভেম্বর",
"num_thread (Ollama)": "",
"October": "অক্টোবর",
"Off": "বন্ধ",
"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
"OLED Dark": "OLED ডার্ক",
"Ollama": "Ollama",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Ollama ভার্সন",
"On": "চালু",
"Only": "শুধুমাত্র",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "আপনার ডকুমেন্টসমূহ নির্বাচন করার জন্য আপনার প্রম্পট ইনপুটে '# ব্যবহার করুন।",
"Use Gravatar": "Gravatar ব্যবহার করুন",
"Use Initials": "নামের আদ্যক্ষর ব্যবহার করুন",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "ব্যবহারকারী",
"User Permissions": "ইউজার পারমিশনসমূহ",
"Users": "ব্যাবহারকারীগণ",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "Introdueix el Teu Ròl",
"Error": "",
"Experimental": "Experimental",
"Export": "",
"Export All Chats (All Users)": "Exporta Tots els Xats (Tots els Usuaris)",
"Export Chats": "Exporta Xats",
"Export Documents Mapping": "Exporta el Mapatge de Documents",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si establiscs una puntuació mínima, la cerca només retornarà documents amb una puntuació major o igual a la puntuació mínima.",
"Notifications": "Notificacions d'Escriptori",
"November": "Novembre",
"num_thread (Ollama)": "",
"October": "Octubre",
"Off": "Desactivat",
"Okay, Let's Go!": "D'acord, Anem!",
"OLED Dark": "OLED Fosc",
"Ollama": "Ollama",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Versió d'Ollama",
"On": "Activat",
"Only": "Només",
......@@ -494,6 +497,8 @@
"Use '#' in the prompt input to load and select your documents.": "Utilitza '#' a l'entrada del prompt per carregar i seleccionar els teus documents.",
"Use Gravatar": "Utilitza Gravatar",
"Use Initials": "Utilitza Inicials",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "usuari",
"User Permissions": "Permisos d'Usuari",
"Users": "Usuaris",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "",
"Error": "",
"Experimental": "Eksperimento",
"Export": "",
"Export All Chats (All Users)": "I-export ang tanan nga mga chat (Tanan nga tiggamit)",
"Export Chats": "I-export ang mga chat",
"Export Documents Mapping": "I-export ang pagmapa sa dokumento",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Notifications": "Mga pahibalo sa desktop",
"November": "",
"num_thread (Ollama)": "",
"October": "",
"Off": "Napuo",
"Okay, Let's Go!": "Okay, lakaw na!",
"OLED Dark": "",
"Ollama": "",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Ollama nga bersyon",
"On": "Gipaandar",
"Only": "Lamang",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "Gamita ang '#' sa dali nga pagsulod aron makarga ug mapili ang imong mga dokumento.",
"Use Gravatar": "Paggamit sa Gravatar",
"Use Initials": "",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "tiggamit",
"User Permissions": "Mga permiso sa tiggamit",
"Users": "Mga tiggamit",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "Gebe deine Rolle ein",
"Error": "",
"Experimental": "Experimentell",
"Export": "",
"Export All Chats (All Users)": "Alle Chats exportieren (alle Benutzer)",
"Export Chats": "Chats exportieren",
"Export Documents Mapping": "Dokumentenmapping exportieren",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn du einen Mindestscore festlegst, wird die Suche nur Dokumente zurückgeben, deren Score größer oder gleich dem Mindestscore ist.",
"Notifications": "Desktop-Benachrichtigungen",
"November": "November",
"num_thread (Ollama)": "",
"October": "Oktober",
"Off": "Aus",
"Okay, Let's Go!": "Okay, los geht's!",
"OLED Dark": "OLED Dunkel",
"Ollama": "Ollama",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Ollama-Version",
"On": "Ein",
"Only": "Nur",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "Verwende '#' in der Prompt-Eingabe, um deine Dokumente zu laden und auszuwählen.",
"Use Gravatar": "Gravatar verwenden",
"Use Initials": "Initialen verwenden",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "Benutzer",
"User Permissions": "Benutzerberechtigungen",
"Users": "Benutzer",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "",
"Error": "",
"Experimental": "Much Experiment",
"Export": "",
"Export All Chats (All Users)": "Export All Chats (All Doggos)",
"Export Chats": "Export Barks",
"Export Documents Mapping": "Export Mappings of Dogos",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Notifications": "Notifications",
"November": "",
"num_thread (Ollama)": "",
"October": "",
"Off": "Off",
"Okay, Let's Go!": "Okay, Let's Go!",
"OLED Dark": "OLED Dark",
"Ollama": "",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "Ollama Version",
"On": "On",
"Only": "Only",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "Use '#' in the prompt input to load and select your documents. Much use.",
"Use Gravatar": "Use Gravatar much avatar",
"Use Initials": "Use Initials much initial",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "user much user",
"User Permissions": "User Permissions much permissions",
"Users": "Users much users",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "",
"Error": "",
"Experimental": "",
"Export": "",
"Export All Chats (All Users)": "",
"Export Chats": "",
"Export Documents Mapping": "",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Notifications": "",
"November": "",
"num_thread (Ollama)": "",
"October": "",
"Off": "",
"Okay, Let's Go!": "",
"OLED Dark": "",
"Ollama": "",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "",
"On": "",
"Only": "",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "",
"Use Gravatar": "",
"Use Initials": "",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "",
"User Permissions": "",
"Users": "",
......
......@@ -204,6 +204,7 @@
"Enter Your Role": "",
"Error": "",
"Experimental": "",
"Export": "",
"Export All Chats (All Users)": "",
"Export Chats": "",
"Export Documents Mapping": "",
......@@ -311,12 +312,14 @@
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
"Notifications": "",
"November": "",
"num_thread (Ollama)": "",
"October": "",
"Off": "",
"Okay, Let's Go!": "",
"OLED Dark": "",
"Ollama": "",
"Ollama API": "",
"Ollama API disabled": "",
"Ollama Version": "",
"On": "",
"Only": "",
......@@ -493,6 +496,8 @@
"Use '#' in the prompt input to load and select your documents.": "",
"Use Gravatar": "",
"Use Initials": "",
"use_mlock (Ollama)": "",
"use_mmap (Ollama)": "",
"user": "",
"User Permissions": "",
"Users": "",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment