From 8a4ea2b80186bf34c79284dc11a395a183957838 Mon Sep 17 00:00:00 2001 From: qingchun <96961592+qingchunnh@users.noreply.github.com> Date: Tue, 15 Jul 2025 03:18:12 +0800 Subject: [PATCH 01/87] i18n: Fix zh-CN --- src/lib/i18n/locales/zh-CN/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 28bfb4ba7d..dc79caf2c6 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -13,7 +13,7 @@ "{{COUNT}} characters": "{{COUNT}} 个字符", "{{COUNT}} hidden lines": "{{COUNT}} 行被隐藏", "{{COUNT}} Replies": "{{COUNT}} 回复", - "{{COUNT}} words": "{{COUNT}} 个字", + "{{COUNT}} words": "{{COUNT}} 个词", "{{user}}'s Chats": "{{user}} 的对话记录", "{{webUIName}} Backend Required": "{{webUIName}} 需要后端服务", "*Prompt node ID(s) are required for image generation": "*图片生成需要 Prompt node ID", From 07bb5cc4aaf1926e9cff3736097a3ba36cfcb85c Mon Sep 17 00:00:00 2001 From: Maciej Nowakowski Date: Mon, 14 Jul 2025 23:48:15 +0200 Subject: [PATCH 02/87] Update pl_PL locale --- src/lib/i18n/locales/pl-PL/translation.json | 100 ++++++++++---------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index b8f8ebea80..b326c65716 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -272,14 +272,14 @@ "Controls": "Ustawienia", "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "", "Copied": "Skopiowane", - "Copied link to clipboard": "", + "Copied link to clipboard": "Skopiowano link do schowka", "Copied shared chat URL to clipboard!": "Skopiowano udostępniony URL czatu do schowka!", "Copied to clipboard": "Skopiowane do schowka", "Copy": "Skopiuj", "Copy Formatted Text": "Skopiuj sformatowany tekst", "Copy last code block": "Skopiuj ostatni fragment kodu", "Copy last response": "Skopiuj ostatnią wypowiedź", - "Copy link": "", + "Copy link": "Skopiuj link", "Copy Link": "Skopiuj link", "Copy to clipboard": "Wklej do schowka", "Copying to clipboard was successful!": "Kopiowanie do schowka zakończyło się sukcesem!", @@ -294,8 +294,8 @@ "Create Knowledge": "Utwórz wiedzę", "Create new key": "Utwórz nowy klucz", "Create new secret key": "Utwórz nowy secret key", - "Create Note": "", - "Create your first note by clicking on the plus button below.": "", + "Create Note": "Utwórz notatkę", + "Create your first note by clicking on the plus button below.": "Utwórz swoją pierwszą notatkę klikając w plus poniżej.", "Created at": "Utworzono o", "Created At": "Utworzono o", "Created by": "Stworzone przez", @@ -335,12 +335,12 @@ "Delete All Models": "Usuń Wszystkie Modele", "Delete chat": "Usuń rozmowę", "Delete Chat": "Usuń rozmowę", - "Delete chat?": "Usuń czat?", - "Delete folder?": "Usuń folder?", + "Delete chat?": "Usunąć czat?", + "Delete folder?": "Usunąć folder?", "Delete function?": "Czy na pewno chcesz usunąć funkcję?", "Delete Message": "Usuń wiadomość", - "Delete message?": "Usuń wiadomość?", - "Delete note?": "", + "Delete message?": "Usunąć wiadomość?", + "Delete note?": "Usunąć notatkę?", "Delete prompt?": "Czy chcesz usunąć prompt?", "delete this link": "usuń to połączenie", "Delete tool?": "Usunąć narzędzie?", @@ -422,7 +422,7 @@ "Edit Channel": "Edytuj kanał", "Edit Connection": "Edytuj połączenie", "Edit Default Permissions": "Edytuj domyślne uprawnienia", - "Edit Folder": "", + "Edit Folder": "Edytuj folder", "Edit Memory": "Edytuj pamięć", "Edit User": "Edytuj profil użytkownika", "Edit User Group": "Edytuj grupa użytkowników", @@ -488,7 +488,7 @@ "Enter External Web Search URL": "", "Enter Firecrawl API Base URL": "", "Enter Firecrawl API Key": "", - "Enter folder name": "", + "Enter folder name": "Wprowadź nazwę folderu", "Enter Github Raw URL": "Wprowadź surowy adres URL usługi GitHub", "Enter Google PSE API Key": "Wprowadź klucz API Google PSE", "Enter Google PSE Engine Id": "Wprowadź identyfikator urządzenia Google PSE", @@ -539,7 +539,7 @@ "Enter the URL to import": "", "Enter Tika Server URL": "Wprowadź adres URL serwera Tika", "Enter timeout in seconds": "", - "Enter to Send": "", + "Enter to Send": "Enter aby wysłać", "Enter Top K": "Wprowadź {Top K}", "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Podaj adres URL (np. http://127.0.0.1:7860/)", @@ -566,7 +566,7 @@ "Error unloading model: {{error}}": "", "Error uploading file: {{error}}": "Błąd podczas przesyłania pliku: {{error}}", "Evaluations": "Oceny", - "Everyone": "", + "Everyone": "Każdy", "Exa API Key": "Klucz API Exa", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Przykład: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Przykład: ALL", @@ -603,16 +603,16 @@ "External Web Search URL": "", "Failed to add file.": "Nie udało się dodać pliku.", "Failed to connect to {{URL}} OpenAPI tool server": "", - "Failed to copy link": "", + "Failed to copy link": "Nie udało się skopiować linku", "Failed to create API Key.": "Nie udało się wygenerować klucza API.", - "Failed to delete note": "", + "Failed to delete note": "Nie udało się usunąć notatki", "Failed to extract content from the file: {{error}}": "", "Failed to extract content from the file.": "", "Failed to fetch models": "Nie udało się pobrać modeli", - "Failed to generate title": "", - "Failed to load file content.": "", + "Failed to generate title": "Nie udało się wygenerować tytułu", + "Failed to load file content.": "Nie udało się załadować zawartości pliku.", "Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka", - "Failed to save connections": "", + "Failed to save connections": "Nie udałio się zapisać połączeń", "Failed to save models configuration": "Nie udało się zapisać konfiguracji modelu", "Failed to update settings": "Nie udało się zaktualizować ustawień", "Failed to upload file.": "Nie udało się przesłać pliku.", @@ -633,7 +633,7 @@ "File Upload": "", "File uploaded successfully": "Plik został pomyślnie przesłany", "Files": "Pliki", - "Filter": "", + "Filter": "Filtr", "Filter is now globally disabled": "Filtr jest teraz globalnie wyłączony", "Filter is now globally enabled": "Filtr jest teraz globalnie włączony", "Filters": "Filtry", @@ -643,7 +643,7 @@ "Fluidly stream large external response chunks": "Płynnie strumieniuj duże fragmenty odpowiedzi zewnętrznych", "Focus chat input": "Skup się na czacie", "Folder deleted successfully": "Folder został usunięty pomyślnie", - "Folder Name": "", + "Folder Name": "Nazwa folderu", "Folder name cannot be empty.": "Nazwa folderu nie może być pusta.", "Folder name updated successfully": "Nazwa folderu została zaktualizowana pomyślnie", "Folder updated successfully": "", @@ -652,7 +652,7 @@ "Follow Up Generation Prompt": "", "Follow-Up Auto-Generation": "", "Followed instructions perfectly": "Wykonał instrukcje idealnie", - "Force OCR": "", + "Force OCR": "Wymuś OCR", "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "", "Forge new paths": "Wytyczaj nowe ścieżki", "Form": "Formularz", @@ -677,12 +677,12 @@ "Gemini API Config": "Konfiguracja API Gemini", "Gemini API Key is required.": "Wymagany jest klucz API Gemini.", "General": "Ogólne", - "Generate": "", + "Generate": "Wygeneruj", "Generate an image": "Wygeneruj obraz", "Generate Image": "Wygeneruj obraz", "Generate prompt pair": "", "Generating search query": "Tworzenie zapytania wyszukiwania", - "Generating...": "", + "Generating...": "Generowanie...", "Get information on {{name}} in the UI": "", "Get started": "Rozpocznij", "Get started with {{WEBUI_NAME}}": "Rozpocznij pracę z {{WEBUI_NAME}}", @@ -707,8 +707,8 @@ "Hex Color": "Kolor heksadecymalny", "Hex Color - Leave empty for default color": "Kolor heksadecymalny - pozostaw puste dla domyślnego koloru", "Hide": "Ukryj", - "Hide from Sidebar": "", - "Hide Model": "", + "Hide from Sidebar": "Ukryj z paska bocznego", + "Hide Model": "Ukryj model", "High Contrast Mode": "", "Home": "Dom", "Host": "Serwer", @@ -738,10 +738,10 @@ "Import": "", "Import Chats": "Importuj czaty", "Import Config from JSON File": "Importuj konfigurację z pliku JSON", - "Import From Link": "", - "Import Functions": "Importowanie funkcji", - "Import Models": "Importowanie modeli", - "Import Notes": "", + "Import From Link": "Importuj z linku", + "Import Functions": "Importuj funkcje", + "Import Models": "Importuj modele", + "Import Notes": "Importuj notatki", "Import Presets": "Importuj ustawienia", "Import Prompt Suggestions": "", "Import Prompts": "Importuj prompty", @@ -760,9 +760,9 @@ "Instant Auto-Send After Voice Transcription": "Automatyczne natychmiastowe wysyłanie po transkrypcji głosowej", "Integration": "", "Interface": "Interfejs", - "Invalid file content": "", + "Invalid file content": "Nieprawidłowa zawartość pliku", "Invalid file format.": "Nieprawidłowy format pliku.", - "Invalid JSON file": "", + "Invalid JSON file": "Nieprawidłowy plik JSON", "Invalid Tag": "Nieprawidłowy tag", "is typing...": "Pisanie...", "Italic": "", @@ -864,8 +864,8 @@ "Model {{modelId}} not found": "Model o identyfikatorze {{modelId}} nie został znaleziony.", "Model {{modelName}} is not vision capable": "Model {{modelName}} nie jest zdolny do widzenia", "Model {{name}} is now {{status}}": "Model {{name}} jest teraz {{status}}", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", + "Model {{name}} is now hidden": "Model {{name}} jest teraz ukryty", + "Model {{name}} is now visible": "Model {{name}} jest teraz widoczny", "Model accepts file inputs": "", "Model accepts image inputs": "Model przyjmuje wejścia obrazowe", "Model can execute code and perform calculations": "", @@ -895,13 +895,13 @@ "Name your knowledge base": "Nazwij swoją bazę wiedzy", "Native": "Rodzimy", "New Chat": "Nowy czat", - "New Folder": "Nowy Folder", - "New Function": "", - "New Note": "", + "New Folder": "Nowy folder", + "New Function": "Nowa funkcja", + "New Note": "Nowa notatka", "New Password": "Nowe hasło", - "New Tool": "", + "New Tool": "Nowe narzędzie", "new-channel": "nowy-kanał", - "Next message": "", + "Next message": "Następna wiadomość", "No chats found for this user.": "", "No chats found.": "", "No content": "", @@ -919,7 +919,7 @@ "No model IDs": "Brak identyfikatorów modeli", "No models found": "Nie znaleziono modeli", "No models selected": "Brak wybranych modeli", - "No Notes": "", + "No Notes": "Brak notatek", "No results found": "Brak wyników", "No search query generated": "Nie wygenerowano żadnego zapytania wyszukiwania", "No source available": "Źródło nie jest dostępne.", @@ -928,9 +928,9 @@ "None": "Brak", "Not factually correct": "Niezgodne z rzeczywistością", "Not helpful": "Nieprzydatne", - "Note deleted successfully": "", + "Note deleted successfully": "Notatka została usunięta", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Uwaga: Jeśli określisz minimalną punktację, wyszukiwanie zwróci tylko dokumenty o wyniku równym lub wyższym niż minimalna punktacja.", - "Notes": "Uwagi", + "Notes": "Notatki", "Notification Sound": "Dźwięk powiadomienia", "Notification Webhook": "Powiadomienie Webhook", "Notifications": "Powiadomienia", @@ -1012,7 +1012,7 @@ "Pipelines": "Przepływy", "Pipelines Not Detected": "Przepływ nie wykryty", "Pipelines Valves": "Przepływy i Zawory", - "Plain text (.md)": "", + "Plain text (.md)": "Zwykły tekst (.md)", "Plain text (.txt)": "Zwykły tekst (.txt)", "Playground": "Plac zabaw", "Playwright Timeout (ms)": "", @@ -1035,7 +1035,7 @@ "Previous 30 days": "Ostatnie 30 dni", "Previous 7 days": "Ostatnie 7 dni", "Previous message": "", - "Private": "", + "Private": "Prywatne", "Profile Image": "Zdjęcie profilowe", "Prompt": "Wprowadź prompt: ", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (np. podaj ciekawostkę o Imperium Rzymskim)", @@ -1056,9 +1056,9 @@ "Re-rank models by topic similarity": "Ponowny ranking modeli według podobieństwa tematycznego", "Read": "Czytaj", "Read Aloud": "Czytaj na głos", - "Reason": "", + "Reason": "Powód", "Reasoning Effort": "Wysiłek rozumowania", - "Record": "", + "Record": "Nagraj", "Record voice": "Nagraj swój głos", "Redirecting you to Open WebUI Community": "Przekierowujemy Cię do społeczności Open WebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -1123,7 +1123,7 @@ "Search Functions": "Funkcje wyszukiwania", "Search Knowledge": "Przeszukaj wiedzę", "Search Models": "Wyszukiwanie modeli", - "Search Notes": "", + "Search Notes": "Wyszukiwanie notatek", "Search options": "Opcje wyszukiwania", "Search Prompts": "Szukaj promptów", "Search Result Count": "Liczba wyników wyszukiwania", @@ -1373,7 +1373,7 @@ "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Przejdź na licencjonowany plan, aby uzyskać rozszerzone możliwości, w tym niestandardowe motywy, personalizację oraz dedykowane wsparcie.", "Upload": "Prześlij", "Upload a GGUF model": "Prześlij model GGUF", - "Upload Audio": "", + "Upload Audio": "Prześlij audio", "Upload directory": "Prześlij katalog", "Upload files": "Prześlij pliki", "Upload Files": "Prześlij pliki", @@ -1430,9 +1430,9 @@ "Webhook URL": "Adres URL webhooka", "WebUI Settings": "Ustawienia interfejsu WebUI", "WebUI URL": "Adres URL interfejsu internetowego", - "WebUI will make requests to \"{{url}}\"": "", - "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI będzie wysyłać żądania do \"{{url}}/api/chat\".", - "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI będzie wysyłać żądania do \"{{url}}/chat/completions\".", + "WebUI will make requests to \"{{url}}\"": "WebUI będzie wysyłać żądania do \"{{url}}\"", + "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI będzie wysyłać żądania do \"{{url}}/api/chat\"", + "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI będzie wysyłać żądania do \"{{url}}/chat/completions\"", "Weight of BM25 Retrieval": "", "What are you trying to achieve?": "Do czego dążysz?", "What are you working on?": "Nad czym pracujesz?", @@ -1456,7 +1456,7 @@ "Yacy Username": "", "Yesterday": "Wczoraj", "You": "Ty", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "Obecnie używasz licencji trial. Skontaktuj się z supportem, aby zupgradować Twoją licencję.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Możesz rozmawiać jednocześnie maksymalnie z {{maxCount}} plikiem(i).", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Możesz spersonalizować swoje interakcje z LLM, dodając wspomnienia za pomocą przycisku 'Zarządzaj' poniżej, dzięki czemu będą one bardziej pomocne i dostosowane do Ciebie.", "You cannot upload an empty file.": "Nie możesz przesłać pustego pliku.", From 17f0bef2e204072c07daacc5c63f7c2d6e357312 Mon Sep 17 00:00:00 2001 From: Sihyeon Jang Date: Tue, 15 Jul 2025 10:11:22 +0900 Subject: [PATCH 03/87] refactor: use cleanup_response on openai Signed-off-by: Sihyeon Jang --- backend/open_webui/routers/openai.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/backend/open_webui/routers/openai.py b/backend/open_webui/routers/openai.py index a759ec7eee..68ae460ebb 100644 --- a/backend/open_webui/routers/openai.py +++ b/backend/open_webui/routers/openai.py @@ -893,10 +893,8 @@ async def generate_chat_completion( detail=detail if detail else "Open WebUI: Server Connection Error", ) finally: - if not streaming and session: - if r: - r.close() - await session.close() + if not streaming: + await cleanup_response(r, session) async def embeddings(request: Request, form_data: dict, user): @@ -975,10 +973,8 @@ async def embeddings(request: Request, form_data: dict, user): detail=detail if detail else "Open WebUI: Server Connection Error", ) finally: - if not streaming and session: - if r: - r.close() - await session.close() + if not streaming: + await cleanup_response(r, session) @router.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE"]) @@ -1074,7 +1070,5 @@ async def proxy(path: str, request: Request, user=Depends(get_verified_user)): detail=detail if detail else "Open WebUI: Server Connection Error", ) finally: - if not streaming and session: - if r: - r.close() - await session.close() + if not streaming: + await cleanup_response(r, session) From 058369adeaf6873801d89c6a30ca16da2a320e06 Mon Sep 17 00:00:00 2001 From: Sihyeon Jang Date: Tue, 15 Jul 2025 10:14:30 +0900 Subject: [PATCH 04/87] fix: improve cleanup_response positioning for better resource management Signed-off-by: Sihyeon Jang --- backend/open_webui/routers/ollama.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 000f4b48d2..7fa7aef249 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -184,7 +184,6 @@ async def send_post_request( ) else: res = await r.json() - await cleanup_response(r, session) return res except HTTPException as e: @@ -196,6 +195,9 @@ async def send_post_request( status_code=r.status if r else 500, detail=detail if e else "Open WebUI: Server Connection Error", ) + finally: + if not stream: + await cleanup_response(r, session) def get_api_key(idx, url, configs): From 1092827895b5bb0cf68c54d653db6649de409299 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Tue, 15 Jul 2025 13:55:49 +0200 Subject: [PATCH 05/87] Fix some FileItemModal.svelte- locales strings convert strings "Using Entire Document" and "Using Focused Retrieval" to i18n locales, to address issue: https://github.com/open-webui/open-webui/issues/15728 --- src/lib/components/common/FileItemModal.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/common/FileItemModal.svelte b/src/lib/components/common/FileItemModal.svelte index 0858fc87a0..b2373ff291 100644 --- a/src/lib/components/common/FileItemModal.svelte +++ b/src/lib/components/common/FileItemModal.svelte @@ -133,9 +133,9 @@ >
{#if enableFullContent} - Using Entire Document + $i18n.t('Using Entire Document') {:else} - Using Focused Retrieval + $i18n.t(`Using Focused Retrieval') {/if} Date: Tue, 15 Jul 2025 14:05:10 +0200 Subject: [PATCH 06/87] fix: update FileItemModal.svelte- locales strings add strings "Using Entire Document" and "Using Focused Retrieval" to i18n locales, to address issue: #15728 --- src/lib/i18n/locales/en-US/translation.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 01669336f7..40ebaf0ddc 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -1396,6 +1396,8 @@ "User Webhooks": "", "Username": "", "Users": "", + "Using Entire Document": "", + "Using Focused Retrieval": "", "Using the default arena model with all models. Click the plus button to add custom models.": "", "Utilize": "", "Valid time units:": "", From f7fae947a7eebcbcc91c5b57c2f84c70b4f27d6e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 15 Jul 2025 16:52:21 +0400 Subject: [PATCH 07/87] fix/refac: hide system prompt for users w/o permission --- .../Sidebar/Folders/EditFolderModal.svelte | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/lib/components/layout/Sidebar/Folders/EditFolderModal.svelte b/src/lib/components/layout/Sidebar/Folders/EditFolderModal.svelte index d1231e90c3..087874e3a8 100644 --- a/src/lib/components/layout/Sidebar/Folders/EditFolderModal.svelte +++ b/src/lib/components/layout/Sidebar/Folders/EditFolderModal.svelte @@ -88,17 +88,19 @@
-
-
{$i18n.t('System Prompt')}
-
-