From 7f4a83ea0ec84faeee485431eaffc696e24699c5 Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Sun, 1 Dec 2024 18:16:05 +0800 Subject: [PATCH 01/28] i18n: fix zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 0b8229c083..8986adfcf9 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -220,7 +220,7 @@ "Default (SentenceTransformers)": "預設 (SentenceTransformers)", "Default Model": "預設模型", "Default model updated": "預設模型已更新", - "Default Models": "預設的多個模型", + "Default Models": "預設模型", "Default permissions": "預設權限", "Default permissions updated successfully": "預設權限更新成功", "Default Prompt Suggestions": "預設提示詞建議", From aecb7ae398f4435a17720b0e62fef1d966249433 Mon Sep 17 00:00:00 2001 From: panda44312 Date: Sun, 1 Dec 2024 15:43:53 +0100 Subject: [PATCH 02/28] Update translation.json --- src/lib/i18n/locales/zh-CN/translation.json | 46 ++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 18014562d9..1e80d5d79e 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -1,5 +1,5 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1 表示无限制,正整数表示具体限制”", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' 或 '-1' 表示无过期时间。", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)", @@ -60,7 +60,7 @@ "Allow Voice Interruption in Call": "允许通话中的打断语音", "Already have an account?": "已经拥有账号了?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)", - "Amazing": "", + "Amazing": "很棒", "an assistant": "AI模型", "and": "和", "and {{COUNT}} more": "还有 {{COUNT}} 个", @@ -91,15 +91,15 @@ "Authenticate": "认证", "Auto-Copy Response to Clipboard": "自动复制回复到剪贴板", "Auto-playback response": "自动念出回复内容", - "Autocomplete Generation": "", - "Autocomplete Generation Input Max Length": "", + "Autocomplete Generation": "自动完成生成", + "Autocomplete Generation Input Max Length": "自动完成生成输入最大长度", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api 鉴权字符串", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 基础地址", "AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基础地址。", "Available list": "可用列表", "available!": "版本可用!", - "Awful": "", + "Awful": "糟糕", "Azure AI Speech": "Azure AI 语音", "Azure Region": "Azure 区域", "Back": "返回", @@ -122,7 +122,7 @@ "Certificate Path": "证书路径", "Change Password": "更改密码", "Character": "字符", - "Character limit for autocomplete generation input": "", + "Character limit for autocomplete generation input": "自动完成生成输入的字符限制", "Chart new frontiers": "开拓新领域", "Chat": "对话", "Chat Background Image": "对话背景图片", @@ -166,7 +166,7 @@ "ComfyUI Base URL": "ComfyUI 基础地址", "ComfyUI Base URL is required.": "ComfyUI 基础地址为必需填写。", "ComfyUI Workflow": "ComfyUI Workflow", - "ComfyUI Workflow Nodes": "ComfyUI Workflow Nodes", + "ComfyUI Workflow Nodes": "ComfyUI Workflow 节点", "Command": "命令", "Completions": "续写", "Concurrent Requests": "并发请求", @@ -279,7 +279,7 @@ "Drag and drop a file to upload or select a file to view": "拖动文件上传或选择文件查看", "Draw": "平局", "Drop any files here to add to the conversation": "拖动文件到此处以添加到对话中", - "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s','10m'。有效的时间单位是秒:'s',分:'m',时:'h'。", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s','10m'。有效的时间单位是秒:'s',分:'m',时:'h'。", "e.g. A filter to remove profanity from text": "例如:一个用于过滤文本中不当内容的过滤器", "e.g. My Filter": "例如:我的过滤器", "e.g. My Tools": "例如:我的工具", @@ -301,7 +301,7 @@ "Embedding Model Engine": "语义向量模型引擎", "Embedding model set to \"{{embedding_model}}\"": "语义向量模型设置为 \"{{embedding_model}}\"", "Enable API Key Auth": "启用 API 密钥鉴权", - "Enable autocomplete generation for chat messages": "", + "Enable autocomplete generation for chat messages": "启用聊天消息的自动完成生成", "Enable Community Sharing": "启用分享至社区", "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "启用内存锁定(mlock)以防止模型数据被交换出RAM。此选项将模型的工作集页面锁定在RAM中,确保它们不会被交换到磁盘。这可以通过避免页面错误和确保快速数据访问来帮助维持性能。", "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "启用内存映射(mmap)以加载模型数据。此选项允许系统通过将磁盘文件视为在RAM中来使用磁盘存储作为RAM的扩展。这可以通过更快的数据访问来提高模型性能。然而,它可能无法在所有系统上正常工作,并且可能会消耗大量磁盘空间。", @@ -314,11 +314,11 @@ "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "确保您的 CSV 文件按以下顺序包含 4 列: 姓名、电子邮箱、密码、角色。", "Enter {{role}} message here": "在此处输入 {{role}} 的对话内容", "Enter a detail about yourself for your LLMs to recall": "输入一个关于你自己的详细信息,方便你的大语言模型记住这些内容", - "Enter api auth string (e.g. username:password)": "输入 api 鉴权路径 (例如:username:password)", + "Enter api auth string (e.g. username:password)": "输入 api 鉴权路径 (例如:用户名:密码)", "Enter Application DN": "输入 Application DN", - "Enter Application DN Password": "输入 Application DN Password", - "Enter Bing Search V7 Endpoint": "输入 Enter Bing Search V7 Endpoint", - "Enter Bing Search V7 Subscription Key": "输入 Bing Search V7 Subscription Key", + "Enter Application DN Password": "输入 Application DN 密码", + "Enter Bing Search V7 Endpoint": "输入 Bing Search V7 端点", + "Enter Bing Search V7 Subscription Key": "输入 Bing Search V7 订阅密钥", "Enter Brave Search API Key": "输入 Brave Search API 密钥", "Enter certificate path": "输入证书路径", "Enter CFG Scale (e.g. 7.0)": "输入 CFG Scale (例如:7.0)", @@ -335,7 +335,7 @@ "Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})", "Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥", "Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)", - "Enter proxy URL (e.g. https://user:password@host:port)": "", + "Enter proxy URL (e.g. https://user:password@host:port)": "输入代理 URL (例如:https://用户名:密码@主机名:端口)", "Enter Sampler (e.g. Euler a)": "输入 Sampler (例如:Euler a)", "Enter Scheduler (e.g. Karras)": "输入 Scheduler (例如:Karras)", "Enter Score": "输入评分", @@ -346,9 +346,9 @@ "Enter Serper API Key": "输入 Serper API 密钥", "Enter Serply API Key": "输入 Serply API 密钥", "Enter Serpstack API Key": "输入 Serpstack API 密钥", - "Enter server host": "输入 server host", - "Enter server label": "输入 server label", - "Enter server port": "输入 server port", + "Enter server host": "输入服务器主机名 ", + "Enter server label": "输入服务器标签", + "Enter server port": "输入服务器端口", "Enter stop sequence": "输入停止序列 (Stop Sequence)", "Enter system prompt": "输入系统提示词 (Prompt)", "Enter Tavily API Key": "输入 Tavily API 密钥", @@ -457,7 +457,7 @@ "Hex Color": "十六进制颜色代码", "Hex Color - Leave empty for default color": "十六进制颜色代码 - 留空使用默认颜色", "Hide": "隐藏", - "Host": "Host", + "Host": "主机", "How can I help you today?": "有什么我能帮您的吗?", "How would you rate this response?": "您如何评价这个回应?", "Hybrid Search": "混合搜索", @@ -672,7 +672,7 @@ "Please carefully review the following warnings:": "请仔细阅读以下警告信息:", "Please enter a prompt": "请输出一个 prompt", "Please fill in all fields.": "请填写所有字段。", - "Please select a model first.": "", + "Please select a model first.": "请先选择一个模型。", "Please select a reason": "请选择原因", "Port": "端口", "Positive attitude": "积极的态度", @@ -688,7 +688,7 @@ "Prompt updated successfully": "提示词更新成功", "Prompts": "提示词", "Prompts Access": "访问提示词", - "Proxy URL": "", + "Proxy URL": "代理 URL", "Pull \"{{searchValue}}\" from Ollama.com": "从 Ollama.com 拉取 \"{{searchValue}}\"", "Pull a model from Ollama.com": "从 Ollama.com 拉取一个模型", "Query Generation Prompt": "查询生成提示词", @@ -722,7 +722,7 @@ "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "无法激活回复时发送通知。请检查浏览器设置,并授予必要的访问权限。", "Response splitting": "拆分回复", "Result": "结果", - "Retrieval Query Generation": "", + "Retrieval Query Generation": "检索查询生成", "Rich Text Input for Chat": "对话富文本输入", "RK": "排名", "Role": "权限组", @@ -843,7 +843,7 @@ "System": "系统", "System Instructions": "系统指令", "System Prompt": "系统提示词 (System Prompt)", - "Tags Generation": "", + "Tags Generation": "标签生成", "Tags Generation Prompt": "标签生成提示词", "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "Tail free sampling 用于减少输出中可能性较低的标记的影响。数值越大(如 2.0),影响就越小,而数值为 1.0 则会禁用此设置。(默认值:1)", "Tap to interrupt": "点击以中断", @@ -986,7 +986,7 @@ "Web Loader Settings": "网页爬取设置", "Web Search": "联网搜索", "Web Search Engine": "联网搜索引擎", - "Web Search Query Generation": "", + "Web Search Query Generation": "网页搜索查询生成", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI 设置", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 将向 \"{{url}}/api/chat\" 发出请求", From 1c078bdb55b67f6ad65591c8229eb4d4bda3bd44 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 13:36:36 -0800 Subject: [PATCH 03/28] fix: api query collection --- backend/open_webui/apps/retrieval/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/apps/retrieval/main.py b/backend/open_webui/apps/retrieval/main.py index 7ad4af064c..341f4f500b 100644 --- a/backend/open_webui/apps/retrieval/main.py +++ b/backend/open_webui/apps/retrieval/main.py @@ -1399,7 +1399,7 @@ def query_collection_handler( if app.state.config.ENABLE_RAG_HYBRID_SEARCH: return query_collection_with_hybrid_search( collection_names=form_data.collection_names, - query=form_data.query, + queries=[form_data.query], embedding_function=app.state.EMBEDDING_FUNCTION, k=form_data.k if form_data.k else app.state.config.TOP_K, reranking_function=app.state.sentence_transformer_rf, @@ -1410,7 +1410,7 @@ def query_collection_handler( else: return query_collection( collection_names=form_data.collection_names, - query=form_data.query, + queries=[form_data.query], embedding_function=app.state.EMBEDDING_FUNCTION, k=form_data.k if form_data.k else app.state.config.TOP_K, ) From 0055f3dcb67f40df45ceac775d1cee065787a2c3 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 14:49:10 -0800 Subject: [PATCH 04/28] refac: rich text input --- .../components/common/RichTextInput.svelte | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index 3f4925277f..c9c8101c37 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -191,9 +191,14 @@ onTransaction: () => { // force re-render so `editor.isActive` works as expected editor = editor; - const newValue = turndownService.turndown( - preserveBreaks ? editor.getHTML().replace(/

<\/p>/g, '
') : editor.getHTML() - ); + const newValue = turndownService + .turndown( + (preserveBreaks + ? editor.getHTML().replace(/

<\/p>/g, '
') + : editor.getHTML() + ).replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0')) + ) + .replace(/\u00a0/g, ' '); if (value !== newValue) { value = newValue; @@ -332,9 +337,14 @@ $: if ( editor && value !== - turndownService.turndown( - preserveBreaks ? editor.getHTML().replace(/

<\/p>/g, '
') : editor.getHTML() - ) + turndownService + .turndown( + (preserveBreaks + ? editor.getHTML().replace(/

<\/p>/g, '
') + : editor.getHTML() + ).replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0')) + ) + .replace(/\u00a0/g, ' ') ) { editor.commands.setContent( marked.parse(value.replaceAll(`\n
`, `
`), { From 460992613fbf679add39bd3bfe504a58fa5478f7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 17:15:16 -0800 Subject: [PATCH 05/28] refac: styling --- src/app.css | 3 +- .../common/RichTextInput/AutoCompletion.js | 63 ++++++++++++++----- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/app.css b/src/app.css index dba61300aa..ed33a450f3 100644 --- a/src/app.css +++ b/src/app.css @@ -211,7 +211,8 @@ input[type='number'] { float: left; color: #adb5bd; pointer-events: none; - height: 0; + + @apply line-clamp-1 absolute } .ai-autocompletion::after { diff --git a/src/lib/components/common/RichTextInput/AutoCompletion.js b/src/lib/components/common/RichTextInput/AutoCompletion.js index bcb438284b..733ac4975d 100644 --- a/src/lib/components/common/RichTextInput/AutoCompletion.js +++ b/src/lib/components/common/RichTextInput/AutoCompletion.js @@ -136,12 +136,16 @@ export const AIAutocompletion = Extension.create({ debounceTimer = setTimeout(() => { const newState = view.state; + const newSelection = newState.selection; const newNode = newState.doc.nodeAt(currentPos); - const currentIsAtEnd = - newState.selection.$head.pos === newState.selection.$head.end(); // Check if the node still exists and is still a paragraph - if (newNode && newNode.type.name === 'paragraph' && currentIsAtEnd) { + if ( + newNode && + newNode.type.name === 'paragraph' && + newSelection.$head.pos === newSelection.$head.end() && + newSelection.$head.pos === currentPos + newNode.nodeSize - 1 + ) { const prompt = newNode.textContent; if (prompt.trim() !== '') { @@ -212,29 +216,56 @@ export const AIAutocompletion = Extension.create({ return false; }, // Add mousedown behavior + // mouseup: (view, event) => { + // const { state, dispatch } = view; + // const { selection } = state; + // const { $head } = selection; + // const node = $head.parent; + + // // Reset debounce timer on mouse click + // clearTimeout(debounceTimer); + + // // If a suggestion exists and the cursor moves, remove the suggestion + // if ( + // node.type.name === 'paragraph' && + // node.attrs['data-suggestion'] && + // view.state.selection.$head.pos !== view.state.selection.$head.end() + // ) { + // dispatch( + // state.tr.setNodeMarkup($head.before(), null, { + // ...node.attrs, + // class: null, + // 'data-prompt': null, + // 'data-suggestion': null + // }) + // ); + // } + + // return false; + // } mouseup: (view, event) => { const { state, dispatch } = view; - const { selection } = state; - const { $head } = selection; - const node = $head.parent; // Reset debounce timer on mouse click clearTimeout(debounceTimer); - // If a suggestion exists and the cursor moves, remove the suggestion - if ( - node.type.name === 'paragraph' && - node.attrs['data-suggestion'] && - view.state.selection.$head.pos !== view.state.selection.$head.end() - ) { - dispatch( - state.tr.setNodeMarkup($head.before(), null, { + // Iterate over all nodes in the document + const tr = state.tr; + state.doc.descendants((node, pos) => { + if (node.type.name === 'paragraph' && node.attrs['data-suggestion']) { + // Remove suggestion from this paragraph + tr.setNodeMarkup(pos, null, { ...node.attrs, class: null, 'data-prompt': null, 'data-suggestion': null - }) - ); + }); + } + }); + + // Apply the transaction if any changes were made + if (tr.docChanged) { + dispatch(tr); } return false; From 59c3a1811869f11c2d3fc2f361b65c6e81d11236 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 18:25:44 -0800 Subject: [PATCH 06/28] enh: `BYPASS_MODEL_ACCESS_CONTROL` --- backend/open_webui/apps/ollama/main.py | 7 ++++--- backend/open_webui/apps/openai/main.py | 3 ++- backend/open_webui/config.py | 2 +- backend/open_webui/env.py | 3 +++ backend/open_webui/main.py | 5 +++-- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/apps/ollama/main.py b/backend/open_webui/apps/ollama/main.py index 71a40cb479..82a37a7528 100644 --- a/backend/open_webui/apps/ollama/main.py +++ b/backend/open_webui/apps/ollama/main.py @@ -24,6 +24,7 @@ from open_webui.env import ( AIOHTTP_CLIENT_TIMEOUT, AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST, + BYPASS_MODEL_ACCESS_CONTROL, ) @@ -359,7 +360,7 @@ async def get_ollama_tags( detail=error_detail, ) - if user.role == "user": + if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: # Filter models based on user access control filtered_models = [] for model in models.get("models", []): @@ -1067,7 +1068,7 @@ async def generate_openai_chat_completion( payload = apply_model_system_prompt_to_body(params, payload, user) # Check if user has access to the model - if user.role == "user": + if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: if not ( user.id == model_info.user_id or has_access( @@ -1156,7 +1157,7 @@ async def get_openai_models( detail=error_detail, ) - if user.role == "user": + if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: # Filter models based on user access control filtered_models = [] for model in models: diff --git a/backend/open_webui/apps/openai/main.py b/backend/open_webui/apps/openai/main.py index 31c36a8a1b..9193c2be65 100644 --- a/backend/open_webui/apps/openai/main.py +++ b/backend/open_webui/apps/openai/main.py @@ -24,6 +24,7 @@ AIOHTTP_CLIENT_TIMEOUT, AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST, ENABLE_FORWARD_USER_INFO_HEADERS, + BYPASS_MODEL_ACCESS_CONTROL, ) from open_webui.constants import ERROR_MESSAGES @@ -422,7 +423,7 @@ async def get_models(url_idx: Optional[int] = None, user=Depends(get_verified_us error_detail = f"Unexpected error: {str(e)}" raise HTTPException(status_code=500, detail=error_detail) - if user.role == "user": + if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: # Filter models based on user access control filtered_models = [] for model in models.get("data", []): diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 15d209941e..c0a0f63b52 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -702,6 +702,7 @@ def load_oauth_providers(): os.environ.get("ENABLE_LOGIN_FORM", "True").lower() == "true", ) + DEFAULT_LOCALE = PersistentConfig( "DEFAULT_LOCALE", "ui.default_locale", @@ -758,7 +759,6 @@ def load_oauth_providers(): os.getenv("DEFAULT_USER_ROLE", "pending"), ) - USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS = ( os.environ.get("USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS", "False").lower() == "true" diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 28b5a10a57..e1b350ead4 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -329,6 +329,9 @@ def parse_section(section): ) WEBUI_AUTH_TRUSTED_NAME_HEADER = os.environ.get("WEBUI_AUTH_TRUSTED_NAME_HEADER", None) +BYPASS_MODEL_ACCESS_CONTROL = ( + os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true" +) #################################### # WEBUI_SECRET_KEY diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 177bded667..1bf221beb8 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -112,6 +112,7 @@ WEBUI_SESSION_COOKIE_SAME_SITE, WEBUI_SESSION_COOKIE_SECURE, WEBUI_URL, + BYPASS_MODEL_ACCESS_CONTROL, RESET_CONFIG_ON_START, OFFLINE_MODE, ) @@ -621,7 +622,7 @@ async def dispatch(self, request: Request, call_next): ) model_info = Models.get_model_by_id(model["id"]) - if user.role == "user": + if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: if model.get("arena"): if not has_access( user.id, @@ -1224,7 +1225,7 @@ async def get_models(user=Depends(get_verified_user)): ) # Filter out models that the user does not have access to - if user.role == "user": + if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: filtered_models = [] for model in models: if model.get("arena"): From 7f77828e3fe1b2c62af5de7563cd4b98e39984c4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 21:50:21 -0800 Subject: [PATCH 07/28] refac: styling --- src/app.css | 6 +++--- src/lib/components/admin/Settings/Models.svelte | 8 ++++---- .../chat/Messages/Markdown/MarkdownTokens.svelte | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/app.css b/src/app.css index ed33a450f3..a9fffdb210 100644 --- a/src/app.css +++ b/src/app.css @@ -45,15 +45,15 @@ math { } .input-prose { - @apply prose dark:prose-invert prose-headings:font-semibold prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line; + @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line; } .input-prose-sm { - @apply prose dark:prose-invert prose-headings:font-semibold prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm; + @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm; } .markdown-prose { - @apply prose dark:prose-invert prose-headings:font-semibold prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line; + @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line; } .markdown a { diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 06058fa9fe..7a3361682e 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -44,10 +44,10 @@ filteredModels = models .filter((m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase())) .sort((a, b) => { - // Check if either model is inactive and push them to the bottom - if ((a.is_active ?? true) !== (b.is_active ?? true)) { - return (b.is_active ?? true) - (a.is_active ?? true); - } + // // Check if either model is inactive and push them to the bottom + // if ((a.is_active ?? true) !== (b.is_active ?? true)) { + // return (b.is_active ?? true) - (a.is_active ?? true); + // } // If both models' active states are the same, sort alphabetically return a.name.localeCompare(b.name); }); diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte index 5427135c05..d4486d7e77 100644 --- a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +++ b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte @@ -60,7 +60,7 @@ {#each tokens as token, tokenIdx (tokenIdx)} {#if token.type === 'hr'} -


+
{:else if token.type === 'heading'} From 39b7e544824583138f0a1ea3fb990d0f7880f2ad Mon Sep 17 00:00:00 2001 From: Marvin von Rappard Date: Mon, 2 Dec 2024 07:06:32 +0100 Subject: [PATCH 08/28] feat: properly format favicons and make home screen icons look better --- src/app.html | 9 ++++++--- static/favicon/apple-touch-icon.png | Bin 0 -> 4625 bytes static/favicon/favicon-96x96.png | Bin 0 -> 3957 bytes static/favicon/favicon.ico | Bin 0 -> 15086 bytes static/favicon/favicon.svg | 3 +++ static/favicon/site.webmanifest | 21 ++++++++++++++++++++ static/favicon/web-app-manifest-192x192.png | Bin 0 -> 8636 bytes static/favicon/web-app-manifest-512x512.png | Bin 0 -> 31203 bytes 8 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 static/favicon/apple-touch-icon.png create mode 100644 static/favicon/favicon-96x96.png create mode 100644 static/favicon/favicon.ico create mode 100644 static/favicon/favicon.svg create mode 100644 static/favicon/site.webmanifest create mode 100644 static/favicon/web-app-manifest-192x192.png create mode 100644 static/favicon/web-app-manifest-512x512.png diff --git a/src/app.html b/src/app.html index f6e46c9cfb..537e28dbe7 100644 --- a/src/app.html +++ b/src/app.html @@ -2,9 +2,12 @@ - - - + + + + + + DqijZhQJUUSmov?aOqQ+wNx+3c8 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 literal 0 HcmV?d00001 diff --git a/static/favicon/favicon.svg b/static/favicon/favicon.svg new file mode 100644 index 0000000000..af01b22282 --- /dev/null +++ b/static/favicon/favicon.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/static/favicon/site.webmanifest b/static/favicon/site.webmanifest new file mode 100644 index 0000000000..0e59bbb282 --- /dev/null +++ b/static/favicon/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "Open WebUI", + "short_name": "WebUI", + "icons": [ + { + "src": "/favicon/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/favicon/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/static/favicon/web-app-manifest-192x192.png b/static/favicon/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd0833f4fe0a3a238ce17446313e33df412681d GIT binary patch literal 8636 zcmWk!Wmr^A6rLrPl17m37El(XLqb@(K~O-XmPS%?0ZB!qJA|c6N$F4olu)`$y1V1s z@5kKxJa^`qd*;k}-+9l>L~3a$5#rO}0{{r&$_hH@cl-YZ7m9xB%sAknUl2DPB{@(r zK(_$^6M!o`)$=yp$;7UqSF8)WBMebx`UWF8#!iPogPWSLgPX8|)y-Y-Li)br?UFgT zc-50YakFypBqc?$s5ei>N334PrTY$wz4X_ZHr=WqXqX)xZQ9%`nYx=3y#nxM*yHtL2msog3BRoxhX#3Wt&hxJSU3Q1&wvY#wmUQBA z>mBt*5JdKT@viL=EZLefYRD5Csqt(`?2HqB1UEL-5r9iwkNfe!uhl-qM()R>D%t!u z3_mW$WhERJp+x$&lRq58+-8fwLimrs#ne9z_LQ+T#i(fZgT%qoEF)|qQl|v>5EK;~ zBq_V}{!)F=;8r{IDo%8*AVDYwh0R{hhQNlqVf)I~(fIKCbSqu|+K)qth&d-v-^<5F zx_$J&eikq^xX0;lP$z`=zG?$^R`rp>xR#G|dR*-_9AHa1EkF-4-266T5^CyXzF5R^ zS6`2tB<@BWyXK}!nQ>TAFn|Fuj`M7GK2`)Tyi~;wCX<9Hvwv$y^jlMLb(-LM&+B~v zlK&xS#qdBKE`$877?p;Suzsnq9oRc`iXHbW zN_{%;J8>Bw%%OVU&9k!v?_@CZYg9m`LI;+Nnv8}nV%-iDVgL3s2zm*@wPB#9%mH(e zep04``r|sqPy3*A!y3vZD9`|qZbbNp_v4bv&s9^ib?FiqV+L@iQ>oY9si_t~7BbR> z-gG)}ZMeYqJ$QO!phkorKc>`*q)wha-|@8mzg{BBQ+y)*37$eRTObY7Gl<&;o;8$Q z*ewo@HlOm0GOJCmIkT@n)kor8_CfYUFgT99OBDLkcPl_(*NcU2F|3HHt!67XQ@?$v z_FnG_S-q{%#?G>(sG6UTp2Uvd*`tgJNe;yvCE+3_m?3!)HFI%u_Uze3R$$+Bb|v>A zfsIOVp8@eij)&O82g~}K4TSgs1&#SP(5Jo0Rib_C{7CXbZ&vFDp<&1 zz3QBm#)c1@HTsyZ3bikKtHW4j+lq(ufVVU;&da_G6n+_MNH!hXx?eVAlAgNxbrLX{ zudp#T=o9+q2R#;+wM)9S4mDm^(%$4m@Z4(_|HP3e*3YKS^w@;avrrJTh_zb2)?+tYjOvTV1jrz(|ZEnsYEF5H^5F-!bE^30(z3kV_1FS~fyc!WqIo;x6 z(B9bk05g<>r&x$Y1rupb0BaJ~3#lQeK;!Vu$&4v>^*g%Ul5$TPrXp)87%iC!ZwFX- z?F~;=dbX;Tgj)0W@K1be=l=Zli2Q#* zMRZ-{ITCt0h@43pZ?z#i`1&v*W_$ch&jM&^SoBOQ|GN1$bO<0G5Px!imWOHxDF_5t{ZHGW3zC?OLH+!wQEl4T93}Pe(Dq5Ea>+sNvCksgFf|P@1qTGZ9PAK7|+e z2|#Z5Qxun8WbtR4zSKf6HA5%vvMI`e9@VCfU0UBj!`otf)8iVB0kNCoVa?0kroH2v zv-z!X#(+O-*?|>ab8nTh{SG6g(Y5FE4bW8gA-M2Lg09^ZqHwgVdVuE6eQQjeTvPHZ zN4i7R`Cj0qZmXSFUI-4OpO(n10%iJ7tJ+b6VJPjVNfi4bJ&`etc5-yM2@B2nq|HJ+ zL3sbFKXtMNt|S^BPuW)@CceC)k@ovG7jWemO(&)^?{^fPLQ&gu{x7C-qcB?tCxDj2?332bl<7BgAUF_E? z@Pfexu>U0(1KAe-DhY}T%fHow(xvtl4bLq*q)0>TYJRHa5s4Q} zAcwa^hfMln^&7?beNY$c9)yb28TV5mK3{q-;EtZ2u5j_wi!zMoWOd4_e6na0AaJ))%w|hfoAl01>;7)$%EXXL%)qd$)i4R!BEMOC$9|zFYXRv0*k!% z=F;p+iqj5yWF+&Dz`WP2r!Ru`fvPwr@Vy(W?DbHCY#)uA1-592tx&Y=cM_!DZN_Yk ziZYhf&-rZ5x3y84eAv@ELLq_d+ws)r;cgA`XvD7`f2{0HFTAwWygZ$D_P9RiwqIxu zy4>WAgD#thk_<}hHH)LewDxkdRAdMFLJRn*h8=#aQj5U`Yjk&YF{pUTXf1lAJawCW86)7k{%5{+fe78hKSqY>FvNXTk<#m6@ zFu1Vub-vraH>kcyu!}G-A3;S43I6(kE^`4AYU+Vidc9uu#^@nli#*idla<}!u4HE4c?80=4HJGSh| z3?H=SJ&TUoSv{K%3^aCQcH6Pwu`2Dhd(?roaZeMi<7OVg=_(u;A3xy$xISXtYv+A4 zShib#n)X^tTTZ7`z2+w4mX`QNf4?KwDEjwNg5Q+TJToi_0~6@Kl$(7FyNVu=;HaM$ z3m;uWtFmwdhoV!_{nM>+0gkVU`uhyoXpB#x{nJ%KqJvL_tk1K{f1g5a@R4wKx&6hl zfR*hjVaZ=)^sH+){gmglW7n;WV^FQwtotzHC$$YlfpWm0(6E|oI{}VP(fxCVoafDV zw^x_j)q_jO)EJptBeQ@DD_x=$-imJ)+vluIoCyg46r%f&kp)U z=0}X}%h>}8xz&6)#@_tqqr$0f|7UafFO#0igxs1NC4pf(=es8*b$5N_bG{fZ?7eRu z&G1s!!Bf6cA<#TNEAaNB!w-uc0CvMQCxV2F8UQX@;^fnU-Vha$QZG4#)SMSG9UxeR}MRkTNTmn9%a5N0CZk0KwCP0 z*W*(&@7n8&Dv4E^1#d!PF1uba4VcgprgWrE}c}vRr><6jdJH9Xq4jJ;m zvstegL{AFUFvS4=_IRXvdk~e*x{w5=|A>6ta~0k%;D>3J{pUWA*-QyCW@2cyW0?% zlE)4K+!P|PYN~1Qr4{v_Ews82`++Woyj;N;(@VVLB|?#zFN>H?$nmIjCeb^yyGuj5 zCfSP5B*8W*DCH~b`dWy&0KCwW`{4enhFUD6zk=iPvf%g&w~aVe z{>ZbdXk)Lqv!xh5^I4WRJAdSf?Dy8iuf;DnvLL3P%p}gv#-Bsr zm*bNy-cj{4Z&amD^a|n8O@5LIj$BhG9P@nCpbiIwtBMz>MnBoW@Rl(&^Y_RtjJ2gK zd0J_jDmFfTB8}D=F57IXc9dOF&oJhEP?kWH0-e`~;!VAIbw{kvTznGl@Y^zYl{ZD{ zvlE1Gx)qa}?W5G`M5B`cH5h<`yPtG=$w@km4_4Rc-1=g_c@%Y%3>@;P`K{mk zLC!|{ivpcADXBn_=@40KL0Om)-CP{5woZchui?e|yt6K!lfgipbd+n*)iD}2ql&To z)PMmK2*itgbrlY8I?8Yxh$Mf>PFe)$*pB$+!|wehQ+*h_E*x>+T0+strd&r5G~WX$ ze5o$M^lz7AztYM?I@C>CySnSmVW$aY&9G^^pbWbyF6-My8CJE?jd6fC&gChLrKW$yK^E)*xUj5xsFp&)p|unqe@R-ELvY#7 z{3KE-LpG4kzAUO%r5Ehe111mm*Biukqju5b+7wIZwYBnK^P|AOfF5&25;_aG;KD0t zm^EQ_odGvB2*3ul`au=?A$S!gZvDa@gHmT~wohFPY!5Ffo*MP;e-PpE4uYpv-JDL3 z&nWbQoKDC>2M!|z#X5^JHu6~Mv91XdOPy28$(Vw(|93)>ACNsolGEM0TakcYKi~0@ z=)3gf@WT@(&qg=+5KQyR2%q*rWH;;ee zhD}|J^wnF+0XcZJ(E^-7+}$=~w();sOnWJ)KWfR^w!=dyg0ymv9xgvz0qF`8a)gZ1 z%@t~{?3l7@VNKjT?`vL>DTX&D<8lN)kAnu&c`pRH%EC=UU6ecJWUlwWD^wzd@0A)! zq2po(0B9V4BLjQB2j4HwF0Ub$2PguYJyp+llK68D9L_@yuF*df6YhaEfRy*M{-)NK z*m5=}QSl*5LG=2i`(H(m)VnxIf#nveUmvl1Sitm2`OwbbWw-pkFHiWh_r zVP}aXp^(Q`)G1x#dl+}9B3fbUe=^F(6Tzo!IZsR53 z?$uEGUsQ~TCPN92nqj4kvF6bu_jpM`5oN;*lQ%CMtWqCmkay!#Wg&M_ou2rmDoG*B zlb0{vt|UfgBG;o5V_;ZeSVbf!Dv@9xg^Gp%V{yZwq!S+A@+~nO^cu|XDr%;qire+* z@_2*X&;swdmiThhKQM!qD#8vEUw-tL1mcp5dC2s%ExC!=E#XWrnIzMnopyh|d@8}Vmn(XPh6-ib^QZu~fHbS5=QK{$ zY~Z|)s<%ma*h&XZs{FaRBLqi8GUxSN#OpHW`Bv8*qz{ZUeDlXvWgCOUW)H|rI2&oz z+`d7}hk1qBhj`#8PrSIk9@`Z^T$O#u6klW>EvXI|#PqoT*73^;hw;jv^jPO>6<(97 z=^NzyncSi@wq+(I&OFXBBLkAG2uB$0XdTA>)f;#%PE5h0NeR0+c@}aGcPo!9VYCA4 zz73me@$DW7s(A;;?h4|g|Jd-yeAN&0>i%!)TGBXWIB>~FIrjH;f&De0gNo;o((OdH zZ(H71R*6|(?@Ey*5NLLJq4j#!W4xR<)`2f7caX02>ro7ynBe2C&v`a+7ts^*BuxBx z;8dvE?T?i&Ai4jf=B8~_u)V)A%((H#CC3TDhtf9DPdVC0berz3204d5E!Mh{jc6Q( zNM9_+Pvk|5CF?)r`y4}pn{1Y)V%Uq8UrfYfa@Le%J_DXoYyEc&E_0Up{|$JB2)r~x(pjjkRRAw%W-Fo*Y!I2mt~Zc)r3%vYm* zbzI)Ai=k9@iTVb3w-dpbNWR-#>t}-BjDBK)W~K;N39NC4b|@YVr!7`6t=ca^Jgbt&geGofASNUs*gPz{Nde6tdNly!dLI z&x{RiAB^+tm=C>alLz}T0}X8|jVd~;s%38Lr~>{c`?=2H=3Z4Ntj7HPC^K|p+PFHw z>bsgdmk%e@2L}-EP!Z*S1munCeKCdE0X`0d9W=TM%tbhw0@w<1K0ZxD=)}q8{n>56 zEH}93`J+kZw_zD@Qc**{zDM_go6QxiR8dQOL?iuSY0Tg0|GpI67@9h**)w_yX@7cv zETWvF-l>;)O&>f>v6%6lI;`+ssTMz$0sDo}XQAe!0SWc5U4_Ldc$^uJ=C)uLTikAG zHJaGizy!0o?X?x{gEjasF|Tq|e>_jkOzXJSWjiPOMM%Ehif(+zG6VY@EUg<5h71|+#kBXhRkQzR(Ks|4r68| zjAoD$*T__!IrzjZZ(;7@guAHq+M>ELTtz*SCDt9dpv#k6pMwxp}cn zt?SgU7Yvye^3_vD99~E8a#Ujt@V3jMC}sNhXTrw3On?ljBm7+_U5n3&%8){w? z^G(5VOLef%B>Gh6&iH9O>TI+n5lUtY3f3mA$Lf=wY(mCD^@N}fca7cpFgS|cclr}nJ=xlqBjq^f0?CRwRZYcAd;wK$Juj$k7B31i2ac! zL#^&f!#>Tq)XJ-JXX7LMg+a)RL7sL^_C#n^0c3Rrz^-b?K8|7o;^199hPWD+a^m8O zQlURsgw0Hd+Vy=CL&~Z~$ih=uF?QKcsXiF$S}rFM+jdBAv!TpS$94P&3h?Qla&E1? zHW!%(qP$U5m1bcm_Xi*(4Ije>(C2$B z;Jo|~owikKQ?bZjE#i`N9zvl4h{LUY%A`c}?Ctc+NVL6Q5(O&$&fxB{Ih)R=+Yo;8 z3J`#W9Hc7CK|s}G)n1;iK}GNH~kYBSX(K`NN9?U7uS9{nGT=9$PS00Y)Cg%vwe${3y> zq(#HjV?_=NiDOh70_~_cqId=BG<>X%u#yqN#YOh^8&TMmG>Rh_v%L}nb|LS&tHT?n z=QL{Yh;W7r;S9TKGv~Vu(}5syI^3m$9eV#{R!s3GLZMgNMA@i=v0_Mj2=d{umv^g{ z6@&U~toPF#s{@AY<=G>Xqp49tP!NySbA=@O4KOp;f^Tlz$RfoZXVMsq)CL3a4WWLNtmO)q+JNeey)4y7L-T}yFo6Z*+ml*_GN57HI`kovp z0WF1lpa$$4>uR9<6@8r@LCH zCoLXPOl~UEry(7oo@{^twn$wSM|ytd>a_D#YO*nFK+*@Ek9K zD@4-p?T7e})~&nU-`{I5-w5qozbr=O16wbSlsSpt6O{T`jTO)M<^#hgJWEln)~AS4 zGj?*YU)s@!K809r8eRN03S-S&gI)A;dK9Gkrwp)e+6%+b2t}&2RG|n;a?&oLf;fic zeN__A736f&;+uU7z#k`71$~us`RfX0clfh!CubHL7sSn36`LNlxuvOSz95WvEIq-P zP~t#doo9C(v_a#-ZrNGX!^yogs?X@5Rs)>r>OQlUM?9K8n=azVX{-HV7$E)2*|n z`dB8y_HzCGh;Z~^yaHhZI)Wf`{}laLuPztll)a-N(TXpt?c>ZOHykip?X>6fyNap=AW&oBrZ8fY{%pTsWW}FHDWyn}g5!oY zVCX2H(aGA3>Oj%nzfcD=rzI}KZ5_i7dsUBUFkQjvCOVI2xq2l986M5>n{cDcIU=Q2 zK$!)*ckpff{J3~WQ)2~&EGNw&j%}TiW#u|M9+{~Zob4n{P`(vfCuDY+J(%}v!&${A z&VhhrB+9O1!|u)a;Tb-twdKZF-si<4&%Pg|MtQwT*Rl8fhFBVhXbgdmGZw@8ehh~c zmgFxXON)PKI7-!8$6N%o(zC>ye~E>gK`a<#u0`Slp~Uy>ShcvrKTutNdE+vd z(mY%1xR{l~m^xu(sZ4qveb+ypQNpF>8PJmncig=5m32dZ=rSxliC RKccT=0Jx%tLWP`p@P8L|Cw>3` literal 0 HcmV?d00001 diff --git a/static/favicon/web-app-manifest-512x512.png b/static/favicon/web-app-manifest-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4c24d129447f8d6ded3823b734b8c8b235d124 GIT binary patch literal 31203 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
XB9 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 Y(zm8O_bb_vgTOx%BXh%7ConhuAJXPCjsO4v literal 0 HcmV?d00001 From 4053de5825c07b998c36ce9bb2c156d781679f10 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 23:16:00 -0800 Subject: [PATCH 09/28] refac: styling --- src/lib/components/chat/MessageInput.svelte | 205 +++++++++--------- .../chat/MessageInput/Commands.svelte | 2 +- .../MessageInput/Commands/Knowledge.svelte | 2 +- .../chat/MessageInput/Commands/Models.svelte | 2 +- .../chat/MessageInput/Commands/Prompts.svelte | 2 +- 5 files changed, 107 insertions(+), 106 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 4df2b552aa..36dc5f0d16 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -305,7 +305,7 @@
{#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled}
{#if selectedToolIds.length > 0}
@@ -462,7 +462,7 @@ }} >
{#if files.length > 0} @@ -967,12 +967,12 @@ /> {/if} -
+
{#if !history?.currentId || history.messages[history.currentId]?.done == true} {/if} -
-
-
-
- {#if !history.currentId || history.messages[history.currentId]?.done == true} - {#if prompt === ''} -
- - - -
- {:else} -
- - + +
+ {:else} +
+ + + +
+ {/if} + {:else} +
+ + - -
- {/if} - {:else} -
- - - + + + + + +
+ {/if}
- {/if} +
{/if} diff --git a/src/lib/components/chat/MessageInput/Commands.svelte b/src/lib/components/chat/MessageInput/Commands.svelte index 1dccb4aa6d..a9c77ab7d8 100644 --- a/src/lib/components/chat/MessageInput/Commands.svelte +++ b/src/lib/components/chat/MessageInput/Commands.svelte @@ -106,7 +106,7 @@ {:else}
0 || prompt.split(' ')?.at(0)?.substring(1).startsWith('http')}
0}
0}
Date: Sun, 1 Dec 2024 23:29:21 -0800 Subject: [PATCH 10/28] refac: styling --- src/lib/components/chat/MessageInput.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 36dc5f0d16..a7762d4ead 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -271,7 +271,7 @@ {#if loaded}
-
+
{#if autoScroll === false && history?.currentId} @@ -547,7 +547,7 @@ {/if}
-
+
From 5433340bb1924e61d2d616950eacc7a6cfdb6b46 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 1 Dec 2024 23:58:22 -0800 Subject: [PATCH 12/28] enh: banner md support --- src/lib/components/common/Banner.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/components/common/Banner.svelte b/src/lib/components/common/Banner.svelte index a11df90579..378afdf803 100644 --- a/src/lib/components/common/Banner.svelte +++ b/src/lib/components/common/Banner.svelte @@ -2,6 +2,8 @@ import type { Banner } from '$lib/types'; import { onMount, createEventDispatcher } from 'svelte'; import { fade } from 'svelte/transition'; + import DOMPurify from 'dompurify'; + import { marked } from 'marked'; const dispatch = createEventDispatcher(); @@ -81,7 +83,7 @@
- {banner.content} + {@html marked.parse(DOMPurify.sanitize(banner.content))}
From abbf37f3d9e1b34bd1e27b112a72ac45f280b27e Mon Sep 17 00:00:00 2001 From: Panda Date: Mon, 2 Dec 2024 09:49:02 +0100 Subject: [PATCH 13/28] Update translation.json --- src/lib/i18n/locales/zh-TW/translation.json | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 8986adfcf9..dbc9a9adeb 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -1,5 +1,5 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1 表示無限制,或正整數表示特定限制", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s'、'm'、'h'、'd'、'w' 或 '-1' 表示無到期時間。", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)", @@ -60,7 +60,7 @@ "Allow Voice Interruption in Call": "允許在通話中打斷語音", "Already have an account?": "已經有帳號了嗎?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "作為 top_p 的替代方案,旨在確保質量和多樣性的平衡。相對於最可能的 token 機率而言,參數 p 代表一個 token 被考慮在内的最低機率。例如,當 p=0.05 且最可能的 token 機率為 0.9 時,數值低於 0.045 的對數機率會被過濾掉。(預設值:0.0)", - "Amazing": "驚人", + "Amazing": "很棒", "an assistant": "一位助手", "and": "和", "and {{COUNT}} more": "和另外 {{COUNT}} 個", @@ -91,8 +91,8 @@ "Authenticate": "驗證", "Auto-Copy Response to Clipboard": "自動將回應複製到剪貼簿", "Auto-playback response": "自動播放回應", - "Autocomplete Generation": "", - "Autocomplete Generation Input Max Length": "", + "Autocomplete Generation": "自動完成生成", + "Autocomplete Generation Input Max Length": "自動完成產生輸入最大長度", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 API 驗證字串", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 基礎 URL", @@ -122,7 +122,7 @@ "Certificate Path": "憑證路徑", "Change Password": "修改密碼", "Character": "角色", - "Character limit for autocomplete generation input": "", + "Character limit for autocomplete generation input": "自動完成產生輸入的字元限制", "Chart new frontiers": "探索新領域", "Chat": "對話", "Chat Background Image": "對話背景圖片", @@ -301,7 +301,7 @@ "Embedding Model Engine": "嵌入模型引擎", "Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為 \"{{embedding_model}}\"", "Enable API Key Auth": "啟用 API 金鑰驗證", - "Enable autocomplete generation for chat messages": "", + "Enable autocomplete generation for chat messages": "啟用聊天訊息的自動完成生成", "Enable Community Sharing": "啟用社群分享", "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "啟用記憶體鎖定(mlock)以防止模型資料被換出 RAM。此選項會將模型的工作頁面集鎖定在 RAM 中,確保它們不會被換出到磁碟。這可以透過避免頁面錯誤和確保快速資料存取來維持效能。", "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "啟用記憶體映射(mmap)以載入模型資料。此選項允許系統使用磁碟儲存作為 RAM 的延伸,透過將磁碟檔案視為在 RAM 中來處理。這可以透過允許更快的資料存取來改善模型效能。然而,它可能無法在所有系統上正常運作,並且可能會消耗大量磁碟空間。", @@ -335,7 +335,7 @@ "Enter model tag (e.g. {{modelTag}})": "輸入模型標籤(例如:{{modelTag}})", "Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰", "Enter Number of Steps (e.g. 50)": "輸入步驟數(例如:50)", - "Enter proxy URL (e.g. https://user:password@host:port)": "", + "Enter proxy URL (e.g. https://user:password@host:port)": "輸入代理程式 URL(例如:https://user:password@host:port)", "Enter Sampler (e.g. Euler a)": "輸入取樣器(例如:Euler a)", "Enter Scheduler (e.g. Karras)": "輸入排程器(例如:Karras)", "Enter Score": "輸入分數", @@ -672,7 +672,7 @@ "Please carefully review the following warnings:": "請仔細閱讀以下警告:", "Please enter a prompt": "請輸入提示詞", "Please fill in all fields.": "請填寫所有欄位。", - "Please select a model first.": "", + "Please select a model first.": "請先選擇型號。", "Please select a reason": "請選擇原因", "Port": "連接埠", "Positive attitude": "積極的態度", @@ -688,7 +688,7 @@ "Prompt updated successfully": "提示詞更新成功", "Prompts": "提示詞", "Prompts Access": "提示詞存取", - "Proxy URL": "", + "Proxy URL": "代理網址", "Pull \"{{searchValue}}\" from Ollama.com": "從 Ollama.com 下載「{{searchValue}}」", "Pull a model from Ollama.com": "從 Ollama.com 下載模型", "Query Generation Prompt": "查詢生成提示詞", @@ -722,7 +722,7 @@ "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "無法啟用回應通知,因為網站權限已遭拒。請前往瀏覽器設定以授予必要存取權限。", "Response splitting": "回應分割", "Result": "結果", - "Retrieval Query Generation": "", + "Retrieval Query Generation": "檢索查詢生成", "Rich Text Input for Chat": "使用富文本輸入對話", "RK": "RK", "Role": "角色", @@ -844,7 +844,7 @@ "System": "系統", "System Instructions": "系統指令", "System Prompt": "系統提示詞", - "Tags Generation": "", + "Tags Generation": "標籤生成", "Tags Generation Prompt": "標籤生成提示詞", "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "使用無尾採樣來減少較不可能的 token 對輸出的影響。較高的值(例如 2.0)會減少更多影響,而值為 1.0 則停用此設定。(預設:1)", "Tap to interrupt": "點選以中斷", @@ -987,7 +987,7 @@ "Web Loader Settings": "網頁載入器設定", "Web Search": "網頁搜尋", "Web Search Engine": "網頁搜尋引擎", - "Web Search Query Generation": "", + "Web Search Query Generation": "網頁搜尋查詢生成", "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI 設定", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 將向 \"{{url}}/api/chat\" 發送請求", From 6173636a114be14a0d91f8cda7923220a57819e1 Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 06:26:55 +0300 Subject: [PATCH 14/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 93fa949723..6fcf8394b0 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -592,19 +592,19 @@ "No file selected": "Файлы не выбраны", "No files found.": "", "No groups with access, add a group to grant access": "", - "No HTML, CSS, or JavaScript content found.": "", + "No HTML, CSS, or JavaScМодели не найденыript content found.": "", "No knowledge found": "", "No model IDs": "", - "No models found": "", - "No models selected": "", + "No models found": "Модели не найдены", + "No models selected": "Модели не выбраны", "No results found": "Результатов не найдено", "No search query generated": "Поисковый запрос не сгенерирован", "No source available": "Нет доступных источников", - "No users were found.": "", + "No users were found.": "Пользователи не найдены.", "No valves to update": "Нет вентилей для обновления", "None": "Нет", "Not factually correct": "Не соответствует действительности", - "Not helpful": "", + "Not helpful": "Бесполезно", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Обратите внимание: Если вы установите минимальный балл, поиск будет возвращать только документы с баллом больше или равным минимальному баллу.", "Notes": "", "Notifications": "Уведомления", @@ -622,16 +622,16 @@ "Ollama API settings updated": "", "Ollama Version": "Версия Ollama", "On": "Включено", - "Only alphanumeric characters and hyphens are allowed": "", + "Only alphanumeric characters and hyphens are allowed": "Разрешены только буквенно-цифровые символы и дефисы.", "Only alphanumeric characters and hyphens are allowed in the command string.": "В строке команды разрешено использовать только буквенно-цифровые символы и дефисы.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", - "Only select users and groups with permission can access": "", + "Only select users and groups with permission can access": "Доступ имеют только избранные пользователи и группы, имеющие разрешение.", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Похоже, что URL-адрес недействителен. Пожалуйста, перепроверьте и попробуйте еще раз.", - "Oops! There are files still uploading. Please wait for the upload to complete.": "", + "Oops! There are files still uploading. Please wait for the upload to complete.": "Упс! Есть файлы, которые все еще загружаются. Пожалуйста, дождитесь завершения загрузки.", "Oops! There was an error in the previous response.": "", "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Вы используете неподдерживаемый метод (только фронтенд). Пожалуйста, обслуживайте веб-интерфейс из бэкенда.", "Open file": "Открыть файл", - "Open in full screen": "", + "Open in full screen": "Открыть на весь экран", "Open new chat": "Открыть новый чат", "Open WebUI uses faster-whisper internally.": "", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "", @@ -643,25 +643,25 @@ "OpenAI API settings updated": "", "OpenAI URL/Key required.": "Требуется URL-адрес API OpenAI или ключ API.", "or": "или", - "Organize your users": "", + "Organize your users": "Организуйте своих пользователей", "Other": "Прочее", "OUTPUT": "", "Output format": "Формат вывода", "Overview": "Обзор", "page": "страница", "Password": "Пароль", - "Paste Large Text as File": "", + "Paste Large Text as File": "Вставить большой текст как файл", "PDF document (.pdf)": "PDF-документ (.pdf)", "PDF Extract Images (OCR)": "Извлечение изображений из PDF (OCR)", "pending": "ожидающий", "Permission denied when accessing media devices": "Отказано в разрешении на доступ к мультимедийным устройствам", "Permission denied when accessing microphone": "Отказано в разрешении на доступ к микрофону", "Permission denied when accessing microphone: {{error}}": "Отказано в разрешении на доступ к микрофону: {{error}}", - "Permissions": "", + "Permissions": "Разрешения", "Personalization": "Персонализация", "Pin": "Закрепить", "Pinned": "Закреплено", - "Pioneer insights": "", + "Pioneer insights": "Новаторские идеи", "Pipeline deleted successfully": "Конвейер успешно удален", "Pipeline downloaded successfully": "Конвейер успешно загружен", "Pipelines": "Конвейеры", @@ -670,9 +670,9 @@ "Plain text (.txt)": "Текст в формате .txt", "Playground": "Песочница", "Please carefully review the following warnings:": "Пожалуйста, внимательно ознакомьтесь со следующими предупреждениями:", - "Please enter a prompt": "", - "Please fill in all fields.": "", - "Please select a model first.": "", + "Please enter a prompt": "Пожалуйста, введите подсказку", + "Please fill in all fields.": "Пожалуйста, заполните все поля.", + "Please select a model first.": "Пожалуйста, сначала выберите модель.", "Please select a reason": "Пожалуйста, выберите причину", "Port": "", "Positive attitude": "Позитивный настрой", @@ -723,7 +723,7 @@ "Response splitting": "Разделение ответов", "Result": "", "Retrieval Query Generation": "", - "Rich Text Input for Chat": "", + "Rich Text Input for Chat": "Ввод форматированного текста для чата", "RK": "", "Role": "Роль", "Rosé Pine": "Rosé Pine", @@ -815,7 +815,7 @@ "Share Chat": "Поделиться чатом", "Share to OpenWebUI Community": "Поделиться с сообществом OpenWebUI", "Show": "Показать", - "Show \"What's New\" modal on login": "", + "Show \"What's New\" modal on login": "Показывать окно «Что нового» при входе в систему", "Show Admin Details in Account Pending Overlay": "Показывать данные администратора в оверлее ожидающей учетной записи", "Show shortcuts": "Показать горячие клавиши", "Show your support!": "Поддержите нас!", @@ -903,7 +903,7 @@ "To select actions here, add them to the \"Functions\" workspace first.": "Чтобы выбрать действия, сначала добавьте их в \"Функции\" рабочего пространства.", "To select filters here, add them to the \"Functions\" workspace first.": "Чтобы выбрать фильтры, сначала добавьте их в \"Функции\" рабочего пространства.", "To select toolkits here, add them to the \"Tools\" workspace first.": "Чтобы выбрать инструменты, сначала добавьте их в \"Инструменты\" рабочего пространства.", - "Toast notifications for new updates": "", + "Toast notifications for new updates": "Уведомления о обновлениях", "Today": "Сегодня", "Toggle settings": "Переключить настройки", "Toggle sidebar": "Переключить боковую панель", From c5f7ad2009fa26bfb8ee804366f850d7064262d7 Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 06:56:30 +0300 Subject: [PATCH 15/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 154 ++++++++++---------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 6fcf8394b0..6d57291773 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -1,5 +1,5 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1 для отсутствия ограничений или положительное целое число для определенного ограничения.", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' или '-1' чтобы был без срока годности.", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(например, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)", @@ -12,33 +12,33 @@ "A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач используется при выполнении таких задач, как генерация заголовков для чатов и поисковых запросов в Интернете", "a user": "пользователь", "About": "О программе", - "Access": "", - "Access Control": "", - "Accessible to all users": "", + "Access": "Доступ", + "Access Control": "Контроль доступа", + "Accessible to all users": "Доступно всем пользователям", "Account": "Учетная запись", "Account Activation Pending": "Ожидание активации учетной записи", "Accurate information": "Точная информация", "Actions": "Действия", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Активируйте эту команду, набрав \"/{{COMMAND}}\" для ввода в чате.", "Active Users": "Активные пользователи", "Add": "Добавить", - "Add a model ID": "", + "Add a model ID": "Добавить ID модели", "Add a short description about what this model does": "Добавьте краткое описание того, что делает эта модель", "Add a tag": "Добавьте тег", - "Add Arena Model": "", - "Add Connection": "", - "Add Content": "", - "Add content here": "", + "Add Arena Model": "Добавить модель арены", + "Add Connection": "Добавить соединение", + "Add Content": "Добавить контент", + "Add content here": "Добавить контент сюда", "Add custom prompt": "Добавьте пользовательский промпт", "Add Files": "Добавить файлы", - "Add Group": "", + "Add Group": "Добавить группу", "Add Memory": "Добавить воспоминание", "Add Model": "Добавить модель", "Add Tag": "Добавить тег", "Add Tags": "Добавить теги", "Add text content": "", "Add User": "Добавить пользователя", - "Add User Group": "", + "Add User Group": "Добавить группу пользователей", "Adjusting these settings will apply changes universally to all users.": "Изменения в этих настройках будут применены для всех пользователей.", "admin": "админ", "Admin": "Админ", @@ -47,20 +47,20 @@ "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Администраторы всегда имеют доступ ко всем инструментам; пользователям нужны инструменты, назначенные для каждой модели в рабочем пространстве.", "Advanced Parameters": "Расширенные Параметры", "Advanced Params": "Расширенные параметры", - "All chats": "", + "All chats": "Все чаты", "All Documents": "Все документы", - "All models deleted successfully": "", - "Allow Chat Delete": "", + "All models deleted successfully": "Все модели успешно удалены", + "Allow Chat Delete": "Разрешить удаление чата", "Allow Chat Deletion": "Разрешить удаление чата", - "Allow Chat Edit": "", - "Allow File Upload": "", + "Allow Chat Edit": "Разрешить редактирование чата", + "Allow File Upload": "Разрешить загрузку файлов", "Allow non-local voices": "Разрешить не локальные голоса", "Allow Temporary Chat": "Разрешить временные чаты", "Allow User Location": "Разрешить доступ к местоположению пользователя", "Allow Voice Interruption in Call": "Разрешить прерывание голоса во время вызова", "Already have an account?": "У вас уже есть учетная запись?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "", - "Amazing": "", + "Amazing": "Удивительный", "an assistant": "ассистент", "and": "и", "and {{COUNT}} more": "", @@ -69,30 +69,30 @@ "API Key": "Ключ API", "API Key created.": "Ключ API создан.", "API keys": "Ключи API", - "Application DN": "", - "Application DN Password": "", - "applies to all users with the \"user\" role": "", + "Application DN": "DN приложения", + "Application DN Password": "DN-пароль приложения", + "applies to all users with the \"user\" role": "применяется ко всем пользователям с ролью «пользователь»", "April": "Апрель", "Archive": "Архив", "Archive All Chats": "Архивировать все чаты", "Archived Chats": "Архив чатов", "archived-chat-export": "", - "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to unarchive all archived chats?": "Вы уверены, что хотите разархивировать все заархивированные чаты?", "Are you sure?": "Вы уверены?", - "Arena Models": "", - "Artifacts": "", - "Ask a question": "", - "Assistant": "", + "Arena Models": "Модели арены", + "Artifacts": "Артефакты", + "Ask a question": "Задать вопрос", + "Assistant": "Ассистент", "Attach file": "Прикрепить файл", "Attention to detail": "Внимание к деталям", - "Attribute for Username": "", + "Attribute for Username": "Атрибут для имени пользователя", "Audio": "Аудио", "August": "Август", - "Authenticate": "", + "Authenticate": "Аутентификация", "Auto-Copy Response to Clipboard": "Автоматическое копирование ответа в буфер обмена", "Auto-playback response": "Автоматическое воспроизведение ответа", - "Autocomplete Generation": "", - "Autocomplete Generation Input Max Length": "", + "Autocomplete Generation": "Генерация автозаполнения", + "Autocomplete Generation Input Max Length": "Максимальная длина входных данных автозаполнения", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "строка авторизации API AUTOMATIC1111", "AUTOMATIC1111 Base URL": "Базовый URL адрес AUTOMATIC1111", @@ -109,8 +109,8 @@ "Batch Size (num_batch)": "Размер партии (num_batch)", "before": "до", "Being lazy": "Лениво", - "Bing Search V7 Endpoint": "", - "Bing Search V7 Subscription Key": "", + "Bing Search V7 Endpoint": "Конечная точка поиска Bing V7", + "Bing Search V7 Subscription Key": "Ключ API Bing Search V7", "Brave Search API Key": "Ключ API поиска Brave", "By {{name}}": "", "Bypass SSL verification for Websites": "Обход проверки SSL для веб-сайтов", @@ -122,16 +122,16 @@ "Certificate Path": "", "Change Password": "Изменить пароль", "Character": "", - "Character limit for autocomplete generation input": "", - "Chart new frontiers": "", + "Character limit for autocomplete generation input": "Ограничение количества символов для ввода при генерации автозаполнения", + "Chart new frontiers": "Наметьте новые границы", "Chat": "Чат", "Chat Background Image": "Фоновое изображение чата", "Chat Bubble UI": "Bubble UI чат", "Chat Controls": "Управление чатом", "Chat direction": "Направление чата", "Chat Overview": "Обзор чата", - "Chat Permissions": "", - "Chat Tags Auto-Generation": "", + "Chat Permissions": "Разрешения для чата", + "Chat Tags Auto-Generation": "Автогенерация тегов чата", "Chats": "Чаты", "Check Again": "Перепроверьте ещё раз", "Check for updates": "Проверить обновления", @@ -140,11 +140,11 @@ "Chunk Overlap": "Перекрытие фрагментов", "Chunk Params": "Параметры фрагментов", "Chunk Size": "Размер фрагмента", - "Ciphers": "", + "Ciphers": "Шифры", "Citation": "Цитирование", "Clear memory": "Очистить воспоминания", - "click here": "", - "Click here for filter guides.": "", + "click here": "кликните сюда", + "Click here for filter guides.": "Нажмите здесь, чтобы просмотреть руководства по фильтрам.", "Click here for help.": "Нажмите здесь для получения помощи.", "Click here to": "Нажмите здесь, чтобы", "Click here to download user import template file.": "Нажмите здесь, чтобы загрузить файл шаблона импорта пользователя", @@ -158,20 +158,20 @@ "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "В разрешении на запись в буфер обмена отказано. Пожалуйста, проверьте настройки своего браузера, чтобы предоставить необходимый доступ.", "Clone": "Клонировать", "Close": "Закрыть", - "Code execution": "", + "Code execution": "Выполнение кода", "Code formatted successfully": "Код успешно отформатирован", "Collection": "Коллекция", - "Color": "", + "Color": "Цвет", "ComfyUI": "ComfyUI", "ComfyUI Base URL": "Базовый адрес URL ComfyUI", "ComfyUI Base URL is required.": "Необходим базовый адрес URL ComfyUI.", "ComfyUI Workflow": "ComfyUI Workflow", "ComfyUI Workflow Nodes": "Узлы ComfyUI Workflow", "Command": "Команда", - "Completions": "", + "Completions": "Завершения", "Concurrent Requests": "Одновременные запросы", - "Configure": "", - "Configure Models": "", + "Configure": "Настроить", + "Configure Models": "Настройка моделей", "Confirm": "Подтвердить", "Confirm Password": "Подтвердите пароль", "Confirm your action": "Подтвердите свое действие", @@ -186,7 +186,7 @@ "Continue with LDAP": "", "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "Управляйте разделением текста сообщения для запросов TTS. 'Пунктуация' разделяет на предложения, 'абзацы' - разделяет на абзацы, а 'нет' сохраняет сообщение в виде одной строки.", "Controls": "Управление", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "Управляет балансом между согласованностью и разнообразием выходных данных. Меньшее значение приведет к более сфокусированному и связному тексту. (По умолчанию: 5.0)", "Copied": "Скопировано", "Copied shared chat URL to clipboard!": "Копирование в буфер обмена выполнено успешно!", "Copied to clipboard": "Скопировано в буфер обмена", @@ -194,15 +194,15 @@ "Copy last code block": "Копировать последний блок кода", "Copy last response": "Копировать последний ответ", "Copy Link": "Копировать ссылку", - "Copy to clipboard": "", + "Copy to clipboard": "Скопировать в буфер обмена", "Copying to clipboard was successful!": "Копирование в буфер обмена прошло успешно!", - "Create": "", - "Create a knowledge base": "", + "Create": "Создать", + "Create a knowledge base": "Создайте базу знаний", "Create a model": "Создание модели", "Create Account": "Создать аккаунт", - "Create Admin Account": "", - "Create Group": "", - "Create Knowledge": "", + "Create Admin Account": "Создать Аккаунт Администратора", + "Create Group": "Создать Группу", + "Create Knowledge": "Создать Знания", "Create new key": "Создать новый ключ", "Create new secret key": "Создать новый секретный ключ", "Created at": "Создано", @@ -220,30 +220,30 @@ "Default (SentenceTransformers)": "По умолчанию (SentenceTransformers)", "Default Model": "Модель по умолчанию", "Default model updated": "Модель по умолчанию обновлена", - "Default Models": "", - "Default permissions": "", - "Default permissions updated successfully": "", + "Default Models": "Модели по умолчанию", + "Default permissions": "Разрешения по умолчанию", + "Default permissions updated successfully": "Разрешения по умолчанию успешно обновлены.", "Default Prompt Suggestions": "Предложения промптов по умолчанию", - "Default to 389 or 636 if TLS is enabled": "", - "Default to ALL": "", + "Default to 389 or 636 if TLS is enabled": "По умолчанию 389 или 636, если TLS включен.", + "Default to ALL": "По умолчанию ВСЕ", "Default User Role": "Роль пользователя по умолчанию", "Delete": "Удалить", "Delete a model": "Удалить модель", - "Delete All Chats": "Удалить все чаты", - "Delete All Models": "", + "Delete All Chats": "Удалить ВСЕ Чаты", + "Delete All Models": "Удалить ВСЕ Модели", "Delete chat": "Удалить чат", - "Delete Chat": "Удалить чат", + "Delete Chat": "Удалить Чат", "Delete chat?": "Удалить чат?", - "Delete folder?": "", + "Delete folder?": "Удалить папку?", "Delete function?": "Удалить функцию?", "Delete prompt?": "Удалить промпт?", "delete this link": "удалить эту ссылку", "Delete tool?": "Удалить этот инструмент?", - "Delete User": "Удалить пользователя", + "Delete User": "Удалить Пользователя", "Deleted {{deleteModelTag}}": "Удалено {{deleteModelTag}}", "Deleted {{name}}": "Удалено {{name}}", "Deleted User": "", - "Describe your knowledge base and objectives": "", + "Describe your knowledge base and objectives": "Опишите свою базу знаний и цели", "Description": "Описание", "Didn't fully follow instructions": "Не полностью следует инструкциям", "Disabled": "Отключено", @@ -251,17 +251,17 @@ "Discover a model": "Найти модель", "Discover a prompt": "Найти промпт", "Discover a tool": "Найти инструмент", - "Discover wonders": "", + "Discover wonders": "Откройте для себя чудеса", "Discover, download, and explore custom functions": "Находите, загружайте и исследуйте пользовательские функции", "Discover, download, and explore custom prompts": "Находите, загружайте и исследуйте пользовательские промпты", "Discover, download, and explore custom tools": "Находите, загружайте и исследуйте пользовательские инструменты", "Discover, download, and explore model presets": "Находите, загружайте и исследуйте пользовательские предустановки моделей", "Dismissible": "Можно отклонить", - "Display": "", + "Display": "Отображать", "Display Emoji in Call": "Отображать эмодзи в вызовах", "Display the username instead of You in the Chat": "Отображать имя пользователя вместо 'Вы' в чате", - "Displays citations in the response": "", - "Dive into knowledge": "", + "Displays citations in the response": "Отображает цитаты в ответе", + "Dive into knowledge": "Погрузитесь в знания", "Do not install functions from sources you do not fully trust.": "Не устанавливайте функции из источников, которым вы не полностью доверяете.", "Do not install tools from sources you do not fully trust.": "Не устанавливайте инструменты из источников, которым вы не полностью доверяете.", "Document": "Документ", @@ -276,8 +276,8 @@ "Download": "Загрузить", "Download canceled": "Загрузка отменена", "Download Database": "Загрузить базу данных", - "Drag and drop a file to upload or select a file to view": "", - "Draw": "", + "Drag and drop a file to upload or select a file to view": "Перетащите файл для загрузки или выберите файл для просмотра.", + "Draw": "Рисовать", "Drop any files here to add to the conversation": "Перетащите сюда файлы, чтобы добавить их в разговор", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "например, '30s','10m'. Допустимые единицы времени: 's', 'm', 'h'.", "e.g. A filter to remove profanity from text": "", @@ -287,24 +287,24 @@ "e.g. my_tools": "", "e.g. Tools for performing various operations": "", "Edit": "Редактировать", - "Edit Arena Model": "", - "Edit Connection": "", - "Edit Default Permissions": "", + "Edit Arena Model": "Изменить модель арены", + "Edit Connection": "Изменить соединение", + "Edit Default Permissions": "Изменить разрешения по умолчанию", "Edit Memory": "Редактировать воспоминание", "Edit User": "Редактировать пользователя", - "Edit User Group": "", + "Edit User Group": "Редактировать Пользовательскую Группу", "ElevenLabs": "ElevenLabs", "Email": "Электронная почта", - "Embark on adventures": "", + "Embark on adventures": "Отправляйтесь в приключения", "Embedding Batch Size": "Размер пакета для встраивания", "Embedding Model": "Модель встраивания", "Embedding Model Engine": "Движок модели встраивания", "Embedding model set to \"{{embedding_model}}\"": "Модель встраивания установлена в \"{{embedding_model}}\"", - "Enable API Key Auth": "", - "Enable autocomplete generation for chat messages": "", + "Enable API Key Auth": "Включить аутентификацию по API Ключу", + "Enable autocomplete generation for chat messages": "Включить генерацию автозаполнения для сообщений чата", "Enable Community Sharing": "Включить совместное использование", - "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "", - "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "", + "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Включите блокировку памяти (mlock), чтобы предотвратить выгрузку данных модели из ОЗУ. Эта опция блокирует рабочий набор страниц модели в оперативной памяти, гарантируя, что они не будут выгружены на диск. Это может помочь поддерживать производительность, избегая ошибок страниц и обеспечивая быстрый доступ к данным.", + "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Включите отображение памяти (mmap), чтобы загрузить данные модели. Эта опция позволяет системе использовать дисковое хранилище в качестве расширения оперативной памяти, обрабатывая дисковые файлы так, как если бы они находились в оперативной памяти. Это может улучшить производительность модели за счет более быстрого доступа к данным. Однако он может работать некорректно со всеми системами и занимать значительный объем дискового пространства.", "Enable Message Rating": "Разрешить оценку ответов", "Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "", "Enable New Sign Ups": "Разрешить новые регистрации", From 10382998f1ac65307fbd31a3a69dbd3b8d1db346 Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 07:24:14 +0300 Subject: [PATCH 16/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 86 ++++++++++----------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 6d57291773..b05efd50c3 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -869,21 +869,21 @@ "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Максимальный размер файла в МБ. Если размер файла превысит это ограничение, файл не будет загружен.", "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "Максимальное количество файлов, которые могут быть использованы одновременно в чате. Если количество файлов превысит это ограничение, файлы не будут загружены.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Оценка должна быть значением между 0,0 (0%) и 1,0 (100%).", - "The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "", + "The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "Температура модели. Повышение температуры заставит модель отвечать более творчески. (По умолчанию: 0,8)", "Theme": "Тема", "Thinking...": "Думаю...", "This action cannot be undone. Do you wish to continue?": "Это действие нельзя отменить. Вы хотите продолжить?", "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 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. (Default: 24)": "", - "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. (Default: 128)": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", + "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. (Default: 24)": "Этот параметр определяет, сколько токенов сохраняется при обновлении контекста. Например, если установлено значение 2, будут сохранены два последних токена контекста разговора. Сохранение контекста может помочь сохранить непрерывность разговора, но может снизить способность реагировать на новые темы. (По умолчанию: 24)", + "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. (Default: 128)": "Этот параметр устанавливает максимальное количество токенов, которые модель может сгенерировать в своем ответе. Увеличение этого предела позволяет модели предоставлять более длинные ответы, но также может увеличить вероятность создания бесполезного или нерелевантного контента. (По умолчанию: 128)", + "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Эта опция удалит все существующие файлы в коллекции и заменит их вновь загруженными файлами.", "This response was generated by \"{{model}}\"": "", "This will delete": "Это приведет к удалению", - "This will delete {{NAME}} and all its contents.": "", - "This will delete all models including custom models": "", - "This will delete all models including custom models and cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will delete {{NAME}} and all its contents.": "При этом будет удален {{NAME}} и все его содержимое.", + "This will delete all models including custom models": "Это приведет к удалению всех моделей, включая пользовательские модели.", + "This will delete all models including custom models and cannot be undone.": "При этом будут удалены все модели, включая пользовательские, и это действие нельзя будет отменить.", + "This will reset the knowledge base and sync all files. Do you wish to continue?": "Это сбросит базу знаний и синхронизирует все файлы. Хотите продолжить?", "Thorough explanation": "Подробное объяснение", "Tika": "Tika", "Tika Server URL required.": "Требуется URL-адрес сервера Tika.", @@ -898,7 +898,7 @@ "To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,", "To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Чтобы получить доступ к WebUI, пожалуйста, обратитесь к администратору. Администраторы могут управлять статусами пользователей из панели администратора.", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Чтобы прикрепить сюда базу знаний, сначала добавьте её в \"Знания\" рабочего пространства.", "To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "", "To select actions here, add them to the \"Functions\" workspace first.": "Чтобы выбрать действия, сначала добавьте их в \"Функции\" рабочего пространства.", "To select filters here, add them to the \"Functions\" workspace first.": "Чтобы выбрать фильтры, сначала добавьте их в \"Функции\" рабочего пространства.", @@ -912,13 +912,13 @@ "Too verbose": "", "Tool created successfully": "Инструмент успешно создан", "Tool deleted successfully": "Инструмент успешно удален", - "Tool Description": "", - "Tool ID": "", + "Tool Description": "Описание Инструмента", + "Tool ID": "ID Инструмента", "Tool imported successfully": "Инструмент успешно импортирован", - "Tool Name": "", + "Tool Name": "Имя Инструмента", "Tool updated successfully": "Инструмент успешно обновлен", "Tools": "Инструменты", - "Tools Access": "", + "Tools Access": "Доступ к инструментам", "Tools are a function calling system with arbitrary code execution": "Инструменты - это система вызова функций с выполнением произвольного кода", "Tools have a function calling system that allows arbitrary code execution": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код", "Tools have a function calling system that allows arbitrary code execution.": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код.", @@ -933,41 +933,41 @@ "Type Hugging Face Resolve (Download) URL": "Введите URL-адрес Hugging Face Resolve (загрузки)", "Uh-oh! There was an issue connecting to {{provider}}.": "Упс! Возникла проблема подключения к {{provider}}.", "UI": "Пользовательский интерфейс", - "Unarchive All": "", - "Unarchive All Archived Chats": "", - "Unarchive Chat": "", - "Unlock mysteries": "", + "Unarchive All": "Разархивировать ВСЁ", + "Unarchive All Archived Chats": "Разархивировать ВСЕ Заархивированные Чаты", + "Unarchive Chat": "Разархивировать чат", + "Unlock mysteries": "Разблокируйте тайны", "Unpin": "Открепить", - "Unravel secrets": "", - "Untagged": "", + "Unravel secrets": "Разгадать секреты", + "Untagged": "Без тегов", "Update": "Обновить", "Update and Copy Link": "Обновить и скопировать ссылку", "Update for the latest features and improvements.": "Обновитесь для получения последних функций и улучшений.", "Update password": "Обновить пароль", - "Updated": "", + "Updated": "Обновлено", "Updated at": "Обновлено", "Updated At": "", "Upload": "Загрузить", "Upload a GGUF model": "Загрузить модель GGUF", - "Upload directory": "", - "Upload files": "", + "Upload directory": "Загрузить каталог", + "Upload files": "Загрузить файлы", "Upload Files": "Загрузить файлы", "Upload Pipeline": "Загрузить конвейер", "Upload Progress": "Прогресс загрузки", "URL": "", "URL Mode": "Режим URL", - "Use '#' in the prompt input to load and include your knowledge.": "", + "Use '#' in the prompt input to load and include your knowledge.": "Используйте «#» в строке ввода, чтобы загрузить и включить свои знания.", "Use Gravatar": "Использовать Gravatar", - "Use groups to group your users and assign permissions.": "", + "Use groups to group your users and assign permissions.": "Используйте группы, чтобы группировать пользователей и назначать разрешения.", "Use Initials": "Использовать инициалы", "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", "user": "пользователь", - "User": "", + "User": "Пользователь", "User location successfully retrieved.": "Местоположение пользователя успешно получено.", - "Username": "", + "Username": "Имя пользователя", "Users": "Пользователи", - "Using the default arena model with all models. Click the plus button to add custom models.": "", + "Using the default arena model with all models. Click the plus button to add custom models.": "Использование модели арены по умолчанию со всеми моделями. Нажмите кнопку «плюс», чтобы добавить пользовательские модели.", "Utilize": "Используйте", "Valid time units:": "Допустимые единицы времени:", "Valves": "Вентили", @@ -977,45 +977,45 @@ "variable to have them replaced with clipboard content.": "переменную, чтобы заменить их содержимым буфера обмена.", "Version": "Версия", "Version {{selectedVersion}} of {{totalVersions}}": "", - "Visibility": "", + "Visibility": "Видимость", "Voice": "Голос", "Voice Input": "", "Warning": "Предупреждение", "Warning:": "Предупреждение:", - "Warning: Enabling this will allow users to upload arbitrary code on the server.": "", + "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Предупреждение. Включение этого параметра позволит пользователям загружать произвольный код на сервер.", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Предупреждение: Если вы обновите или измените модель эмбеддинга, вам нужно будет повторно импортировать все документы.", "Web": "Веб", "Web API": "Веб API", "Web Loader Settings": "Настройки веб-загрузчика", "Web Search": "Веб-поиск", "Web Search Engine": "Поисковая система", - "Web Search Query Generation": "", + "Web Search Query Generation": "Генерация запросов веб-поиска", "Webhook URL": "URL-адрес веб-хука", "WebUI Settings": "Настройки WebUI", - "WebUI will make requests to \"{{url}}/api/chat\"": "", - "WebUI will make requests to \"{{url}}/chat/completions\"": "", - "What are you trying to achieve?": "", - "What are you working on?": "", + "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI будет отправлять запросы к \"{{url}}/api/chat\"", + "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI будет отправлять запросы к \"{{url}}/chat/completions\"", + "What are you trying to achieve?": "Чего вы пытаетесь достичь?", + "What are you working on?": "Над чем вы работаете?", "What’s New in": "Что нового в", - "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "", - "wherever you are": "", + "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Если эта функция включена, модель будет отвечать на каждое сообщение чата в режиме реального времени, генерируя ответ, как только пользователь отправит сообщение. Этот режим полезен для приложений живого чата, но может повлиять на производительность на более медленном оборудовании.", + "wherever you are": "где бы ты ни был", "Whisper (Local)": "Whisper (Локально)", - "Why?": "", + "Why?": "Почему?", "Widescreen Mode": "Широкоэкранный режим", "Won": "", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "", + "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Работает совместно с top-k. Более высокое значение (например, 0,95) приведет к созданию более разнообразного текста, а более низкое значение (например, 0,5) приведет к созданию более сфокусированного и консервативного текста. (По умолчанию: 0,9)", "Workspace": "Рабочее пространство", - "Workspace Permissions": "", + "Workspace Permissions": "Разрешения для Рабочего пространства", "Write a prompt suggestion (e.g. Who are you?)": "Напишите предложение промпта (например, Кто вы?)", "Write a summary in 50 words that summarizes [topic or keyword].": "Напишите резюме в 50 словах, которое кратко описывает [тему или ключевое слово].", - "Write something...": "", - "Write your model template content here": "", + "Write something...": "Напишите что-нибудь...", + "Write your model template content here": "Напишите здесь содержимое шаблона вашей модели.", "Yesterday": "Вчера", "You": "Вы", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Одновременно вы можете общаться только с максимальным количеством файлов {{maxCount}}.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Вы можете персонализировать свое взаимодействие с LLMs, добавив воспоминания с помощью кнопки \"Управлять\" ниже, что сделает их более полезными и адаптированными для вас.", - "You cannot upload an empty file.": "", - "You do not have permission to upload files.": "", + "You cannot upload an empty file.": "Вы не можете загрузить пустой файл.", + "You do not have permission to upload files.": "У вас нет разрешения на загрузку файлов.", "You have no archived conversations.": "У вас нет архивированных бесед.", "You have shared this chat": "Вы поделились этим чатом", "You're a helpful assistant.": "Вы полезный ассистент.", From 547d17c36251bbc68b80f61afd2767f6b32e65bf Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 07:35:35 +0300 Subject: [PATCH 17/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 52 ++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index b05efd50c3..e2d878badf 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -320,11 +320,11 @@ "Enter Bing Search V7 Endpoint": "", "Enter Bing Search V7 Subscription Key": "", "Enter Brave Search API Key": "Введите ключ API поиска Brave", - "Enter certificate path": "", + "Enter certificate path": "Введите путь к сертификату", "Enter CFG Scale (e.g. 7.0)": "Введите CFG Scale (например, 7.0)", "Enter Chunk Overlap": "Введите перекрытие фрагмента", "Enter Chunk Size": "Введите размер фрагмента", - "Enter description": "", + "Enter description": "Введите описание", "Enter Github Raw URL": "Введите необработанный URL-адрес Github", "Enter Google PSE API Key": "Введите ключ API Google PSE", "Enter Google PSE Engine Id": "Введите Id движка Google PSE", @@ -342,13 +342,13 @@ "Enter SearchApi API Key": "Введите ключ API SearchApi", "Enter SearchApi Engine": "Введите SearchApi движок", "Enter Searxng Query URL": "Введите URL-адрес запроса Searxng", - "Enter Seed": "", + "Enter Seed": "Введите Seed", "Enter Serper API Key": "Введите ключ API Serper", "Enter Serply API Key": "Введите ключ API Serply", "Enter Serpstack API Key": "Введите ключ API Serpstack", - "Enter server host": "", - "Enter server label": "", - "Enter server port": "", + "Enter server host": "Введите хост сервера", + "Enter server label": "Введите метку сервера", + "Enter server port": "Введите порт сервера", "Enter stop sequence": "Введите последовательность остановки", "Enter system prompt": "Введите системный промпт", "Enter Tavily API Key": "Введите ключ API Tavily", @@ -364,16 +364,16 @@ "Enter Your Username": "", "Error": "Ошибка", "ERROR": "", - "Evaluations": "", + "Evaluations": "Оценки", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", "Example: ou=users,dc=foo,dc=example": "", "Example: sAMAccountName or uid or userPrincipalName": "", - "Exclude": "", + "Exclude": "Исключать", "Experimental": "Экспериментальное", - "Explore the cosmos": "", + "Explore the cosmos": "Исследуйте космос", "Export": "Экспорт", - "Export All Archived Chats": "", + "Export All Archived Chats": "Экспортировать ВСЕ Архивированные Чаты", "Export All Chats (All Users)": "Экспортировать все чаты (всех пользователей)", "Export chat (.json)": "Экспортировать чат (.json)", "Export Chats": "Экспортировать чаты", @@ -390,17 +390,17 @@ "Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена", "Failed to save models configuration": "", "Failed to update settings": "Не удалось обновить настройки", - "Failed to upload file.": "", + "Failed to upload file.": "Не удалось загрузить файл.", "February": "Февраль", - "Feedback History": "", - "Feedbacks": "", + "Feedback History": "История отзывов", + "Feedbacks": "Отзывы", "Feel free to add specific details": "Не стесняйтесь добавлять конкретные детали", "File": "Файл", - "File added successfully.": "", - "File content updated successfully.": "", + "File added successfully.": "Файл успешно добавлен.", + "File content updated successfully.": "Содержимое файла успешно обновлено.", "File Mode": "Режим файла", "File not found.": "Файл не найден.", - "File removed successfully.": "", + "File removed successfully.": "Файл успешно удален.", "File size should not exceed {{maxSize}} MB.": "Размер файла не должен превышать {{maxSize}} МБ.", "Files": "Файлы", "Filter is now globally disabled": "Фильтр теперь отключен глобально", @@ -409,23 +409,23 @@ "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Определение подделки отпечатка: Невозможно использовать инициалы в качестве аватара. По умолчанию используется изображение профиля по умолчанию.", "Fluidly stream large external response chunks": "Плавная потоковая передача больших фрагментов внешних ответов", "Focus chat input": "Фокус ввода чата", - "Folder deleted successfully": "", - "Folder name cannot be empty": "", - "Folder name cannot be empty.": "", - "Folder name updated successfully": "", + "Folder deleted successfully": "Папка успешно удалена", + "Folder name cannot be empty": "Имя папки не может быть пустым", + "Folder name cannot be empty.": "Имя папки не может быть пустым.", + "Folder name updated successfully": "Имя папки успешно обновлено", "Followed instructions perfectly": "Идеально соответствует инструкциям", - "Forge new paths": "", + "Forge new paths": "Прокладывайте новые пути", "Form": "Форма", - "Format your variables using brackets like this:": "", + "Format your variables using brackets like this:": "Отформатируйте переменные, используя такие : скобки", "Frequency Penalty": "Штраф за частоту", - "Function": "", + "Function": "Функция", "Function created successfully": "Функция успешно создана", "Function deleted successfully": "Функция успешно удалена", - "Function Description": "", - "Function ID": "", + "Function Description": "Описание Функции", + "Function ID": "ID Функции", "Function is now globally disabled": "Функция теперь глобально отключена", "Function is now globally enabled": "Функция теперь глобально включена", - "Function Name": "", + "Function Name": "Имя Функции", "Function updated successfully": "Функция успешно обновлена", "Functions": "Функции", "Functions allow arbitrary code execution": "Функции позволяют выполнять произвольный код", From a63326b550ea0478e547fb620fe5d6abfe14a885 Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 07:37:10 +0300 Subject: [PATCH 18/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index e2d878badf..38179d2d58 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -182,8 +182,8 @@ "Context Length": "Длина контекста", "Continue Response": "Продолжить ответ", "Continue with {{provider}}": "Продолжить с {{provider}}", - "Continue with Email": "", - "Continue with LDAP": "", + "Continue with Email": "Продолжить с Email", + "Continue with LDAP": "Продолжить с LDAP", "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "Управляйте разделением текста сообщения для запросов TTS. 'Пунктуация' разделяет на предложения, 'абзацы' - разделяет на абзацы, а 'нет' сохраняет сообщение в виде одной строки.", "Controls": "Управление", "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "Управляет балансом между согласованностью и разнообразием выходных данных. Меньшее значение приведет к более сфокусированному и связному тексту. (По умолчанию: 5.0)", From 054a718da0c5173c4c38c02e1889a1eead0215a1 Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 07:43:46 +0300 Subject: [PATCH 19/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 32 ++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 38179d2d58..851b0fddde 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -528,10 +528,10 @@ "Make sure to enclose them with": "Убедитесь, что они заключены в", "Make sure to export a workflow.json file as API format from ComfyUI.": "Убедитесь, что экспортируете файл workflow.json в формате API из ComfyUI.", "Manage": "Управлять", - "Manage Arena Models": "", - "Manage Ollama": "", - "Manage Ollama API Connections": "", - "Manage OpenAI API Connections": "", + "Manage Arena Models": "Управление Ареной Моделей", + "Manage Ollama": "Управление Ollama", + "Manage Ollama API Connections": "Управление соединениями API Ollama", + "Manage OpenAI API Connections": "Управление соединениями API OpenAI", "Manage Pipelines": "Управление конвейерами", "March": "Март", "Max Tokens (num_predict)": "Максимальное количество токенов (num_predict)", @@ -546,7 +546,7 @@ "Memory deleted successfully": "Воспоминание успешно удалено", "Memory updated successfully": "Воспоминание успешно обновлено", "Merge Responses": "Объединить ответы", - "Message rating should be enabled to use this feature": "", + "Message rating should be enabled to use this feature": "Чтобы использовать эту функцию, необходимо включить оценку сообщения.", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Сообщения, отправленные вами после создания ссылки, не будут передаваться другим. Пользователи, у которых есть URL, смогут просматривать общий чат.", "Min P": "Min P", "Minimum Score": "Минимальный балл", @@ -556,7 +556,7 @@ "MMMM DD, YYYY": "DD MMMM YYYY", "MMMM DD, YYYY HH:mm": "DD MMMM YYYY HH:mm", "MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A", - "Model": "", + "Model": "Модель", "Model '{{modelName}}' has been successfully downloaded.": "Модель '{{modelName}}' успешно загружена.", "Model '{{modelTag}}' is already in queue for downloading.": "Модель '{{modelTag}}' уже находится в очереди на загрузку.", "Model {{modelId}} not found": "Модель {{modelId}} не найдена", @@ -565,18 +565,18 @@ "Model accepts image inputs": "Модель принимает изображения как входные данные", "Model created successfully!": "Модель успешно создана!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Обнаружен путь к файловой системе модели. Для обновления требуется краткое имя модели, не удается продолжить.", - "Model Filtering": "", - "Model ID": "ID модели", - "Model IDs": "", - "Model Name": "", + "Model Filtering": "Фильтрация Моделей", + "Model ID": "ID Модели", + "Model IDs": "IDs Модели", + "Model Name": "Имя Модели", "Model not selected": "Модель не выбрана", "Model Params": "Параметры модели", - "Model Permissions": "", + "Model Permissions": "Разрешения Модели", "Model updated successfully": "Модель успешно обновлена", "Modelfile Content": "Содержимое файла модели", "Models": "Модели", - "Models Access": "", - "Models configuration saved successfully": "", + "Models Access": "Доступ к Моделям", + "Models configuration saved successfully": "Конфигурация модели успешно сохранена.", "Mojeek Search API Key": "", "more": "", "More": "Больше", @@ -585,15 +585,15 @@ "New Chat": "Новый чат", "New folder": "", "New Password": "Новый пароль", - "No content found": "", + "No content found": "Контент не найден", "No content to speak": "Нечего говорить", "No distance available": "", "No feedbacks found": "", "No file selected": "Файлы не выбраны", - "No files found.": "", + "No files found.": "Файлы не найдены.", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScМодели не найденыript content found.": "", - "No knowledge found": "", + "No knowledge found": "Знания не найдены", "No model IDs": "", "No models found": "Модели не найдены", "No models selected": "Модели не выбраны", From 6e73b3d07549d1d4c33355c6168adf5c2cdb6e16 Mon Sep 17 00:00:00 2001 From: SVAROG <142100707+AliveDedSec@users.noreply.github.com> Date: Wed, 4 Dec 2024 07:50:43 +0300 Subject: [PATCH 20/28] Update translation.json --- src/lib/i18n/locales/ru-RU/translation.json | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 851b0fddde..dd08397af1 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -463,19 +463,19 @@ "Hybrid Search": "Гибридная поисковая система", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Я подтверждаю, что прочитал и осознаю последствия своих действий. Я осознаю риски, связанные с выполнением произвольного кода, и я проверил достоверность источника.", "ID": "", - "Ignite curiosity": "", + "Ignite curiosity": "Разожгите любопытство", "Image Generation (Experimental)": "Генерация изображений (Экспериментально)", "Image Generation Engine": "Механизм генерации изображений", "Image Settings": "Настройки изображения", "Images": "Изображения", - "Import Chats": "Импортировать чаты", + "Import Chats": "Импортировать Чаты", "Import Config from JSON File": "Импорт конфигурации из JSON-файла", - "Import Functions": "Импортировать функции", - "Import Models": "Импортировать модели", - "Import Presets": "", - "Import Prompts": "Импортировать промпты", - "Import Tools": "Импортировать инструменты", - "Include": "", + "Import Functions": "Импортировать Функции", + "Import Models": "Импортировать Модели", + "Import Presets": "Импортировать Пресеты", + "Import Prompts": "Импортировать Промпты", + "Import Tools": "Импортировать Инструменты", + "Include": "Включать", "Include `--api-auth` flag when running stable-diffusion-webui": "Добавьте флаг '--api-auth' при запуске stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui", "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1)": "", @@ -484,7 +484,7 @@ "Install from Github URL": "Установка с URL-адреса Github", "Instant Auto-Send After Voice Transcription": "Мгновенная автоматическая отправка после расшифровки голоса", "Interface": "Интерфейс", - "Invalid file format.": "", + "Invalid file format.": "Неверный формат файла.", "Invalid Tag": "Недопустимый тег", "January": "Январь", "Jina API Key": "", @@ -499,19 +499,19 @@ "Key": "", "Keyboard shortcuts": "Горячие клавиши", "Knowledge": "Знания", - "Knowledge Access": "", - "Knowledge created successfully.": "", - "Knowledge deleted successfully.": "", - "Knowledge reset successfully.": "", - "Knowledge updated successfully": "", + "Knowledge Access": "Доступ к Знаниям", + "Knowledge created successfully.": "Знания созданы успешно.", + "Knowledge deleted successfully.": "Знания успешно удалены.", + "Knowledge reset successfully.": "Знания успешно сброшены.", + "Knowledge updated successfully": "Знания успешно обновлены", "Label": "", - "Landing Page Mode": "", + "Landing Page Mode": "Режим Целевой Страницы", "Language": "Язык", - "Last Active": "Последний активный", - "Last Modified": "Последнее изменение", + "Last Active": "Последний Активный", + "Last Modified": "Последнее Изменение", "LDAP": "", - "LDAP server updated": "", - "Leaderboard": "", + "LDAP server updated": "LDAP сервер обновлен", + "Leaderboard": "Таблица Лидеров", "Leave empty for unlimited": "Оставьте пустым для неограниченного", "Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "", "Leave empty to include all models from \"{{URL}}/models\" endpoint": "", From ac5ea4ff2529eafbb0c04e90a23cca9451fd654e Mon Sep 17 00:00:00 2001 From: Michal Hudak Date: Wed, 4 Dec 2024 09:30:08 +0100 Subject: [PATCH 21/28] Updated and improved cs-CZ translation --- src/lib/i18n/locales/cs-CZ/translation.json | 166 ++++++++++---------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 8bd2622912..2ec6671c97 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -6,54 +6,54 @@ "(latest)": "Nejnovější", "{{ models }}": "{{ models }}", "{{user}}'s Chats": "{{user}}'s konverzace", - "{{webUIName}} Backend Required": "Požadováno {{webUIName}} Backend", - "*Prompt node ID(s) are required for image generation": "*ID (ID) uzlu pro generování obrázků jsou vyžadována.", + "{{webUIName}} Backend Required": "Požadován {{webUIName}} Backend", + "*Prompt node ID(s) are required for image generation": "*Jsou vyžadovány IDs pro prompt node pro generování obrázků", "A new version (v{{LATEST_VERSION}}) is now available.": "Nová verze (v{{LATEST_VERSION}}) je nyní k dispozici.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Model úloh se používá při provádění úloh, jako je generování názvů pro chaty a vyhledávací dotazy na webu.", "a user": "uživatel", "About": "O programu", - "Access": "", + "Access": "Přístup", "Access Control": "", - "Accessible to all users": "", + "Accessible to all users": "Přístupné pro všecny uživatele", "Account": "Účet", "Account Activation Pending": "Čeká na aktivaci účtu", "Accurate information": "Přesné informace", "Actions": "Akce", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktivujte tenhle příkaz napsáním \"/{{COMMAND}}\" do chat inputu", "Active Users": "Aktivní uživatelé", "Add": "Přidat", - "Add a model ID": "", + "Add a model ID": "Přidat ID modelu", "Add a short description about what this model does": "Přidejte krátký popis toho, co tento model dělá.", "Add a tag": "Přidat štítek", - "Add Arena Model": "Přidat model Arena", - "Add Connection": "", + "Add Arena Model": "Přidat Arena model", + "Add Connection": "Přidat připojení", "Add Content": "Přidat obsah", "Add content here": "Přidat obsah zde", - "Add custom prompt": "Přidání vlastního výzvy", + "Add custom prompt": "Přidání vlastního promptu", "Add Files": "Přidat soubory", - "Add Group": "", - "Add Memory": "Přidání paměti", + "Add Group": "Přidat skupinu", + "Add Memory": "Přidat paměť", "Add Model": "Přidat model", "Add Tag": "Přidat štítek", - "Add Tags": "Přidat značky", + "Add Tags": "Přidat štítky", "Add text content": "Přidejte textový obsah", "Add User": "Přidat uživatele", - "Add User Group": "", + "Add User Group": "Přidatg skupinu uživatelů", "Adjusting these settings will apply changes universally to all users.": "Úprava těchto nastavení se projeví univerzálně u všech uživatelů.", - "admin": "Správce", - "Admin": "Ahoj! Jak ti mohu pomoci?", - "Admin Panel": "Administrační panel", - "Admin Settings": "Nastavení administrátora", + "admin": "amin", + "Admin": "Admin", + "Admin Panel": "Adminis panel", + "Admin Settings": "Nastavení admina", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administrátoři mají přístup ke všem nástrojům kdykoliv; uživatelé potřebují mít nástroje přiřazené podle modelu ve workspace.", "Advanced Parameters": "Pokročilé parametry", "Advanced Params": "Pokročilé parametry", "All chats": "Všechny chaty", "All Documents": "Všechny dokumenty", - "All models deleted successfully": "", - "Allow Chat Delete": "", + "All models deleted successfully": "Všechny modely úspěšně odstráněny", + "Allow Chat Delete": "Povolit odstranění chatu", "Allow Chat Deletion": "Povolit odstranění chatu", - "Allow Chat Edit": "", - "Allow File Upload": "", + "Allow Chat Edit": "Povolit úpravu chatu", + "Allow File Upload": "Povolit nahrávat soubory", "Allow non-local voices": "Povolit ne-místní hlasy", "Allow Temporary Chat": "Povolit dočasný chat", "Allow User Location": "Povolit uživatelskou polohu", @@ -63,7 +63,7 @@ "Amazing": "", "an assistant": "asistent", "and": "a", - "and {{COUNT}} more": "a {{COUNT}} dalších", + "and {{COUNT}} more": "a {{COUNT}} další/ch", "and create a new shared link.": "a vytvořit nový sdílený odkaz.", "API Base URL": "Základní URL adresa API", "API Key": "Klíč API", @@ -78,8 +78,8 @@ "Archived Chats": "Archivované chaty", "archived-chat-export": "", "Are you sure you want to unarchive all archived chats?": "", - "Are you sure?": "Ano, jsem si jistý.", - "Arena Models": "Modely Arena", + "Are you sure?": "Jste si jistý?", + "Arena Models": "Arena modely", "Artifacts": "Artefakty", "Ask a question": "Zeptejte se na otázku", "Assistant": "Ano, jak vám mohu pomoci?", @@ -88,7 +88,7 @@ "Attribute for Username": "", "Audio": "Zvuk", "August": "Srpen", - "Authenticate": "", + "Authenticate": "Autentikace", "Auto-Copy Response to Clipboard": "Automatické kopírování odpovědi do schránky", "Auto-playback response": "Automatická odpověď při přehrávání", "Autocomplete Generation": "", @@ -105,10 +105,10 @@ "Back": "Zpět", "Bad Response": "Špatná odezva", "Banners": "Bannery", - "Base Model (From)": "Základní model (Z)", - "Batch Size (num_batch)": "Velikost dávky (num_batch)", + "Base Model (From)": "Základní model (z)", + "Batch Size (num_batch)": "Batch size (num_batch)", "before": "před", - "Being lazy": "Být líný", + "Being lazy": "", "Bing Search V7 Endpoint": "", "Bing Search V7 Subscription Key": "", "Brave Search API Key": "Klíč API pro Brave Search", @@ -117,10 +117,10 @@ "Call": "Volání", "Call feature is not supported when using Web STT engine": "Funkce pro volání není podporována při použití Web STT engine.", "Camera": "Kamera", - "Cancel": "Zrušit.", + "Cancel": "Zrušit", "Capabilities": "Schopnosti", "Certificate Path": "", - "Change Password": "Změna hesla", + "Change Password": "Změnit heslo", "Character": "Znak", "Character limit for autocomplete generation input": "", "Chart new frontiers": "", @@ -137,9 +137,9 @@ "Check for updates": "Zkontrolovat aktualizace", "Checking for updates...": "Kontrola aktualizací...", "Choose a model before saving...": "Vyberte model před uložením...", - "Chunk Overlap": "Překrytí bloků", - "Chunk Params": "Parametry chunků", - "Chunk Size": "Velikost bloku", + "Chunk Overlap": "", + "Chunk Params": "", + "Chunk Size": "", "Ciphers": "", "Citation": "Odkaz", "Clear memory": "Vymazat paměť", @@ -160,8 +160,8 @@ "Close": "Zavřít", "Code execution": "Provádění kódu", "Code formatted successfully": "Kód byl úspěšně naformátován.", - "Collection": "Sbírka", - "Color": "", + "Collection": "", + "Color": "Barva", "ComfyUI": "ComfyUI.", "ComfyUI Base URL": "Základní URL ComfyUI", "ComfyUI Base URL is required.": "Je vyžadována základní URL pro ComfyUI.", @@ -170,8 +170,8 @@ "Command": "Příkaz", "Completions": "Doplnění", "Concurrent Requests": "Současné požadavky", - "Configure": "", - "Configure Models": "", + "Configure": "Konfigurovat", + "Configure Models": "Konfigurovat modely", "Confirm": "Potvrdit", "Confirm Password": "Potvrzení hesla", "Confirm your action": "Potvrďte svoji akci", @@ -196,13 +196,13 @@ "Copy Link": "Kopírovat odkaz", "Copy to clipboard": "Kopírovat do schránky", "Copying to clipboard was successful!": "Kopírování do schránky bylo úspěšné!", - "Create": "", - "Create a knowledge base": "", + "Create": "Vytvořit", + "Create a knowledge base": "Vytvořit knowledge base", "Create a model": "Vytvořte model", "Create Account": "Vytvořit účet", - "Create Admin Account": "", - "Create Group": "", - "Create Knowledge": "Vytvořit znalosti", + "Create Admin Account": "Vytvořit admin účet", + "Create Group": "Vytvořit skupinu", + "Create Knowledge": "Vytvořit knowledge", "Create new key": "Vytvořit nový klíč", "Create new secret key": "Vytvořte nový tajný klíč", "Created at": "Vytvořeno dne", @@ -220,9 +220,9 @@ "Default (SentenceTransformers)": "Výchozí (SentenceTransformers)", "Default Model": "Výchozí model", "Default model updated": "Výchozí model aktualizován.", - "Default Models": "", - "Default permissions": "", - "Default permissions updated successfully": "", + "Default Models": "Výchozí modely", + "Default permissions": "Výchozí povolení", + "Default permissions updated successfully": "Výchozí povolení úspěšne aktualizovány", "Default Prompt Suggestions": "Výchozí návrhy promptů", "Default to 389 or 636 if TLS is enabled": "", "Default to ALL": "", @@ -236,7 +236,7 @@ "Delete chat?": "Smazat konverzaci?", "Delete folder?": "Smazat složku?", "Delete function?": "Funkce pro odstranění?", - "Delete prompt?": "Smazat výzvu?", + "Delete prompt?": "Smazat prompt?", "delete this link": "smazat tento odkaz", "Delete tool?": "Odstranit nástroj?", "Delete User": "Smazat uživatele", @@ -249,11 +249,11 @@ "Disabled": "Zakázáno", "Discover a function": "Objevit funkci", "Discover a model": "Objevte model", - "Discover a prompt": "Objevte výzvu", + "Discover a prompt": "Objevte prompt", "Discover a tool": "Objevte nástroj", "Discover wonders": "", "Discover, download, and explore custom functions": "Objevujte, stahujte a zkoumejte vlastní funkce", - "Discover, download, and explore custom prompts": "Objevte, stáhněte a prozkoumejte vlastní výzvy.", + "Discover, download, and explore custom prompts": "Objevte, stáhněte a prozkoumejte vlastní prompty.", "Discover, download, and explore custom tools": "Objevujte, stahujte a prozkoumávejte vlastní nástroje", "Discover, download, and explore model presets": "Objevte, stáhněte a prozkoumejte přednastavení modelů", "Dismissible": "Odstranitelné", @@ -296,9 +296,9 @@ "ElevenLabs": "ElevenLabs", "Email": "E-mail", "Embark on adventures": "", - "Embedding Batch Size": "Velikost dávky pro vkládání", + "Embedding Batch Size": "", "Embedding Model": "Vkládací model (Embedding Model)", - "Embedding Model Engine": "Model zabudovaný motor", + "Embedding Model Engine": "", "Embedding model set to \"{{embedding_model}}\"": "Model vkládání nastaven na \"{{embedding_model}}\"", "Enable API Key Auth": "", "Enable autocomplete generation for chat messages": "", @@ -350,7 +350,7 @@ "Enter server label": "", "Enter server port": "", "Enter stop sequence": "Zadejte ukončovací sekvenci", - "Enter system prompt": "Vložte systémovou výzvu", + "Enter system prompt": "Vložte systémový prompt", "Enter Tavily API Key": "Zadejte API klíč Tavily", "Enter Tika Server URL": "Zadejte URL serveru Tika", "Enter Top K": "Zadejte horní K", @@ -381,7 +381,7 @@ "Export Functions": "Exportovat funkce", "Export Models": "Export modelů", "Export Presets": "", - "Export Prompts": "Exportovat výzvy", + "Export Prompts": "Exportovat prompty", "Export to CSV": "", "Export Tools": "Exportní nástroje", "External Models": "Externí modely", @@ -532,7 +532,7 @@ "Manage Ollama": "", "Manage Ollama API Connections": "", "Manage OpenAI API Connections": "", - "Manage Pipelines": "Správa potrubí", + "Manage Pipelines": "Správa pipelines", "March": "Březen", "Max Tokens (num_predict)": "Maximální počet tokenů (num_predict)", "Max Upload Count": "Maximální počet nahrání", @@ -662,13 +662,13 @@ "Pin": "Kolík", "Pinned": "Připnuto", "Pioneer insights": "", - "Pipeline deleted successfully": "Potrubí bylo úspěšně odstraněno.", + "Pipeline deleted successfully": "Pipeline byla úspěšně odstraněna", "Pipeline downloaded successfully": "Kanál byl úspěšně stažen", - "Pipelines": "Potrubí (Pipelines)", + "Pipelines": "", "Pipelines Not Detected": "Přenosové kanály nebyly detekovány", - "Pipelines Valves": "Potrubní ventily", + "Pipelines Valves": "", "Plain text (.txt)": "Čistý text (.txt)", - "Playground": "Hřiště", + "Playground": "", "Please carefully review the following warnings:": "Prosím, pečlivě si přečtěte následující upozornění:", "Please enter a prompt": "Prosím, zadejte zadání.", "Please fill in all fields.": "Prosím, vyplňte všechna pole.", @@ -681,12 +681,12 @@ "Previous 30 days": "Předchozích 30 dnů", "Previous 7 days": "Předchozích 7 dní", "Profile Image": "Profilový obrázek", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Výzva (např. Řekni mi zábavný fakt o Římské říši)", - "Prompt Content": "Obsah výzvy", + "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (např. Řekni mi zábavný fakt o Římské říši)", + "Prompt Content": "Obsah promptu", "Prompt created successfully": "", "Prompt suggestions": "Návrhy výzev", "Prompt updated successfully": "", - "Prompts": "Výzvy", + "Prompts": "Prompty", "Prompts Access": "", "Proxy URL": "", "Pull \"{{searchValue}}\" from Ollama.com": "Stáhněte \"{{searchValue}}\" z Ollama.com", @@ -767,14 +767,14 @@ "See what's new": "Podívejte se, co je nového", "Seed": "Semínko", "Select a base model": "Vyberte základní model", - "Select a engine": "Vyberte motor", + "Select a engine": "Vyberte engine", "Select a function": "Vyberte funkci", "Select a group": "", "Select a model": "Vyberte model", - "Select a pipeline": "Vyberte si potrubí (pipeline)", + "Select a pipeline": "Vyberte pipeline", "Select a pipeline url": "Vyberte URL adresu kanálu", "Select a tool": "Vyberte nástroj", - "Select Engine": "Vyberte motor", + "Select Engine": "Vyberte engine", "Select Knowledge": "Vybrat znalosti", "Select model": "Vyberte model", "Select only one model to call": "Vyberte pouze jeden model, který chcete použít", @@ -844,21 +844,21 @@ "Support this plugin:": "Podpořte tento plugin:", "Sync directory": "Synchronizovat adresář", "System": "System", - "System Instructions": "Pokyny systému", - "System Prompt": "Systémová výzva", + "System Instructions": "", + "System Prompt": "Systémový prompt", "Tags Generation": "", - "Tags Generation Prompt": "Výzva pro generování značek", + "Tags Generation Prompt": "Prompt pro generování značek", "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "", "Tap to interrupt": "Klepněte pro přerušení", "Tavily API Key": "Klíč API pro Tavily", "Tell us more:": "Řekněte nám více.", - "Temperature": "Teplota", + "Temperature": "", "Template": "Šablona", "Temporary Chat": "Dočasný chat", "Text Splitter": "Rozdělovač textu", "Text-to-Speech Engine": "Stroj pro převod textu na řeč", "Tfs Z": "Tfs Z", - "Thanks for your feedback!": "Děkuji za vaši zpětnou vazbu!", + "Thanks for your feedback!": "Děkujeme za vaši zpětnou vazbu!", "The Application Account DN you bind with for search": "", "The base to search for users": "", "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. (Default: 512)": "", @@ -879,7 +879,7 @@ "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. (Default: 128)": "", "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Tato volba odstraní všechny existující soubory ve sbírce a nahradí je nově nahranými soubory.", "This response was generated by \"{{model}}\"": "Tato odpověď byla vygenerována pomocí \"{{model}}\"", - "This will delete": "Tím se odstraní", + "This will delete": "Tohle odstraní", "This will delete {{NAME}} and all its contents.": "Tímto dojde k odstranění {{NAME}} a všech jeho obsahů.", "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", @@ -893,16 +893,16 @@ "Title (e.g. Tell me a fun fact)": "Název (např. Řekni mi zajímavost)", "Title Auto-Generation": "Automatické generování názvu", "Title cannot be an empty string.": "Název nemůže být prázdným řetězcem.", - "Title Generation Prompt": "Generování názvu výzvy", + "Title Generation Prompt": "Generování názvu promptu", "TLS": "", "To access the available model names for downloading,": "Pro získání dostupných názvů modelů ke stažení,", "To access the GGUF models available for downloading,": "Pro přístup k modelům GGUF dostupným pro stažení,", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pro přístup k WebUI se prosím obraťte na administrátora. Administrátoři mohou spravovat stavy uživatelů z Admin Panelu.", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Chcete-li zde připojit znalostní databázi, nejprve ji přidejte do pracovního prostoru \"Knowledge\".", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Chcete-li zde připojit znalostní databázi, nejprve ji přidejte do workspace \"Knowledge\".", "To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Aby byla chráněna vaše soukromí, z vaší zpětné vazby jsou sdílena pouze hodnocení, ID modelů, značky a metadata – vaše chatové záznamy zůstávají soukromé a nejsou zahrnuty.", "To select actions here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat akce, nejprve je přidejte do pracovní plochy \"Functions\".", - "To select filters here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat filtry, nejprve je přidejte do pracovního prostoru „Functions“.", - "To select toolkits here, add them to the \"Tools\" workspace first.": "Chcete-li zde vybrat nástroje, přidejte je nejprve do pracovního prostoru \"Tools\".", + "To select filters here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat filtry, nejprve je přidejte do workspace „Functions“.", + "To select toolkits here, add them to the \"Tools\" workspace first.": "Chcete-li zde vybrat nástroje, přidejte je nejprve do workspace \"Tools\".", "Toast notifications for new updates": "Oznámení ve formě toastů pro nové aktualizace", "Today": "Dnes", "Toggle settings": "Přepnout nastavení", @@ -913,7 +913,7 @@ "Tool created successfully": "Nástroj byl úspěšně vytvořen.", "Tool deleted successfully": "Nástroj byl úspěšně smazán.", "Tool Description": "", - "Tool ID": "", + "Tool ID": "ID nástroje", "Tool imported successfully": "Nástroj byl úspěšně importován", "Tool Name": "", "Tool updated successfully": "Nástroj byl úspěšně aktualizován.", @@ -933,7 +933,7 @@ "Type Hugging Face Resolve (Download) URL": "Zadejte URL pro úspěšné stažení z Hugging Face.", "Uh-oh! There was an issue connecting to {{provider}}.": "Jejda! Došlo k problému s připojením k poskytovateli {{provider}}.", "UI": "UI", - "Unarchive All": "", + "Unarchive All": "Odarchivovat všechny", "Unarchive All Archived Chats": "", "Unarchive Chat": "", "Unlock mysteries": "", @@ -952,7 +952,7 @@ "Upload directory": "Nahrát adresář", "Upload files": "Nahrát soubory", "Upload Files": "Nahrát soubory", - "Upload Pipeline": "Nahrát potrubí", + "Upload Pipeline": "Nahrát pipeline", "Upload Progress": "Průběh nahrávání", "URL": "", "URL Mode": "Režim URL", @@ -965,7 +965,7 @@ "user": "uživatel", "User": "Uživatel", "User location successfully retrieved.": "Umístění uživatele bylo úspěšně získáno.", - "Username": "", + "Username": "Uživatelské jméno", "Users": "Uživatelé", "Using the default arena model with all models. Click the plus button to add custom models.": "Použití výchozího modelu arény se všemi modely. Kliknutím na tlačítko plus přidejte vlastní modely.", "Utilize": "Využít", @@ -977,7 +977,7 @@ "variable to have them replaced with clipboard content.": "proměnnou, aby byl jejich obsah nahrazen obsahem schránky.", "Version": "Verze", "Version {{selectedVersion}} of {{totalVersions}}": "Verze {{selectedVersion}} z {{totalVersions}}", - "Visibility": "", + "Visibility": "Viditelnost", "Voice": "Hlas", "Voice Input": "Hlasový vstup", "Warning": "Varování", @@ -998,17 +998,17 @@ "What are you working on?": "", "What’s New in": "Co je nového v", "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "", - "wherever you are": "", + "wherever you are": "kdekoliv jste", "Whisper (Local)": "Whisper (Lokálně)", - "Why?": "", + "Why?": "Proč?", "Widescreen Mode": "Režim širokoúhlého zobrazení", "Won": "Vyhrál", "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "", - "Workspace": "Pracovní prostor", + "Workspace": "", "Workspace Permissions": "", "Write a prompt suggestion (e.g. Who are you?)": "Navrhněte dotaz (např. Kdo jsi?)", "Write a summary in 50 words that summarizes [topic or keyword].": "Napište shrnutí na 50 slov, které shrnuje [téma nebo klíčové slovo].", - "Write something...": "Napiš něco...", + "Write something...": "Napište něco...", "Write your model template content here": "", "Yesterday": "Včera", "You": "Vy", @@ -1023,5 +1023,5 @@ "Your account status is currently pending activation.": "Stav vašeho účtu je nyní čekající na aktivaci.", "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Váš celý příspěvek půjde přímo vývojáři pluginu; Open WebUI si nebere žádné procento. Vybraná platforma pro financování však může mít vlastní poplatky.", "Youtube": "YouTube", - "Youtube Loader Settings": "Nastavení Stahovače YouTube" + "Youtube Loader Settings": "Nastavení YouTube loaderu" } From 152b1224a8bcf80952d98cde0f0c9eb42e510e77 Mon Sep 17 00:00:00 2001 From: Michal Hudak Date: Wed, 4 Dec 2024 09:55:34 +0100 Subject: [PATCH 22/28] updated changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a79ca432..fcc41054da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ 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). +## [Unreleased] + +### Added +- **🌍 Improved Translation**: Enhanced localization for Czech language + ## [0.4.7] - 2024-12-01 ### Added From 346b7ddb146f2f38e3ac9d90fe3a762a47dc4154 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 5 Dec 2024 10:42:37 -0800 Subject: [PATCH 23/28] refac: tailwind --- tailwind.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tailwind.config.js b/tailwind.config.js index 69b84725e2..937c0ab564 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,3 +1,5 @@ +import typography from '@tailwindcss/typography'; + /** @type {import('tailwindcss').Config} */ export default { darkMode: 'class', @@ -36,5 +38,5 @@ export default { } } }, - plugins: [require('@tailwindcss/typography')] + plugins: [typography] }; From a68e717dcf4e93ea49e9c5128c8dcd885326b6ae Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 5 Dec 2024 14:11:52 -0800 Subject: [PATCH 24/28] Update CHANGELOG.md --- CHANGELOG.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcc41054da..04a79ca432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,6 @@ 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). -## [Unreleased] - -### Added -- **🌍 Improved Translation**: Enhanced localization for Czech language - ## [0.4.7] - 2024-12-01 ### Added From 4a46417275724e97360f793e0514d9eb953f418c Mon Sep 17 00:00:00 2001 From: Aleix Dorca Date: Fri, 6 Dec 2024 15:02:54 +0100 Subject: [PATCH 25/28] Update catalan translation.json --- src/lib/i18n/locales/ca-ES/translation.json | 22 ++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index a2337e9863..276d33cfb7 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -1,5 +1,5 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1 per a cap límit, o un nombre positiu per a un límit específic", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' o '-1' perquè no caduqui mai.", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(p. ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)", @@ -91,8 +91,8 @@ "Authenticate": "Autenticar", "Auto-Copy Response to Clipboard": "Copiar la resposta automàticament al porta-retalls", "Auto-playback response": "Reproduir la resposta automàticament", - "Autocomplete Generation": "", - "Autocomplete Generation Input Max Length": "", + "Autocomplete Generation": "Generació automàtica", + "Autocomplete Generation Input Max Length": "Entrada màxima de la generació automàtica", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "Cadena d'autenticació de l'API d'AUTOMATIC1111", "AUTOMATIC1111 Base URL": "URL Base d'AUTOMATIC1111", @@ -122,7 +122,7 @@ "Certificate Path": "Camí del certificat", "Change Password": "Canviar la contrasenya", "Character": "Personatge", - "Character limit for autocomplete generation input": "", + "Character limit for autocomplete generation input": "Límit de caràcters per a l'entrada de generació automàtica", "Chart new frontiers": "Traça noves fronteres", "Chat": "Xat", "Chat Background Image": "Imatge de fons del xat", @@ -301,7 +301,7 @@ "Embedding Model Engine": "Motor de model d'incrustació", "Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"", "Enable API Key Auth": "Activar l'autenticació amb clau API", - "Enable autocomplete generation for chat messages": "", + "Enable autocomplete generation for chat messages": "Activar la generació automàtica per als missatges del xat", "Enable Community Sharing": "Activar l'ús compartit amb la comunitat", "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activar el bloqueig de memòria (mlock) per evitar que les dades del model s'intercanviïn fora de la memòria RAM. Aquesta opció bloqueja el conjunt de pàgines de treball del model a la memòria RAM, assegurant-se que no s'intercanviaran al disc. Això pot ajudar a mantenir el rendiment evitant errors de pàgina i garantint un accés ràpid a les dades.", "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Activar l'assignació de memòria (mmap) per carregar les dades del model. Aquesta opció permet que el sistema utilitzi l'emmagatzematge en disc com a extensió de la memòria RAM tractant els fitxers de disc com si estiguessin a la memòria RAM. Això pot millorar el rendiment del model permetent un accés més ràpid a les dades. Tanmateix, és possible que no funcioni correctament amb tots els sistemes i pot consumir una quantitat important d'espai en disc.", @@ -335,7 +335,7 @@ "Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})", "Enter Mojeek Search API Key": "Introdueix la clau API de Mojeek Search", "Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)", - "Enter proxy URL (e.g. https://user:password@host:port)": "", + "Enter proxy URL (e.g. https://user:password@host:port)": "Entra l'URL (p. ex. https://user:password@host:port)", "Enter Sampler (e.g. Euler a)": "Introdueix el mostrejador (p.ex. Euler a)", "Enter Scheduler (e.g. Karras)": "Entra el programador (p.ex. Karras)", "Enter Score": "Introdueix la puntuació", @@ -672,7 +672,7 @@ "Please carefully review the following warnings:": "Si us plau, revisa els següents avisos amb cura:", "Please enter a prompt": "Si us plau, entra una indicació", "Please fill in all fields.": "Emplena tots els camps, si us plau.", - "Please select a model first.": "", + "Please select a model first.": "Si us plau, selecciona un model primer", "Please select a reason": "Si us plau, selecciona una raó", "Port": "Port", "Positive attitude": "Actitud positiva", @@ -688,7 +688,7 @@ "Prompt updated successfully": "Indicació actualitzada correctament", "Prompts": "Indicacions", "Prompts Access": "Accés a les indicacions", - "Proxy URL": "", + "Proxy URL": "URL del proxy", "Pull \"{{searchValue}}\" from Ollama.com": "Obtenir \"{{searchValue}}\" de Ollama.com", "Pull a model from Ollama.com": "Obtenir un model d'Ollama.com", "Query Generation Prompt": "Indicació per a generació de consulta", @@ -722,7 +722,7 @@ "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de resposta no es poden activar perquè els permisos del lloc web han estat rebutjats. Comprova les preferències del navegador per donar l'accés necessari.", "Response splitting": "Divisió de la resposta", "Result": "Resultat", - "Retrieval Query Generation": "", + "Retrieval Query Generation": "Generació de consultes Retrieval", "Rich Text Input for Chat": "Entrada de text ric per al xat", "RK": "RK", "Role": "Rol", @@ -845,7 +845,7 @@ "System": "Sistema", "System Instructions": "Instruccions de sistema", "System Prompt": "Indicació del Sistema", - "Tags Generation": "", + "Tags Generation": "Generació d'etiquetes", "Tags Generation Prompt": "Indicació per a la generació d'etiquetes", "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "El mostreig sense cua s'utilitza per reduir l'impacte de tokens menys probables de la sortida. Un valor més alt (p. ex., 2,0) reduirà més l'impacte, mentre que un valor d'1,0 desactiva aquesta configuració. (per defecte: 1)", "Tap to interrupt": "Prem per interrompre", @@ -988,7 +988,7 @@ "Web Loader Settings": "Preferències del carregador web", "Web Search": "Cerca la web", "Web Search Engine": "Motor de cerca de la web", - "Web Search Query Generation": "", + "Web Search Query Generation": "Generació de consultes per a la cerca de la web", "Webhook URL": "URL del webhook", "WebUI Settings": "Preferències de WebUI", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI farà peticions a \"{{url}}/api/chat\"", From 36085f3036009154913788deebfc241556c6e4d2 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 6 Dec 2024 11:55:25 -0800 Subject: [PATCH 26/28] refac --- src/app.css | 4 ++-- .../Knowledge/KnowledgeBase/AddTextContentModal.svelte | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app.css b/src/app.css index a9fffdb210..d6f6664daa 100644 --- a/src/app.css +++ b/src/app.css @@ -45,11 +45,11 @@ math { } .input-prose { - @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line; + @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line; } .input-prose-sm { - @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm; + @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm; } .markdown-prose { diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte index 713bd43176..3ad2c03e99 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte @@ -81,7 +81,7 @@ >
{#if voiceInput} -
+
Date: Sat, 7 Dec 2024 00:29:23 -0800 Subject: [PATCH 27/28] doc: changelog --- CHANGELOG.md | 15 +++++++++++++++ package-lock.json | 11 ++++++----- package.json | 2 +- src/app.css | 4 ++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a79ca432..98ba0c4c28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,21 @@ 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.4.8] - 2024-12-07 + +### Added + +- **🔓 Bypass Model Access Control**: Introduced the 'BYPASS_MODEL_ACCESS_CONTROL' environment variable. Easily bypass model access controls for user roles when access control isn't required, simplifying workflows for trusted environments. +- **📝 Markdown in Banners**: Now supports markdown for banners, enabling richer, more visually engaging announcements. +- **🌐 Internationalization Updates**: Enhanced translations across multiple languages, further improving accessibility and global user experience. +- **🎨 Styling Enhancements**: General UI style refinements for a cleaner and more polished interface. +- **📋 Rich Text Reliability**: Improved the reliability and stability of rich text input across chats for smoother interactions. + +### Fixed + +- **💡 Tailwind Build Issue**: Resolved a breaking bug caused by Tailwind, ensuring smoother builds and overall system reliability. +- **📚 Knowledge Collection Query Fix**: Addressed API endpoint issues with querying knowledge collections, ensuring accurate and reliable information retrieval. + ## [0.4.7] - 2024-12-01 ### Added diff --git a/package-lock.json b/package-lock.json index 51dcb23eba..020cd0f53f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.4.7", + "version": "0.4.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.4.7", + "version": "0.4.8", "dependencies": { "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-python": "^6.1.6", @@ -2249,10 +2249,11 @@ } }, "node_modules/@sveltejs/adapter-static": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.2.tgz", - "integrity": "sha512-/EBFydZDwfwFfFEuF1vzUseBoRziwKP7AoHAwv+Ot3M084sE/HTVBHf9mCmXfdM9ijprY5YEugZjleflncX5fQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.6.tgz", + "integrity": "sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==", "dev": true, + "license": "MIT", "peerDependencies": { "@sveltejs/kit": "^2.0.0" } diff --git a/package.json b/package.json index 220f5c6919..c131e1f913 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.4.7", + "version": "0.4.8", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", diff --git a/src/app.css b/src/app.css index d6f6664daa..cf0afea4f9 100644 --- a/src/app.css +++ b/src/app.css @@ -211,8 +211,8 @@ input[type='number'] { float: left; color: #adb5bd; pointer-events: none; - - @apply line-clamp-1 absolute + + @apply line-clamp-1 absolute; } .ai-autocompletion::after { From 976676a482cd1f1e4d7de5ee9cc72f7c683326c3 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 7 Dec 2024 00:34:52 -0800 Subject: [PATCH 28/28] chore: format --- src/lib/i18n/locales/ru-RU/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index dd08397af1..6e12bd2516 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -592,7 +592,7 @@ "No file selected": "Файлы не выбраны", "No files found.": "Файлы не найдены.", "No groups with access, add a group to grant access": "", - "No HTML, CSS, or JavaScМодели не найденыript content found.": "", + "No HTML, CSS, or JavaScript content found.": "", "No knowledge found": "Знания не найдены", "No model IDs": "", "No models found": "Модели не найдены",