open-webui 0.3.31.dev1__tar.gz → 0.3.33.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/CHANGELOG.md +20 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/Dockerfile +11 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/PKG-INFO +12 -8
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/TROUBLESHOOTING.md +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/audio/main.py +39 -24
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/images/utils/comfyui.py +18 -6
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/ollama/main.py +29 -55
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/openai/main.py +6 -5
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/main.py +89 -66
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/utils.py +93 -58
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/vector/connector.py +4 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/vector/dbs/chroma.py +6 -2
- open_webui-0.3.33.dev1/backend/open_webui/apps/retrieval/vector/dbs/qdrant.py +179 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/main.py +67 -3
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/models/chats.py +805 -0
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/models/feedbacks.py +254 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/files.py +51 -4
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/models/folders.py +271 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/knowledge.py +16 -0
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/models/tags.py +109 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/auths.py +66 -7
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/chats.py +272 -89
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/routers/evaluations.py +147 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/files.py +59 -46
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/routers/folders.py +251 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/functions.py +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/knowledge.py +6 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/tools.py +0 -3
- open_webui-0.3.33.dev1/backend/open_webui/apps/webui/routers/utils.py +99 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/utils.py +0 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/config.py +110 -35
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/constants.py +4 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/env.py +29 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/main.py +226 -213
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/1af9b942657b_migrate_tags.py +151 -0
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/242a2047eae0_update_chat_table.py +82 -0
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/3ab32c4b8f59_update_tags.py +81 -0
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/4ace53fd72c8_update_folder_table_datetime.py +67 -0
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/af906e964978_add_feedback_table.py +51 -0
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/c29facfe716b_update_file_table_path.py +79 -0
- open_webui-0.3.33.dev1/backend/open_webui/migrations/versions/c69f45358db4_add_folder_table.py +50 -0
- open_webui-0.3.33.dev1/backend/open_webui/static/assets/pdf-style.css +319 -0
- open_webui-0.3.33.dev1/backend/open_webui/static/fonts/NotoSans-Variable.ttf +0 -0
- open_webui-0.3.33.dev1/backend/open_webui/static/fonts/NotoSansJP-Variable.ttf +0 -0
- open_webui-0.3.33.dev1/backend/open_webui/static/fonts/NotoSansKR-Variable.ttf +0 -0
- open_webui-0.3.33.dev1/backend/open_webui/static/fonts/NotoSansSC-Variable.ttf +0 -0
- open_webui-0.3.33.dev1/backend/open_webui/storage/provider.py +163 -0
- open_webui-0.3.33.dev1/backend/open_webui/utils/oauth.py +261 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/payload.py +50 -1
- open_webui-0.3.33.dev1/backend/open_webui/utils/pdf_generator.py +139 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/response.py +2 -3
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/task.py +56 -16
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/utils.py +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/requirements.txt +7 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/e2e/chat.cy.ts +3 -3
- open_webui-0.3.33.dev1/cypress/e2e/documents.cy.ts +2 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/support/e2e.ts +0 -44
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docs/apache.md +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/package-lock.json +976 -64
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/package.json +13 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/pyproject.toml +13 -9
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/app.css +28 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/chats/index.ts +261 -10
- {open_webui-0.3.31.dev1/src/lib/apis/documents → open_webui-0.3.33.dev1/src/lib/apis/evaluations}/index.ts +52 -69
- open_webui-0.3.33.dev1/src/lib/apis/folders/index.ts +269 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/index.ts +74 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/retrieval/index.ts +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/streaming/index.ts +6 -0
- open_webui-0.3.33.dev1/src/lib/components/AddFilesPlaceholder.svelte +28 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/ChangelogModal.svelte +5 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/AddUserModal.svelte +11 -10
- open_webui-0.3.33.dev1/src/lib/components/admin/Evaluations/FeedbackMenu.svelte +46 -0
- open_webui-0.3.33.dev1/src/lib/components/admin/Evaluations.svelte +633 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Audio.svelte +98 -7
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Connections.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Documents.svelte +113 -93
- open_webui-0.3.33.dev1/src/lib/components/admin/Settings/Evaluations/Model.svelte +63 -0
- open_webui-0.3.33.dev1/src/lib/components/admin/Settings/Evaluations/ModelModal.svelte +418 -0
- open_webui-0.3.33.dev1/src/lib/components/admin/Settings/Evaluations.svelte +158 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/General.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Images.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Interface.svelte +21 -9
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Models.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Pipelines.svelte +10 -8
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Users.svelte +23 -114
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/WebSearch.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings.svelte +31 -11
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Artifacts.svelte +18 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Chat.svelte +385 -139
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/ChatControls.svelte +61 -14
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/ChatPlaceholder.svelte +2 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Controls/Controls.svelte +13 -13
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte +131 -43
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/Commands/Models.svelte +4 -8
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/Commands/Prompts.svelte +12 -20
- open_webui-0.3.33.dev1/src/lib/components/chat/MessageInput/Commands.svelte +80 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/InputMenu.svelte +8 -3
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/VoiceRecording.svelte +10 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput.svelte +230 -214
- open_webui-0.3.33.dev1/src/lib/components/chat/Messages/Citations.svelte +219 -0
- open_webui-0.3.33.dev1/src/lib/components/chat/Messages/CitationsModal.svelte +163 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/CodeBlock.svelte +16 -7
- open_webui-0.3.33.dev1/src/lib/components/chat/Messages/CodeExecutionModal.svelte +118 -0
- open_webui-0.3.33.dev1/src/lib/components/chat/Messages/CodeExecutions.svelte +80 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/ContentRenderer.svelte +48 -24
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Message.svelte +1 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/MultiResponseMessages.svelte +3 -2
- open_webui-0.3.33.dev1/src/lib/components/chat/Messages/RateComment.svelte +206 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/ResponseMessage.svelte +149 -20
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/UserMessage.svelte +25 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages.svelte +6 -12
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/ModelSelector/Selector.svelte +23 -11
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/ModelSelector.svelte +1 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Overview.svelte +15 -4
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Placeholder.svelte +18 -19
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Account.svelte +10 -10
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Audio.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/General.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Interface.svelte +63 -3
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Personalization.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/SettingsModal.svelte +17 -17
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/ShortcutsModal.svelte +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/TagChatModal.svelte +9 -1
- open_webui-0.3.33.dev1/src/lib/components/chat/Tags.svelte +82 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Badge.svelte +2 -1
- open_webui-0.3.33.dev1/src/lib/components/common/Collapsible.svelte +88 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/ConfirmDialog.svelte +9 -4
- open_webui-0.3.33.dev1/src/lib/components/common/DragGhost.svelte +30 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Drawer.svelte +2 -14
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Dropdown.svelte +1 -1
- open_webui-0.3.33.dev1/src/lib/components/common/Folder.svelte +141 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Modal.svelte +7 -3
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Pagination.svelte +3 -3
- open_webui-0.3.33.dev1/src/lib/components/common/RichTextInput.svelte +476 -0
- open_webui-0.3.33.dev1/src/lib/components/common/SVGPanZoom.svelte +53 -0
- open_webui-0.3.33.dev1/src/lib/components/common/Sidebar.svelte +30 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Switch.svelte +1 -1
- open_webui-0.3.33.dev1/src/lib/components/common/Tags/TagList.svelte +32 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Tags.svelte +4 -6
- open_webui-0.3.33.dev1/src/lib/components/common/Textarea.svelte +38 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/ArrowLeft.svelte +15 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/ArrowRight.svelte +15 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/ChartBar.svelte +10 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/CloudArrowUp.svelte +19 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/Cog6.svelte +20 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/Document.svelte +19 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/DocumentChartBar.svelte +15 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/Download.svelte +19 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/Mic.svelte +10 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/Minus.svelte +15 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/PencilSolid.svelte +10 -0
- open_webui-0.3.33.dev1/src/lib/components/icons/PencilSquare.svelte +13 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Navbar/Menu.svelte +66 -56
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Navbar.svelte +5 -4
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Sidebar/ArchivedChatsModal.svelte +0 -2
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Sidebar/ChatItem.svelte +157 -53
- open_webui-0.3.33.dev1/src/lib/components/layout/Sidebar/ChatMenu.svelte +277 -0
- open_webui-0.3.33.dev1/src/lib/components/layout/Sidebar/Folders/FolderMenu.svelte +70 -0
- open_webui-0.3.33.dev1/src/lib/components/layout/Sidebar/Folders.svelte +35 -0
- open_webui-0.3.33.dev1/src/lib/components/layout/Sidebar/RecursiveFolder.svelte +482 -0
- open_webui-0.3.33.dev1/src/lib/components/layout/Sidebar/SearchInput.svelte +218 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Sidebar/UserMenu.svelte +10 -10
- open_webui-0.3.33.dev1/src/lib/components/layout/Sidebar.svelte +832 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/UpdateInfoToast.svelte +3 -9
- open_webui-0.3.31.dev1/src/lib/components/playground/ChatCompletion.svelte → open_webui-0.3.33.dev1/src/lib/components/playground/Chat/Messages.svelte +4 -38
- open_webui-0.3.33.dev1/src/lib/components/playground/Chat.svelte +374 -0
- open_webui-0.3.33.dev1/src/lib/components/playground/Completions.svelte +197 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Functions/FunctionEditor.svelte +53 -47
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Functions.svelte +58 -38
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Knowledge/Collection/AddContentMenu.svelte +1 -1
- open_webui-0.3.33.dev1/src/lib/components/workspace/Knowledge/Collection/AddTextContentModal.svelte +165 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Knowledge/Collection/Files.svelte +9 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Knowledge/Collection.svelte +290 -156
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Knowledge.svelte +20 -26
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models.svelte +72 -46
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Prompts.svelte +64 -47
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Tools/ToolkitEditor.svelte +53 -47
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Tools.svelte +58 -38
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ar-BH/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/bg-BG/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/bn-BD/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ca-ES/translation.json +99 -40
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ceb-PH/translation.json +82 -23
- open_webui-0.3.33.dev1/src/lib/i18n/locales/da-DK/translation.json +847 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/de-DE/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/dg-DG/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/en-GB/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/en-US/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/es-ES/translation.json +230 -171
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/fa-IR/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/fi-FI/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/fr-CA/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/fr-FR/translation.json +141 -82
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/he-IL/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/hi-IN/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/hr-HR/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/id-ID/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ie-GA/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/it-IT/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ja-JP/translation.json +270 -211
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ka-GE/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ko-KR/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/languages.json +4 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/lt-LT/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ms-MY/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/nb-NO/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/nl-NL/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/pa-IN/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/pl-PL/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/pt-BR/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/pt-PT/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ro-RO/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/ru-RU/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/sr-RS/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/sv-SE/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/th-TH/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/tk-TW/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/tr-TR/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/uk-UA/translation.json +118 -59
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/vi-VN/translation.json +82 -23
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/zh-CN/translation.json +104 -45
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/locales/zh-TW/translation.json +198 -139
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/stores/index.ts +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/index.ts +25 -9
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/marked/katex-extension.ts +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/+layout.svelte +17 -7
- open_webui-0.3.33.dev1/src/routes/(app)/admin/+layout.svelte +90 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/admin/+page.svelte +194 -108
- open_webui-0.3.33.dev1/src/routes/(app)/admin/evaluations/+page.svelte +5 -0
- open_webui-0.3.33.dev1/src/routes/(app)/playground/+layout.svelte +70 -0
- open_webui-0.3.33.dev1/src/routes/(app)/playground/+page.svelte +5 -0
- open_webui-0.3.33.dev1/src/routes/(app)/playground/completions/+page.svelte +5 -0
- open_webui-0.3.33.dev1/src/routes/(app)/workspace/+layout.svelte +117 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/models/create/+page.svelte +10 -8
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/models/edit/+page.svelte +10 -8
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/prompts/create/+page.svelte +10 -8
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/prompts/edit/+page.svelte +10 -8
- open_webui-0.3.33.dev1/src/routes/watch/+page.svelte +22 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/themes/rosepine-dawn.css +1 -1
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/themes/rosepine.css +1 -1
- open_webui-0.3.31.dev1/backend/open_webui/apps/webui/models/chats.py +0 -386
- open_webui-0.3.31.dev1/backend/open_webui/apps/webui/models/tags.py +0 -262
- open_webui-0.3.31.dev1/backend/open_webui/apps/webui/routers/utils.py +0 -140
- open_webui-0.3.31.dev1/backend/open_webui/test/apps/webui/routers/test_documents.py +0 -105
- open_webui-0.3.31.dev1/cypress/e2e/documents.cy.ts +0 -46
- open_webui-0.3.31.dev1/src/lib/components/AddFilesPlaceholder.svelte +0 -21
- open_webui-0.3.31.dev1/src/lib/components/chat/MessageInput/Commands.svelte +0 -140
- open_webui-0.3.31.dev1/src/lib/components/chat/Messages/Citations.svelte +0 -67
- open_webui-0.3.31.dev1/src/lib/components/chat/Messages/CitationsModal.svelte +0 -103
- open_webui-0.3.31.dev1/src/lib/components/chat/Messages/RateComment.svelte +0 -133
- open_webui-0.3.31.dev1/src/lib/components/chat/Tags.svelte +0 -82
- open_webui-0.3.31.dev1/src/lib/components/common/Collapsible.svelte +0 -45
- open_webui-0.3.31.dev1/src/lib/components/common/SVGPanZoom.svelte +0 -29
- open_webui-0.3.31.dev1/src/lib/components/common/Tags/TagList.svelte +0 -34
- open_webui-0.3.31.dev1/src/lib/components/documents/AddDocModal.svelte +0 -166
- open_webui-0.3.31.dev1/src/lib/components/documents/EditDocModal.svelte +0 -181
- open_webui-0.3.31.dev1/src/lib/components/icons/ChatMenu.svelte +0 -124
- open_webui-0.3.31.dev1/src/lib/components/layout/Sidebar/ChatMenu.svelte +0 -154
- open_webui-0.3.31.dev1/src/lib/components/layout/Sidebar.svelte +0 -615
- open_webui-0.3.31.dev1/src/lib/components/playground/Playground.svelte +0 -399
- open_webui-0.3.31.dev1/src/lib/components/playground/TextCompletion.svelte +0 -0
- open_webui-0.3.31.dev1/src/lib/components/workspace/Documents.svelte +0 -627
- open_webui-0.3.31.dev1/src/lib/components/workspace/Knowledge/Collection/AddTextContentModal.svelte +0 -125
- open_webui-0.3.31.dev1/src/routes/(app)/admin/+layout.svelte +0 -95
- open_webui-0.3.31.dev1/src/routes/(app)/playground/+layout.svelte +0 -48
- open_webui-0.3.31.dev1/src/routes/(app)/playground/+page.svelte +0 -5
- open_webui-0.3.31.dev1/src/routes/(app)/workspace/+layout.svelte +0 -110
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.dockerignore +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.env.example +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.eslintignore +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.eslintrc.cjs +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.gitattributes +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/FUNDING.yml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/dependabot.yml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/pull_request_template.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/build-release.yml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/deploy-to-hf-spaces.yml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/docker-build.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/format-backend.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/format-build-frontend.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/integration-test.yml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/lint-backend.disabled +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/lint-frontend.disabled +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.github/workflows/release-pypi.yml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.gitignore +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.npmrc +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.prettierignore +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/.prettierrc +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/CODE_OF_CONDUCT.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/Caddyfile.localhost +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/INSTALLATION.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/LICENSE +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/Makefile +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/README.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/.dockerignore +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/.gitignore +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/data/readme.txt +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/dev.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/__init__.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/alembic.ini +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/images/main.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/loaders/main.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/models/colbert.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/vector/dbs/milvus.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/vector/main.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/brave.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/duckduckgo.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/google_pse.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/jina_search.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/main.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/searchapi.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/searxng.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/serper.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/serply.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/serpstack.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/tavily.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/brave.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/google_pse.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/searchapi.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/searxng.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/serper.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/serply.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/testdata/serpstack.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/retrieval/web/utils.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/socket/main.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/socket/utils.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/db.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/001_initial_schema.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/002_add_local_sharing.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/003_add_auth_api_key.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/004_add_archived.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/005_add_updated_at.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/006_migrate_timestamps_and_charfields.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/007_add_user_last_active_at.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/008_add_memory.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/009_add_models.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/010_migrate_modelfiles_to_models.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/011_add_user_settings.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/012_add_tools.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/013_add_user_info.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/014_add_files.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/015_add_functions.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/016_add_valves_and_is_active.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/017_add_user_oauth_sub.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/migrations/018_add_function_is_global.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/internal/wrappers.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/auths.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/documents.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/functions.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/memories.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/models.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/prompts.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/tools.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/models/users.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/configs.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/documents.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/memories.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/models.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/prompts.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/webui/routers/users.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/data/readme.txt +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/README +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/env.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/script.py.mako +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/util.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/versions/6a39f3d8e55c_add_knowledge_table.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/versions/c0fbf31ca0db_update_file_table.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/migrations/versions/ca81bd47c050_add_config_table.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/favicon.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/fonts/NotoSans-Bold.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/fonts/NotoSans-Italic.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/fonts/NotoSans-Regular.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/fonts/NotoSansJP-Regular.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/fonts/NotoSansKR-Regular.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/fonts/NotoSansSC-Regular.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/logo.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/splash.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/static/user-import.csv +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/__init__.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/apps/webui/routers/test_auths.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/apps/webui/routers/test_chats.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/apps/webui/routers/test_models.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/apps/webui/routers/test_prompts.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/apps/webui/routers/test_users.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/util/abstract_integration_test.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/test/util/mock_user.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/logo.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/misc.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/schemas.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/security_headers.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/tools.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/utils/webhook.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/start.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/start_windows.bat +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/confirm_remove.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/data/example-doc.txt +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/e2e/registration.cy.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/e2e/settings.cy.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/support/index.d.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress/tsconfig.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/cypress.config.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/demo.gif +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docker-compose.a1111-test.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docker-compose.amdgpu.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docker-compose.api.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docker-compose.data.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docker-compose.gpu.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docker-compose.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docs/CONTRIBUTING.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docs/README.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/docs/SECURITY.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/hatch_build.py +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/i18next-parser.config.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/helm/README.md +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/kustomization.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/ollama-service.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/ollama-statefulset.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/open-webui.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/webui-deployment.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/webui-ingress.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/webui-pvc.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/base/webui-service.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/gpu/kustomization.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/kubernetes/manifest/gpu/ollama-statefulset-gpu.yaml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/postcss.config.js +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/run-compose.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/run-ollama-docker.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/run.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/scripts/prepare-pyodide.js +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/app.d.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/app.html +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/audio/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/auths/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/configs/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/files/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/functions/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/images/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/knowledge/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/memories/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/models/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/ollama/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/openai/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/prompts/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/tools/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/users/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/apis/utils/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/EditUserModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/Settings/Database.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/admin/UserChatsModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Controls/Valves.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/CallOverlay/VideoInputMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/CallOverlay.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/MessageInput/FilesOverlay.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Error.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Markdown/KatexRenderer.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Markdown.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Name.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/ProfileImage.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/ProfileImageBase.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/ResponseMessage/WebSearchResults.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Messages/Skeleton.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Overview/Flow.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Overview/Node.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/About.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Account/UpdatePassword.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Chats.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Models.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Personalization/EditMemoryModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Settings/Personalization/ManageModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/ShareChatModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/chat/Suggestions.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Banner.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Checkbox.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/CodeEditor.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/FileItem.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/FileItemModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Image.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/ImagePreview.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Loader.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Overlay.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Selector.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/SensitiveInput.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Spinner.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Tags/TagInput.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Tooltip.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/common/Valves.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/AdjustmentsHorizontal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ArchiveBox.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ArrowDownTray.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ArrowPath.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ArrowUpCircle.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ArrowsPointingOut.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/BarsArrowUp.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Bolt.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/BookOpen.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Bookmark.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/BookmarkSlash.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChatBubble.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChatBubbleOval.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChatBubbles.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Check.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChevronDown.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChevronLeft.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChevronRight.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChevronUp.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/ChevronUpDown.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Clipboard.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Cube.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/DocumentArrowUpSolid.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/DocumentDuplicate.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/EllipsisHorizontal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/EllipsisVertical.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/EyeSlash.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/FloppyDisk.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/FolderOpen.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/GarbageBin.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/GlobeAlt.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/GlobeAltSolid.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Headphone.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Heart.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Info.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Keyboard.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Lifebuoy.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/LightBlub.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Link.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/MagnifyingGlass.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Map.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/MenuLines.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Merge.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Pencil.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Plus.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/QuestionMarkCircle.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Search.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Share.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Sparkles.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/Star.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/User.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/WrenchSolid.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/icons/XMark.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Help/HelpMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Help.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/layout/Overlay/AccountPending.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Functions/FunctionMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Knowledge/CreateCollection.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Knowledge/ItemMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/ActionsSelector.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/Capabilities.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/FiltersSelector.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/Knowledge/Selector.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/Knowledge.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/ModelMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Models/ToolsSelector.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Prompts/PromptMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/Tools/ToolMenu.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/common/ManifestModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/components/workspace/common/ValvesModal.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/constants.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/i18n/index.ts +0 -0
- /open_webui-0.3.31.dev1/src/lib/i18n/locales/tk-TM/transaltion.json → /open_webui-0.3.33.dev1/src/lib/i18n/locales/tk-TM/translation.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/types/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/_template_old.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/characters/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/marked/extension.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/rag/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/utils/transitions/index.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/lib/workers/pyodide.worker.ts +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/admin/settings/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/c/[id]/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/functions/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/functions/create/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/functions/edit/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/knowledge/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/knowledge/[id]/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/knowledge/create/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/models/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/prompts/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/tools/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/tools/create/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/(app)/workspace/tools/edit/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/+error.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/+layout.js +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/+layout.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/auth/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/error/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/routes/s/[id]/+page.svelte +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/src/tailwind.css +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/assets/fonts/Archivo-Variable.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/assets/fonts/Inter-Variable.ttf +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/assets/fonts/Mona-Sans.woff2 +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/audio/greeting.mp3 +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/doge.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/favicon.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/manifest.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/opensearch.xml +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/pyodide/pyodide-lock.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/robots.txt +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/static/favicon.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/static/splash-dark.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/static/splash.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/static/user.png +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/svelte.config.js +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/tailwind.config.js +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/test/test_files/image_gen/sd-empty.pt +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/tsconfig.json +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/update_ollama_models.sh +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/uv.lock +0 -0
- {open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/vite.config.ts +0 -0
|
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.32] - 2024-10-06
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **🔢 Workspace Enhancements**: Added a display count for models, prompts, tools, and functions in the workspace, providing a clear overview and easier management.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- **🖥️ Web and YouTube Attachment Fix**: Resolved an issue where attaching web links and YouTube videos was malfunctioning, ensuring seamless integration and display within chats.
|
|
17
|
+
- **📞 Call Mode Activation on Landing Page**: Fixed a bug where call mode was not operational from the landing page.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- **🔄 URL Parameter Refinement**: Updated the 'tool_ids' URL parameter to 'tools' or 'tool-ids' for more intuitive and consistent user experience.
|
|
22
|
+
- **🎨 Floating Buttons Styling Update**: Refactored the styling of floating buttons to intelligently adjust to the left side when there isn't enough room on the right, improving interface usability and aesthetic.
|
|
23
|
+
- **🔧 Enhanced Accessibility for Floating Buttons**: Implemented the ability to close floating buttons with the 'Esc' key, making workflow smoother and more efficient for users navigating via keyboard.
|
|
24
|
+
- **🖇️ Updated Information URL**: Information URLs now direct users to a general release page rather than a version-specific URL, ensuring access to the latest and relevant details all in one place.
|
|
25
|
+
- **📦 Library Dependencies Update**: Upgraded dependencies to ensure compatibility and performance optimization for pip installs.
|
|
26
|
+
|
|
8
27
|
## [0.3.31] - 2024-10-06
|
|
9
28
|
|
|
10
29
|
### Added
|
|
@@ -23,6 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
23
42
|
- **🔍 Query Embedding**: Adjusted embedding behavior to enhance system performance by not repeating query embedding.
|
|
24
43
|
- **💾 Lazy Load Optimizations**: Implemented lazy loading of large dependencies to minimize initial memory usage, boosting performance.
|
|
25
44
|
- **🍏 Apple Touch Icon Support**: Optimizes the display of icons for web bookmarks on Apple mobile devices.
|
|
45
|
+
- **🔽 Expandable Content Markdown Support**: Introducing 'details', 'summary' tag support for creating expandable content sections in markdown, facilitating cleaner, organized documentation and interactive content display.
|
|
26
46
|
|
|
27
47
|
### Fixed
|
|
28
48
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# syntax=docker/dockerfile:1
|
|
2
2
|
# Initialize device type args
|
|
3
|
-
# use build args in the docker build
|
|
3
|
+
# use build args in the docker build command with --build-arg="BUILDARG=true"
|
|
4
4
|
ARG USE_CUDA=false
|
|
5
5
|
ARG USE_OLLAMA=false
|
|
6
6
|
# Tested with cu117 for CUDA 11 and cu121 for CUDA 12 (default)
|
|
@@ -11,6 +11,10 @@ ARG USE_CUDA_VER=cu121
|
|
|
11
11
|
# IMPORTANT: If you change the embedding model (sentence-transformers/all-MiniLM-L6-v2) and vice versa, you aren't able to use RAG Chat with your previous documents loaded in the WebUI! You need to re-embed them.
|
|
12
12
|
ARG USE_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
|
|
13
13
|
ARG USE_RERANKING_MODEL=""
|
|
14
|
+
|
|
15
|
+
# Tiktoken encoding name; models to use can be found at https://huggingface.co/models?library=tiktoken
|
|
16
|
+
ARG USE_TIKTOKEN_ENCODING_NAME="cl100k_base"
|
|
17
|
+
|
|
14
18
|
ARG BUILD_HASH=dev-build
|
|
15
19
|
# Override at your own risk - non-root configurations are untested
|
|
16
20
|
ARG UID=0
|
|
@@ -72,6 +76,10 @@ ENV RAG_EMBEDDING_MODEL="$USE_EMBEDDING_MODEL_DOCKER" \
|
|
|
72
76
|
RAG_RERANKING_MODEL="$USE_RERANKING_MODEL_DOCKER" \
|
|
73
77
|
SENTENCE_TRANSFORMERS_HOME="/app/backend/data/cache/embedding/models"
|
|
74
78
|
|
|
79
|
+
## Tiktoken model settings ##
|
|
80
|
+
ENV TIKTOKEN_ENCODING_NAME="$USE_TIKTOKEN_ENCODING_NAME" \
|
|
81
|
+
TIKTOKEN_CACHE_DIR="/app/backend/data/cache/tiktoken"
|
|
82
|
+
|
|
75
83
|
## Hugging Face download cache ##
|
|
76
84
|
ENV HF_HOME="/app/backend/data/cache/embedding/models"
|
|
77
85
|
|
|
@@ -131,11 +139,13 @@ RUN pip3 install uv && \
|
|
|
131
139
|
uv pip install --system -r requirements.txt --no-cache-dir && \
|
|
132
140
|
python -c "import os; from sentence_transformers import SentenceTransformer; SentenceTransformer(os.environ['RAG_EMBEDDING_MODEL'], device='cpu')" && \
|
|
133
141
|
python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])"; \
|
|
142
|
+
python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \
|
|
134
143
|
else \
|
|
135
144
|
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir && \
|
|
136
145
|
uv pip install --system -r requirements.txt --no-cache-dir && \
|
|
137
146
|
python -c "import os; from sentence_transformers import SentenceTransformer; SentenceTransformer(os.environ['RAG_EMBEDDING_MODEL'], device='cpu')" && \
|
|
138
147
|
python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])"; \
|
|
148
|
+
python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \
|
|
139
149
|
fi; \
|
|
140
150
|
chown -R $UID:$GID /app/backend/data/
|
|
141
151
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: open-webui
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.33.dev1
|
|
4
4
|
Summary: Open WebUI
|
|
5
5
|
Author-email: Timothy Jaeryang Baek <tim@openwebui.com>
|
|
6
6
|
License: MIT License
|
|
@@ -32,11 +32,12 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
32
32
|
Classifier: Topic :: Communications :: Chat
|
|
33
33
|
Classifier: Topic :: Multimedia
|
|
34
34
|
Requires-Python: <3.12.0a1,>=3.11
|
|
35
|
-
Requires-Dist: aiohttp==3.10.
|
|
35
|
+
Requires-Dist: aiohttp==3.10.8
|
|
36
36
|
Requires-Dist: alembic==1.13.2
|
|
37
37
|
Requires-Dist: anthropic
|
|
38
38
|
Requires-Dist: apscheduler==3.10.4
|
|
39
39
|
Requires-Dist: argon2-cffi==23.1.0
|
|
40
|
+
Requires-Dist: async-timeout
|
|
40
41
|
Requires-Dist: authlib==1.3.2
|
|
41
42
|
Requires-Dist: bcrypt==4.2.0
|
|
42
43
|
Requires-Dist: black==24.8.0
|
|
@@ -45,7 +46,7 @@ Requires-Dist: chromadb==0.5.9
|
|
|
45
46
|
Requires-Dist: colbert-ai==0.2.21
|
|
46
47
|
Requires-Dist: docker~=7.1.0
|
|
47
48
|
Requires-Dist: docx2txt==0.8
|
|
48
|
-
Requires-Dist: duckduckgo-search~=6.2.
|
|
49
|
+
Requires-Dist: duckduckgo-search~=6.2.13
|
|
49
50
|
Requires-Dist: einops==0.8.0
|
|
50
51
|
Requires-Dist: extract-msg
|
|
51
52
|
Requires-Dist: fake-useragent==1.5.1
|
|
@@ -56,7 +57,8 @@ Requires-Dist: flask==3.0.3
|
|
|
56
57
|
Requires-Dist: fpdf2==2.7.9
|
|
57
58
|
Requires-Dist: ftfy==6.2.3
|
|
58
59
|
Requires-Dist: google-generativeai==0.7.2
|
|
59
|
-
Requires-Dist:
|
|
60
|
+
Requires-Dist: googleapis-common-protos==1.63.2
|
|
61
|
+
Requires-Dist: langchain-chroma==0.1.4
|
|
60
62
|
Requires-Dist: langchain-community==0.2.12
|
|
61
63
|
Requires-Dist: langchain==0.2.15
|
|
62
64
|
Requires-Dist: langfuse==2.44.0
|
|
@@ -65,22 +67,23 @@ Requires-Dist: nltk==3.9.1
|
|
|
65
67
|
Requires-Dist: openai
|
|
66
68
|
Requires-Dist: opencv-python-headless==4.10.0.84
|
|
67
69
|
Requires-Dist: openpyxl==3.1.5
|
|
68
|
-
Requires-Dist: pandas==2.2.
|
|
70
|
+
Requires-Dist: pandas==2.2.3
|
|
69
71
|
Requires-Dist: passlib[bcrypt]==1.7.4
|
|
70
72
|
Requires-Dist: peewee-migrate==1.12.2
|
|
71
73
|
Requires-Dist: peewee==3.17.6
|
|
72
74
|
Requires-Dist: psutil
|
|
73
75
|
Requires-Dist: psycopg2-binary==2.9.9
|
|
74
|
-
Requires-Dist: pydantic==2.
|
|
76
|
+
Requires-Dist: pydantic==2.9.2
|
|
75
77
|
Requires-Dist: pydub
|
|
76
78
|
Requires-Dist: pyjwt[crypto]==2.9.0
|
|
79
|
+
Requires-Dist: pymdown-extensions==10.11.2
|
|
77
80
|
Requires-Dist: pymilvus==2.4.7
|
|
78
81
|
Requires-Dist: pymongo
|
|
79
82
|
Requires-Dist: pymysql==1.1.1
|
|
80
83
|
Requires-Dist: pypandoc==1.13
|
|
81
84
|
Requires-Dist: pypdf==4.3.1
|
|
82
85
|
Requires-Dist: pytest-docker~=3.1.1
|
|
83
|
-
Requires-Dist: pytest~=8.
|
|
86
|
+
Requires-Dist: pytest~=8.3.2
|
|
84
87
|
Requires-Dist: python-jose==3.3.0
|
|
85
88
|
Requires-Dist: python-multipart==0.0.9
|
|
86
89
|
Requires-Dist: python-pptx==1.0.0
|
|
@@ -91,12 +94,13 @@ Requires-Dist: rank-bm25==0.2.2
|
|
|
91
94
|
Requires-Dist: rapidocr-onnxruntime==1.3.24
|
|
92
95
|
Requires-Dist: redis
|
|
93
96
|
Requires-Dist: requests==2.32.3
|
|
94
|
-
Requires-Dist: sentence-transformers==3.0
|
|
97
|
+
Requires-Dist: sentence-transformers==3.2.0
|
|
95
98
|
Requires-Dist: sqlalchemy==2.0.32
|
|
96
99
|
Requires-Dist: tiktoken
|
|
97
100
|
Requires-Dist: unstructured==0.15.9
|
|
98
101
|
Requires-Dist: uvicorn[standard]==0.30.6
|
|
99
102
|
Requires-Dist: validators==0.33.0
|
|
103
|
+
Requires-Dist: xhtml2pdf==0.2.16
|
|
100
104
|
Requires-Dist: xlrd==2.0.1
|
|
101
105
|
Requires-Dist: youtube-transcript-api==0.6.2
|
|
102
106
|
Description-Content-Type: text/markdown
|
|
@@ -18,7 +18,7 @@ If you're experiencing connection issues, it’s often due to the WebUI docker c
|
|
|
18
18
|
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
### Error on Slow
|
|
21
|
+
### Error on Slow Responses for Ollama
|
|
22
22
|
|
|
23
23
|
Open WebUI has a default timeout of 5 minutes for Ollama to finish generating the response. If needed, this can be adjusted via the environment variable AIOHTTP_CLIENT_TIMEOUT, which sets the timeout in seconds.
|
|
24
24
|
|
|
@@ -63,6 +63,9 @@ app.state.config.STT_OPENAI_API_KEY = AUDIO_STT_OPENAI_API_KEY
|
|
|
63
63
|
app.state.config.STT_ENGINE = AUDIO_STT_ENGINE
|
|
64
64
|
app.state.config.STT_MODEL = AUDIO_STT_MODEL
|
|
65
65
|
|
|
66
|
+
app.state.config.WHISPER_MODEL = WHISPER_MODEL
|
|
67
|
+
app.state.faster_whisper_model = None
|
|
68
|
+
|
|
66
69
|
app.state.config.TTS_OPENAI_API_BASE_URL = AUDIO_TTS_OPENAI_API_BASE_URL
|
|
67
70
|
app.state.config.TTS_OPENAI_API_KEY = AUDIO_TTS_OPENAI_API_KEY
|
|
68
71
|
app.state.config.TTS_ENGINE = AUDIO_TTS_ENGINE
|
|
@@ -82,6 +85,31 @@ SPEECH_CACHE_DIR = Path(CACHE_DIR).joinpath("./audio/speech/")
|
|
|
82
85
|
SPEECH_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
|
83
86
|
|
|
84
87
|
|
|
88
|
+
def set_faster_whisper_model(model: str, auto_update: bool = False):
|
|
89
|
+
if model and app.state.config.STT_ENGINE == "":
|
|
90
|
+
from faster_whisper import WhisperModel
|
|
91
|
+
|
|
92
|
+
faster_whisper_kwargs = {
|
|
93
|
+
"model_size_or_path": model,
|
|
94
|
+
"device": whisper_device_type,
|
|
95
|
+
"compute_type": "int8",
|
|
96
|
+
"download_root": WHISPER_MODEL_DIR,
|
|
97
|
+
"local_files_only": not auto_update,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
app.state.faster_whisper_model = WhisperModel(**faster_whisper_kwargs)
|
|
102
|
+
except Exception:
|
|
103
|
+
log.warning(
|
|
104
|
+
"WhisperModel initialization failed, attempting download with local_files_only=False"
|
|
105
|
+
)
|
|
106
|
+
faster_whisper_kwargs["local_files_only"] = False
|
|
107
|
+
app.state.faster_whisper_model = WhisperModel(**faster_whisper_kwargs)
|
|
108
|
+
|
|
109
|
+
else:
|
|
110
|
+
app.state.faster_whisper_model = None
|
|
111
|
+
|
|
112
|
+
|
|
85
113
|
class TTSConfigForm(BaseModel):
|
|
86
114
|
OPENAI_API_BASE_URL: str
|
|
87
115
|
OPENAI_API_KEY: str
|
|
@@ -99,6 +127,7 @@ class STTConfigForm(BaseModel):
|
|
|
99
127
|
OPENAI_API_KEY: str
|
|
100
128
|
ENGINE: str
|
|
101
129
|
MODEL: str
|
|
130
|
+
WHISPER_MODEL: str
|
|
102
131
|
|
|
103
132
|
|
|
104
133
|
class AudioConfigUpdateForm(BaseModel):
|
|
@@ -152,6 +181,7 @@ async def get_audio_config(user=Depends(get_admin_user)):
|
|
|
152
181
|
"OPENAI_API_KEY": app.state.config.STT_OPENAI_API_KEY,
|
|
153
182
|
"ENGINE": app.state.config.STT_ENGINE,
|
|
154
183
|
"MODEL": app.state.config.STT_MODEL,
|
|
184
|
+
"WHISPER_MODEL": app.state.config.WHISPER_MODEL,
|
|
155
185
|
},
|
|
156
186
|
}
|
|
157
187
|
|
|
@@ -176,6 +206,8 @@ async def update_audio_config(
|
|
|
176
206
|
app.state.config.STT_OPENAI_API_KEY = form_data.stt.OPENAI_API_KEY
|
|
177
207
|
app.state.config.STT_ENGINE = form_data.stt.ENGINE
|
|
178
208
|
app.state.config.STT_MODEL = form_data.stt.MODEL
|
|
209
|
+
app.state.config.WHISPER_MODEL = form_data.stt.WHISPER_MODEL
|
|
210
|
+
set_faster_whisper_model(form_data.stt.WHISPER_MODEL, WHISPER_MODEL_AUTO_UPDATE)
|
|
179
211
|
|
|
180
212
|
return {
|
|
181
213
|
"tts": {
|
|
@@ -194,6 +226,7 @@ async def update_audio_config(
|
|
|
194
226
|
"OPENAI_API_KEY": app.state.config.STT_OPENAI_API_KEY,
|
|
195
227
|
"ENGINE": app.state.config.STT_ENGINE,
|
|
196
228
|
"MODEL": app.state.config.STT_MODEL,
|
|
229
|
+
"WHISPER_MODEL": app.state.config.WHISPER_MODEL,
|
|
197
230
|
},
|
|
198
231
|
}
|
|
199
232
|
|
|
@@ -367,27 +400,10 @@ def transcribe(file_path):
|
|
|
367
400
|
id = filename.split(".")[0]
|
|
368
401
|
|
|
369
402
|
if app.state.config.STT_ENGINE == "":
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
whisper_kwargs = {
|
|
373
|
-
"model_size_or_path": WHISPER_MODEL,
|
|
374
|
-
"device": whisper_device_type,
|
|
375
|
-
"compute_type": "int8",
|
|
376
|
-
"download_root": WHISPER_MODEL_DIR,
|
|
377
|
-
"local_files_only": not WHISPER_MODEL_AUTO_UPDATE,
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
log.debug(f"whisper_kwargs: {whisper_kwargs}")
|
|
381
|
-
|
|
382
|
-
try:
|
|
383
|
-
model = WhisperModel(**whisper_kwargs)
|
|
384
|
-
except Exception:
|
|
385
|
-
log.warning(
|
|
386
|
-
"WhisperModel initialization failed, attempting download with local_files_only=False"
|
|
387
|
-
)
|
|
388
|
-
whisper_kwargs["local_files_only"] = False
|
|
389
|
-
model = WhisperModel(**whisper_kwargs)
|
|
403
|
+
if app.state.faster_whisper_model is None:
|
|
404
|
+
set_faster_whisper_model(app.state.config.WHISPER_MODEL)
|
|
390
405
|
|
|
406
|
+
model = app.state.faster_whisper_model
|
|
391
407
|
segments, info = model.transcribe(file_path, beam_size=5)
|
|
392
408
|
log.info(
|
|
393
409
|
"Detected language '%s' with probability %f"
|
|
@@ -395,7 +411,6 @@ def transcribe(file_path):
|
|
|
395
411
|
)
|
|
396
412
|
|
|
397
413
|
transcript = "".join([segment.text for segment in list(segments)])
|
|
398
|
-
|
|
399
414
|
data = {"text": transcript.strip()}
|
|
400
415
|
|
|
401
416
|
# save the transcript to a json file
|
|
@@ -403,7 +418,7 @@ def transcribe(file_path):
|
|
|
403
418
|
with open(transcript_file, "w") as f:
|
|
404
419
|
json.dump(data, f)
|
|
405
420
|
|
|
406
|
-
|
|
421
|
+
log.debug(data)
|
|
407
422
|
return data
|
|
408
423
|
elif app.state.config.STT_ENGINE == "openai":
|
|
409
424
|
if is_mp4_audio(file_path):
|
|
@@ -417,7 +432,7 @@ def transcribe(file_path):
|
|
|
417
432
|
files = {"file": (filename, open(file_path, "rb"))}
|
|
418
433
|
data = {"model": app.state.config.STT_MODEL}
|
|
419
434
|
|
|
420
|
-
|
|
435
|
+
log.debug(files, data)
|
|
421
436
|
|
|
422
437
|
r = None
|
|
423
438
|
try:
|
|
@@ -450,7 +465,7 @@ def transcribe(file_path):
|
|
|
450
465
|
except Exception:
|
|
451
466
|
error_detail = f"External: {e}"
|
|
452
467
|
|
|
453
|
-
raise error_detail
|
|
468
|
+
raise Exception(error_detail)
|
|
454
469
|
|
|
455
470
|
|
|
456
471
|
@app.post("/transcriptions")
|
{open_webui-0.3.31.dev1 → open_webui-0.3.33.dev1}/backend/open_webui/apps/images/utils/comfyui.py
RENAMED
|
@@ -125,22 +125,34 @@ async def comfyui_generate_image(
|
|
|
125
125
|
workflow[node_id]["inputs"][node.key] = model
|
|
126
126
|
elif node.type == "prompt":
|
|
127
127
|
for node_id in node.node_ids:
|
|
128
|
-
workflow[node_id]["inputs"][
|
|
128
|
+
workflow[node_id]["inputs"][
|
|
129
|
+
node.key if node.key else "text"
|
|
130
|
+
] = payload.prompt
|
|
129
131
|
elif node.type == "negative_prompt":
|
|
130
132
|
for node_id in node.node_ids:
|
|
131
|
-
workflow[node_id]["inputs"][
|
|
133
|
+
workflow[node_id]["inputs"][
|
|
134
|
+
node.key if node.key else "text"
|
|
135
|
+
] = payload.negative_prompt
|
|
132
136
|
elif node.type == "width":
|
|
133
137
|
for node_id in node.node_ids:
|
|
134
|
-
workflow[node_id]["inputs"][
|
|
138
|
+
workflow[node_id]["inputs"][
|
|
139
|
+
node.key if node.key else "width"
|
|
140
|
+
] = payload.width
|
|
135
141
|
elif node.type == "height":
|
|
136
142
|
for node_id in node.node_ids:
|
|
137
|
-
workflow[node_id]["inputs"][
|
|
143
|
+
workflow[node_id]["inputs"][
|
|
144
|
+
node.key if node.key else "height"
|
|
145
|
+
] = payload.height
|
|
138
146
|
elif node.type == "n":
|
|
139
147
|
for node_id in node.node_ids:
|
|
140
|
-
workflow[node_id]["inputs"][
|
|
148
|
+
workflow[node_id]["inputs"][
|
|
149
|
+
node.key if node.key else "batch_size"
|
|
150
|
+
] = payload.n
|
|
141
151
|
elif node.type == "steps":
|
|
142
152
|
for node_id in node.node_ids:
|
|
143
|
-
workflow[node_id]["inputs"][
|
|
153
|
+
workflow[node_id]["inputs"][
|
|
154
|
+
node.key if node.key else "steps"
|
|
155
|
+
] = payload.steps
|
|
144
156
|
elif node.type == "seed":
|
|
145
157
|
seed = (
|
|
146
158
|
payload.seed
|
|
@@ -547,8 +547,8 @@ class GenerateEmbeddingsForm(BaseModel):
|
|
|
547
547
|
|
|
548
548
|
class GenerateEmbedForm(BaseModel):
|
|
549
549
|
model: str
|
|
550
|
-
input: str
|
|
551
|
-
truncate: Optional[bool]
|
|
550
|
+
input: list[str] | str
|
|
551
|
+
truncate: Optional[bool] = None
|
|
552
552
|
options: Optional[dict] = None
|
|
553
553
|
keep_alive: Optional[Union[int, str]] = None
|
|
554
554
|
|
|
@@ -560,48 +560,7 @@ async def generate_embeddings(
|
|
|
560
560
|
url_idx: Optional[int] = None,
|
|
561
561
|
user=Depends(get_verified_user),
|
|
562
562
|
):
|
|
563
|
-
|
|
564
|
-
model = form_data.model
|
|
565
|
-
|
|
566
|
-
if ":" not in model:
|
|
567
|
-
model = f"{model}:latest"
|
|
568
|
-
|
|
569
|
-
if model in app.state.MODELS:
|
|
570
|
-
url_idx = random.choice(app.state.MODELS[model]["urls"])
|
|
571
|
-
else:
|
|
572
|
-
raise HTTPException(
|
|
573
|
-
status_code=400,
|
|
574
|
-
detail=ERROR_MESSAGES.MODEL_NOT_FOUND(form_data.model),
|
|
575
|
-
)
|
|
576
|
-
|
|
577
|
-
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
|
|
578
|
-
log.info(f"url: {url}")
|
|
579
|
-
|
|
580
|
-
r = requests.request(
|
|
581
|
-
method="POST",
|
|
582
|
-
url=f"{url}/api/embed",
|
|
583
|
-
headers={"Content-Type": "application/json"},
|
|
584
|
-
data=form_data.model_dump_json(exclude_none=True).encode(),
|
|
585
|
-
)
|
|
586
|
-
try:
|
|
587
|
-
r.raise_for_status()
|
|
588
|
-
|
|
589
|
-
return r.json()
|
|
590
|
-
except Exception as e:
|
|
591
|
-
log.exception(e)
|
|
592
|
-
error_detail = "Open WebUI: Server Connection Error"
|
|
593
|
-
if r is not None:
|
|
594
|
-
try:
|
|
595
|
-
res = r.json()
|
|
596
|
-
if "error" in res:
|
|
597
|
-
error_detail = f"Ollama: {res['error']}"
|
|
598
|
-
except Exception:
|
|
599
|
-
error_detail = f"Ollama: {e}"
|
|
600
|
-
|
|
601
|
-
raise HTTPException(
|
|
602
|
-
status_code=r.status_code if r else 500,
|
|
603
|
-
detail=error_detail,
|
|
604
|
-
)
|
|
563
|
+
return generate_ollama_batch_embeddings(form_data, url_idx)
|
|
605
564
|
|
|
606
565
|
|
|
607
566
|
@app.post("/api/embeddings")
|
|
@@ -611,6 +570,15 @@ async def generate_embeddings(
|
|
|
611
570
|
url_idx: Optional[int] = None,
|
|
612
571
|
user=Depends(get_verified_user),
|
|
613
572
|
):
|
|
573
|
+
return generate_ollama_embeddings(form_data=form_data, url_idx=url_idx)
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
def generate_ollama_embeddings(
|
|
577
|
+
form_data: GenerateEmbeddingsForm,
|
|
578
|
+
url_idx: Optional[int] = None,
|
|
579
|
+
):
|
|
580
|
+
log.info(f"generate_ollama_embeddings {form_data}")
|
|
581
|
+
|
|
614
582
|
if url_idx is None:
|
|
615
583
|
model = form_data.model
|
|
616
584
|
|
|
@@ -637,7 +605,14 @@ async def generate_embeddings(
|
|
|
637
605
|
try:
|
|
638
606
|
r.raise_for_status()
|
|
639
607
|
|
|
640
|
-
|
|
608
|
+
data = r.json()
|
|
609
|
+
|
|
610
|
+
log.info(f"generate_ollama_embeddings {data}")
|
|
611
|
+
|
|
612
|
+
if "embedding" in data:
|
|
613
|
+
return data
|
|
614
|
+
else:
|
|
615
|
+
raise Exception("Something went wrong :/")
|
|
641
616
|
except Exception as e:
|
|
642
617
|
log.exception(e)
|
|
643
618
|
error_detail = "Open WebUI: Server Connection Error"
|
|
@@ -655,11 +630,11 @@ async def generate_embeddings(
|
|
|
655
630
|
)
|
|
656
631
|
|
|
657
632
|
|
|
658
|
-
def
|
|
659
|
-
form_data:
|
|
633
|
+
def generate_ollama_batch_embeddings(
|
|
634
|
+
form_data: GenerateEmbedForm,
|
|
660
635
|
url_idx: Optional[int] = None,
|
|
661
636
|
):
|
|
662
|
-
log.info(f"
|
|
637
|
+
log.info(f"generate_ollama_batch_embeddings {form_data}")
|
|
663
638
|
|
|
664
639
|
if url_idx is None:
|
|
665
640
|
model = form_data.model
|
|
@@ -680,7 +655,7 @@ def generate_ollama_embeddings(
|
|
|
680
655
|
|
|
681
656
|
r = requests.request(
|
|
682
657
|
method="POST",
|
|
683
|
-
url=f"{url}/api/
|
|
658
|
+
url=f"{url}/api/embed",
|
|
684
659
|
headers={"Content-Type": "application/json"},
|
|
685
660
|
data=form_data.model_dump_json(exclude_none=True).encode(),
|
|
686
661
|
)
|
|
@@ -689,10 +664,10 @@ def generate_ollama_embeddings(
|
|
|
689
664
|
|
|
690
665
|
data = r.json()
|
|
691
666
|
|
|
692
|
-
log.info(f"
|
|
667
|
+
log.info(f"generate_ollama_batch_embeddings {data}")
|
|
693
668
|
|
|
694
|
-
if "
|
|
695
|
-
return data
|
|
669
|
+
if "embeddings" in data:
|
|
670
|
+
return data
|
|
696
671
|
else:
|
|
697
672
|
raise Exception("Something went wrong :/")
|
|
698
673
|
except Exception as e:
|
|
@@ -788,8 +763,7 @@ async def generate_chat_completion(
|
|
|
788
763
|
user=Depends(get_verified_user),
|
|
789
764
|
):
|
|
790
765
|
payload = {**form_data.model_dump(exclude_none=True)}
|
|
791
|
-
log.debug(f"
|
|
792
|
-
|
|
766
|
+
log.debug(f"generate_chat_completion() - 1.payload = {payload}")
|
|
793
767
|
if "metadata" in payload:
|
|
794
768
|
del payload["metadata"]
|
|
795
769
|
|
|
@@ -824,7 +798,7 @@ async def generate_chat_completion(
|
|
|
824
798
|
|
|
825
799
|
url = get_ollama_url(url_idx, payload["model"])
|
|
826
800
|
log.info(f"url: {url}")
|
|
827
|
-
log.debug(payload)
|
|
801
|
+
log.debug(f"generate_chat_completion() - 2.payload = {payload}")
|
|
828
802
|
|
|
829
803
|
return await post_streaming_url(
|
|
830
804
|
f"{url}/api/chat",
|
|
@@ -18,7 +18,10 @@ from open_webui.config import (
|
|
|
18
18
|
OPENAI_API_KEYS,
|
|
19
19
|
AppConfig,
|
|
20
20
|
)
|
|
21
|
-
from open_webui.env import
|
|
21
|
+
from open_webui.env import (
|
|
22
|
+
AIOHTTP_CLIENT_TIMEOUT,
|
|
23
|
+
AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
|
|
24
|
+
)
|
|
22
25
|
|
|
23
26
|
from open_webui.constants import ERROR_MESSAGES
|
|
24
27
|
from open_webui.env import SRC_LOG_LEVELS
|
|
@@ -179,7 +182,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
|
|
179
182
|
|
|
180
183
|
|
|
181
184
|
async def fetch_url(url, key):
|
|
182
|
-
timeout = aiohttp.ClientTimeout(total=
|
|
185
|
+
timeout = aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST)
|
|
183
186
|
try:
|
|
184
187
|
headers = {"Authorization": f"Bearer {key}"}
|
|
185
188
|
async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
|
|
@@ -237,9 +240,7 @@ def merge_models_lists(model_lists):
|
|
|
237
240
|
|
|
238
241
|
|
|
239
242
|
def is_openai_api_disabled():
|
|
240
|
-
|
|
241
|
-
no_keys = len(api_keys) == 1 and api_keys[0] == ""
|
|
242
|
-
return no_keys or not app.state.config.ENABLE_OPENAI_API
|
|
243
|
+
return not app.state.config.ENABLE_OPENAI_API
|
|
243
244
|
|
|
244
245
|
|
|
245
246
|
async def get_all_models_raw() -> list:
|