From f382a78e31b5505d1b8c649a20db352ffc65669a Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 24 Sep 2024 13:47:51 +0200 Subject: [PATCH 1/5] Update translation.json --- src/lib/i18n/locales/uk-UA/translation.json | 34 ++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index b907963ea..1e35e0e3c 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -9,7 +9,7 @@ "{{user}}'s Chats": "Чати {{user}}а", "{{webUIName}} Backend Required": "Необхідно підключення бекенду {{webUIName}}", "*Prompt node ID(s) are required for image generation": "*Для генерації зображення потрібно вказати ідентифікатор(и) вузла(ів)", - "A new version (v{{LATEST_VERSION}}) is now available.": "", + "A new version (v{{LATEST_VERSION}}) is now available.": "Нова версія (в{{LATEST_VERSION}}) зараз доступна.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач використовується при виконанні таких завдань, як генерація заголовків для чатів та пошукових запитів в Інтернеті", "a user": "користувача", "About": "Про програму", @@ -74,10 +74,10 @@ "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Рядок авторизації API", "AUTOMATIC1111 Base URL": "URL-адреса AUTOMATIC1111", "AUTOMATIC1111 Base URL is required.": "Необхідна URL-адреса AUTOMATIC1111.", - "Available list": "", + "Available list": "Список доступності", "available!": "доступно!", - "Azure AI Speech": "", - "Azure Region": "", + "Azure AI Speech": "Мовлення Azure AI", + "Azure Region": "Регіон Azure", "Back": "Назад", "Bad Response": "Неправильна відповідь", "Banners": "Прапори", @@ -98,7 +98,7 @@ "Chat Bubble UI": "Чат у вигляді бульбашок", "Chat Controls": "Керування чатом", "Chat direction": "Напрям чату", - "Chat Overview": "", + "Chat Overview": "Огляд чату", "Chats": "Чати", "Check Again": "Перевірити ще раз", "Check for updates": "Перевірити оновлення", @@ -416,8 +416,8 @@ "Model {{modelId}} not found": "Модель {{modelId}} не знайдено", "Model {{modelName}} is not vision capable": "Модель {{modelName}} не здатна бачити", "Model {{name}} is now {{status}}": "Модель {{name}} тепер має {{status}}", - "Model {{name}} is now at the top": "", - "Model accepts image inputs": "", + "Model {{name}} is now at the top": "Модель {{name}} тепер на першому місці", + "Model accepts image inputs": "Модель приймає зображеня", "Model created successfully!": "Модель створено успішно!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Виявлено шлях до файлової системи моделі. Для оновлення потрібно вказати коротке ім'я моделі, не вдасться продовжити.", "Model ID": "ID моделі", @@ -429,7 +429,7 @@ "Modelfile Content": "Вміст файлу моделі", "Models": "Моделі", "More": "Більше", - "Move to Top": "", + "Move to Top": "Перейти до початку", "Name": "Ім'я", "Name Tag": "Назва тегу", "Name your model": "Назвіть свою модель", @@ -466,7 +466,7 @@ "Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Схоже, що URL-адреса невірна. Будь ласка, перевірте ще раз та спробуйте ще раз.", "Oops! There was an error in the previous response. Please try again or contact admin.": "Упс! У попередній відповіді сталася помилка. Будь ласка, спробуйте ще раз або зверніться до адміністратора.", "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Ви використовуєте непідтримуваний метод (тільки для фронтенду). Будь ласка, обслуговуйте WebUI з бекенду.", - "Open file": "", + "Open file": "Відкрити файл", "Open new chat": "Відкрити новий чат", "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI версія (v{{OPEN_WEBUI_VERSION}}) нижча за необхідну версію (v{{REQUIRED_VERSION}})", "OpenAI": "OpenAI", @@ -476,9 +476,9 @@ "OpenAI URL/Key required.": "Потрібен OpenAI URL/ключ.", "or": "або", "Other": "Інше", - "Output format": "", - "Overview": "", - "page": "", + "Output format": "Формат відповіді", + "Overview": "Огляд", + "page": "сторінка", "Password": "Пароль", "PDF document (.pdf)": "PDF документ (.pdf)", "PDF Extract Images (OCR)": "Розпізнавання зображень з PDF (OCR)", @@ -541,7 +541,7 @@ "Save": "Зберегти", "Save & Create": "Зберегти та створити", "Save & Update": "Зберегти та оновити", - "Save As Copy": "", + "Save As Copy": "Зберегти як копію", "Save Tag": "Зберегти тег", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Збереження журналів чату безпосередньо в сховище вашого браузера більше не підтримується. Будь ласка, завантажте та видаліть журнали чату, натиснувши кнопку нижче. Не хвилюйтеся, ви можете легко повторно імпортувати журнали чату до бекенду через", "Scan": "Сканування", @@ -586,7 +586,7 @@ "Send": "Надіслати", "Send a Message": "Надіслати повідомлення", "Send message": "Надіслати повідомлення", - "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "", + "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Відправляє `stream_options: { include_usage: true }` у запиті.\nПідтримувані постачальники повернуть інформацію про використання токену у відповіді, якщо вона встановлена.", "September": "Вересень", "Serper API Key": "Ключ API Serper", "Serply API Key": "Ключ API Serply", @@ -620,11 +620,11 @@ "Sign up": "Зареєструватися", "Signing in": "Увійдіть в систему", "Source": "Джерело", - "Speech Playback Speed": "", + "Speech Playback Speed": "Швидкість відтворення мовлення", "Speech recognition error: {{error}}": "Помилка розпізнавання мови: {{error}}", "Speech-to-Text Engine": "Система розпізнавання мови", "Stop Sequence": "Символ зупинки", - "Stream Chat Response": "", + "Stream Chat Response": "Відповідь стрім-чату", "STT Model": "Модель STT ", "STT Settings": "Налаштування STT", "Submit": "Надіслати", @@ -704,7 +704,7 @@ "Unpin": "Відчепити", "Update": "Оновлення", "Update and Copy Link": "Оновлення та копіювання посилання", - "Update for the latest features and improvements.": "", + "Update for the latest features and improvements.": "Оновіть програми для нових функцій та покращень.", "Update password": "Оновити пароль", "Updated at": "Оновлено на", "Upload": "Завантажити", From 504d910557a5cc8368760ee029c53d464988c36b Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 24 Sep 2024 15:31:55 +0200 Subject: [PATCH 2/5] fix: no running event loop issue --- backend/open_webui/apps/socket/main.py | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/backend/open_webui/apps/socket/main.py b/backend/open_webui/apps/socket/main.py index 7883b7d8b..ac80e6259 100644 --- a/backend/open_webui/apps/socket/main.py +++ b/backend/open_webui/apps/socket/main.py @@ -48,20 +48,6 @@ else: ) -app = socketio.ASGIApp(sio, socketio_path="/ws/socket.io") - -# Dictionary to maintain the user pool - -if WEBSOCKET_MANAGER == "redis": - SESSION_POOL = RedisDict("open-webui:session_pool", redis_url=WEBSOCKET_REDIS_URL) - USER_POOL = RedisDict("open-webui:user_pool", redis_url=WEBSOCKET_REDIS_URL) - USAGE_POOL = RedisDict("open-webui:usage_pool", redis_url=WEBSOCKET_REDIS_URL) -else: - SESSION_POOL = {} - USER_POOL = {} - USAGE_POOL = {} - - # Timeout duration in seconds TIMEOUT_DURATION = 3 @@ -92,8 +78,22 @@ async def periodic_usage_pool_cleanup(): await asyncio.sleep(TIMEOUT_DURATION) -# Start the cleanup task when your app starts -asyncio.create_task(periodic_usage_pool_cleanup()) +app = socketio.ASGIApp( + sio, + socketio_path="/ws/socket.io", + on_startup=asyncio.create_task(periodic_usage_pool_cleanup()), +) + +# Dictionary to maintain the user pool + +if WEBSOCKET_MANAGER == "redis": + SESSION_POOL = RedisDict("open-webui:session_pool", redis_url=WEBSOCKET_REDIS_URL) + USER_POOL = RedisDict("open-webui:user_pool", redis_url=WEBSOCKET_REDIS_URL) + USAGE_POOL = RedisDict("open-webui:usage_pool", redis_url=WEBSOCKET_REDIS_URL) +else: + SESSION_POOL = {} + USER_POOL = {} + USAGE_POOL = {} def get_models_in_use(): From 2d60e422583090abc8bc9d478311a2ff43d2d164 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 24 Sep 2024 15:40:01 +0200 Subject: [PATCH 3/5] doc: changelog --- CHANGELOG.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51d20507e..905d656cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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.3.26] - 2024-09-24 + +### Fixed + +- **🔄 Event Loop Error Resolution**: Addressed a critical error where a missing running event loop caused 'periodic_usage_pool_cleanup' to fail during pip installs. This fix ensures smoother and more reliable updates and installations, enhancing overall system stability. + ## [0.3.25] - 2024-09-24 ### Fixed diff --git a/package-lock.json b/package-lock.json index f3adc3f68..2ec000ba2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.3.25", + "version": "0.3.26", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.3.25", + "version": "0.3.26", "dependencies": { "@codemirror/lang-javascript": "^6.2.2", "@codemirror/lang-python": "^6.1.6", diff --git a/package.json b/package.json index 3541edaf4..19f941ac5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.3.25", + "version": "0.3.26", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", From 38b9a63fa5312c4ab278589c838944e0f3482547 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 24 Sep 2024 15:40:37 +0200 Subject: [PATCH 4/5] refac --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 905d656cf..bb7d12c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- **🔄 Event Loop Error Resolution**: Addressed a critical error where a missing running event loop caused 'periodic_usage_pool_cleanup' to fail during pip installs. This fix ensures smoother and more reliable updates and installations, enhancing overall system stability. +- **🔄 Event Loop Error Resolution**: Addressed a critical error where a missing running event loop caused 'periodic_usage_pool_cleanup' to fail with pip installs. This fix ensures smoother and more reliable updates and installations, enhancing overall system stability. ## [0.3.25] - 2024-09-24 From a44e9a8dda7213bcdddc2a7f006f3bedca3c0fb3 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Tue, 24 Sep 2024 15:41:23 +0200 Subject: [PATCH 5/5] refac --- backend/open_webui/apps/socket/main.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/backend/open_webui/apps/socket/main.py b/backend/open_webui/apps/socket/main.py index ac80e6259..1c9ff505c 100644 --- a/backend/open_webui/apps/socket/main.py +++ b/backend/open_webui/apps/socket/main.py @@ -48,6 +48,18 @@ else: ) +# Dictionary to maintain the user pool + +if WEBSOCKET_MANAGER == "redis": + SESSION_POOL = RedisDict("open-webui:session_pool", redis_url=WEBSOCKET_REDIS_URL) + USER_POOL = RedisDict("open-webui:user_pool", redis_url=WEBSOCKET_REDIS_URL) + USAGE_POOL = RedisDict("open-webui:usage_pool", redis_url=WEBSOCKET_REDIS_URL) +else: + SESSION_POOL = {} + USER_POOL = {} + USAGE_POOL = {} + + # Timeout duration in seconds TIMEOUT_DURATION = 3 @@ -84,17 +96,6 @@ app = socketio.ASGIApp( on_startup=asyncio.create_task(periodic_usage_pool_cleanup()), ) -# Dictionary to maintain the user pool - -if WEBSOCKET_MANAGER == "redis": - SESSION_POOL = RedisDict("open-webui:session_pool", redis_url=WEBSOCKET_REDIS_URL) - USER_POOL = RedisDict("open-webui:user_pool", redis_url=WEBSOCKET_REDIS_URL) - USAGE_POOL = RedisDict("open-webui:usage_pool", redis_url=WEBSOCKET_REDIS_URL) -else: - SESSION_POOL = {} - USER_POOL = {} - USAGE_POOL = {} - def get_models_in_use(): # List models that are currently in use