Compare commits

...
5917 Commits
Author SHA1 Message Date
Tim Jaeryang Baek f966935d1d Merge pull request #15448 from open-webui/dev
0.6.16
2025-07-14 21:39:26 +04:00
Timothy Jaeryang Baek 045984e86f doc: changelog 2025-07-14 21:25:00 +04:00
Timothy Jaeryang Baek b1752cfb6a refac: styling 2025-07-14 21:24:31 +04:00
Tim Jaeryang Baek 21eff61940 Merge pull request #15707 from Classic298/patch-1
fix: the changelog
2025-07-14 21:21:47 +04:00
Classic298 4897cfa9c8 rem backticks and md tags 2025-07-14 19:21:08 +02:00
Tim Jaeryang Baek f79746b148 Merge pull request #15706 from qingchunnh/Update_zh-CN-25715
i18n: Update zh-CN
2025-07-14 21:20:26 +04:00
Classic298 ebd2abdd0a Update CHANGELOG.md 2025-07-14 19:17:16 +02:00
Classic298 69fd8436aa Update CHANGELOG.md 2025-07-14 18:52:07 +02:00
Classic298 7063d7d103 Update CHANGELOG.md 2025-07-14 18:42:53 +02:00
Classic298 541f7bc82c Update CHANGELOG.md 2025-07-14 18:32:57 +02:00
qingchun ed8438628e i18n: Update zh-CN 2025-07-15 00:14:28 +08:00
Timothy Jaeryang Baek 288fba874e refac: styling 2025-07-14 20:08:49 +04:00
Timothy Jaeryang Baek 8f5d23ec37 refac 2025-07-14 19:57:41 +04:00
Timothy Jaeryang Baek d5b8acfbe7 chore: dep bump pyproject 2025-07-14 19:53:06 +04:00
Timothy Jaeryang Baek 50ed194c48 doc: changelog 2025-07-14 19:51:12 +04:00
Timothy Jaeryang Baek 8b8ce2592d refac: styling 2025-07-14 19:34:40 +04:00
Timothy Jaeryang Baek 493e147be6 chore: format 2025-07-14 19:13:54 +04:00
Timothy Jaeryang Baek 51691adcbc refac 2025-07-14 19:12:17 +04:00
Timothy Jaeryang Baek 6a4542a321 refac: folder delete 2025-07-14 19:09:54 +04:00
Timothy Jaeryang Baek 92c9068369 refac 2025-07-14 17:50:03 +04:00
Timothy Jaeryang Baek f19d5b05a8 refac: styling 2025-07-14 17:47:21 +04:00
Timothy Jaeryang Baek 7f1f39058a enh/refac: distributed crdt 2025-07-14 17:14:56 +04:00
Timothy Jaeryang Baek fb71a4106f refac 2025-07-14 16:45:30 +04:00
Timothy Jaeryang Baek d76a3d5ce2 refac: ydoc 2025-07-14 16:29:42 +04:00
Timothy Jaeryang Baek 203c5b1956 refac 2025-07-14 14:37:28 +04:00
Timothy Jaeryang Baek f402957f05 refac 2025-07-14 14:35:13 +04:00
Timothy Jaeryang Baek 18bd83413b refac 2025-07-14 14:05:06 +04:00
Timothy Jaeryang Baek 0013f5c1fc refac/enh: forward user info header to reranker 2025-07-14 13:59:10 +04:00
Timothy Jaeryang Baek b4f04ff3a7 enh/refac: pgvector pool support 2025-07-14 12:18:44 +04:00
Timothy Jaeryang Baek 9c49d9e641 refac: aria label model item 2025-07-14 12:09:08 +04:00
Tim Jaeryang Baek c067cf996e Merge pull request #15687 from Classic298/patch-1
i18n: german translations
2025-07-14 10:12:19 +04:00
Tim Jaeryang Baek d87d6f99d3 Merge pull request #15692 from qingchunnh/Update_zh-CN-25714
i18n: Update & Improve & Fix zh-CN
2025-07-14 10:12:07 +04:00
Tim Jaeryang Baek a03bdba711 Merge pull request #15685 from rgaricano/dev-add_requirements_lib
UPD: requirements.txt adding httpx & optionals
2025-07-14 10:11:27 +04:00
qingchun 6649201fe5 i18n: Fix zh-CN 2025-07-14 02:07:09 +08:00
qingchun e89e0dea4a i18n: Improve zh-CN 2025-07-14 01:56:57 +08:00
qingchun 6ee0c0411e i18n: Update & Improve zh-CN 2025-07-14 01:45:22 +08:00
Timothy Jaeryang Baek 8e7731f139 refac: styling 2025-07-13 14:10:35 +04:00
Classic298 30fd6822f8 i18n: german translations 2025-07-13 12:08:58 +02:00
Timothy Jaeryang Baek a123629f74 refac 2025-07-13 14:08:19 +04:00
_00_ 3cde5fb3aa UPD: requirements.txt adding httpx
Update requirements.txt to add httpx and optional support for:

h2 - HTTP/2 support. (Optional, with httpx[http2])
socksio - SOCKS proxy support. (Optional, with httpx[socks])
rich - Rich terminal support. (Optional, with httpx[cli])
click - Command line client support. (Optional, with httpx[cli])
brotli or brotlicffi - Decoding for "brotli" compressed responses. (Optional, with httpx[brotli])
zstandard - Decoding for "zstd" compressed responses. (Optional, with httpx[zstd])
httpx[socks,http2,zstd,cli,brotli]==0.28.1
2025-07-13 11:01:25 +02:00
Tim Jaeryang Baek bd44ab64d0 refac: note editor model selection 2025-07-13 04:53:27 +04:00
Tim Jaeryang Baek d4dfece4f9 Merge pull request #15675 from rgaricano/dev_es-ES
UPD: Locale es-ES translation, rev.1 updated to v.0.6.16
2025-07-13 03:53:24 +04:00
Timothy Jaeryang Baek 98d38657cb refac: styling 2025-07-13 03:52:06 +04:00
Timothy Jaeryang Baek 6f55679a8a refac 2025-07-13 03:50:35 +04:00
Timothy Jaeryang Baek 217bd440c3 refac 2025-07-13 03:46:39 +04:00
Timothy Jaeryang Baek 2b9e30a107 refac 2025-07-13 03:43:30 +04:00
Timothy Jaeryang Baek 57156065e3 refac 2025-07-13 03:30:42 +04:00
Timothy Jaeryang Baek 751e32e427 refac 2025-07-13 03:26:52 +04:00
Timothy Jaeryang Baek ada78cb952 chore: format 2025-07-13 03:23:38 +04:00
Timothy Jaeryang BaekandClassic298 7607c53bd5 feat: folders as projects
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-07-13 03:23:05 +04:00
_00_ 027c08430a UPD: Locale es-ES translation, rev.1 updated to v.0.6.16
UPD: Locale es-ES translation, updated to v.0.6.16
rev.1

Description:

es-ES translation updated to v.0.6.16
2025-07-13 00:55:32 +02:00
Timothy Jaeryang BaekandClassic298 5abc03f4dd enh: enter into folder
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-07-13 02:40:48 +04:00
Timothy Jaeryang BaekandClassic298 6176dba3c9 refac
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-07-13 01:50:01 +04:00
Timothy Jaeryang BaekandClassic298 80f3c97668 refac: folder chat handling
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-07-13 01:26:56 +04:00
Timothy Jaeryang BaekandClassic298 5b14d15b00 feat: migrate folder table
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-07-13 00:51:58 +04:00
Timothy Jaeryang Baek 847a78a276 refac: styling 2025-07-13 00:37:24 +04:00
Timothy Jaeryang Baek d8ccb087ac refac: styling 2025-07-13 00:37:01 +04:00
Timothy Jaeryang Baek 3b4344c1bf fix: leaflet marker 2025-07-13 00:33:19 +04:00
Timothy Jaeryang Baek 87847ab31a chore: format 2025-07-13 00:15:16 +04:00
Timothy Jaeryang Baek 9ae22c5efe refac 2025-07-13 00:00:40 +04:00
Timothy Jaeryang Baek b5cbac7b28 refac 2025-07-12 23:50:41 +04:00
Timothy Jaeryang Baek 3be734fd84 enh: note editor prompts 2025-07-12 23:47:27 +04:00
Timothy Jaeryang Baek 6f896c4352 enh: note editor prompts 2025-07-12 23:34:40 +04:00
Timothy Jaeryang Baek 3e01286b61 refac 2025-07-12 23:31:04 +04:00
Timothy Jaeryang Baek b711c88bab refac: note browser title 2025-07-12 23:26:01 +04:00
Timothy Jaeryang Baek de343021c1 enh: note search 2025-07-12 23:08:46 +04:00
Timothy Jaeryang Baek f5613fb3c2 refac 2025-07-12 23:00:46 +04:00
Timothy Jaeryang Baek 9cabef67a7 refac 2025-07-12 22:55:45 +04:00
Timothy Jaeryang Baek 0df488e456 enh: generate note title 2025-07-12 22:43:09 +04:00
Timothy Jaeryang Baek bc7e5c7c04 refac 2025-07-12 22:18:52 +04:00
Timothy Jaeryang Baek 12edc3221e refac: styling 2025-07-12 22:14:41 +04:00
Timothy Jaeryang Baek 60fb643109 refac/fix: code block input 2025-07-12 21:54:05 +04:00
Timothy Jaeryang Baek fb78bff3c0 refac 2025-07-12 21:39:31 +04:00
Timothy Jaeryang Baek ce7cc37077 refac 2025-07-12 18:15:35 +04:00
Tim Jaeryang Baek 81d6e217f1 Merge pull request #15670 from rgaricano/dev_es-ES
UPD: Locale es-ES translation, updated to v.0.6.16
2025-07-12 17:18:57 +04:00
Tim Jaeryang Baek 33487283e8 Merge pull request #15669 from moblangeois/dev
i18n: Update fr-FR and fr-CA translation
2025-07-12 17:18:43 +04:00
Timothy Jaeryang Baek af59bee2ea refac 2025-07-12 17:17:31 +04:00
_00_ d3da236d96 UPD: Locale es-ES translation, updated to v.0.6.16
UPD: Locale es-ES translation, updated to v.0.6.16
2025-07-12 13:44:28 +02:00
Tim Jaeryang Baek fbaab9e446 refac 2025-07-12 15:36:30 +04:00
Tim Jaeryang Baek 4a69d857f3 refac 2025-07-12 15:32:26 +04:00
Tim Jaeryang Baek 290f4023b1 refac: add copy link functionality to notes view 2025-07-12 15:20:21 +04:00
Morgan Blangeois 4da2b050c6 Update translations files for fr-Fr and fr-CA 2025-07-12 10:12:11 +00:00
Timothy Jaeryang Baek d99698f7eb refac 2025-07-12 03:39:58 +04:00
Timothy Jaeryang Baek 12c4a7a3f7 refac: styling 2025-07-12 03:15:31 +04:00
Timothy Jaeryang Baek 955c2e2570 refac 2025-07-12 03:00:40 +04:00
Timothy Jaeryang Baek 627f680659 refac 2025-07-12 02:57:11 +04:00
Timothy Jaeryang Baek 01420fd189 refac 2025-07-12 02:51:51 +04:00
Timothy Jaeryang Baek 4351702587 refac 2025-07-12 02:38:52 +04:00
Timothy Jaeryang Baek b52a162597 refac 2025-07-12 02:20:32 +04:00
Timothy Jaeryang Baek baa1a44397 refac 2025-07-12 02:17:52 +04:00
Timothy Jaeryang Baek 3c80219808 refac 2025-07-12 01:47:41 +04:00
Timothy Jaeryang Baek bcfe1a087f refac 2025-07-12 00:38:25 +04:00
Timothy Jaeryang Baek d509ca1133 refac 2025-07-12 00:34:18 +04:00
Tim Jaeryang Baek 9b84a8e443 Merge pull request #15632 from athoik/quote
fix: don't over quote forwarded headers
2025-07-12 00:24:29 +04:00
Tim Jaeryang Baek 3402bfd96c Merge pull request #15655 from rgaricano/dev-audio_Mime_comment
DOC: Extend Audio MIME Type Setting Explanation
2025-07-12 00:23:32 +04:00
Timothy Jaeryang Baek 627b39cdbb refac 2025-07-12 00:19:24 +04:00
Timothy Jaeryang Baek 9b8d6ed6d2 refac: notes 2025-07-12 00:16:57 +04:00
Timothy Jaeryang Baek 2fbff741da feat: collaborative note 2025-07-11 23:59:48 +04:00
_00_ e3c8e1bb71 DOC: Extend Audio MIME Type Setting Explanation
DOC: Extend Audio MIME Type Setting Explanation

Add explanation to add multiple mime types in audio settings labeling
2025-07-11 20:18:54 +02:00
Timothy Jaeryang Baek d3b14ff827 refac 2025-07-11 18:41:09 +04:00
Timothy Jaeryang Baek 6820e41eb2 refac 2025-07-11 18:14:56 +04:00
Timothy Jaeryang Baek 22052d2c24 refac: task 2025-07-11 18:14:48 +04:00
Timothy Jaeryang Baek 0202926e35 refac 2025-07-11 18:09:24 +04:00
Timothy Jaeryang Baek 47cd0770e4 refac 2025-07-11 17:54:38 +04:00
Timothy Jaeryang Baek 5b50f3cd69 chore: dep 2025-07-11 17:54:27 +04:00
Timothy Jaeryang Baek 788e7d0487 refac 2025-07-11 17:53:53 +04:00
Timothy Jaeryang Baek 11914d20b4 refac: styling 2025-07-11 12:39:58 +04:00
Timothy Jaeryang Baek 77c1905609 refac 2025-07-11 12:35:42 +04:00
Timothy Jaeryang Baek 033d07ee23 refac: file handling 2025-07-11 12:29:17 +04:00
Timothy Jaeryang Baek 0db8bedf45 refac: tts input 2025-07-11 12:15:13 +04:00
Timothy Jaeryang Baek 3bc5485867 enh: proper undo/redo note editor support 2025-07-11 12:00:41 +04:00
Timothy Jaeryang Baek 3b9d86de0b refac 2025-07-11 12:00:21 +04:00
Timothy Jaeryang Baek 6a3b0e3110 refac 2025-07-11 01:46:06 +04:00
Timothy Jaeryang Baek 249b12e44f refac: knowledge selector 2025-07-11 01:41:40 +04:00
Timothy Jaeryang Baek 84bf1892bb refac 2025-07-11 01:34:24 +04:00
Athanasios Oikonomou 96758176cc fix: don't over quote forwarded headers
Fix introduced on #15035 is over quoting headers.

Eg mails instead of user@example.com shown as user%40example.com
Eg names instead of First Last shown as First%20Last

Also we are spending some time quoting ids and roles without required.

Keep quote only on user name, initially had problem based on the discussion
https://github.com/open-webui/open-webui/discussions/14391

Also add space in safe characters, in order remove %20 from names.
2025-07-10 22:08:28 +03:00
Timothy Jaeryang Baek 1f641ce1fb refac 2025-07-10 14:06:15 +04:00
Timothy Jaeryang Baek 22af53f60c refac 2025-07-10 11:14:53 +04:00
Tim Jaeryang Baek d1b0a5739d Merge pull request #15619 from amberyufangchiu/amberyufangchiu-dev
i18n: Update zh-TW (Traditional Chinese) translation.json
2025-07-10 10:33:30 +04:00
Tim Jaeryang Baek 18c19743c4 Merge branch 'dev' into amberyufangchiu-dev 2025-07-10 10:33:12 +04:00
Amber Chiu 77acb9bb41 i18n: Update zh-TW (Traditional Chinese) translation.json 2025-07-10 09:40:58 +08:00
Timothy Jaeryang Baek 24f0da172e fix: table align markdown rendering 2025-07-09 23:39:54 +04:00
Timothy Jaeryang Baek 45d58e73a9 refac: styling 2025-07-09 23:22:59 +04:00
Timothy Jaeryang Baek 8d84b4c2a4 enh/refac: temp chat file upload behaviour
client-side content extraction
2025-07-09 22:59:37 +04:00
Timothy Jaeryang Baek 8fb54b133e refac 2025-07-09 22:33:36 +04:00
Timothy Jaeryang Baek 6d31fc7875 refac: styling 2025-07-09 13:50:45 +04:00
Timothy Jaeryang Baek 49e57b6d13 refac 2025-07-09 13:47:10 +04:00
Timothy Jaeryang Baek 3b9f4a6f5e enh: note word/char counter 2025-07-09 13:38:54 +04:00
Timothy Jaeryang Baek 6ee4274b3b enh: rich text input link 2025-07-09 13:29:27 +04:00
Timothy Jaeryang Baek 04962922d7 refac 2025-07-09 13:00:28 +04:00
Tim Jaeryang Baek 9d8378d2e2 Merge pull request #15604 from EventHorizon-AI/fix/tool-results
fix: tool results
2025-07-09 12:45:10 +04:00
Tim Jaeryang Baek 67c88f90dc Merge pull request #15601 from headwAI-GmbH/streamline-resource-loading-url
chore: streamline the URL used for resources like favicon.png
2025-07-09 12:43:58 +04:00
Timothy Jaeryang Baek b615d13e46 refac: styling 2025-07-09 11:44:51 +04:00
guenhter 196af9eaf7 chore: streamline the URL used for resources like favicon.png 2025-07-09 09:14:51 +02:00
Timothy Jaeryang Baek 0a3c448a52 refac: styling 2025-07-09 11:06:40 +04:00
EntropyYue 5b8007fcb5 fix: tool result frontend 2025-07-09 15:01:19 +08:00
EntropyYue dc0d420af5 fix: tool result 2025-07-09 14:40:53 +08:00
Tim Jaeryang Baek 8882df5829 Merge pull request #15596 from qingchunnh/Update_zh-CN-2579
i18n: Update & Improve zh-CN
2025-07-09 10:26:50 +04:00
qingchun 9b5c9ffb30 i18n: Improve zh-CN 2025-07-09 10:03:09 +08:00
qingchun b09973cafe i18n: Update & Improve zh-CN 2025-07-09 09:44:55 +08:00
Timothy Jaeryang Baek 40b564dedd refac: styling 2025-07-09 04:53:31 +04:00
Timothy Jaeryang Baek a1ddbff744 refac: styling 2025-07-09 04:36:21 +04:00
Timothy Jaeryang Baek 04ac14463b refac: styling 2025-07-09 04:33:52 +04:00
Timothy Jaeryang Baek 784c5b5471 enh: remember note editor preference 2025-07-09 03:50:20 +04:00
Timothy Jaeryang Baek b93ee37f9a refac 2025-07-09 03:43:41 +04:00
Timothy Jaeryang Baek bdab9dd596 refac: task list handling 2025-07-09 03:39:57 +04:00
Timothy Jaeryang Baek e37e6e6b03 enh/refac: allow setting full context mode from model editor 2025-07-09 03:22:24 +04:00
Timothy Jaeryang Baek dd87111c80 refac 2025-07-09 03:15:20 +04:00
Timothy Jaeryang Baek c2ac797650 feat: formatting buttons 2025-07-09 03:11:51 +04:00
Timothy Jaeryang Baek 9a3a0070d6 refac: styling 2025-07-09 02:04:09 +04:00
Timothy Jaeryang Baek e2f5d7caec refac: styling 2025-07-09 01:53:51 +04:00
Timothy Jaeryang Baek 9632f40335 enh: support commands in note chat 2025-07-09 01:49:43 +04:00
Timothy Jaeryang Baek e9821c0881 refac 2025-07-09 01:31:28 +04:00
Timothy Jaeryang Baek b3c4bc6041 enh: allow full context mode for collections 2025-07-09 01:29:49 +04:00
Timothy Jaeryang Baek d5f9bbc7a7 enh: reference note in chat 2025-07-09 01:17:25 +04:00
Timothy Jaeryang Baek f2ee99d760 refac: styling 2025-07-09 01:15:32 +04:00
Tim Jaeryang Baek 91628f5392 Merge pull request #15593 from tarmst/add-openai-to-pyodide
Feat: Add OpenAI package to Pyodide code blocks
2025-07-09 00:54:06 +04:00
Timothy Jaeryang Baek 1de03c364f refac: checkbox styling 2025-07-09 00:34:03 +04:00
Timothy Jaeryang Baek 6bf218f720 refac: styling 2025-07-09 00:22:25 +04:00
Timothy Jaeryang Baek 40a715be89 refac: styling 2025-07-09 00:05:59 +04:00
Timothy Jaeryang Baek 248fd10406 enh: task list rich text input 2025-07-08 23:57:34 +04:00
tarmst 0033b3fe4e Add OpenAI package to pyodide code blocks 2025-07-08 19:28:43 +00:00
Timothy Jaeryang Baek f69db54b7e enh: model workspace tag filter view 2025-07-08 23:05:39 +04:00
Timothy Jaeryang Baek 0765f6c230 refac 2025-07-08 22:56:46 +04:00
Timothy Jaeryang Baek 42f2de68bd refac: styling 2025-07-08 22:38:31 +04:00
Timothy Jaeryang Baek 6f98379c82 enh: checkbox input variable 2025-07-08 21:33:51 +04:00
Timothy Jaeryang Baek 2cde746e38 refac: styling 2025-07-08 16:46:14 +04:00
Timothy Jaeryang Baek 74cafce4d2 refac: note revision history 2025-07-08 16:43:26 +04:00
Timothy Jaeryang Baek d3ba1a0592 refac: prompt variable handling 2025-07-08 16:30:06 +04:00
Tim Jaeryang Baek e3b8f700e4 Merge pull request #14264 from diwakar-s-maurya/patch-6
feat: add langchain markdown document splitter
2025-07-08 15:55:20 +04:00
Timothy Jaeryang Baek ed72ad1728 refac: styling 2025-07-08 14:51:50 +04:00
Timothy Jaeryang Baek 27aa628c86 chore: i18n 2025-07-08 13:29:04 +04:00
Tim Jaeryang Baek a748f19ac2 Merge pull request #15548 from expruc/fix/docling_ignore_html
fix: text/html files being detected as text when loaded with docling/tika
2025-07-08 13:16:01 +04:00
Timothy Jaeryang Baek 5d5bb9d1f2 refac 2025-07-08 13:14:22 +04:00
Timothy Jaeryang Baek 8f74070688 refac: styling 2025-07-08 12:54:11 +04:00
Timothy Jaeryang Baek 09b5c1b4dc refac 2025-07-08 12:50:06 +04:00
Timothy Jaeryang Baek 8febc54a88 refac: styling 2025-07-08 12:39:04 +04:00
Timothy Jaeryang Baek 7cfcf9b21d refac: styling 2025-07-08 12:35:35 +04:00
Timothy Jaeryang Baek 9a064d9623 feat: edit notes via chat 2025-07-08 12:31:31 +04:00
Timothy Jaeryang Baek 45085d04eb refac 2025-07-08 12:31:22 +04:00
Timothy Jaeryang Baek c107a0cbf4 refac 2025-07-08 10:09:32 +04:00
Timothy Jaeryang Baekandpython4004 793648bbd6 fix/security: note access control
Co-Authored-By: python4004 <36403473+python4004@users.noreply.github.com>
2025-07-08 10:04:13 +04:00
Timothy Jaeryang Baek c42a6d8029 refac/fix: node dom issue 2025-07-08 10:00:20 +04:00
Tim Jaeryang Baek a56e9e586b Merge pull request #15573 from flefevre/main
i18n french
2025-07-08 09:58:34 +04:00
Timothy Jaeryang BaekandG30 0450c7cf48 refac: banners
Co-Authored-By: G30 <50341825+silentoplayz@users.noreply.github.com>
2025-07-08 01:37:10 +04:00
Francois LE FEVRE c17b2f3ca0 i18n french 2025-07-07 22:15:39 +02:00
Timothy Jaeryang Baek 30521bcac7 refac: styling 2025-07-08 00:07:50 +04:00
Timothy Jaeryang Baek 3a9d5b0494 refac 2025-07-07 23:51:01 +04:00
Timothy Jaeryang Baek 78dce85b03 fix: thread image only message 2025-07-07 22:00:38 +04:00
Timothy Jaeryang Baek 2d0e55e8f6 refac 2025-07-07 21:52:46 +04:00
Timothy Jaeryang Baek 5722da8e3b feat/enh: insert prompt as rich text 2025-07-07 21:43:28 +04:00
Timothy Jaeryang Baek ade4b0d691 feat: insert chat message to notes 2025-07-07 21:22:07 +04:00
Timothy Jaeryang Baek a3c2018a4a feat: chat with notes 2025-07-07 20:19:17 +04:00
Timothy Jaeryang Baek b3001f95f6 refac 2025-07-07 19:58:10 +04:00
Timothy Jaeryang Baek 8cd7de3740 refac: styling 2025-07-07 19:56:31 +04:00
Timothy Jaeryang Baek d04d0c0510 refac 2025-07-07 19:47:32 +04:00
Timothy Jaeryang Baek 821243ef40 refac 2025-07-07 19:42:08 +04:00
Timothy Jaeryang Baek 67063e6400 refac 2025-07-07 19:33:54 +04:00
Timothy Jaeryang Baek a5367145bf refac 2025-07-07 19:32:41 +04:00
Timothy Jaeryang Baek 7003395a5f refac: experimental wording 2025-07-07 19:30:05 +04:00
Timothy Jaeryang Baek 9bd001a14b feat: note chat 2025-07-07 19:26:12 +04:00
Timothy Jaeryang Baek a31a1f3c0d refac: note editor 2025-07-07 18:26:52 +04:00
Timothy Jaeryang Baek 3392e2ef15 refac/fix: channel input 2025-07-07 17:49:03 +04:00
Timothy Jaeryang Baek 57f9eadd75 feat: models?id= support for admin settings 2025-07-07 17:16:51 +04:00
Timothy Jaeryang Baek a519c62250 chore: bump 2025-07-07 16:13:18 +04:00
Timothy Jaeryang Baek 3e15c8ab69 refac 2025-07-07 15:56:05 +04:00
Timothy Jaeryang Baek be6633e3be chore: bump ddgs 2025-07-07 15:55:26 +04:00
Timothy Jaeryang Baek cfcfefb20c refac: tools handling 2025-07-07 11:42:52 +04:00
Timothy Jaeryang Baek 05a9b72670 refac/fix: base model cache 2025-07-07 11:30:27 +04:00
Timothy Jaeryang Baek 31c63d8898 refac 2025-07-06 21:40:53 +04:00
expruc 453a2bd9b5 fixed issue where text/html files being detected as text when loaded 2025-07-06 20:10:26 +03:00
Timothy Jaeryang Baek 4a825dce7f refac 2025-07-06 17:51:03 +04:00
Tim Jaeryang Baek 7cb105abd4 Merge pull request #15119 from denispol/dev
fix: Preserve line breaks on multi-line paste in mobile WebViews
2025-07-06 17:41:09 +04:00
Timothy Jaeryang Baek e84c521177 refac/fix: rich text input in ff 2025-07-06 17:32:03 +04:00
Timothy Jaeryang Baek be7166d6fc refac 2025-07-06 16:16:05 +04:00
Timothy Jaeryang Baek 1c41e95ba6 fix/refac: ollama api backward compatibility 2025-07-06 15:02:10 +04:00
Timothy Jaeryang Baek 9a476ae41d refac: ollama api backward compatibility 2025-07-06 14:40:21 +04:00
Timothy Jaeryang Baek 2eab43c35e fix 2025-07-06 14:38:28 +04:00
Timothy Jaeryang Baek f92890b741 refac 2025-07-06 14:32:39 +04:00
Timothy Jaeryang Baek fc2fc6516e enh: autofocus to first input variable input 2025-07-06 14:31:32 +04:00
Timothy Jaeryang Baek 0a1f9966ef refac: audio error handling 2025-07-06 14:20:38 +04:00
Timothy Jaeryang Baek 44754e4c4a enh/refac: show input modal by default for prompt variables 2025-07-06 14:16:34 +04:00
Timothy Jaeryang Baek 7cc2afe973 refac: rich text input 2025-07-06 14:15:45 +04:00
Tim Jaeryang Baek a4885ac549 Merge pull request #15527 from gmacario/gmacario-fix-api-show
FIX: Ollama.py API endpoints to match Ollama's
2025-07-05 21:23:32 +04:00
Tim Jaeryang Baek 26ce14d163 Merge pull request #15541 from open-webui/main
refac: readme
2025-07-05 21:06:51 +04:00
Timothy Jaeryang Baek 5eca495d3e refac: readme 2025-07-05 21:06:32 +04:00
Timothy Jaeryang Baek aeef5d4dcd refac: mobile navbar 2025-07-05 02:26:52 +04:00
Timothy Jaeryang BaekandClassic298 9f87a0cf21 feat: input variables
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-07-05 02:16:44 +04:00
Timothy Jaeryang Baek 5526b66165 chore: qdrant-client bump 2025-07-04 23:56:02 +04:00
Tim Jaeryang Baek a3add18fa9 Merge pull request #15289 from Anush008/main
refactor: Updated Qdrant multi-tenancy implementation
2025-07-04 23:49:11 +04:00
Timothy Jaeryang Baek 198b89faa5 refac: suggestion prompts 2025-07-04 23:40:31 +04:00
Timothy Jaeryang Baek db0d2ae6d4 refac: Improve banner handling and command visibility in chat UI 2025-07-04 20:55:31 +04:00
Timothy Jaeryang Baek c9e1f454fc refac 2025-07-04 20:30:34 +04:00
Tim Jaeryang Baek f58cb09d27 Merge pull request #15480 from itk-dev/feature/message-input-visible-outlines
Feat: message input visible outlines
2025-07-04 20:27:57 +04:00
Timothy Jaeryang Baek 2e2a63c201 fix: various rich text input issues
#15140
2025-07-04 20:26:01 +04:00
Gianpaolo Macario bdd5120407 fix: rename Ollama API parameter "name" to "model" 2025-07-04 17:33:57 +02:00
Timothy Jaeryang Baek 9b5da77ffc refac 2025-07-04 15:29:35 +04:00
Sine Jespersen 86044feaca button to div: avoid nested button, code intepreter button outline 2025-07-04 11:18:30 +02:00
Anush008 17debaa6de chore: Raise if QDRANT_URI is not set
Signed-off-by: Anush008 <anushshetty90@gmail.com>
2025-07-04 13:17:46 +05:30
Anush008 c8a49d373a refactor: Removed more swallows
Signed-off-by: Anush008 <anushshetty90@gmail.com>
2025-07-04 12:38:22 +05:30
Anush008 0ac57a088f refactor: More implementation improvements
Signed-off-by: Anush008 <anushshetty90@gmail.com>
2025-07-04 12:33:54 +05:30
Anush008 7c734d3fea Merge remote-tracking branch 'origin/dev' into Anush008/main
Signed-off-by: Anush008 <anushshetty90@gmail.com>
2025-07-04 12:22:08 +05:30
Tim Jaeryang Baek 600344f2e8 Merge pull request #15510 from kopero2000/bug/oauth_logout_fix
fix/oauth logout fix
2025-07-04 10:30:02 +04:00
Timothy Jaeryang Baek 1b237c7f60 enh: submit searchParam 2025-07-04 02:53:41 +04:00
Timothy Jaeryang Baek e28bc37e41 enh: AUDIT_UVICORN_LOGGER_NAMES 2025-07-03 21:54:25 +04:00
Timothy Jaeryang Baek 75096c24ac refac 2025-07-03 21:28:09 +04:00
Timothy Jaeryang Baek d2485bbf09 refac 2025-07-03 18:13:23 +04:00
8661c4416a feat: configurable db url
Co-Authored-By: Ryan Rodriguez <62253265+ryanmrodriguez@users.noreply.github.com>
Co-Authored-By: Mario Trangoni <mario@mariotrangoni.de>
2025-07-03 17:47:12 +04:00
Tim Jaeryang Baek e98dc0a745 Merge pull request #14957 from Classic298/fix-postgresql-null-value-search
Fix: postgresql null value search
2025-07-03 17:36:27 +04:00
Tim Jaeryang Baek ed6bbddf6e Merge pull request #15483 from headwAI-GmbH/support-deactivate-update-check
feat: Support deactivate update check without OFFLINE_MODE
2025-07-03 17:22:22 +04:00
Tim Jaeryang Baek bdbc8f048c Merge pull request #15501 from Green-PT/fix-oauth-signout-redirect
fix: sign out redirect for oauth
2025-07-03 17:18:25 +04:00
Tim Jaeryang Baek 74167f4b48 Merge pull request #15490 from sihyeonn/chore/sh-print
refactor: improve logging in task management system
2025-07-03 17:14:35 +04:00
Tim Jaeryang Baek 195e0221b8 Merge pull request #15493 from aleixdorca/dev
i18n: Update Catalan translation.json
2025-07-03 17:12:47 +04:00
Tim Jaeryang Baek 7b0fc0ad1c Merge pull request #15492 from qingchunnh/Update_zh-CN-2573
i18n: Update zh-CN
2025-07-03 16:13:17 +04:00
Tim Jaeryang Baek c093b88abe Merge pull request #15500 from aindriu80/update-ga-strings-june
i18n (ga): Update Irish translations
2025-07-03 16:12:59 +04:00
Aindriú Mac Giolla Eoin 34ec073b3d Merge branch 'dev' into update-ga-strings-june 2025-07-03 13:07:38 +01:00
Tim etc. bb0176085d fix signout redirect for oauth 2025-07-03 13:59:48 +02:00
Aindriú Mac Giolla Eoin 54e5e4bb4b i18n(ga): Update Irish translations 2025-07-03 12:40:58 +01:00
Aleix Dorca 4c7436a05c Update Catalan translation.json 2025-07-03 06:44:41 +02:00
qingchun ee00bdef63 i18n: Fix zh-CN 2025-07-03 11:52:45 +08:00
qingchun e5415b8a87 i18n: Fix zh-CN 2025-07-03 11:50:58 +08:00
qingchun 1f4e51edc6 i18n: Update zh-CN 2025-07-03 11:46:17 +08:00
Sihyeon Jang a9804e2566 refactor: replace print statements with appropriate logging levels
Signed-off-by: Sihyeon Jang <uneedsihyeon@gmail.com>
2025-07-03 08:34:25 +09:00
Timothy Jaeryang Baek e1efd54a70 fix/refac: heic image handling 2025-07-03 00:04:13 +04:00
Vizi Béla Ákos d1ee4e0925 Merge branch 'open-webui:main' into bug/oauth_logout_fix 2025-07-02 18:01:08 +02:00
Bela Vizi 9623ef4360 add trust env to clientsession 2025-07-02 17:59:56 +02:00
Timothy Jaeryang Baek bb506edcc3 refac 2025-07-02 17:50:07 +04:00
Timothy Jaeryang Baek f55e93cabe feat: additional valve input types 2025-07-02 17:45:42 +04:00
guenhter 661ea773f4 fix: avoid 'checking for updates...' always present in offline-mode 2025-07-02 15:20:43 +02:00
guenhter 34ddd62951 feat: support suppressing version checks 2025-07-02 15:20:43 +02:00
Timothy Jaeryang Baekandsilentoplayz 7adb15d4b0 refac: user pending screen
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2025-07-02 16:11:13 +04:00
Timothy Jaeryang Baek 21f9982c5a chore: chart.js 2025-07-02 15:58:16 +04:00
Timothy Jaeryang Baek ff3dec9ef2 refac: styling 2025-07-02 15:14:48 +04:00
Timothy Jaeryang Baek 05773bc831 refac: styling 2025-07-02 14:58:28 +04:00
Tim Jaeryang Baek 6ff84d8ec0 Merge pull request #15479 from itk-dev/feature/suggestions-role-list
FEAT: give suggestions role list and items role listitem
2025-07-02 14:50:30 +04:00
Sine Jespersen 98317f4576 give suggestions role list and items role listitem 2025-07-02 12:45:15 +02:00
Timothy Jaeryang Baek 139e4f93cb refac 2025-07-02 14:30:05 +04:00
Tim Jaeryang Baek a3c9b46e9a Merge pull request #15477 from itk-dev/feature/accessibility-user-settings
Feat: accessibility user settings dropdown menu
2025-07-02 14:22:37 +04:00
Timothy Jaeryang Baekandconql 2c6227e4b6 fix: preserve dates for chat imports
Co-Authored-By: conql <49243542+conql@users.noreply.github.com>
2025-07-02 14:21:36 +04:00
Timothy Jaeryang Baek 3f800c069e refac: banner newlines 2025-07-02 14:06:06 +04:00
Timothy Jaeryang Baek 9b718e7817 refac: styling 2025-07-02 13:59:14 +04:00
Timothy Jaeryang Baek 7e273ebe86 refac: banners 2025-07-02 13:48:18 +04:00
Sine Jespersen 225d20fb84 aria hidden on decorative svgs to enhance accessibility 2025-07-02 11:29:03 +02:00
Sine Jespersen b7255854d2 change interactive elements in dropdownmenu to dropdownitems 2025-07-02 11:14:12 +02:00
Tim Jaeryang Baek bab7a65c2c Merge pull request #15452 from expruc/chore/remove_embedder_openai_api_key_requirement
chore: removed requirement for providing api key in openai embedder
2025-07-02 12:55:00 +04:00
Timothy Jaeryang Baek 1cc15e6470 refac: splash screen 2025-07-02 12:51:03 +04:00
Sine Jespersen 7e49c8733b remove nested button and add label for assistive technology 2025-07-02 10:12:48 +02:00
Tim Jaeryang Baek 40fc1a1f95 Merge pull request #15466 from itk-dev/feature/accessibility-dropdown-model-selector
Feat: accessibility in dropdown model selector
2025-07-02 12:10:29 +04:00
Sine Jespersen d7f247d7d2 make margin depend on high contrast mode, based on comment on pr 2025-07-02 09:55:47 +02:00
Timothy Jaeryang Baek 57972605f2 refac 2025-07-02 11:48:01 +04:00
Timothy Jaeryang Baek d54896ca66 chore: bump pydantic 2025-07-02 11:41:58 +04:00
Sine Jespersen 6a644cd03a aria hidden on svg, as this is decorative 2025-07-02 08:57:15 +02:00
Sine Jespersen 64b583dc29 add margin to make outline visible 2025-07-02 08:56:56 +02:00
Sine Jespersen bed2c7e34f remove nested buttons, as this is not valid html 2025-07-02 08:56:17 +02:00
Sine Jespersen e5435c6480 high contrast mode on model selector to enhance accessibility 2025-07-02 08:46:32 +02:00
expruc 555c449f49 removed requirement for providing api key in openai embedder 2025-07-01 22:03:50 +03:00
Tim Jaeryang Baek a85ecadfeb Merge pull request #15447 from itk-dev/feature/accessibility-file-item
Feat: accessibility of file input in messageinput
2025-07-01 15:57:39 +04:00
Timothy Jaeryang Baek 355a3eaedb enh: dynamic commands height 2025-07-01 15:57:01 +04:00
Timothy Jaeryang Baek 8d49288499 refac: skeleton 2025-07-01 15:32:32 +04:00
Tim Jaeryang Baek 6d0bd226c1 Merge pull request #15445 from itk-dev/feature/chat-page-accessibility
Feat: chat page accessibility
2025-07-01 15:23:06 +04:00
Sine Jespersen 3d4752480e aria label on remove file button to enchance accessibility 2025-07-01 13:21:40 +02:00
Tim Jaeryang Baek af9d264405 Merge pull request #15402 from itk-dev/feature/aria-hide-button-and-img
Feat: aria hide button and img
2025-07-01 15:18:21 +04:00
Sine Jespersen 1dd475cccf aria hidden on svg 2025-07-01 13:16:18 +02:00
Sine Jespersen 09ddf69a73 high contrast mode on file item to enhance accessibility 2025-07-01 13:15:38 +02:00
Sine Jespersen 67ac39b72b aria hidden on some svgs for accessibility 2025-07-01 12:40:03 +02:00
Sine Jespersen ab3c19dd36 aria labels and high contrast mode for accessibility 2025-07-01 12:39:35 +02:00
Tim Jaeryang Baek 7a25c9637a Merge pull request #15443 from open-webui/main
dev
2025-07-01 14:08:13 +04:00
Timothy Jaeryang Baek 59ba21bdf8 refac 2025-07-01 14:06:45 +04:00
Sine Jespersen 988fc3a72c aria-hidden and aria-label to enhance accessibility 2025-07-01 11:31:07 +02:00
Tim Jaeryang Baek 8b43641849 Merge pull request #15427 from open-webui/dependabot/npm_and_yarn/dev/html2canvas-pro-1.5.11
build(deps): bump html2canvas-pro from 1.5.8 to 1.5.11
2025-07-01 12:49:09 +04:00
Tim Jaeryang Baek b8c8c64720 Merge pull request #15419 from open-webui/dependabot/pip/backend/dev/uvicorn-standard--0.35.0
build(deps): bump uvicorn[standard] from 0.34.2 to 0.35.0 in /backend
2025-07-01 12:48:50 +04:00
Tim Jaeryang Baek 557be6c824 Merge pull request #15418 from open-webui/dependabot/pip/backend/dev/azure-identity-1.23.0
build(deps): bump azure-identity from 1.21.0 to 1.23.0 in /backend
2025-07-01 12:48:09 +04:00
Tim Jaeryang Baek c38177bcd5 Merge pull request #15438 from open-webui/dependabot/npm_and_yarn/dev/sortablejs-1.15.6
build(deps): bump sortablejs from 1.15.2 to 1.15.6
2025-07-01 12:44:58 +04:00
Sine Jespersen 00e2ad1a9f Aria labels on image 2025-07-01 10:10:37 +02:00
dependabot[bot] fffe0b8580 build(deps): bump sortablejs from 1.15.2 to 1.15.6
Bumps [sortablejs](https://github.com/SortableJS/Sortable) from 1.15.2 to 1.15.6.
- [Release notes](https://github.com/SortableJS/Sortable/releases)
- [Commits](https://github.com/SortableJS/Sortable/compare/1.15.2...1.15.6)

---
updated-dependencies:
- dependency-name: sortablejs
  dependency-version: 1.15.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 06:59:56 +00:00
Tim Jaeryang Baek 030e9ab1ae Merge pull request #15417 from jackthgu/websearch-searxng-url-required
fix: settings/web-search : make “Searxng Query URL” field required
2025-07-01 10:56:55 +04:00
dependabot[bot] b685fd4a33 build(deps): bump html2canvas-pro from 1.5.8 to 1.5.11
Bumps [html2canvas-pro](https://github.com/yorickshan/html2canvas-pro) from 1.5.8 to 1.5.11.
- [Release notes](https://github.com/yorickshan/html2canvas-pro/releases)
- [Changelog](https://github.com/yorickshan/html2canvas-pro/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yorickshan/html2canvas-pro/compare/v1.5.8...v1.5.11)

---
updated-dependencies:
- dependency-name: html2canvas-pro
  dependency-version: 1.5.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 05:55:54 +00:00
dependabot[bot] 876bb4bdc6 build(deps): bump uvicorn[standard] from 0.34.2 to 0.35.0 in /backend
Bumps [uvicorn[standard]](https://github.com/encode/uvicorn) from 0.34.2 to 0.35.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.2...0.35.0)

---
updated-dependencies:
- dependency-name: uvicorn[standard]
  dependency-version: 0.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 05:21:20 +00:00
dependabot[bot] 534c12b1b9 build(deps): bump azure-identity from 1.21.0 to 1.23.0 in /backend
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.21.0 to 1.23.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.21.0...azure-identity_1.23.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-version: 1.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 05:21:17 +00:00
Taehong Gu 15821af252 fix(admin/web-search): add required validation to “Searxng Query URL” field 2025-07-01 14:08:01 +09:00
Tim Jaeryang Baek a463ef3c03 Merge pull request #15407 from silentoplayz/bannerlengthincrease
refac: Increase banners height limit
2025-06-30 21:41:12 +04:00
Silentoplayz 9813019489 Update Banner.svelte 2025-06-30 12:22:39 -04:00
Timothy Jaeryang Baek de018f0912 refac 2025-06-30 18:04:11 +04:00
Timothy Jaeryang Baek 8b35ea6eea enh: OTEL_OTLP_SPAN_EXPORTER 2025-06-30 15:52:32 +04:00
Timothy Jaeryang Baek bab1453b4c refac: styling 2025-06-30 15:39:43 +04:00
Timothy Jaeryang Baek a14cfb6448 enh: more info in feedback modal 2025-06-30 15:38:25 +04:00
Timothy Jaeryang Baek 71d550dd26 enh: offline mode 2025-06-30 15:20:41 +04:00
Timothy Jaeryang Baek 2748fc1e4d refac 2025-06-30 13:29:47 +04:00
Timothy Jaeryang Baek ce311598cb refac: styling 2025-06-30 13:29:23 +04:00
Timothy Jaeryang Baek 8a334decf6 refac: ENABLE_MODEL_LIST_CACHE -> ENABLE_BASE_MODELS_CACHE 2025-06-30 13:27:07 +04:00
Timothy Jaeryang Baek eac2f36f4f refac: temporary enforced behaviour 2025-06-30 13:16:46 +04:00
Tim Jaeryang Baek c75d0bd20b Merge pull request #15389 from headwAI-GmbH/add-qdrant-indices
feat: Add qdrant indices
2025-06-30 11:36:31 +04:00
Tim Jaeryang Baek 74912a5383 Merge pull request #15380 from taylorwilsdon/issues/15074/REDIS_KEY_PREFIX
feat: Support configuration of redis key prefix via environment variable
2025-06-30 10:43:35 +04:00
guenhter 5c2e0e4beb feat: add qdrant indices for metadata fields
All fieldnames which are part of a query should
have an index for performance reasons. This is
even enforced on some qdrant cluster like those
on qdrant.io, and queries using a unindexed column
fail with an error.
2025-06-29 15:30:55 +02:00
Taylor Wilsdon 7b5df819b1 fmt 2025-06-28 10:18:30 -07:00
Taylor Wilsdon 345922a970 add REDIS_KEY_PREFIX env var and default to current hardcoded value 2025-06-28 10:11:26 -07:00
Timothy Jaeryang Baek 7523613fbc refac 2025-06-28 19:29:28 +04:00
Timothy Jaeryang Baek 962e078a9a refac 2025-06-28 19:15:52 +04:00
Timothy Jaeryang Baek 1b064a6c85 chore: format 2025-06-28 15:21:20 +04:00
Timothy Jaeryang Baek e06cdea0b5 refac 2025-06-28 15:20:38 +04:00
Timothy Jaeryang Baek 8f9e202a88 refac 2025-06-28 15:13:21 +04:00
Timothy Jaeryang Baek 1a52585769 enh: ENABLE_MODEL_LIST_CACHE 2025-06-28 15:12:31 +04:00
Timothy Jaeryang Baek 2b88f66762 refac: MODEL_LIST_CACHE_TTL -> MODELS_CACHE_TTL 2025-06-28 14:44:47 +04:00
Timothy Jaeryang Baek 53a08eb00d refac: styling 2025-06-28 14:36:26 +04:00
Timothy Jaeryang Baek ffd7b004f4 fix: admin chat share issue 2025-06-28 14:02:07 +04:00
Timothy Jaeryang Baek f123d70cff fix: enforced temp chat issue 2025-06-28 14:01:58 +04:00
Timothy Jaeryang Baek 372836c87c chore: langchain dep bump 2025-06-28 00:53:07 +04:00
Timothy Jaeryang Baek ff639a20d0 refac 2025-06-28 00:48:24 +04:00
Tim Jaeryang Baek bfd92ec4af Merge pull request #15366 from akiraro/feat/oidc-httpx-timeout
feat: Custom oauth timeout
2025-06-28 00:46:21 +04:00
Haziq Yusof 88ea0f523f feat: custom oauth timeout 2025-06-28 03:08:46 +08:00
Timothy Jaeryang Baek dd1e4ee983 refac 2025-06-27 18:29:37 +04:00
Timothy Jaeryang Baek c91b0cd8c4 refac: vite config 2025-06-27 16:42:10 +04:00
Timothy Jaeryang Baek 3ff864eb63 refac: select action model behaviour 2025-06-27 16:29:04 +04:00
Timothy Jaeryang Baek 90257442e3 refac: styling 2025-06-27 16:15:16 +04:00
Timothy Jaeryang Baek 0447790e6a feat: MODEL_LIST_CACHE_TTL 2025-06-27 15:59:30 +04:00
Timothy Jaeryang Baek 09f0c6beee fix: windows start script 2025-06-27 15:46:38 +04:00
Timothy Jaeryang Baek c8e8111dd9 refac 2025-06-27 15:44:26 +04:00
Timothy Jaeryang Baek 38dfa6e6db refac 2025-06-27 15:30:00 +04:00
Tim Jaeryang Baek 276bfa02d0 Merge pull request #15314 from silentoplayz/spinner-and-xmark-icon-components
refac: Spinner and XMark components
2025-06-27 15:23:29 +04:00
Tim Jaeryang Baek 79aa73347e Merge pull request #15318 from hula-la/fix/ko-translation
i18n: Fix Korean translation errors in UI messages
2025-06-27 15:22:33 +04:00
Timothy Jaeryang Baek 2ae9bc30bd refac: feedback item click issue 2025-06-27 15:21:46 +04:00
Timothy Jaeryang Baek aa13a7caf9 refac 2025-06-27 14:58:23 +04:00
Tim Jaeryang Baek 8c5beddb5f Merge pull request #15310 from silentoplayz/icons
chore: Remove `MagnifyingGlass` icon component and update to use Search icon component
2025-06-27 14:58:06 +04:00
Tim Jaeryang Baek c303232657 Merge pull request #15344 from silentoplayz/small-fixes
fix: A couple small fixes
2025-06-27 14:31:01 +04:00
Tim Jaeryang Baek 8b49d6dda0 Merge pull request #15325 from headwAI-GmbH/make-qdrant-collection-prefix-configurable
feat: support better qdrant collection isolation
2025-06-27 14:30:26 +04:00
Silentoplayz e3bacc3296 fix: Small fixes 2025-06-27 04:35:28 -04:00
Tim Jaeryang Baek 767c4426cd Merge pull request #15328 from acwoo97/feat/lock
feat : Retry acquiring usage cleanup lock to handle potential stale locks
2025-06-27 11:52:13 +04:00
안찬우[AI Product] 789e6a0db3 feat : Retry acquiring usage cleanup lock to handle potential stale locks 2025-06-26 22:24:57 +09:00
guenhter a66206f44f feat: support better qdrant collection isolation
The prefix string for qdrant collection is now
configurable,  which means the same qdrant cluster
can be used to host more open webui instances and
to be able to separate the collections between the
different owui instances.
2025-06-26 13:52:26 +02:00
soo-jin-kim 2f4604921f fix: fix korean translation 2025-06-26 17:18:07 +09:00
Timothy Jaeryang Baek 21d616f8ed fix: code interpreter code editor issue 2025-06-26 11:05:17 +04:00
Silentoplayz f429dd667f chore: remove comment 2025-06-25 18:56:08 -04:00
Silentoplayz d1e3940abd refac: Spinner and XMark components 2025-06-25 18:44:45 -04:00
Silentoplayz cf24e39404 chore: add strokeWidth back 2025-06-25 17:36:23 -04:00
Silentoplayz dd0e6bf58f remove class="w-5 h-5" /> 2025-06-25 14:04:40 -04:00
Silentoplayz 88c4f55a51 chore: update 2025-06-25 14:00:48 -04:00
Silentoplayz 3f865f0b66 chore: MagnifyingGlass -> Search 2025-06-25 13:42:18 -04:00
Tim Jaeryang Baek b6e2b2e514 Merge pull request #15236 from headwAI-GmbH/password-login-type
fix: Use correct password autocomplete type on signup
2025-06-25 13:39:08 +04:00
Timothy Jaeryang Baek 8e95e5267c refac 2025-06-25 13:36:41 +04:00
Tim Jaeryang Baek d4fcf561e5 Merge pull request #15293 from itk-dev/feature/make-toggle-button-accessible
feat: aria-pressed and aria-label
2025-06-25 13:36:02 +04:00
Sine Jespersen 0ba84a670d add aria-pressed and aria-label to toggle button to make it accessible 2025-06-25 10:34:40 +02:00
Timothy Jaeryang Baek 1f123eb100 refac 2025-06-25 12:20:08 +04:00
Tim Jaeryang Baek 6676824947 Merge pull request #15238 from manelcomiche/main
feat(i18n): update Spanish and Catalan translations
2025-06-25 11:05:31 +04:00
Tim Jaeryang Baek 2bad7eaa07 Merge pull request #15277 from hankewyczz/bug/restore-exa-search
fix Restore exa
2025-06-25 11:04:48 +04:00
Tim Jaeryang Baek d60c800d66 Merge pull request #15276 from zhangtyzzz/update_brave_search
[fix] Update brave.py to use the correct field
2025-06-25 11:04:06 +04:00
Anush008 05bee5663d Merge remote-tracking branch 'origin/dev' 2025-06-25 12:04:23 +05:30
Tim Jaeryang Baek baa5920b7a Merge pull request #15250 from dlamoris/dev
fix: opensearch race condition, use keyword search instead of full text search for filter query
2025-06-25 10:30:36 +04:00
Tim Jaeryang Baek 889a3e1c48 Merge pull request #15262 from bobend/updated-da-DK
i18n: Updated da-DK translation
2025-06-25 10:30:18 +04:00
Tim Jaeryang Baek 565ec1567b Merge pull request #15268 from jackthgu/added-docker-compose-otel
build: add docker-compose.otel.yaml for OpenTelemetry
2025-06-25 10:26:46 +04:00
Tim Jaeryang Baek 7f681e8c02 Merge pull request #15273 from c0mplex10/translate
i18n: Improve Turkish translations
2025-06-25 10:26:15 +04:00
Zachar Hankewycz 45d7726ee0 Restore exa 2025-06-24 21:24:53 -04:00
zhangtyzzz ac5567f78d Update brave.py to use the correct field
fixing issues caused by incorrect field names.
2025-06-25 09:11:58 +08:00
c0mplex10 1875d7d726 i18n: Improve Turkish translations 2025-06-25 01:40:23 +03:00
Taehong Gu c77c4ff3f7 build: add docker-compose.otel.yaml for OpenTelemetry 2025-06-25 00:11:06 +09:00
Bo Bendtsen 2a25d625b2 Merge remote-tracking branch 'upstream/dev' into updated-da-DK 2025-06-24 12:54:17 +02:00
Bo Bendtsen 559c25fa3c Updated da-DK translation 2025-06-24 12:45:48 +02:00
Anush008 9dd24ee8fa chore: Bump qdrant-client version
Signed-off-by: Anush008 <anushshetty90@gmail.com>
2025-06-24 14:15:07 +05:30
Anush008 5dba298c1e refactor: Updated Qdrant multi-tenancy implementation
Signed-off-by: Anush008 <anushshetty90@gmail.com>
2025-06-24 14:12:44 +05:30
Tim Jaeryang Baek 0b1db0b216 Merge pull request #15242 from c0mplex10/patch-2
i18n: Improve Turkish translations
2025-06-24 11:34:59 +04:00
Timothy Jaeryang Baek 947b77db24 refac 2025-06-24 10:36:33 +04:00
Doris Lam 74ae9ab897 fix opensearch race condition, use keyword search instead of full text search in filter query 2025-06-23 18:43:33 -07:00
c0mplex10 c9c5340762 Update translation.json 2025-06-23 17:46:12 +03:00
denispol 77a96870ea Merge branch 'open-webui:dev' into dev 2025-06-23 15:42:32 +02:00
LHCLYT e237600e51 feat(i18n): update Catalan translations
Updated several Catalan translation strings to improve grammar, consistency, and clarity.

Includes fixes for technical terms and overall localization quality.
2025-06-23 12:53:49 +02:00
LHCLYT 708010a16a feat(i18n): update Spanish translations
Updated several Spanish translation strings to improve grammar, consistency, and clarity.

Includes fixes for technical terms and overall localization quality.
2025-06-23 12:43:14 +02:00
guenhter f0e60c28df fix: use correct password autocomplete for signup
Password manager act based on the 'autocomplet' attribute
of the password fields. If the attribut is set to
"current-password" they try to fill the password with an
existing one. If it is set to "new-password" they try to
support the user by generating a new password.
For signup in owui, the password was always set to
"current-password", so the password manager never proposed
a password on signup.
2025-06-23 11:48:51 +02:00
Tim Jaeryang Baek 610680ac14 Merge pull request #15213 from beecho01/patch-1
i18n: en-GB English translation updates
2025-06-23 13:12:44 +04:00
Timothy Jaeryang Baek f4b92868c4 refac 2025-06-23 12:54:50 +04:00
Tim Jaeryang Baek 9b2c3dec3a Merge pull request #15220 from prilosac/allow_auto_gpt_image_1
fix: Allowing 'auto' for IMAGE_SIZE on gpt-image-1
2025-06-23 10:50:44 +04:00
Tim Jaeryang Baek 6c7a7bc891 Merge pull request #15219 from qingchunnh/Update_zh-CN-25623
i18n: Update & Improve zh-CN
2025-06-23 10:49:41 +04:00
qingchun 018000c41b i18n: Improve zh-CN 2025-06-23 04:56:35 +08:00
Lucas Teixeira 95610080fb allowing auto on gpt-image-1 2025-06-22 13:55:29 -07:00
qingchun a5cdd25802 i18n: Update & Improve zh-CN 2025-06-23 04:20:47 +08:00
James Beeching 2df1f83e79 Merge branch 'dev' into patch-1 2025-06-22 14:17:24 +01:00
James Beeching 13cd025a7d Update missed spelling to en-GB equivalent 2025-06-22 14:03:36 +01:00
James Beeching 986e583594 Update translation.json for en-GB 2025-06-22 13:52:16 +01:00
Tim Jaeryang Baek 0563738940 Merge pull request #15208 from yukebrillianth/main
i18n: Fix translation placeholder for SSO provider in Bahasa Indonesia
2025-06-22 15:32:32 +04:00
Tim Jaeryang Baek 21d0431178 Merge pull request #15211 from Keram-Yasin/main
i18n: translation edit for ug-CN
2025-06-22 15:32:16 +04:00
Keram Yasin bb1f8f8ae9 Uyghur Translations Editted
1. The Uyghur translations are edited based on live instance.
2025-06-22 12:25:19 +02:00
Yuke Brilliant Hestiavin b1f0ad79a8 fix: SSO provider translation in Bahasa Indonesia 2025-06-22 07:00:44 +07:00
Timothy Jaeryang Baek aef0ad2d10 refac 2025-06-21 19:12:43 +04:00
Timothy Jaeryang Baek 38e8209d71 enh: ENABLE_COMPRESSION_MIDDLEWARE env var 2025-06-21 17:58:56 +04:00
Tim Jaeryang Baek 2eae63bcd4 Merge pull request #15195 from prene/proper-default-pooling-settings
[PERF] Proper default pooling settings
2025-06-21 17:39:27 +04:00
René Pfitzner 63d99abf41 Change default db pooling 2025-06-21 14:01:57 +01:00
Tim Jaeryang Baek 7513dc7e34 Merge pull request #15146 from rgaricano/dev
i18n: en-US correction of num_keep parameter description
2025-06-21 15:11:26 +04:00
Timothy Jaeryang Baek 2658ab1e46 chore: format 2025-06-21 15:07:52 +04:00
Timothy Jaeryang Baek df060df88b refac: styling 2025-06-20 21:10:56 +04:00
Timothy Jaeryang Baek e035d5d767 refac: styling 2025-06-20 20:57:13 +04:00
Timothy Jaeryang Baek 493595c891 refac: styling 2025-06-20 20:51:40 +04:00
Timothy Jaeryang Baek cd70469a8a chore: format 2025-06-20 20:32:30 +04:00
Timothy Jaeryang Baek 17b9a81504 chore: format 2025-06-20 20:32:23 +04:00
Tim Jaeryang Baek e3e2bf841e Merge pull request #15170 from Keram-Yasin/main
i18n: add translation for ug-CN
2025-06-20 20:28:53 +04:00
Tim Jaeryang Baek 2f94b3947e Merge pull request #15167 from ascodeasice/dayjs-zh-tw-locale
i18n: Add zh-tw locale support for dayjs
2025-06-20 20:28:16 +04:00
ascodeasice 9f33abf384 feat(dayjs): add zh-tw locale support 2025-06-20 16:24:04 +08:00
Tim Jaeryang Baek a21519f8f2 Merge pull request #15034 from Classic298/system-prompt-high-contrast
feat: System prompt input fields high contrast mode
2025-06-20 10:07:41 +04:00
Timothy Jaeryang Baek e1f5f1e0b1 refac 2025-06-20 09:58:44 +04:00
Tim Jaeryang Baek 4e50dd4df6 Merge pull request #15122 from tcx4c70/feat/add_stream_options_to_azure
feat(azure): Add stream_options to payload if api_version supports
2025-06-20 09:57:27 +04:00
Tim Jaeryang Baek 13c16b974c Merge pull request #15154 from Classic298/patch-1
i18n: de-DE German Translation Updates
2025-06-20 09:55:37 +04:00
Tim Jaeryang Baek b5445b5db2 Merge pull request #15148 from jackthgu/none-dbconnect-warning-message
fix: Enhance database migration error logging
2025-06-20 09:55:02 +04:00
Taehong Gu c7ef6025af Provide more detailed information to the user upon database connection failure
modified:   backend/open_webui/internal/db.py
2025-06-20 14:13:43 +09:00
Classic298 f0dea9a7c4 Update translation.json 2025-06-19 23:27:14 +02:00
Keram Yasin f7c7d72857 Uyghur Translation Review 1. The translations are reviewed and corrected for three times. 2025-06-19 22:19:17 +02:00
Timothy Jaeryang Baek 81b8267e85 feat: odt file parse support 2025-06-19 18:39:00 +04:00
_00_ f939646364 i18n: en-US correction of num_keep parameter description
i18n: en-US correction of num_keep parameter description

Correction of num_keep parameter,
In actual description example is indicated that "last" x tokens will be retained, that is wrong, it have to say "first" x tokens.

Tokens to Keep on Context Refresh (num_keep): Retains part of the previous conversation. It's used when the n_ctx limit is reached. A new prompt will be constructed with the first n_keep characters of the original prompt plus the second half of the output to free up space for more conversation. Example: Keeping 50 first tokens helps the model remember the main topic when refreshing.

https://github.com/open-webui/open-webui/discussions/3794#discussioncomment-12691428
2025-06-19 14:18:15 +02:00
Tim Jaeryang Baek 4f8f349c8f Merge pull request #15142 from Classic298/fix-oauth
fix: OAuth authentication failure on second login due to stale session state
2025-06-19 15:56:26 +04:00
Classic298 bbdb098b87 Update auths.py 2025-06-19 13:44:03 +02:00
Keram 646b3ca7f6 Uyghur Translation Uploaded
1. All the file is translated to Uyghur for the first time.
2. The next step is to review all the translations.
2025-06-19 12:30:42 +02:00
Timothy Jaeryang Baek a196b9dc26 fix: direct tool servers not displaying 2025-06-19 14:03:36 +04:00
Tim Jaeryang Baek b08fc297cf Merge pull request #15138 from zhangtyzzz/exa_search_missing
fix: Resolve exa search not being processed correctly
2025-06-19 10:34:51 +04:00
zhangtyzzz 5f60b30320 add missed exa 2025-06-19 13:52:58 +08:00
Keram Yasin 088e54c4fa Uyghur Localization Files Added
1. Uyghur localization file is added.
2. Uyghur language code is added to language list.
2025-06-18 22:11:45 +02:00
Adam Tao baafdb752c feat(openai): Add stream_options to payload if api_version supports
Signed-off-by: Adam Tao <tcx4c70@gmail.com>
2025-06-18 21:17:09 +08:00
Tim Jaeryang Baek d6f13bee5e Merge pull request #15094 from silentoplayz/small-fix
fix: sanatizeResponseContent for stop token display
2025-06-18 16:57:27 +04:00
denispol 6555cf9d7a fix: enhance paste handling for mobile WebViews and large text 2025-06-18 14:50:16 +02:00
Timothy Jaeryang Baek 1547235d47 refac: chat input object localStorage -> sessionStorage 2025-06-18 16:02:29 +04:00
Classic298 b9ea6130c7 Update General.svelte 2025-06-18 13:10:02 +02:00
Classic298 3814bbf7b3 Update General.svelte 2025-06-18 13:09:21 +02:00
Tim Jaeryang Baek 34440f95dc Merge pull request #15093 from silentoplayz/fix-sidebar-drag-and-drop
fix: refine folder component's drag-&-drop error handling
2025-06-18 14:04:52 +04:00
Tim Jaeryang Baek 1abc3847ab Merge pull request #15108 from itk-dev/feature/telemetry-auth
feat: Added support for basic auth wiht OTEL exporter
2025-06-18 14:04:15 +04:00
Timothy Jaeryang Baek 6186bbf337 refac/fix: stt supported type 2025-06-18 14:01:14 +04:00
Jesper Kristensen 4119ab261e Added support for basic auth wiht OTEL exporter 2025-06-18 11:42:33 +02:00
Tim Jaeryang Baek e79f31b9c4 Merge pull request #15029 from Classic298/correct-markdown-rendering-model-descriptions
fix: Correct markdown rendering model descriptions
2025-06-18 12:50:31 +04:00
Tim Jaeryang Baek 1d179399f3 Merge pull request #15069 from d2a-pnagel/codex/repareer-fouten-in-nl-vertaalbestand
i18n: Fix errors in Dutch translations
2025-06-18 12:49:59 +04:00
Tim Jaeryang Baek 294d6ce060 Merge pull request #15101 from itk-dev/feature/high-contrast-mode-tools-section
FEAT: high contrast mode tools section
2025-06-18 12:34:24 +04:00
Sine Jespersen 3ff5db229b accessibility: labels and placeholder contrast 2025-06-18 09:50:04 +02:00
Sine Jespersen 27f7df8ad6 accessibility: placeholder contrast on sensitiveinput 2025-06-18 09:50:04 +02:00
Sine Jespersen bd818b4524 outline on switch button 2025-06-18 09:50:04 +02:00
Sine Jespersen 99b153a132 add aria label to button 2025-06-18 09:50:04 +02:00
Sine Jespersen d837e6e579 decorative svgs hidden from screen reader 2025-06-18 09:50:04 +02:00
Sine Jespersen 226a7578c6 labels for inputs 2025-06-18 09:50:04 +02:00
Sine Jespersen f36f943a54 screen readers: label button, and remove decorative svg 2025-06-18 09:50:04 +02:00
Sine Jespersen 3cdefff0d2 change div to h1, as it is the modal header 2025-06-18 09:50:04 +02:00
Tim Jaeryang Baek e05560a49d Merge pull request #15072 from PierreMesure/better-swedish-translation-1
Better swedish translation 1
2025-06-18 10:59:43 +04:00
Tim Jaeryang Baek 05aaefd8a5 Merge pull request #15085 from qingchunnh/Update_zh-CN-25618
i18n: Update & Improve zh-CN
2025-06-18 10:59:09 +04:00
Tim Jaeryang Baek 58b5d2b727 Merge pull request #15097 from silentoplayz/index-update
Refactor: Add missing Type definitions
2025-06-18 10:55:44 +04:00
Timothy Jaeryang Baek 0134b5eca4 fix: action reserved user param 2025-06-18 10:50:49 +04:00
Silentoplayz 3be4fb25cd fix: add ? 2025-06-18 02:01:21 -04:00
Silentoplayz d66285f926 chore: add toolIds type 2025-06-18 01:55:43 -04:00
Silentoplayz 35be40c932 chore: add more Settings types in stores 2025-06-18 01:48:34 -04:00
Silentoplayz 898b65a653 fix: sanatizeResponseContent for stop token display 2025-06-18 00:12:11 -04:00
Silentoplayz b120637127 fix: refine folder component's drag-&-drop error handling 2025-06-17 23:27:45 -04:00
qingchun 70968a6caf i18n: Update & Improve zh-CN 2025-06-18 01:17:41 +08:00
Pierre 8a169d5c8e Update Swedish translation 2025-06-17 19:09:38 +02:00
d2a-pnagel 5f82631ae6 Update translation.json 2025-06-17 14:23:53 +02:00
d2a-pnagel fdeded4a20 Fix obvious typos in Dutch translation 2025-06-17 14:22:46 +02:00
Tim Jaeryang Baek 3b70841a7d Merge pull request #15049 from silentoplayz/fixopeninnewtab
fix: regression for "open in new tab"
2025-06-17 15:27:11 +04:00
Tim Jaeryang Baek 23c679d8db Merge pull request #15065 from aleixdorca/dev
i18n: Update Catalan translation.json
2025-06-17 14:25:53 +04:00
Tim Jaeryang Baek 8a587f9f84 Merge pull request #15066 from bogdanr/dev
i18n: Added a few Romanian translations
2025-06-17 14:25:44 +04:00
Timothy Jaeryang Baek fb26be7dd6 fix: confirm dialog input reset on show 2025-06-17 14:24:23 +04:00
Aleix Dorca 8908e834ac Update Catalan translation.json 2025-06-17 12:07:06 +02:00
Bogdan Radulescu 098091c95e Added a few Romanian translations 2025-06-17 12:57:09 +03:00
Tim Jaeryang Baek e866fba27c Merge pull request #15059 from d2a-raudenaerde/main
i18n Fix a incorrect translation of dutch ("Analyzing" -> from "Analysiseren" to  "Analyseren")
2025-06-17 13:23:54 +04:00
Classic298 872b0ac943 Update General.svelte 2025-06-17 11:23:24 +02:00
Classic298 22b02af703 Update General.svelte 2025-06-17 11:22:34 +02:00
Classic298 7de0e49dc6 Update Controls.svelte 2025-06-17 11:21:24 +02:00
Classic298 c330f06542 Merge branch 'dev' into system-prompt-high-contrast 2025-06-17 11:10:03 +02:00
Rob Audenaerde 6a613c2dd6 Update translation.json 2025-06-17 10:44:23 +02:00
Tim Jaeryang Baek 4254469a33 Merge pull request #15025 from Mte90/patch-1
Italian translation improved
2025-06-17 12:23:28 +04:00
Tim Jaeryang Baek 52cffef16e Merge pull request #15028 from Classic298/system-prompt-resizing
feat: System prompt input field resizable
2025-06-17 12:23:06 +04:00
Tim Jaeryang Baek d50449ea71 Merge pull request #15035 from decent-engineer-decent-datascientist/dev
fix: Resolve UnicodeEncodeError for non-ASCII usernames in forwarded headers
2025-06-17 12:22:02 +04:00
Timothy Jaeryang Baek cd975a1047 Update pyproject.toml 2025-06-17 12:17:02 +04:00
Silentoplayz 354dd3caa9 fix: regression for "open in new tab" 2025-06-16 23:27:16 -04:00
Classic298 c66576805b Merge branch 'open-webui:main' into fix-postgresql-null-value-search 2025-06-16 21:11:30 +02:00
Classic298 beb1f3f7fd Merge branch 'open-webui:main' into system-prompt-resizing 2025-06-16 21:11:21 +02:00
Classic298 c8c4e1642f Merge branch 'open-webui:main' into correct-markdown-rendering-model-descriptions 2025-06-16 21:11:18 +02:00
Classic298 135b57ca8e Update Placeholder.svelte 2025-06-16 20:28:50 +02:00
priten 8a63a601de Fix typo on ollama patch 2025-06-16 12:35:09 -05:00
priten f7920df870 Fix non-ascii error issue on ENABLE_FORWARD_USER_INFO_HEADERS 2025-06-16 12:33:11 -05:00
Classic298 5261d3d31e Update General.svelte 2025-06-16 19:26:57 +02:00
Classic298 088243349d Update Controls.svelte 2025-06-16 19:26:33 +02:00
Classic298 9d37350b97 Update Markdown.svelte 2025-06-16 18:08:20 +02:00
Classic298 4f9ce28a15 Update ChatPlaceholder.svelte 2025-06-16 18:07:30 +02:00
Classic298 9f936a0c19 Update General.svelte 2025-06-16 17:48:45 +02:00
Classic298 85724940ee Update Controls.svelte 2025-06-16 17:48:00 +02:00
Daniele Scasciafratte a7772b4b35 Italian translation improved 2025-06-16 17:09:29 +02:00
Tim Jaeryang Baek b5f4c85bb1 Merge pull request #15014 from open-webui/dev
0.6.15
2025-06-16 18:34:32 +04:00
Timothy Jaeryang Baek 340d9820b8 refac 2025-06-16 18:33:45 +04:00
Timothy Jaeryang Baek 597709c64c doc: changelog 2025-06-16 18:30:51 +04:00
Timothy Jaeryang Baek 84fd41e6ef doc: changelog 2025-06-16 18:29:38 +04:00
Timothy Jaeryang Baek 3917b04ed3 doc: changelog 2025-06-16 18:27:18 +04:00
Timothy Jaeryang Baek b6ea043d18 chore: format 2025-06-16 17:59:07 +04:00
Timothy Jaeryang Baek b082a7edbe enh: allow iframe in content 2025-06-16 17:43:17 +04:00
Timothy Jaeryang Baek 72df23ed79 refac 2025-06-16 17:24:55 +04:00
Timothy Jaeryang Baek 11476eb6ee chore: format 2025-06-16 17:21:22 +04:00
Tim Jaeryang Baek 7096baff1b Merge pull request #15021 from rgaricano/dev
i18n: es-ES Translation v.0.6.15
2025-06-16 17:19:44 +04:00
Tim Jaeryang Baek 2885ed9648 Merge pull request #15019 from itk-dev/feature/high-contrast-mode-tools-section
Feature/high contrast mode tools section
2025-06-16 17:19:30 +04:00
Timothy Jaeryang Baek ab877e1d7e refac 2025-06-16 17:18:43 +04:00
_00_ b13a824047 UPD: es-ES Translation v.0.6.15
UPD: es-ES Translation v.0.6.15
2025-06-16 15:06:33 +02:00
Timothy Jaeryang Baek 9cbe2644b1 refac 2025-06-16 16:59:47 +04:00
Timothy Jaeryang Baek 6c54ca552a feat: global image compression 2025-06-16 16:52:57 +04:00
Timothy Jaeryang Baek 2949be4f27 refac 2025-06-16 16:33:48 +04:00
Timothy Jaeryang Baek 8e139b04f0 refac: iframe include allow-downloads by default 2025-06-16 16:24:51 +04:00
Timothy Jaeryang Baek 76fe344eb8 refac 2025-06-16 16:21:57 +04:00
Timothy Jaeryang BaekandWilliamGates f3cae94028 fix: bypass webloader
Co-Authored-By: WilliamGates <3852641+williamgateszhao@users.noreply.github.com>
2025-06-16 16:17:52 +04:00
Timothy Jaeryang BaekandBryan Berns 7a1afa9c66 feat: custom stt content type
Co-Authored-By: Bryan Berns <berns@uwalumni.com>
2025-06-16 16:13:40 +04:00
Sine Jespersen 437b7c5171 add aria label to button without label for accessibility 2025-06-16 13:33:45 +02:00
Sine Jespersen 5211602c2f add text high contrast mode for accessibility 2025-06-16 13:33:25 +02:00
Timothy Jaeryang Baek 6a5aac43df refac 2025-06-16 15:29:40 +04:00
Tim Jaeryang Baek d6664369a1 Merge pull request #14886 from Constantinople-AI/fix-no-arg-mcp-call
Isolated fix to single section
2025-06-16 15:28:48 +04:00
Timothy Jaeryang Baek bc7defbdd0 refac: allow editing own email 2025-06-16 15:23:03 +04:00
Timothy Jaeryang Baek 99e18d49dc enh: system prompt user permission 2025-06-16 15:12:32 +04:00
Timothy Jaeryang Baek 1af128fb24 chore 2025-06-16 15:05:35 +04:00
Tim Jaeryang Baek b8103807cf Merge pull request #15018 from itk-dev/feature/interface-tab-settings-modal-accessibility
Feat: interface tab settings modal accessibility
2025-06-16 14:25:01 +04:00
Tim Jaeryang Baek d4f67bb266 Merge pull request #15017 from Bek85/i18n-uzbek
i18n: Add Uzbek (Cyrillic and Latin) i18n support
2025-06-16 14:24:30 +04:00
Timothy Jaeryang Baek f3deb8b8de refac 2025-06-16 14:01:03 +04:00
Timothy Jaeryang Baek 7753f57d42 chore: format 2025-06-16 13:48:50 +04:00
Timothy Jaeryang Baek 26d069080a refac 2025-06-16 13:45:36 +04:00
Timothy Jaeryang Baek d802c718a4 refac: max file count behaviour 2025-06-16 13:28:31 +04:00
Bekzod Akbarov ace2345a69 Add Uzbek (Cyrillic and Latin) i18n support
- Added `uz-Cyrl-UZ` and `uz-Latn-UZ` folders with `translation.json` files
- Updated `languages.json` to include both Uzbek language variants
2025-06-16 14:25:22 +05:00
Timothy Jaeryang Baek 59324a82e0 refac 2025-06-16 13:19:00 +04:00
Timothy Jaeryang Baek e46e87889e refac: pass through ollama error message 2025-06-16 13:03:56 +04:00
Sine Jespersen 6fcdd11fb2 add labels to image compression inputs 2025-06-16 10:56:54 +02:00
Sine Jespersen 047d8cec5d aria-labelledby on buttons to connect to labels 2025-06-16 10:51:12 +02:00
Tim Jaeryang Baek 61d8d2f2cb Merge pull request #14197 from jk-f5/otel_metrics
feat: Add OpenTelemetry Metrics Support via OTLP Exporter
2025-06-16 12:49:41 +04:00
Timothy Jaeryang Baek 51e05988bd refac 2025-06-16 12:46:04 +04:00
Tim Jaeryang Baek b37907671e Merge pull request #15010 from itk-dev/feature/outline-hidden-depend-on-high-contrast-mode
Feat: outline hidden depend on high contrast mode
2025-06-16 12:43:33 +04:00
Tim Jaeryang Baek 0e245c0afc Merge pull request #15011 from itk-dev/feature/outline-hidden-depend-on-high-contrast-mode-selects-general-tab
outline-hidden depend on highcontrastmode in selects
2025-06-16 12:42:54 +04:00
Timothy Jaeryang Baek b748d5edee fix: direct tool servers permissions 2025-06-16 12:42:16 +04:00
Timothy Jaeryang Baek debe3c752f chore: python-pptx bump 2025-06-16 12:39:42 +04:00
Timothy Jaeryang Baek ea578af45f refac: use first user message as title instead of 'new chat' 2025-06-16 12:37:41 +04:00
Timothy Jaeryang Baek 8258dfb5af enh: enable deepgram smart_format 2025-06-16 12:34:01 +04:00
Sine Jespersen 1909505466 make header h1 instead of div 2025-06-16 10:33:48 +02:00
Timothy Jaeryang Baek f98ea78964 refac: remove user & access_control field from files 2025-06-16 12:31:52 +04:00
Sine Jespersen f1e38fa376 outline-hidden depend on highcontrastmode in selects 2025-06-16 10:26:54 +02:00
Timothy Jaeryang Baek 090234735a Update apple-touch-icon.png 2025-06-16 12:13:51 +04:00
Timothy Jaeryang Baek afca606063 refac: banner scrollbar 2025-06-16 12:06:33 +04:00
Sine Jespersen 0d473a456a maje outline-hidden depend on highContrastMode due to accessibility 2025-06-16 10:05:34 +02:00
Timothy Jaeryang Baek 4a2428123b refac 2025-06-16 12:04:31 +04:00
Timothy Jaeryang Baek ba6fc385bb refac: styling 2025-06-16 12:04:15 +04:00
Timothy Jaeryang Baek 4db0da2b75 refac 2025-06-16 12:02:34 +04:00
Timothy Jaeryang Baek 5ab95cbc3a refac: remove redundant overlay with temp chat 2025-06-16 11:57:56 +04:00
Timothy Jaeryang BaekandClassic298 3b0da53457 feat: load-url search param added
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-06-16 11:55:23 +04:00
Tim Jaeryang Baek 5d90e31ab6 Merge pull request #15009 from itk-dev/feature/password-button-accessibility-again
Feat: password button accessibility again
2025-06-16 11:52:39 +04:00
Timothy Jaeryang Baek dc3055873b refac: display full model name on hover 2025-06-16 11:50:26 +04:00
Timothy Jaeryang Baek f5d250820b refac 2025-06-16 11:46:02 +04:00
Timothy Jaeryang Baek 8892c14984 refac 2025-06-16 11:44:07 +04:00
Sine Jespersen 75883dc835 outline-hidden depend on high contrast mode 2025-06-16 09:43:47 +02:00
Sine Jespersen d1677635a5 add label visible to screen readers to sensitive input 2025-06-16 09:41:29 +02:00
Sine Jespersen 400c4c3d12 add aria pressed to toggle visibility button, to show current state 2025-06-16 09:40:41 +02:00
Timothy Jaeryang Baek a47e3b429e fix/refac: enforce multiple models permission to imported chats 2025-06-16 11:40:13 +04:00
Timothy Jaeryang Baek 805e980ae5 fix: notes permissions issue 2025-06-16 11:35:01 +04:00
Timothy Jaeryang Baek b50cfd0940 refac 2025-06-16 11:14:24 +04:00
Sine Jespersen 53d044f8a2 add aria label to button with no other label 2025-06-16 09:12:12 +02:00
Sine Jespersen 0e95af01ea remove decorative svg from screen readers 2025-06-16 09:11:50 +02:00
Tim Jaeryang Baek c5b48ec551 Merge pull request #14992 from sreesdas/dev
Fix: Added support for multiple pages in external document loader
2025-06-16 11:01:33 +04:00
Timothy Jaeryang Baek e0ffe234ba refac: styling 2025-06-16 10:58:04 +04:00
Timothy Jaeryang Baek e0917e9f38 refac: new chat button moved to the leftside 2025-06-16 10:54:50 +04:00
Timothy Jaeryang Baek 177f2902db refac 2025-06-16 10:51:30 +04:00
Timothy Jaeryang Baek 423a35782b refac: usage event handling 2025-06-16 10:42:34 +04:00
Tim Jaeryang Baek deaa7133a2 Merge pull request #14903 from vaclcer/vaclavs-docling-picture-describe-fix
fix: Docling - serialize picture description parameters
2025-06-16 09:58:05 +04:00
Tim Jaeryang Baek 37658e06a2 Merge pull request #14857 from Classic298/feat/code-interpreter-url-param
feat: Enable Code Interpreter using URL Parameter
2025-06-16 09:57:25 +04:00
Tim Jaeryang Baek 1f7a93b0fb Merge pull request #14937 from silentoplayz/situational-keyboard-shortcuts
feat: Add New Keyboard Shortcuts with asterisk and tooltip to imply situational
2025-06-16 09:54:05 +04:00
Tim Jaeryang Baek 866c61bac6 Merge pull request #14982 from silentoplayz/fix-drag
fix: Replace Inline SVGs with Icon Components and Convert Links to Buttons
2025-06-16 09:53:17 +04:00
Tim Jaeryang Baek c2b4b76a90 Merge pull request #14944 from silentoplayz/sort-feedbacks
feat: Implement Client-Side Sorting for Feedback History Table
2025-06-16 09:48:17 +04:00
Tim Jaeryang Baek 5a4a293a93 Merge branch 'dev' into sort-feedbacks 2025-06-16 09:47:51 +04:00
Timothy Jaeryang Baek c060e70089 refac: styling 2025-06-16 09:43:34 +04:00
Timothy Jaeryang Baek e34f11f5cc refac: styling 2025-06-16 09:40:40 +04:00
Timothy Jaeryang Baek 3e55c7f333 refac 2025-06-16 09:36:29 +04:00
Tim Jaeryang Baek b8a4824305 Merge pull request #14985 from Classic298/multi-model-chat-highlighting
Feat: Improve selected message highlighting for multi-model chats
2025-06-16 09:21:05 +04:00
Tim Jaeryang Baek 2251a50451 Merge pull request #14990 from SadmL/patch-1
[i18n] Russian locale update
2025-06-16 09:18:33 +04:00
sree 62bfe73964 Fix: Added support for multiple pages in external document loader, added filename in api request header 2025-06-15 19:59:05 +05:30
Link [Связной] 2eeffc8c59 [i18n] Russian locale update 2025-06-15 13:54:49 +03:00
Silentoplayz 6e8c6e269e fix: select-none w-full 2025-06-14 18:26:27 -04:00
Classic298 14cfd4599c Improve selected message highlight (#12) 2025-06-14 21:49:33 +02:00
Silentoplayz 4fd7bfe19b refac: Icon files for UserMenu 2025-06-14 14:31:20 -04:00
Silentoplayz 9ccb9a87e6 fix: Prevent draggable links for Admin Panel & Playground in UserMenu 2025-06-14 13:56:30 -04:00
Tim Jaeryang Baek 53060a44ae Merge pull request #14941 from silentoplayz/chat-bubble-timestamp-on-mouse-hover
Feat: Show timestamp on hover of user message in Chat Bubble UI mode
2025-06-14 18:06:47 +04:00
Tim Jaeryang Baek 4c7c5dd860 Merge pull request #14911 from ayanahye/feedback-evaluation-modal
Feat: add modal to display more evaluation information in Feedback History
2025-06-14 18:01:05 +04:00
Tim Jaeryang Baek 69be2a1bc9 Merge pull request #14949 from ayanahye/leaderboard-evaluation-additions
Feat: add initial modal for the leaderboard
2025-06-14 18:00:17 +04:00
Tim Jaeryang Baek 42b8463fcc Merge pull request #14959 from itk-dev/feature/accessibility-edit-connection-modal
Feature/accessibility edit connection modal
2025-06-14 17:58:38 +04:00
Tim Jaeryang Baek 35df44d07e Merge pull request #14971 from qingchunnh/Update_zh-CN-25614
i18n: Update zh-CN
2025-06-14 16:53:16 +04:00
qingchun 652e1a6b19 i18n: Update zh-CN 2025-06-14 02:34:08 +08:00
Sine Jespersen 78fcfbb328 hide decorative svg 2025-06-13 14:43:03 +02:00
Sine Jespersen 33a3aed698 remove repeated classes 2025-06-13 14:42:55 +02:00
Sine Jespersen d0a114869e make taglist a list and add aria-labels 2025-06-13 14:10:29 +02:00
Sine Jespersen 7d8fb116b6 Use <ul and <li because the items are a list 2025-06-13 14:10:29 +02:00
Sine Jespersen 6f73561f7a remove decorative svg from screen readers 2025-06-13 14:10:29 +02:00
Sine Jespersen a710ea1f07 add aria label to delete button 2025-06-13 14:10:29 +02:00
Sine Jespersen b95bc727df add label for screen readers for model id input 2025-06-13 14:10:29 +02:00
Sine Jespersen ba9e9e8095 add aria label to button with no label 2025-06-13 14:10:29 +02:00
Sine Jespersen 47c65bac6c remove decorative svg from screen readers 2025-06-13 14:10:29 +02:00
Sine Jespersen 85018dd106 high contrast mode on placeholder 2025-06-13 14:10:29 +02:00
Sine Jespersen 669a9f0777 highContrastMode (for accessibility) on text color in add connection modal 2025-06-13 14:10:28 +02:00
Sine Jespersen 1160a03644 change label for url to label instead of div 2025-06-13 14:10:28 +02:00
Sine Jespersen 843810cc9f add aria hidden to decorative svg 2025-06-13 14:10:28 +02:00
Sine Jespersen 8b5f5bb327 add label to verify connection button 2025-06-13 14:10:28 +02:00
Sine Jespersen 15efb07961 add label to toggle connection button in configure connect modal 2025-06-13 14:10:28 +02:00
Sine Jespersen a1034a4ca3 correct classname to inputclassname as prop is named this 2025-06-13 14:10:28 +02:00
Tim Jaeryang Baek 4978dd9085 Merge pull request #14943 from jk-f5/fix/oauth
Fix double‐slash (//auth) in OAuth callback redirect
2025-06-13 16:08:28 +04:00
Tim Jaeryang Baek 0b8f86d27b Merge pull request #14946 from t-rekttt/patch-1
fix: Page number 1 not displaying in citation references
2025-06-13 16:06:07 +04:00
Tim Jaeryang Baek 6918eb44ac Merge pull request #14953 from itk-dev/feature/aria-label-on-cog-button
Feat: aria label on cog button
2025-06-13 16:04:55 +04:00
Tim Jaeryang Baek 91af2698be Merge pull request #14958 from Ithanil/disable_console_log
feat: Disable console.log/debug in production
2025-06-13 16:04:13 +04:00
Jan Kessler 4681b06206 also disable console.debug 2025-06-13 13:54:40 +02:00
Jan Kessler aecbc93c16 disable console.log entirely 2025-06-13 13:39:16 +02:00
Classic298 033e5c1e00 Update chats.py 2025-06-13 13:07:41 +02:00
Classic298 e50cde80f3 Fix search unicode error (#11) 2025-06-13 13:05:33 +02:00
Sine Jespersen 0313ac0166 aria-hidden true on decorative svg 2025-06-13 10:46:39 +02:00
Sine Jespersen 87a837f850 add aria label to cog button in connections tab in settings modal 2025-06-13 10:46:27 +02:00
Ayana H 4bb41d3ead Merge branch 'dev' into leaderboard-evaluation-additions 2025-06-12 22:41:20 -07:00
ayana edf927516e Add initial modal for the leadderboard as well 2025-06-12 22:28:06 -07:00
T-Rekt 190400d1e8 Fix: page number edge case
Fix when document?.metadata?.page == 0 (page 1), the page number will not be displayed
2025-06-13 04:49:17 +07:00
Silentoplayz 380a31fbac Feat: Implement Client-Side Sorting for Feedback History Table 2025-06-12 16:13:33 -04:00
Jason Kidd fced3efd98 fix: Trailing slash was never removed from request.base_url because it's not a string but rather a starlette.datastructures.URL 2025-06-12 12:29:08 -07:00
Silentoplayz d92d555c03 Feat: Show user message timestamps on hover in Chat Bubble UI mode 2025-06-12 15:13:24 -04:00
ayana 880323a4e4 update based on requested changes 2025-06-12 10:53:55 -07:00
Tim Jaeryang Baek 8a2723a7a6 Merge pull request #14922 from itk-dev/feature/high-contrast-mode-in-connections-tab-in-settings-modal
Feat: high contrast mode in connections tab in settings modal
2025-06-12 20:40:01 +04:00
Tim Jaeryang Baek 2ff889dce0 Merge pull request #14933 from itk-dev/feature/accessibility-add-edit-connection-modal
Feat: accessibility add edit connection modal
2025-06-12 20:38:35 +04:00
Tim Jaeryang Baek 6c677e4b28 Merge pull request #14868 from ayanahye/evaluation-additions
Feat: add ability to sort leaderboard
2025-06-12 20:32:47 +04:00
Silentoplayz a98661735f feat: Add New Keyboard Shortcuts with asterisk and tooltip to imply situational 2025-06-12 09:47:17 -04:00
Sine Jespersen b446bea6d1 hide decorative svg from screen readers 2025-06-12 14:37:01 +02:00
Sine Jespersen 6faa9db4a7 add aria-label to button without label 2025-06-12 14:36:44 +02:00
Sine Jespersen 2b276583c3 change div to h1, because it is the main header in the modal 2025-06-12 14:34:26 +02:00
Tim Jaeryang Baek 80a5aa7259 Merge pull request #14923 from flex-mincheol/feature/i18n-ko-kr
i18n: Update ko-KR (Korean) translation.json
2025-06-12 13:36:28 +04:00
Sine Jespersen 9d76f30f9b high contrast mode on text in connections tab on settings modal 2025-06-12 11:01:02 +02:00
Tim Jaeryang Baek 09bbcee391 Merge pull request #14893 from tcx4c70/fix/log-format-error
fix(tools): not all arguments converted during string formatting
2025-06-12 12:30:31 +04:00
Timothy Jaeryang Baek c2aa5b7399 chore: youtube-transcript-api bump 2025-06-12 12:25:28 +04:00
Timothy Jaeryang Baek 9b9d5d84f4 fix: trusted header email case sensitive issue 2025-06-12 12:22:15 +04:00
flex-mincheol 389dbd1983 i18n: Update ko-KR (Korean) translation.json 2025-06-12 17:08:43 +09:00
ayana 2f8c0b6b26 Feat: add modal to display for evaluation information in Feedbacks 2025-06-11 19:34:07 -07:00
ayana 464c67eb46 use different notation 2025-06-11 18:27:13 -07:00
Vaclav Cerny 4bbc32efa6 fix: serialize picture description parameters to JSON in DoclingLoader 2025-06-11 20:00:25 +02:00
Tim Jaeryang Baek c27d8a4a28 Merge pull request #14900 from silentoplayz/fix-references
fix: prevent redundant documents in expanded citation list
2025-06-11 21:13:30 +04:00
Timothy Jaeryang Baek 371bdd7afa refac 2025-06-11 20:40:19 +04:00
Tim Jaeryang Baek 0d00971dad Merge pull request #14898 from jackthgu/ldap-group-sync
feat: Configure LDAP group synchronization with Open WebUI
2025-06-11 20:23:53 +04:00
Tim Jaeryang Baek 80c359c24e Merge pull request #14888 from silentoplayz/i18n-fix2
chore: consistent apostrophe usage in components and i18n files
2025-06-11 20:19:32 +04:00
Timothy Jaeryang Baek 6076afd5f5 fix: url param issue
#14901
2025-06-11 20:16:53 +04:00
Silentoplayz 8e60174e0d fix: prevent redundant documents in expanded citation list 2025-06-11 11:37:46 -04:00
Taehong Gu ba591d8c41 Configure LDAP group synchronization with Open WebUI 2025-06-11 23:55:31 +09:00
Tim Jaeryang Baek 387c2377ba Merge pull request #14890 from itk-dev/feature/hide-decorative-svgs
Feat: aria hidden on svg/icons
2025-06-11 17:39:20 +04:00
Adam Tao 809d91a3df fix(tools): not all arguments converted during string formatting
Signed-off-by: Adam Tao <tcx4c70@gmail.com>
2025-06-11 21:36:36 +08:00
Sine Jespersen 99ff1684d0 aria hidden on svg/icons 2025-06-11 14:47:28 +02:00
Tim Jaeryang Baek 9a1d2a1844 Merge pull request #14878 from itk-dev/feature/settings-modal-tab-list
Feature: settings modal tab list
2025-06-11 16:36:06 +04:00
Sine Jespersen 5dd99a0ea7 add aria-controls and ids to connect tabs to content 2025-06-11 13:45:47 +02:00
Sine Jespersen aee60add1d add aria-selected to tabs 2025-06-11 13:42:50 +02:00
Sine Jespersen 6af91325e2 add roles tablist and tab to tabs in settings modal 2025-06-11 13:41:26 +02:00
Silentoplayz a3f3f58e54 chore: consistent apostrophe usage in components and i18n files 2025-06-11 07:15:44 -04:00
Timothy Jaeryang Baek bc5f7e31ac refac 2025-06-11 14:43:56 +04:00
Timothy Jaeryang Baek c70a037692 refac 2025-06-11 14:43:07 +04:00
Tim Jaeryang Baek bebbc24d27 Merge pull request #14860 from Classic298/patch-2
i18n: Add german translation for new model pinning feature
2025-06-11 14:15:48 +04:00
Tim Jaeryang Baek 4e61bdd109 Merge pull request #14858 from Kylapaallikko/dev
i18n: Update fi-FI translation
2025-06-11 14:15:38 +04:00
2underscores 88c8ea883c Isolated fix to single section 2025-06-11 19:58:55 +10:00
Timothy Jaeryang Baek 9123c57c8a refac 2025-06-11 12:12:29 +04:00
ayana af285297bc Feat: add ability to sort leaderboard 2025-06-10 21:09:25 -07:00
Classic298 5c156c854b Update translation.json 2025-06-10 21:19:24 +02:00
google-labs-jules[bot] 70333c4dcf feat: Enable Code Interpreter via URL parameter
Adds the ability to enable the Code Interpreter feature by appending
`code-interpreter=true` to the chat URL.

The `Chat.svelte` component's `initNewChat` function has been updated
to parse this URL parameter. If present, it sets the
`codeInterpreterEnabled` state variable to true.

This change leverages the existing mechanisms for:
- Saving and restoring `codeInterpreterEnabled` state to/from localStorage.
- Displaying and toggling the Code Interpreter state via the existing UI
  button in the `MessageInput` component.

No new UI elements were added as the existing UI correctly reflects
the feature's state.
2025-06-10 18:56:49 +00:00
Kylapaallikko 1ca70b886b Update fi-FI translation.json 2025-06-10 21:51:29 +03:00
Jason Kidd 210dc746f0 feat: Add OpenTelemetry Metrics Support via OTLP Exporter 2025-06-10 10:52:10 -07:00
Tim Jaeryang Baek 63256136ef Merge pull request #14675 from open-webui/dev
0.6.14
2025-06-10 18:17:50 +04:00
Timothy Jaeryang Baek fd8cdb383c doc: changelog 2025-06-10 18:10:20 +04:00
Timothy Jaeryang Baek ab42a192e6 refac: styling 2025-06-10 17:54:08 +04:00
Timothy Jaeryang Baek adab4dbf21 chore: bump 2025-06-10 17:50:32 +04:00
Tim Jaeryang Baek c14160d73a Merge pull request #14845 from itk-dev/feature/accessibility-aria-label-close-button-and-aria-hidden-svg
Feat: accessibility aria label close button and aria hidden svg
2025-06-10 17:37:31 +04:00
Timothy Jaeryang Baek a7330d97da chore: format 2025-06-10 16:53:37 +04:00
Timothy Jaeryang Baek b39d33cefb refac 2025-06-10 16:52:37 +04:00
Timothy Jaeryang Baek d2e7feea86 refac 2025-06-10 16:42:26 +04:00
Timothy Jaeryang Baek a018140c7d refac: admin settings models 2025-06-10 16:41:39 +04:00
Timothy Jaeryang Baek 9931ccef1e refac 2025-06-10 16:20:57 +04:00
Sine Jespersen 56b012e3a6 danish translation added 2025-06-10 14:06:14 +02:00
Sine Jespersen c9820d65a6 add aria-hidden to svg, as this is decorative and only cause confusion for users with assistive tech 2025-06-10 13:59:27 +02:00
Sine Jespersen 9c1c11cad0 use xmark icon instead of inline svg 2025-06-10 13:58:58 +02:00
Sine Jespersen 8b5ecfb2fe Add aria label to close button 2025-06-10 13:52:24 +02:00
Tim Jaeryang Baek 3e81705dd3 Merge pull request #14837 from itk-dev/feature/menu-link-anchor
Feat: menu link anchor
2025-06-10 15:10:58 +04:00
Tim Jaeryang Baek 5168d612dc Merge pull request #14838 from Classic298/Classic298-patch-1
i18n: Small german translation update
2025-06-10 15:09:16 +04:00
Classic298 e67ab489aa Merge branch 'dev' into Classic298-patch-1 2025-06-10 13:07:24 +02:00
Classic298 c11cc58b00 Small german translation update 2025-06-10 12:54:17 +02:00
Sine Jespersen 3288b82175 change admin settings link to anchor instead of button 2025-06-10 12:49:18 +02:00
Timothy Jaeryang Baek f67f86f06f refac: styling 2025-06-10 14:33:49 +04:00
Timothy Jaeryang Baek c4cd2b55f0 refac: styling 2025-06-10 14:13:52 +04:00
Timothy Jaeryang Baek bacf39902b refac: styling 2025-06-10 14:02:43 +04:00
Tim Jaeryang Baek aeb81767a9 Merge pull request #14834 from SadmL/patch-1
[i18n] Russian locale update
2025-06-10 13:57:23 +04:00
Timothy Jaeryang Baek 884282c4ed refac: styling 2025-06-10 13:57:13 +04:00
Timothy Jaeryang Baek f55579ce25 refac 2025-06-10 13:55:25 +04:00
Link [Связной] 02f5bfba73 [i18n] Russian locale update 2025-06-10 12:54:31 +03:00
Tim Jaeryang Baek f29c9d8dcf Merge pull request #14833 from open-webui/dependabot/pip/pip-512858e340
build(deps): bump requests from 2.32.3 to 2.32.4 in the pip group across 1 directory
2025-06-10 13:45:47 +04:00
Timothy Jaeryang Baek 4c65728443 chore: format 2025-06-10 13:43:18 +04:00
Timothy Jaeryang Baek b36b480b43 refac 2025-06-10 13:40:36 +04:00
Tim Jaeryang Baek b8450ecf01 Merge pull request #14832 from itk-dev/feature/high-contrast-mode-and-label-menu-search-bar
FEAT: high contrast mode and label menu search bar
2025-06-10 13:40:14 +04:00
Timothy Jaeryang Baek 464b086ec5 refac 2025-06-10 13:39:41 +04:00
dependabot[bot] fc83842ab2 build(deps): bump requests in the pip group across 1 directory
Bumps the pip group with 1 update in the / directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.3 to 2.32.4
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 09:38:48 +00:00
Tim Jaeryang Baek 7b248fc1f4 Merge pull request #14830 from open-webui/dependabot/pip/backend/pip-512858e340
build(deps): bump requests from 2.32.3 to 2.32.4 in /backend in the pip group across 1 directory
2025-06-10 13:37:49 +04:00
Timothy Jaeryang Baek a28bec865b refac 2025-06-10 13:16:44 +04:00
Timothy Jaeryang Baek b7a91b1963 refac: ollama response 2025-06-10 13:10:31 +04:00
Timothy Jaeryang Baek 2ccc441b41 refac 2025-06-10 13:01:45 +04:00
dependabot[bot] 106494aa79 build(deps): bump requests
Bumps the pip group with 1 update in the /backend directory: [requests](https://github.com/psf/requests).


Updates `requests` from 2.32.3 to 2.32.4
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 08:56:03 +00:00
Timothy Jaeryang Baek 0b336fb6f1 refac 2025-06-10 12:53:18 +04:00
Timothy Jaeryang Baek 8f68b25510 enh/refac: ollama advanced params 2025-06-10 12:48:34 +04:00
Sine Jespersen 7fd5304e76 add assistive technology accessible label for search input in settings modal 2025-06-10 10:27:06 +02:00
Sine Jespersen af0f2a678e highContrastMode on search input in settingsmodal for accessibility 2025-06-10 10:25:40 +02:00
Timothy Jaeryang Baek ad80643774 refac: styling 2025-06-10 12:15:47 +04:00
Tim Jaeryang Baek 6e11bf73a7 Merge pull request #14827 from itk-dev/feature/high-contrast-mode-menu
FEAT: high contrast mode menu
2025-06-10 11:49:47 +04:00
Sine Jespersen ce45939463 add highContrastMode to menu items/tabs to improve contrast 2025-06-10 09:39:10 +02:00
Timothy Jaeryang Baek d430fe9551 refac 2025-06-10 11:30:54 +04:00
Timothy Jaeryang Baek 7f488b3754 feat: experimental pgvector pgcrypto support 2025-06-09 18:14:33 +04:00
Tim Jaeryang Baek 6d4f449085 Merge pull request #14775 from janaki-sasidhar/fix/insecure-user-switching-when-trusted-email-header
fix: verify trusted email header matches active user session
2025-06-09 17:44:30 +04:00
Timothy Jaeryang Baek 7953aa5763 refac 2025-06-09 17:43:22 +04:00
Tim Jaeryang Baek 95f54f5778 Merge pull request #14811 from SadmL/patch-1
[i18n] Russian locale update
2025-06-09 17:40:35 +04:00
Timothy Jaeryang Baek 51fc98bed8 refac 2025-06-09 17:24:03 +04:00
Timothy Jaeryang Baek ea8dc333ee refac/fix: multi-replica tasks 2025-06-09 17:21:10 +04:00
Link [Связной] 5447ac2de6 [i18n] Russian locale update 2025-06-09 15:43:17 +03:00
Timothy Jaeryang Baek 5fae7360fb refac: hide profile image in mobile 2025-06-09 16:35:20 +04:00
Timothy Jaeryang Baek db3c26ab7a refac: async redis 2025-06-09 15:37:05 +04:00
Timothy Jaeryang Baek 8da1ce358f refac: model selector styling 2025-06-09 11:22:31 +04:00
Timothy Jaeryang Baek ce9455b9a2 refac: styling 2025-06-09 10:43:47 +04:00
Tim Jaeryang Baek 36e5e51510 Merge pull request #14797 from qingchunnh/Update_zh-CN-2569-2
i18n: Update zh-CN
2025-06-09 10:13:28 +04:00
qingchun 7f39097879 i18n: Update zh-CN 2025-06-09 13:04:54 +08:00
Timothy Jaeryang Baek 9409083d0b refac 2025-06-09 02:16:23 +04:00
Timothy Jaeryang Baek 2573882b88 refac 2025-06-09 02:13:25 +04:00
Timothy Jaeryang Baek d1be1de013 fix: typo 2025-06-09 01:50:10 +04:00
Timothy Jaeryang Baek 7c03601425 chore: bump 2025-06-09 01:49:01 +04:00
Timothy Jaeryang Baek 053ab2838b chore: format 2025-06-09 01:48:29 +04:00
Timothy Jaeryang Baek 602bb55434 refac: styling 2025-06-09 01:45:41 +04:00
Timothy Jaeryang Baek 19c09d216d revert 2025-06-09 01:36:32 +04:00
Tim Jaeryang Baek 7a11fd2a4d Merge pull request #14793 from qingchunnh/Update_zh-CN-2569
i18n: Update & Improve zh-CN
2025-06-09 01:31:51 +04:00
Tim Jaeryang Baek c04569fdd4 Merge pull request #14791 from aindriu80/my-clean-fix
i18n: Updated Irish translation
2025-06-09 01:31:44 +04:00
Timothy Jaeryang Baek b0da2c998b refac 2025-06-09 01:27:50 +04:00
Timothy Jaeryang Baek 86551de1f7 refac 2025-06-09 01:26:32 +04:00
Timothy Jaeryang Baek 2f338b6ae7 refac: styling 2025-06-09 01:25:42 +04:00
Timothy Jaeryang Baek a64667ca8d feat: pinned models 2025-06-09 01:24:11 +04:00
Timothy Jaeryang Baek 3448362e00 refac: styling 2025-06-09 01:16:08 +04:00
Timothy Jaeryang Baek 9cbe39718d refac 2025-06-09 01:14:40 +04:00
Timothy Jaeryang Baek 7969d8e8f3 refac 2025-06-09 00:53:16 +04:00
Timothy Jaeryang Baek c59b4cf379 chore: bump bits ui 2025-06-09 00:37:38 +04:00
Timothy Jaeryang Baek 5e91c2c1fe refac: styling 2025-06-09 00:33:41 +04:00
qingchun b66d86cb74 i18n: Update & Improve zh-CN 2025-06-09 03:24:43 +08:00
Aindriú Mac Giolla Eoin ec9e3ef2c3 Merge branch 'dev' into my-clean-fix 2025-06-08 19:32:34 +01:00
Aindriú Mac Giolla Eoin a3ed5045d3 i18n fix commit issue 2025-06-08 19:28:35 +01:00
Timothy Jaeryang Baek 7f75acff96 chore: format 2025-06-08 22:08:25 +04:00
Timothy Jaeryang Baek a944e1f526 fix: feedback score overflow styling 2025-06-08 21:29:05 +04:00
Timothy Jaeryang Baek 3a0696e1b0 refac 2025-06-08 21:21:51 +04:00
Timothy Jaeryang Baek d8d8380a78 refac/fix: multi-replica stop task (response) 2025-06-08 21:20:30 +04:00
Timothy Jaeryang Baek 0c57980e72 refac: tasks 2025-06-08 20:58:31 +04:00
Timothy Jaeryang Baek 51fe33395b refac 2025-06-08 20:27:08 +04:00
Timothy Jaeryang Baek 4fe45d4430 refac/security: python code format endpoint 2025-06-08 20:26:07 +04:00
Timothy Jaeryang Baek 87e5aee106 refac 2025-06-08 20:05:26 +04:00
Timothy Jaeryang Baek 0cd400f5ee refac: docling picture describe params 2025-06-08 20:02:14 +04:00
Timothy Jaeryang Baek b9c64d0936 refac: styling 2025-06-08 19:22:41 +04:00
Tim Jaeryang Baek 6cb519ca0e Merge pull request #14774 from rragundez/images-from-db
fix: Store and load code interpreter generated images from a central location (DB and/or cloud storage)
2025-06-08 19:09:28 +04:00
Tim Jaeryang Baek 6bf393a480 Merge pull request #14787 from vaclcer/vaclavs-custom-docling
feat: Customize Docling's "Describe Pictures" feature
2025-06-08 19:02:36 +04:00
Tim Jaeryang Baek ac4513a773 Merge pull request #14783 from mrexodia/local-dev-fixes
fix: Improve local development setup
2025-06-08 18:59:38 +04:00
Tim Jaeryang Baek dae4a7088e Merge pull request #14780 from qingchunnh/Update_zh-CN-2568
i18n: Update zh-CN
2025-06-08 18:40:44 +04:00
Tim Jaeryang Baek 50d9a2ac58 Merge pull request #14781 from lucyknada/patch-2
fix: fix #14752 and add manual transcription retrieval
2025-06-08 18:40:28 +04:00
Tim Jaeryang Baek 0b1c81791e Merge pull request #14779 from GewoonJaap/feature/audio-html-component
Add Audio HTML token support
2025-06-08 18:39:50 +04:00
Vaclav Cerny 99f05561f8 Add configuration options for picture description modes and update related components 2025-06-08 16:30:26 +02:00
Duncan Ogilvie 5e73fd569d Improve local development setup 2025-06-08 15:17:08 +02:00
Duncan Ogilvie 7010393a41 Change default CORS_ALLOW_ORIGIN to '*'
The local development setup defaults do not actually work currently.
2025-06-08 15:16:51 +02:00
Duncan Ogilvie 41220b379f Exclude the 'backend' folder from the Vite watcher.
This avoids unnecessary reloads when working on the backend.
2025-06-08 14:58:56 +02:00
lucy b0965a8184 fixes #14752 and adds manual transcription option 2025-06-08 14:26:24 +02:00
qingchun 76d1690a0c i18n: Update zh-CN 2025-06-08 19:56:11 +08:00
Jaap d269c4b8e6 Audio token 2025-06-08 12:08:07 +02:00
Tim Jaeryang Baek 2b9c466bed Merge pull request #14765 from diwakar-s-maurya/patch-10
fix: save Document settings only when Save button is pressed
2025-06-08 13:05:51 +04:00
Tim Jaeryang Baek 1facc4485a Merge pull request #14766 from EntropyYue/feature/secret-key-file
feat: add support for WEBUI_SECRET_KEY_FILE
2025-06-08 13:05:29 +04:00
Tim Jaeryang Baek de3e474224 Merge pull request #14769 from RGSS3/main
The translation might be confusing, in some cases for example tooltip…
2025-06-08 13:04:50 +04:00
Tim Jaeryang Baek cc563d9763 Merge pull request #14770 from silentoplayz/small-fix
fix: remove newline from Pending User Overlay Title input field
2025-06-08 13:04:19 +04:00
Tim Jaeryang Baek ffe7bdd213 Merge pull request #14772 from silentoplayz/fix-save-for-LDAP
Fix: Ensure Consistent LDAP Settings Save
2025-06-08 13:03:17 +04:00
sasidhar 6860dec08f fix: properly sign out user on trusted email mismatch
When using trusted email header authentication, properly sign out the user
when the logged-in user's email doesn't match the trusted email header value.
This ensures proper session cleanup when the OAuth server changes the
authenticated user.

- Add response parameter to get_current_user function
- Delete JWT token cookie on email mismatch
- Delete OAuth token cookie if present
- Force re-authentication with 401 error
2025-06-08 14:26:55 +05:30
sasidhar 61f49ff580 fix: ensure trusted email header matches logged-in user
When using trusted email header authentication, verify that the logged-in user's
email matches the value in the header. This prevents session conflicts when the
OAuth server changes the authenticated user.

- Move trusted email verification after user existence check
- Raise 401 if email mismatch is detected
- Only perform verification when WEBUI_AUTH_TRUSTED_EMAIL_HEADER is enabled
2025-06-08 14:16:10 +05:30
Rodrigo Agundez 41e28a9f6f Use standardized procedure to save and load images 2025-06-08 16:26:58 +08:00
Rodrigo Agundez 168997a58e Return tuple consistently and strip potential left string 2025-06-08 16:26:08 +08:00
Silentoplayz a6c7ddcb28 fix: Hidden delete button for playground chat messages 2025-06-08 04:16:41 -04:00
Silentoplayz 67e930e1d2 Fix: Ensure Consistent LDAP Settings Save 2025-06-08 02:17:41 -04:00
Silentoplayz 92c7549b06 fix: remove newline 2025-06-08 01:50:11 -04:00
seiran e97394958e Merge branch 'dev' into main 2025-06-08 05:58:24 +08:00
Diwakar Singh Maurya d600e60776 fix: save Document settings only when Save button is pressed 2025-06-07 15:39:13 +00:00
EntropyYue fd4c42b42e feat: add support for WEBUI_SECRET_KEY_FILE 2025-06-07 23:14:21 +08:00
Diwakar Singh Maurya 871efb4ad9 feat: add langchain markdown document splitter 2025-06-07 06:02:53 +00:00
Tim Jaeryang Baek da5fbc0e39 Merge pull request #14743 from PeterDaveHello/Improve-zh-TW-locale
i18n: improve zh-TW Traditional Chinese locale
2025-06-06 21:26:57 +04:00
Tim Jaeryang Baek 1ad4f7a244 Merge pull request #14736 from SadmL/patch-1
[i18n] Russian locale update
2025-06-06 17:46:14 +04:00
Link [Связной] c0f65ec28a [i18n] Russian locale update 2025-06-06 16:28:36 +03:00
Sine Jespersen 6fd91e58cf add highContrastMode to type Settings 2025-06-06 13:38:35 +02:00
Timothy Jaeryang Baek b433d30c26 chore: format 2025-06-06 15:27:05 +04:00
Tim Jaeryang Baek 1ff7cb7d2f Merge pull request #14720 from itk-dev/feature/accessibible-chat-buttons
Feat: accessibible chat buttons
2025-06-06 12:55:46 +04:00
Sine Jespersen 9c38183689 reindent xmlns 2025-06-06 10:52:13 +02:00
Sine Jespersen fd97882fca add aria labels to buttons that only contains decorative svgs 2025-06-06 10:46:50 +02:00
Sine Jespersen 2b4d4d2770 remove aria-label from tooltip, as tippy handles this out of the box 2025-06-06 10:32:29 +02:00
Sine Jespersen dc60bd2816 add aria-hidden to svg, as these are decorative 2025-06-06 10:32:01 +02:00
Timothy Jaeryang Baek 0b84b22b4e refac: chat item key 2025-06-05 22:38:46 +04:00
Timothy Jaeryang Baek 870c23f69d refac 2025-06-05 22:37:14 +04:00
Timothy Jaeryang Baek 12cfb7b0f0 refac: admin evaluation pages 2025-06-05 21:43:43 +04:00
Tim Jaeryang Baek 37f1d47a06 Merge pull request #14683 from headwAI-GmbH/more-ideomatic-matrix
chore: More ideomatic docker-build matrix
2025-06-05 20:48:31 +04:00
Tim Jaeryang Baek 14a890a0a5 Merge pull request #14687 from SadmL/patch-2
[i18n] Russian locale update
2025-06-05 20:43:37 +04:00
Tim Jaeryang Baek f155abc63c Merge pull request #14700 from silentoplayz/better-settings-search
feat: Enhance Settings Modal Search & Admin Settings Button Placement
2025-06-05 20:43:19 +04:00
Tim Jaeryang Baek f6f3360ef7 Merge pull request #14695 from TiancongLx/dev
i18n: update zh-TW
2025-06-05 20:42:04 +04:00
Tim Jaeryang Baek 99fe23ef66 Merge pull request #14694 from Bouby308/patch-1
fix: return json for successful userSignOut
2025-06-05 20:40:10 +04:00
Tim Jaeryang Baek 92c5773682 Merge pull request #14696 from ShirasawaSama/fix_old_ios_device_voice_recording
fix: fix old iOS device voice recording
2025-06-05 20:38:55 +04:00
Silentoplayz 3c5ae1f62e chore: Also define the standard property 'appearance' for compatibilitycss(vendorPrefix) 2025-06-05 12:02:31 -04:00
Silentoplayz 543ed432b1 Update SettingsModal.svelte 2025-06-05 11:42:05 -04:00
Peter Dave Hello a8b61204b4 i18n: improve zh-TW Traditional Chinese locale 2025-06-05 23:00:32 +08:00
Silentoplayz ec0124b521 Update SettingsModal.svelte 2025-06-05 10:48:33 -04:00
Shirasawa 07b2ecf6aa fix: fix old iOS device voice recording 2025-06-05 20:22:20 +08:00
Tiancong Li e7b86cc852 i18n: update zh-TW 2025-06-05 19:58:29 +08:00
Bouby308 eb3c080cce fix: return json for successful userSignOut
return json when signout request is successful so that frontend can get redirect url with res?.redirect_url on signout
2025-06-05 19:20:27 +08:00
Link [Связной] b3e328ed04 Update translation.json 2025-06-05 12:02:46 +03:00
Link [Связной] 6c8202d87d Update translation.json 2025-06-05 12:01:59 +03:00
Link [Связной] 936c3efe5e [i18n] Russian locale update 2025-06-05 11:55:46 +03:00
guenhter 0fe82d119f chore: make usage of matrix more ideomatic 2025-06-05 06:55:10 +02:00
Timothy Jaeryang Baek 5e35aab292 chore: format 2025-06-05 01:12:28 +04:00
Timothy Jaeryang Baek f17bfb3adb refac 2025-06-05 01:11:31 +04:00
Timothy Jaeryang Baek 00e4391a6f refac 2025-06-05 01:05:33 +04:00
Timothy Jaeryang Baek 93236cead0 refac 2025-06-05 00:46:39 +04:00
Timothy Jaeryang Baek ed1db62b12 refac 2025-06-05 00:44:15 +04:00
Timothy Jaeryang Baek ab36b8aeae refac: embeddings endpoint 2025-06-05 00:37:31 +04:00
Timothy Jaeryang Baek b02a3da4da refac: styling 2025-06-05 00:32:48 +04:00
Tim Jaeryang Baek 7c4f261aa2 Merge pull request #14616 from Davixk/feat/new-perplexity-options
feat: add Perplexity AI model and search context usage configuration options
2025-06-05 00:28:00 +04:00
Tim Jaeryang Baek 14e158fde9 Merge pull request #14667 from hdnh2006/main
feat: OpenAI-compatible `/api/embeddings` endpoint with provider-agnostic OpenWebUI architecture
2025-06-05 00:25:56 +04:00
Tim Jaeryang Baek f50755ccd9 Merge pull request #14659 from vaclcer/vaclavs-picture-description
**fix**: do_picture_description feature when using Docling as an external document parser
2025-06-05 00:24:10 +04:00
henry 04da2b05f6 convert embedding function name to be more consistence 2025-06-04 18:24:27 +02:00
Vaclav Cerny 9772c18b20 fix(loader): remove deprecated picture description configuration 2025-06-04 17:21:44 +02:00
henry cc12e9e1a3 Ollama embeddings adapted to pydantic 2025-06-04 17:06:38 +02:00
henry 3ddebefca2 openai embeddings function modified 2025-06-04 16:13:53 +02:00
henry 8f6c3f46d6 payload and response modifed for compatibility 2025-06-04 16:11:40 +02:00
henry e0769c6a1f new embedding.py added for handling openai and ollama embedding 2025-06-04 16:09:39 +02:00
Henry 415114504f Merge branch 'open-webui:main' into main 2025-06-04 15:37:33 +02:00
Tim Jaeryang Baek 94356dc3ca Merge pull request #14662 from SadmL/patch-2
[i18n] Russian locale update
2025-06-04 17:01:06 +04:00
Link [Связной] 7f04045697 [i18n] Russian locale update 2025-06-04 15:58:15 +03:00
Vaclav Cerny 0b3719cc65 This commit fixes do_picture_description feature when using Docling as an external document parser.
Merge branch 'dev' into vaclavs-picture-description
2025-06-04 14:29:41 +02:00
Vaclav Cerny c71236ba07 feat(loader): enhance picture description prompt for improved detail and clarity 2025-06-04 14:25:31 +02:00
Vaclav Cerny c4278f4784 fix description vs classification mismatch 2025-06-04 14:13:00 +02:00
Timothy Jaeryang Baek bbafeca495 refac: reserved __user__ param format 2025-06-04 15:53:07 +04:00
Tim Jaeryang Baek dcb71c2292 Merge pull request #14644 from Davixk/feat/enforce-lf-eol
refac: enforce consistent line endings across all platforms
2025-06-04 15:44:40 +04:00
Timothy Jaeryang Baek 91e826cc27 refac 2025-06-04 15:43:23 +04:00
Timothy Jaeryang BaekandRodrigo Agundez 9964ad0a5b refac: auth cache dir
Co-Authored-By: Rodrigo Agundez <rragundez@users.noreply.github.com>
2025-06-04 15:21:08 +04:00
Vaclav Cerny 8644e81a1c feat(loader): add picture description configuration for DoclingLoader 2025-06-04 12:34:39 +02:00
Tim Jaeryang Baek 7ef2345ba6 Merge pull request #14642 from ayanahye/fix-chat-title-error-message
fix: error message on chat title edit
2025-06-04 14:09:20 +04:00
Tim Jaeryang Baek 00b16cbaf2 Merge pull request #14645 from qingchunnh/Update_zh-CN-2564
i18n: Update & Improve zh-CN
2025-06-04 14:08:43 +04:00
Tim Jaeryang Baek 2b926a373c Merge pull request #14639 from silentoplayz/add-clone-to-cloned-prompts
fix: append `(Clone)` to title and `-clone` to id when cloning a workspace prompt
2025-06-04 14:08:30 +04:00
Tim Jaeryang Baek 5df4f98fc3 Merge pull request #14640 from silentoplayz/locales-is-undefined-typeerror-fix
fix: Uncaught (in promise) TypeError: locales is undefined
2025-06-04 14:07:38 +04:00
qingchun 717d58116a i18n: Improve zh-CN 2025-06-04 12:46:14 +08:00
qingchun 3e02618278 i18n: Update & Improve zh-CN 2025-06-04 12:33:07 +08:00
Dave 5fb5daf07f refac: standardize formatting in .gitattributes for consistency 2025-06-04 06:32:06 +02:00
Dave 059327cd19 refac: update .gitattributes and .prettierrc for consistent line endings 2025-06-04 06:27:25 +02:00
Ayana H fd53c737f6 update spacing 2025-06-03 19:49:52 -07:00
ayana dc05ccb73f fix: error message on chat title edit 2025-06-03 19:27:28 -07:00
Timothy Jaeryang Baek aeafcc7903 refac: styling 2025-06-04 02:51:42 +04:00
Silentoplayz 86111ad44a fix: Uncaught (in promise) TypeError: locales is undefined in Collapsible.svelte 2025-06-03 18:50:16 -04:00
Timothy Jaeryang Baek ec81e98fa2 refac 2025-06-04 02:46:30 +04:00
Timothy Jaeryang Baek fe69189dc9 refac: styling 2025-06-04 02:36:31 +04:00
Silentoplayz 5b4f81ce11 Update PromptEditor.svelte 2025-06-03 17:25:33 -04:00
Silentoplayz 6ebf522a27 Update PromptEditor.svelte 2025-06-03 17:24:54 -04:00
Silentoplayz 2a6d2392a0 fix: append (Clone) to cloned prompt title and clone to prompt id 2025-06-03 17:19:24 -04:00
Timothy Jaeryang Baek 25157ca6ba chore: format 2025-06-03 22:51:59 +04:00
Timothy Jaeryang Baek c01e29c47f refac: model tools selection not working 2025-06-03 22:04:13 +04:00
Tim Jaeryang Baek bb689b9480 Merge pull request #14630 from Yu-QX/main
fix: Rendering problem with Chinese quotation mark in **bold** & *italic* (after Chinese parentheses issue).
2025-06-03 21:59:12 +04:00
Timothy Jaeryang Baek db836c53f6 refac 2025-06-03 21:57:18 +04:00
Timothy Jaeryang Baek 7ca35068a6 refac: styling 2025-06-03 21:55:40 +04:00
Timothy Jaeryang Baek bbedc50f00 refac 2025-06-03 21:52:58 +04:00
Timothy Jaeryang Baek d2b5a1614a refac 2025-06-03 21:52:25 +04:00
Timothy Jaeryang Baek abae0a837f refac: styling 2025-06-03 21:51:12 +04:00
YuQX 4eef6f432f fix: Rendering problem with Chinese quotation mark in **bold** & *italic* (after Chinese parentheses issue). 2025-06-03 23:30:51 +08:00
Timothy Jaeryang Baek 0a1ff4a8fa refac 2025-06-03 18:49:42 +04:00
Timothy Jaeryang Baek 931e5ffa6e refac 2025-06-03 18:49:03 +04:00
Timothy Jaeryang Baek 185249623b feat: follow ups backend integration 2025-06-03 18:47:49 +04:00
YuQX ca894df2bd Merge pull request #2 from open-webui/main
Upgrade to v0.6.13
2025-06-03 22:36:28 +08:00
Timothy Jaeryang Baek 9e49fbc8bf feat: follow ups 2025-06-03 18:07:29 +04:00
Timothy Jaeryang Baek f8b941fb96 refac 2025-06-03 17:24:31 +04:00
Timothy Jaeryang Baek 2fee89dfa6 doc: readme 2025-06-03 16:49:24 +04:00
Timothy Jaeryang Baek 4d364e2967 refac: remove msg from known type 2025-06-03 16:27:28 +04:00
Tim Jaeryang Baek 8bdefa5481 Merge pull request #14592 from ER-EPR/main
Feat: Add a new docker tag cu126 to maintain support for NVIDIA cuda capability 7.0 and below (e.g. V100, GTX1080)
2025-06-03 12:48:15 +04:00
Tim Jaeryang Baek 34a8b95cc3 Merge pull request #14622 from Zyfax/patch-2
fix: remove trailing slash form test connection api url
2025-06-03 12:43:31 +04:00
Zyfax e353f15a3c fix: remove ending slash form test connection url
Removes the ending slash when testing openai and ollama api url.
2025-06-03 09:11:01 +02:00
Dave 77b357c73b fix: update label for search context usage to clarify its purpose 2025-06-03 00:27:07 +02:00
Dave 96e9bfe0e5 feat: add Perplexity model and search context usage configuration options 2025-06-03 00:19:08 +02:00
Tim Jaeryang Baek 3c32d2cada Merge pull request #14539 from PVBLIC-F/refac/mistral
perf mistral.py Enhance for Overall Speed and Efficiency
2025-06-02 23:52:59 +04:00
Timothy Jaeryang Baek 3da1802eec fix: message delete issue 2025-06-02 23:25:38 +04:00
Tim Jaeryang Baek 0ebe35c571 Merge pull request #14532 from PVBLIC-F/refac/pinecone
perf pinecone.py Improve Performance and Maintainability Using Current Best Practices
2025-06-02 23:12:48 +04:00
Tim Jaeryang Baek 29d6eb642f Merge pull request #14555 from diwakar-s-maurya/patch-8
feat: Add route for each tab in Settings
2025-06-02 22:36:36 +04:00
Tim Jaeryang Baek 7536a94585 Merge pull request #14552 from expruc/he-tr
i18n: updated hebrew locale
2025-06-02 21:42:45 +04:00
Tim Jaeryang Baek 89dcce0df2 Merge pull request #14553 from PeterDaveHello/Improve-zh-TW-locale
i18n: update and improve zh-TW Traditional Chinese locale
2025-06-02 21:40:01 +04:00
Tim Jaeryang Baek 6e2bffee69 Merge pull request #14566 from open-webui/dependabot/pip/backend/dev/uvicorn-standard--0.34.2
build(deps): bump uvicorn[standard] from 0.34.0 to 0.34.2 in /backend
2025-06-02 21:38:39 +04:00
Tim Jaeryang Baek 84c06aa582 Merge pull request #14565 from open-webui/dependabot/pip/backend/dev/pillow-11.2.1
build(deps): bump pillow from 11.1.0 to 11.2.1 in /backend
2025-06-02 21:37:45 +04:00
Tim Jaeryang Baek 281b74f4b4 Merge pull request #14563 from open-webui/dependabot/pip/backend/dev/azure-ai-documentintelligence-1.0.2
build(deps): bump azure-ai-documentintelligence from 1.0.0 to 1.0.2 in /backend
2025-06-02 21:37:37 +04:00
Tim Jaeryang Baek 816e35bd79 Merge pull request #14562 from open-webui/dependabot/pip/backend/dev/validators-0.35.0
build(deps): bump validators from 0.34.0 to 0.35.0 in /backend
2025-06-02 21:37:28 +04:00
Tim Jaeryang Baek 0469120709 Merge pull request #14573 from open-webui/dependabot/npm_and_yarn/dev/katex-0.16.22
build(deps): bump katex from 0.16.21 to 0.16.22
2025-06-02 21:37:19 +04:00
ER-EPR bf3897ec40 Merge pull request #1 from ER-EPR/ER-EPR-cuda126-1
Add cuda126 image in docker-build.yaml
2025-06-02 17:45:39 +08:00
ER-EPR d649db4ef7 Add cuda126 image in docker-build.yaml
add USE_CUDA_VER=cu126 version to support cuda capability 7.0 and below
2025-06-02 17:44:17 +08:00
dependabot[bot] 28db03e4f9 build(deps): bump katex from 0.16.21 to 0.16.22
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.21 to 0.16.22.
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.21...v0.16.22)

---
updated-dependencies:
- dependency-name: katex
  dependency-version: 0.16.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-01 02:49:05 +00:00
dependabot[bot] 26549244fc build(deps): bump uvicorn[standard] from 0.34.0 to 0.34.2 in /backend
Bumps [uvicorn[standard]](https://github.com/encode/uvicorn) from 0.34.0 to 0.34.2.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.0...0.34.2)

---
updated-dependencies:
- dependency-name: uvicorn[standard]
  dependency-version: 0.34.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-01 02:28:37 +00:00
dependabot[bot] 3ccd2364ba build(deps): bump pillow from 11.1.0 to 11.2.1 in /backend
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.1.0 to 11.2.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.1.0...11.2.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 11.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-01 02:28:34 +00:00
dependabot[bot] 1131a61b8e build(deps): bump azure-ai-documentintelligence in /backend
Bumps [azure-ai-documentintelligence](https://github.com/Azure/azure-sdk-for-python) from 1.0.0 to 1.0.2.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-ai-documentintelligence_1.0.0...azure-ai-documentintelligence_1.0.2)

---
updated-dependencies:
- dependency-name: azure-ai-documentintelligence
  dependency-version: 1.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-01 02:28:27 +00:00
dependabot[bot] 2f3d4622db build(deps): bump validators from 0.34.0 to 0.35.0 in /backend
Bumps [validators](https://github.com/python-validators/validators) from 0.34.0 to 0.35.0.
- [Release notes](https://github.com/python-validators/validators/releases)
- [Changelog](https://github.com/python-validators/validators/blob/master/CHANGES.md)
- [Commits](https://github.com/python-validators/validators/compare/0.34.0...0.35.0)

---
updated-dependencies:
- dependency-name: validators
  dependency-version: 0.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-01 02:28:18 +00:00
Peter Dave Hello 96d8a52fe3 i18n: update and improve zh-TW Traditional Chinese locale 2025-06-01 04:08:33 +08:00
Diwakar Singh Maurya 1ddc784af9 feat: Add route for each tab in Settings 2025-05-31 19:18:05 +00:00
expruc 185224e4e1 Locale: updated he translation 2025-05-31 21:37:42 +03:00
Timothy Jaeryang Baek 2c15f8e676 refac 2025-05-31 15:07:28 +04:00
Timothy Jaeryang Baek 4e82c44f3e refac 2025-05-31 15:04:38 +04:00
Timothy Jaeryang Baek e41e375aab refac: role update ui 2025-05-31 15:00:27 +04:00
Tim Jaeryang Baek 343dac91c9 Merge pull request #14522 from SadmL/patch-2
[i18n] Russian locale update
2025-05-31 14:42:52 +04:00
PVBLIC Foundation cf3635ba25 Update mistral.py
1. Intelligent Error Handling
Added _is_retryable_error() method to distinguish retryable vs non-retryable errors
Prevents unnecessary retries on client errors (4xx) that won't succeed
Caps retry delay at 30 seconds to prevent excessive waiting
2. Optimized Timeout Configuration
Upload: Capped at 2 minutes (was using full 5-minute timeout)
URL requests: 30 seconds (should be fast)
OCR processing: Full timeout (can take time)
Cleanup: 30 seconds (should be quick)
3. Enhanced Connection Pool
Increased connection limits: 20 total, 10 per host
Longer DNS cache TTL (10 minutes vs 5 minutes)
Increased keepalive timeout (60s vs 30s)
Added async DNS resolver for better performance
Granular timeout controls (connect, read, total)
4. Concurrency Control for Batch Processing
Added semaphore-based concurrency control (default: 5 concurrent)
Prevents API overwhelming while maintaining throughput
Configurable concurrency limit per workload
5. Memory Efficient Result Processing
Early exit for empty content validation
Better error metadata for debugging
Added content length tracking
Streamlined page processing logic
6. General Performance Improvements
Better error logging with truncated responses
Optimized metadata creation
Improved debug logging efficiency
2025-05-30 20:06:29 -07:00
PVBLIC Foundation 66bde32623 Update pinecone.py 2025-05-30 18:47:23 -07:00
sanae artoria cbc514e681 The translation might be confusing, in some cases for example tooltips over a radio button 2025-05-31 01:13:55 +08:00
PVBLIC Foundation 4ecf2a8685 Update pinecone.py
May 2025 Latest Pinecone Best Practices
2025-05-30 09:33:57 -07:00
Link [Связной] 5555d889d5 Update translation.json 2025-05-30 11:55:22 +03:00
Link [Связной] 7dde16d0ac [i18n] Russian locale update 2025-05-30 11:52:33 +03:00
Tim Jaeryang Baek 53764fe648 Merge pull request #14486 from open-webui/dev
0.6.13
2025-05-30 01:37:21 +04:00
Timothy Jaeryang Baek 235489cfc5 refac 2025-05-30 01:33:49 +04:00
Timothy Jaeryang Baek b2befd486f refac 2025-05-30 01:24:54 +04:00
Timothy Jaeryang Baek 9306ae5972 refac 2025-05-30 01:19:56 +04:00
Timothy Jaeryang Baek 036ce12dd9 doc: changelog 2025-05-30 01:14:38 +04:00
Tim Jaeryang Baek d6c3f93cfd Merge pull request #14509 from r0mdau/fix/audio-format
fix: only trust codec_name for audio conversion
2025-05-30 01:12:22 +04:00
Romain Dauby b12a493fe5 fix: only trust codec_name for audio conversion
Some files have .wav extension with incompatible OpenAI codec
2025-05-29 16:57:23 -04:00
Timothy Jaeryang Baek f4827f0c18 chore: format 2025-05-30 00:35:59 +04:00
Timothy Jaeryang Baek e1e2c096e2 refac: PLEASE follow existing convention 2025-05-30 00:34:18 +04:00
Tim Jaeryang Baek ff353578db Merge pull request #14370 from daw/feat/add-azure-openai-embeddings-option
feat:Add Azure OpenAI embedding support
2025-05-30 00:18:55 +04:00
Timothy Jaeryang Baek be989f3645 refac: better memory error handling 2025-05-30 00:12:28 +04:00
Timothy Jaeryang Baek 4c45d67677 refac/fix: memory 2025-05-30 00:10:52 +04:00
Timothy Jaeryang Baek 59768e34f4 refac 2025-05-30 00:04:13 +04:00
Timothy Jaeryang Baek 4371d2c5a5 enh: better custom param handling 2025-05-29 23:32:14 +04:00
Timothy Jaeryang Baek 9be22cb637 fix: prompt access control 2025-05-29 23:21:56 +04:00
Tim Jaeryang Baek f95f51530b Merge pull request #14488 from TiancongLx/dev
i18n: update zh-TW
2025-05-29 13:35:10 +04:00
Tiancong Li c3e8e1cbf1 i18n: update zh-TW 2025-05-29 17:18:27 +08:00
Tim Jaeryang Baek 2327c32a74 Merge pull request #14485 from jackthgu/update-korean-translation
i18n: Korean locale update
2025-05-29 13:16:00 +04:00
Taehong Gu a214e63cab Update Korean translation - Documentation 2025-05-29 18:12:54 +09:00
Tim Jaeryang Baek f1507f2458 Merge pull request #14472 from Davixk/fix/chat-loading-error
fix: Chat page fails to load on undefined message
2025-05-29 13:07:08 +04:00
Timothy Jaeryang Baek 255367934b doc: typo 2025-05-29 13:02:12 +04:00
Tim Jaeryang Baek bd4e010c76 Merge pull request #14477 from qingchunnh/Update_zh-CN-25529
i18n: Update & Improve zh-CN
2025-05-29 13:00:14 +04:00
Tim Jaeryang Baek 155518e788 Merge pull request #14478 from Kylapaallikko/dev
i18n: Update fi-FI translation
2025-05-29 12:59:52 +04:00
Timothy Jaeryang Baek d43bbcae28 refac/fix: open webui params handling 2025-05-29 12:57:58 +04:00
Kylapaallikko 309380b098 Update fi-FI translation.json 2025-05-29 09:18:42 +03:00
qingchun 2c723e1f28 i18n: Update & Improve zh-CN 2025-05-29 13:40:39 +08:00
Dave 01eedd36bc Handles undefined message case in message list creation
Prevents potential errors by returning an empty list if the
specified message ID does not exist in the history. This
enhancement ensures robustness in scenarios where a message
ID may be missing, avoiding further processing and potential
exceptions.
2025-05-29 06:19:13 +02:00
Tim Jaeryang Baek ba0088f39b Merge pull request #14441 from open-webui/dev
0.6.12
2025-05-29 03:59:24 +04:00
Timothy Jaeryang Baek 661625f362 doc: changelog 2025-05-29 03:56:42 +04:00
Timothy Jaeryang Baek 30b7ab3591 refac 2025-05-29 03:48:07 +04:00
Timothy Jaeryang Baek 7dc7d5c028 refac: PLEASE FOLLOW EXISTING CONVENTION 2025-05-29 03:47:02 +04:00
Timothy Jaeryang Baek 2c31f5c725 doc: readme 2025-05-29 03:41:38 +04:00
Timothy Jaeryang Baek a6864db8ec chore: format 2025-05-29 03:37:58 +04:00
Timothy Jaeryang Baek 21f85e63bf refac: styling 2025-05-29 03:37:13 +04:00
Timothy Jaeryang Baek 9220afe7b3 feat: custom advanced params 2025-05-29 03:33:11 +04:00
Timothy Jaeryang Baek bb4115fa0e refac: allow all params 2025-05-29 02:56:37 +04:00
Timothy Jaeryang Baek 551597b9cc chore: format 2025-05-29 02:36:33 +04:00
Timothy Jaeryang Baek cb4299eb98 refac 2025-05-29 02:33:40 +04:00
Tim Jaeryang Baek 042c37ea34 Merge pull request #14311 from Hisma/marker-api-content-extraction
feat: Marker api content extraction support
2025-05-29 02:21:13 +04:00
Timothy Jaeryang Baek 85a384fab5 enh: load tool by url 2025-05-29 02:08:54 +04:00
Timothy Jaeryang Baek 4461122a0e fix: /api/v1/retrieval/query/collection endpoint 2025-05-28 18:45:47 +04:00
YuQX 24be96a6d4 Merge pull request #1 from open-webui/main
Upgrade to v0.6.11
2025-05-28 22:24:33 +08:00
Tim Jaeryang Baek c9f983f644 Merge pull request #14445 from NotYuSheng/chore/duplicate-css-elements
chore: removed duplicate css elements
2025-05-28 17:58:59 +04:00
Timothy Jaeryang Baek cc6cbf53e8 refac 2025-05-28 17:36:05 +04:00
Timothy Jaeryang Baek 4279762ea4 refac 2025-05-28 16:36:23 +04:00
notyusheng efedb7ab1f chore: removed duplicate css elements 2025-05-28 08:31:11 -04:00
Timothy Jaeryang Baek 32135a29bb fix: image preview/download 2025-05-28 15:57:40 +04:00
Timothy Jaeryang Baek 8a74bdce37 fix: message input issue 2025-05-28 15:36:04 +04:00
Timothy Jaeryang Baek 3d9a430927 refac: styling 2025-05-28 14:28:39 +04:00
Timothy Jaeryang Baek a27a095884 refac 2025-05-28 14:27:34 +04:00
Tim Jaeryang Baek 596298fa46 Merge pull request #14405 from SadmL/patch-2
[i18n] Russian locale update
2025-05-28 14:23:33 +04:00
Timothy Jaeryang Baek bf7a18a0f8 refac 2025-05-28 02:10:54 +04:00
Timothy Jaeryang Baek d81886e315 refac 2025-05-28 01:42:42 +04:00
Timothy Jaeryang Baek 7effb04782 refac 2025-05-28 01:41:49 +04:00
Timothy Jaeryang Baek f5fefb49d5 refac 2025-05-28 01:38:24 +04:00
Timothy Jaeryang Baek e4a53e0a3c refac 2025-05-28 01:34:53 +04:00
Link [Связной] e861ba5520 [i18n] Russian locale update 2025-05-27 16:28:09 +03:00
Tim Jaeryang Baek 100a764293 Merge pull request #14402 from torisetxd/parallelized-model-fetching
perf: Parallelize base model fetching
2025-05-27 16:56:44 +04:00
Timothy Jaeryang Baek 1d216b82ba refac 2025-05-27 16:48:17 +04:00
toriset 9eccce2444 Added proper type hints to new functions
Forgot about that...
2025-05-27 15:44:20 +03:00
toriset 27de981246 Parallelize base model fetching 2025-05-27 15:35:16 +03:00
Timothy Jaeryang Baek 40bea00e3d refac 2025-05-27 16:06:00 +04:00
Timothy Jaeryang Baek 8609471eeb Revert "Merge pull request #14379 from aleixdorca/dev"
This reverts commit cb135c370a, reversing
changes made to 8cf578d9fd.
2025-05-27 16:00:19 +04:00
Tim Jaeryang Baek cb135c370a Merge pull request #14379 from aleixdorca/dev
i18n: Update Catalan translation.json
2025-05-27 15:59:37 +04:00
Tim Jaeryang Baek 8cf578d9fd Merge pull request #14368 from qingchunnh/Update_zh-CN-25527
i18n: Update & Improve zh-CN
2025-05-27 15:59:29 +04:00
Tim Jaeryang Baek 1aac41d6c3 Merge pull request #14400 from torisetxd/capabilities-fix
fix: Improve mobile styling for capabilities in workspace models
2025-05-27 15:59:16 +04:00
toriset 20403c9df7 Match capabilities styling to other settings in workspace models 2025-05-27 14:39:21 +03:00
Timothy Jaeryang Baek b944acd3ff refac: function cache 2025-05-27 14:39:35 +04:00
Tim Jaeryang Baek 1ec9e42c1e Merge pull request #14383 from TiancongLx/dev
i18n: complete and improve zh-TW
2025-05-27 13:56:51 +04:00
Tim Jaeryang Baek 5989e9bf75 Merge pull request #14387 from Zyfax/patch-1
fix: tts read aloud
2025-05-27 13:56:40 +04:00
Tim Jaeryang Baek 75b2e4a659 Merge pull request #14392 from hurxxxx/fix/improve-loading-functions
perf: Prevent duplicate function loads with caching helper and refactor
2025-05-27 13:56:13 +04:00
Gunwoo Hur 14c3d0c2d1 Prevent duplicate function module loads with caching helper and refactor 2025-05-27 18:08:58 +09:00
Tim Jaeryang Baek 737dc7797c Merge pull request #14390 from open-webui/dev
Dev
2025-05-27 12:59:28 +04:00
Timothy Jaeryang Baek eb14bfbcdf refac: bug report template 2025-05-27 12:59:01 +04:00
Zyfax 4995bfe571 fix: tts read aloud
Change: const content = removeAllDetails(content); to const content = removeAllDetails(message.content);

Error: Uncaught (in promise) ReferenceError: can't access lexical declaration 'z' before initialization.
ResponseMessage.svelte:215:42
2025-05-27 10:52:26 +02:00
Tiancong Li 098ec43413 i18n: update zh-TW 2025-05-27 16:16:09 +08:00
Aleix Dorca fcb03df9ce Update catalan translation.json 2025-05-27 09:02:42 +02:00
Hisma 19bb3589ee fix: add Datalab Marker API to Content Extraction Engine Dropdown 2025-05-27 02:24:53 -04:00
Hisma e12a79c0e2 fix: handle json output format correctly 2025-05-27 01:12:03 -04:00
Hisma a9405cc101 feat: Marker api content extraction support 2025-05-27 00:44:07 -04:00
qingchun 7988e0c6e2 i18n: Improve zh-CN 2025-05-27 11:25:12 +08:00
qingchun 14bf579e9c i18n: Fix zh-CN 2025-05-27 10:25:02 +08:00
qingchun fc2202ad76 i18n: Update zh-CN 2025-05-27 09:19:35 +08:00
Timothy Jaeryang Baek a2afd6f645 refac 2025-05-27 03:06:01 +04:00
Tim Jaeryang Baek b8e16211b9 Merge pull request #14364 from open-webui/dev
fix: image generation
2025-05-27 02:48:45 +04:00
Timothy Jaeryang Baek efb54aa2e4 fix: image generation 2025-05-27 02:48:22 +04:00
Tim Jaeryang Baek 9faa4c6a4c Merge pull request #14194 from open-webui/dev
0.6.11
2025-05-27 02:27:09 +04:00
Timothy Jaeryang Baek 5c74e56bd0 chore: format 2025-05-27 02:18:43 +04:00
Timothy Jaeryang Baek 8609fe7ab4 i18n: french 2025-05-27 02:18:02 +04:00
Tim Jaeryang Baek 1cb8fa0f03 Merge pull request #14362 from PVBLIC-F/fix/chat-engagement-critical
Fix/chat engagement critical
2025-05-27 02:17:34 +04:00
Timothy Jaeryang Baek a681d5c60e doc: changelog 2025-05-27 02:16:43 +04:00
cheadings71 256034e285 Update misc.py
Before fix: Chat engagement failed with TypeError and KeyError
After fix: Chat works smoothly with automatic title generation and proper history
2025-05-26 14:55:48 -07:00
cheadings71 d414662d23 fix: resolve chat engagement TypeError - Fix get_message_list() to return [] instead of None - Fix middleware to use correct metadata message_id - Add safe fallback for missing role field - Ensure assistant messages include role field 2025-05-26 14:35:09 -07:00
Timothy Jaeryang Baek 940a437631 refac 2025-05-27 01:16:11 +04:00
Timothy Jaeryang Baek aaff204e7b refac 2025-05-27 00:56:59 +04:00
Timothy Jaeryang Baek e68a3d28b5 refac 2025-05-27 00:40:55 +04:00
Timothy Jaeryang Baek 090619c27c refac 2025-05-27 00:29:16 +04:00
Timothy Jaeryang Baek 9c120affb6 chore: format 2025-05-27 00:21:23 +04:00
Timothy Jaeryang Baek 2c7ccc69fe enh: allow custom openapi json url 2025-05-27 00:20:47 +04:00
Timothy Jaeryang Baek a38e44e870 enh: external tool server custom name/description support 2025-05-27 00:10:33 +04:00
Timothy Jaeryang Baek 20f54616e7 chore: format 2025-05-26 23:55:39 +04:00
Timothy Jaeryang Baek b4caad928e feat: load function from url 2025-05-26 23:52:22 +04:00
Timothy Jaeryang Baek 7d756982c2 refac 2025-05-26 23:22:37 +04:00
Tim Jaeryang Baek 6062174602 Merge pull request #14228 from suleimanelkhoury/s3-tags-allowed-characters
fix: S3 allowed characters in Tags.
2025-05-26 22:43:21 +04:00
Timothy Jaeryang Baek 9a5febc2d1 feat: copy model link 2025-05-26 22:29:03 +04:00
Timothy Jaeryang Baek 2d5b82df8c enh: include sources field in non-streaming response 2025-05-26 22:22:37 +04:00
Timothy Jaeryang Baek ffa51ece0c refac: pinned chat endpoint 2025-05-26 22:15:21 +04:00
Timothy Jaeryang BaekandClassic298 a0d034fa7c feat: Bypass file creation with CTRL + SHIFT + V
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
2025-05-26 22:10:35 +04:00
Timothy Jaeryang Baek fc5dfd3536 refac 2025-05-26 22:02:40 +04:00
Tim Jaeryang Baek 5d7c89964c Merge pull request #14314 from fl0w1nd/dev
fix: Correctly handle toggle filters to prevent unintended activation
2025-05-26 21:58:57 +04:00
Timothy Jaeryang Baek caa5ad44d4 refac 2025-05-26 19:53:29 +04:00
Tim Jaeryang Baek 040f29d058 Merge pull request #14316 from Yu-QX/main
fix: Handle special cases of LLM output not following markdown syntax
2025-05-26 19:30:48 +04:00
Yu QX bb62bd9c1f Extracting the traversal. 2025-05-26 21:04:08 +08:00
Yu QX b9f74a66b2 Seperate into processChineseContent 2025-05-26 20:43:21 +08:00
Yu QX 254dd4246e Integrate file into index.ts. 2025-05-26 19:35:28 +08:00
Timothy Jaeryang BaekandJason Baker 4da75a9e78 feat: GZip, Brotli, ZStd compression middleware support
Co-Authored-By: Jason Baker <jason.th.baker@gmail.com>
2025-05-26 14:18:29 +04:00
Yu QX 4483fa95b8 Perfect the logic of case 1.1.x 2025-05-26 17:25:33 +08:00
Tim Jaeryang Baek c157e74f0c Merge pull request #14335 from open-webui/main
dev
2025-05-26 13:02:08 +04:00
Tim Jaeryang Baek ada9655f33 Merge pull request #14317 from SadmL/patch-3
[i18n] Russian locale update
2025-05-26 13:01:39 +04:00
Tim Jaeryang Baek 9de92687f6 Merge pull request #14328 from ShirasawaSama/fix_path_leakage_caused_by_file_upload
fix: Fix path leakage caused by file upload
2025-05-26 12:57:21 +04:00
Tim Jaeryang Baek 31dbafd62e Merge pull request #14301 from qingchunnh/Update_zh-CN-25525
i18n: Update & Improve zh-CN
2025-05-26 12:56:14 +04:00
Shirasawa 0dc29a220f fix: Fix path leakage caused by file upload 2025-05-26 12:20:00 +08:00
Link [Связной] 7db9f7b8b6 Update translation.json 2025-05-25 14:53:03 +03:00
Link [Связной] dc50fa3744 [i18n] Russian locale update 2025-05-25 14:42:42 +03:00
YuQX 8ef7938c96 fix: Handle special cases of LLM output not following markdown syntax (20250525, formated) This commit introduces a utility function to address rendering issues in LLM output, particularly for Chinese characters and parentheses. The function ensures minimal modification of the original text while fixing markdown parsing problems. Changes include: - Added in for handling specific cases. - Updated in to incorporate the new utility. The fix ensures proper rendering of bold/italic text containing Chinese parentheses, improving readability for non-English content. 2025-05-25 19:37:43 +08:00
fl0w1nd 332043c38b fix: Correctly handle toggle filters to prevent unintended activation 2025-05-25 17:59:31 +08:00
YuQX 49fe137553 fix: Handle special cases of LLM output not following markdown syntax 20250525
This commit introduces a utility function  to address rendering issues in LLM output, particularly for Chinese characters and parentheses. The function ensures minimal modification of the original text while fixing markdown parsing problems.

Changes include:
- Added  in  for handling specific cases.
- Updated  in  to incorporate the new utility.

The fix ensures proper rendering of bold/italic text containing Chinese parentheses, improving readability for non-English content.
2025-05-25 13:58:32 +08:00
qingchun 6a93b54e8e i18n: Update & Improve zh-CN 2025-05-25 08:02:47 +08:00
Timothy Jaeryang Baek 8598fc9608 chore: format 2025-05-25 02:33:52 +04:00
Timothy Jaeryang Baek 5885d8e275 enh: ability to hide workspace models 2025-05-25 02:32:32 +04:00
Timothy Jaeryang Baek f9d374810d refac 2025-05-25 02:21:03 +04:00
Timothy Jaeryang Baek 358ad8ef20 enh: import/export default prompt suggestions 2025-05-25 02:17:51 +04:00
Timothy Jaeryang Baek 33f2fdb91e refac: styling 2025-05-25 02:07:13 +04:00
Timothy Jaeryang Baek e65ac97c45 refac 2025-05-25 01:59:48 +04:00
Timothy Jaeryang Baek b2b1a21299 refac 2025-05-25 01:48:37 +04:00
Timothy Jaeryang Baek 75208935d7 refac: user chat list modal 2025-05-25 01:44:53 +04:00
Timothy Jaeryang Baek 44e7e09784 refac 2025-05-25 01:28:35 +04:00
Timothy Jaeryang Baekandsilentoplayz 1d53754ea7 refac: chat list modal
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2025-05-25 01:26:12 +04:00
Timothy Jaeryang Baek 6e8ca96799 enh: archived chats modal 2025-05-25 01:23:12 +04:00
Timothy Jaeryang Baek 5db7d8acd1 refac 2025-05-25 00:58:55 +04:00
Timothy Jaeryang Baek 0fe00ab2c3 refac 2025-05-25 00:52:53 +04:00
Timothy Jaeryang Baek 9b000d82ec refac 2025-05-25 00:51:44 +04:00
Timothy Jaeryang Baek 7e6f1f8848 enh: archived chats modal 2025-05-25 00:48:30 +04:00
Timothy Jaeryang Baek 31e2686ae6 feat: /sync functions endpoint 2025-05-24 23:39:19 +04:00
Timothy Jaeryang Baek cce5f024bd feat: WEBUI_AUTH_TRUSTED_GROUPS_HEADER 2025-05-24 23:17:12 +04:00
Tim Jaeryang Baek 17263a294f Merge pull request #14284 from diwakar-s-maurya/patch-7
feat: add support for table formatting in knowledge collection
2025-05-24 23:02:46 +04:00
Tim Jaeryang Baek 6dbab870e5 Merge pull request #14263 from qingchunnh/Update_zh-CN-25524
i18n: Update & Improve zh-CN
2025-05-24 22:59:47 +04:00
Timothy Jaeryang Baek 9598532270 enh/chore: bug report template 2025-05-24 22:56:54 +04:00
Diwakar Singh Maurya e31a7bcc4c feat: add support for table formatting in knowledge collection 2025-05-24 16:21:55 +00:00
Timothy Jaeryang Baek 261328077d refac 2025-05-24 17:20:40 +04:00
Timothy Jaeryang Baek aebbc2593b refac: scrollbar thumb styling 2025-05-24 17:19:47 +04:00
Tim Jaeryang Baek 8261f0e17e Merge pull request #14276 from Classic298/memories
feat: Make Edit/Add Memory Modal larger, and the text input box size-adjustable
2025-05-24 16:01:07 +04:00
Tim Jaeryang Baek 37d2aed26e Merge pull request #14268 from TiancongLx/dev
i18n: update zh-TW
2025-05-24 15:42:50 +04:00
Classic298 c377ff80c9 Update EditMemoryModal.svelte 2025-05-24 13:33:56 +02:00
Classic298 9bd031dae3 Update AddMemoryModal.svelte 2025-05-24 13:33:49 +02:00
Tiancong Li bc7853d6a4 i18n: update zh-TW 2025-05-24 13:38:32 +08:00
qingchun adefc811c7 i18n: Update & Improve zh-CN 2025-05-24 09:18:18 +08:00
qingchun 3c828f7828 i18n: Update & Improve zh-CN 2025-05-24 08:30:09 +08:00
Timothy Jaeryang Baek da75d0ca1e chore: format 2025-05-24 02:13:54 +04:00
Timothy Jaeryang Baek 51ab02f3af chore: format 2025-05-24 02:13:46 +04:00
Timothy Jaeryang Baek 29d08c2a16 refac: styling 2025-05-24 02:12:44 +04:00
Timothy Jaeryang Baek abcf59ab2b refac: styling 2025-05-24 01:56:02 +04:00
Timothy Jaeryang Baek ffa5db4fec refac: styling 2025-05-24 01:45:55 +04:00
Timothy Jaeryang Baek f95e52a6a6 refac: wording 2025-05-24 01:40:01 +04:00
Timothy Jaeryang Baek 17aca908c5 refac: styling 2025-05-24 01:36:53 +04:00
Tim Jaeryang Baek e663b90a9f Merge pull request #14069 from Ithanil/bm25_weight
feat: Configurable weight for BM25Retriever during hybrid search
2025-05-24 01:13:03 +04:00
Timothy Jaeryang Baek bf97dbe052 refac 2025-05-24 01:12:11 +04:00
Timothy Jaeryang Baek 80eaa24ca8 enh: provide source name in context if available 2025-05-24 00:52:09 +04:00
Timothy Jaeryang Baek 8b5e89eada chore: format 2025-05-24 00:43:38 +04:00
Timothy Jaeryang Baek a46765fd0e refac 2025-05-24 00:43:02 +04:00
Timothy Jaeryang Baek baaa285534 feat: user stt language 2025-05-24 00:36:30 +04:00
Jan Kessler a90d3f3268 add missing locale string 2025-05-23 22:30:04 +02:00
Jan Kessler e70dd33233 rename BM25_WEIGHT -> HYBRID_BM25_WEIGHT 2025-05-23 22:06:44 +02:00
Tim Jaeryang Baek 9946dc7b5f Merge pull request #14252 from Kylapaallikko/dev
i18n: Update fi-FI translation
2025-05-23 23:53:40 +04:00
Timothy Jaeryang Baek 88a296b989 refac: chat reset input behaviour 2025-05-23 23:52:10 +04:00
Kylapaallikko bf12946ac9 Update fi-FI translation.json 2025-05-23 22:12:00 +03:00
Tim Jaeryang Baek 99f88082ca Merge pull request #14248 from diwakar-s-maurya/patch-3
feat: Show tool call parameters along tool ouput
2025-05-23 22:55:08 +04:00
Timothy Jaeryang Baek 6636207e0c refac 2025-05-23 22:10:57 +04:00
Tim Jaeryang Baek c8f1bdf928 Merge pull request #14245 from PVBLIC-F/dev
perf Update mistral.py
2025-05-23 21:57:16 +04:00
Timothy Jaeryang Baek 3f2025dc6e enh: always process file with external document loader 2025-05-23 21:55:09 +04:00
Diwakar Singh Maurya 549237fb05 Show tool call parameters along tool ouput 2025-05-23 17:42:05 +00:00
Timothy Jaeryang Baek 797c7d4e56 refac: allow min_p for openai requests 2025-05-23 21:28:02 +04:00
PVBLIC Foundation bf193dfb5d Update mistral.py 2025-05-23 10:00:19 -07:00
Timothy Jaeryang Baek 30d15c1b4b chore: format 2025-05-23 20:44:41 +04:00
Timothy Jaeryang Baek b9afef85c4 refac: advanced params 2025-05-23 20:44:19 +04:00
Timothy Jaeryang Baek ed0bebc7ef enh: granular audio playback speed 2025-05-23 20:10:16 +04:00
Timothy Jaeryang Baek f75ac5cc01 refac: styling 2025-05-23 20:06:05 +04:00
Timothy Jaeryang Baek 1cf21d3fa2 feat: ollama unload model 2025-05-23 19:45:29 +04:00
Timothy Jaeryang Baek 19b69fcb66 chore: format 2025-05-23 19:22:08 +04:00
Timothy Jaeryang Baek e15ff8d9f6 refac 2025-05-23 19:15:57 +04:00
Timothy Jaeryang Baek 0e6f09a0a9 enh: ollama loaded model display 2025-05-23 19:13:18 +04:00
Timothy Jaeryang Baek a50a8e2ef9 refac: ollama ps 2025-05-23 18:47:50 +04:00
Timothy Jaeryang Baek 65d997a6c5 refac 2025-05-23 18:22:57 +04:00
Timothy Jaeryang Baek 62fbd6c91c refac 2025-05-23 18:17:35 +04:00
Timothy Jaeryang Baek 03288d9fca refac: redesign 2025-05-23 17:30:17 +04:00
Tim Jaeryang Baek 06aa59e2a5 Merge pull request #14219 from Yu-QX/main
Fix: Solve equation problems with Chinese symbols
2025-05-23 17:19:29 +04:00
Timothy Jaeryang Baek 02000b1a6c refac: include help items in user menu 2025-05-23 16:49:11 +04:00
Timothy Jaeryang Baek dd8e742c2d refac: tts details tags 2025-05-23 13:40:33 +04:00
Tim Jaeryang Baek 55a6fae9db Merge pull request #14210 from ShrootBuck/main
refac: improve prompt formatting for selected text in FloatingButtons
2025-05-23 13:14:27 +04:00
Tim Jaeryang Baek bdcd04a78c Merge pull request #14212 from qingchunnh/Update_zh-CN-25523
i18n: Update & Improve zh-CN
2025-05-23 13:13:19 +04:00
Suleiman Elkhoury e10d6ad79c Fix S3 allowed characters in Tags.
In Amazon S3 storage, only the following charaters allowed in Tagging "letters (a-z, A-Z), numbers (0-9), and spaces representable in UTF-8, and the following characters: + - = . _ : / @". Added a sanitizer function to clear tags before the put request.
2025-05-23 11:09:40 +02:00
Tim Jaeryang Baek 9c4ce0273f Merge pull request #14215 from qingchunnh/Update_zh-TW-25523
i18n: Update zh-TW
2025-05-23 13:09:23 +04:00
qingchun 3d2a26fe0b i18n: Update & Improve zh-CN 2025-05-23 16:54:20 +08:00
qingchun aa6648ba8a i18n: Update & Improve zh-CN 2025-05-23 15:46:03 +08:00
YuQX ec97fdf5d6 Fix: Solve equation problems with Chinese symbols by adding more symbols to the ALLOWED_SURROUNDING_CHARS 2025-05-23 15:06:37 +08:00
qingchun 4025c96d0f i18n: Update zh-TW 2025-05-23 12:39:45 +08:00
qingchun ed9a2c295c i18n: Update & Improve zh-CN 2025-05-23 12:34:30 +08:00
qingchun 28e44452dd i18n: Update & Improve zh-CN 2025-05-23 09:51:05 +08:00
Zayd Krunz 1d382b83c8 refac: improve prompt formatting for selected text in FloatingButtons 2025-05-23 01:16:47 +00:00
Timothy Jaeryang Baek a2f12db8d9 refac: memories 2025-05-23 03:26:14 +04:00
Timothy Jaeryang Baek 7071a03419 chore: format 2025-05-23 02:54:44 +04:00
Timothy Jaeryang Baek 7a593b63b2 fix: image generation with allowed file extensions 2025-05-23 02:53:08 +04:00
Timothy Jaeryang Baek 4c55ad71a7 fix: local/external models 2025-05-23 02:48:31 +04:00
Timothy Jaeryang Baek 1f632d3570 fix: remove leading dot for file extension check 2025-05-23 02:39:19 +04:00
2eca6f6414 feat: bypass web loader in web search
Co-Authored-By: Perry Li <peiyaoli@mail.nankai.edu.cn>
Co-Authored-By: WilliamGates <3852641+williamgateszhao@users.noreply.github.com>
2025-05-23 02:30:35 +04:00
Timothy Jaeryang Baek 0b7f927983 enh: sortable banners 2025-05-23 02:02:11 +04:00
Timothy Jaeryang Baek a68ec8822a enh: filter md image for task generations 2025-05-23 01:33:08 +04:00
Timothy Jaeryang BaekandTornike Gurgenidze aac25eac9e refac: reranker
Co-Authored-By: Tornike Gurgenidze <togurg14@freeuni.edu.ge>
2025-05-23 01:29:48 +04:00
Timothy Jaeryang Baek f2d2cae8fb enh: help menu 2025-05-23 01:16:08 +04:00
Timothy Jaeryang Baek 71288ea3f2 refac 2025-05-23 01:11:44 +04:00
Timothy Jaeryang Baek cbe84d7139 enh: token expiry buffer 2025-05-23 01:08:28 +04:00
Timothy Jaeryang Baek d4c3cfbaba refac: oauth redirect url to use WEBUI_URL 2025-05-23 01:03:28 +04:00
Tim Jaeryang Baek 336d0b45ad Merge pull request #14165 from Zyfax/patch-1
fix: image model list
2025-05-22 15:37:00 +04:00
Tim Jaeryang Baek da4aa5f08b Merge pull request #14152 from U8F69/fix_user_auth
fix(auth): correctly use password hash when duplicate email records exist
2025-05-22 14:58:10 +04:00
Zyfax 7489bc6126 fix: image model list
OpenAI image model added:
gpt-image-1

Gemini image model renamed:
id: imagen-3-0-generate-002 to imagen-3.0-generate-002
2025-05-22 11:07:46 +02:00
Tim Jaeryang Baek 4519e4eed1 Merge pull request #14158 from itk-dev/feature/4347-danishtranslations
i18n: Updated danish translations
2025-05-22 12:47:22 +04:00
Timothy Jaeryang Baek 787987d2f0 refac/fix: optional tool param type 2025-05-22 12:41:00 +04:00
Tim Jaeryang Baek 17ed331a0a Merge pull request #14126 from SadmL/patch-2
[i18n] Russian locale update
2025-05-22 12:38:01 +04:00
Tim Jaeryang Baek b339fd6fed Merge pull request #14136 from Vombit/main
[i18n] Fixed a typo in the translation
2025-05-22 12:37:31 +04:00
Tim Jaeryang Baek 0eda03bd3c Merge pull request #14147 from PVBLIC-F/dev
perf Update pinecone.py
2025-05-22 12:19:14 +04:00
Tim Jaeryang Baek a935e375f3 Merge pull request #14149 from silentoplayz/i18n-fix
fix: $i18n.t fix
2025-05-22 11:49:09 +04:00
U8F69 dd6124a84f fix(auth): fix invalid password use in auth 2025-05-22 11:03:43 +08:00
Silentoplayz 558b2b1016 Update General.svelte 2025-05-21 20:41:19 -04:00
PVBLIC Foundation 86e24bb4aa Update pinecone.py
I've improved the pinecone.py file by:
Updated from the deprecated PineconeGRPC client to the newer Pinecone client
Modified the client initialization code to match the new API requirements
Added better response handling with getattr() to safely access attributes from response objects
Removed the streaming_upsert method which is not available in the newer client
Added safer attribute access with fallbacks throughout the code
Updated the close method to reflect that the newer client doesn't need explicit closing
These changes ensure the code is compatible with the latest Pinecone Python SDK and will be more robust against future changes. The key improvement is migrating away from the deprecated gRPC client which will eventually stop working.
2025-05-21 15:28:42 -07:00
Vombit ff46fa5b33 fix: fixed a typo in the translation 2025-05-21 21:15:42 +05:00
lilosti bd40cceb2d Updated danish translations 2025-05-21 14:52:33 +02:00
Link [Связной] 9201fd4652 [i18n] Russian locale update 2025-05-21 14:48:57 +03:00
Tim Jaeryang Baek 65a44a3900 Merge pull request #14099 from Classic298/ShiftHoldingFix
fix: Holding Shift Bug fixed
2025-05-21 13:46:58 +04:00
Tim Jaeryang Baek d2e426990b Merge pull request #14110 from qingchunnh/Update_zh-CN-25521
i18n: update and improve zh-CN
2025-05-21 13:43:00 +04:00
qingchun ed0538e643 i18n: update and improve zh-CN 2025-05-21 07:34:07 +08:00
Timothy Jaeryang Baek e3e7eb96f6 refac 2025-05-20 23:55:11 +04:00
Tim Jaeryang Baek a45f2cd0a9 Merge pull request #14104 from bassettb/bryan/parse-db-user-chars
fix: handle escaped characters in DATABASE_URL username
2025-05-20 23:51:41 +04:00
Timothy Jaeryang Baek 6121d4696a enh: search input arrow controls 2025-05-20 23:47:41 +04:00
Timothy Jaeryang Baek b78354100f refac 2025-05-20 23:33:41 +04:00
Timothy Jaeryang Baek 512345f40e refac: chat transition 2025-05-20 23:33:23 +04:00
Bryan Bassett 12896fb728 use unquote_user in peewee 3.17.10 2025-05-20 15:18:32 -04:00
DrMelone 8b80555adf fix attempt #1 2025-05-20 20:03:21 +02:00
Tim Jaeryang Baek 4e4b5ab83b Merge pull request #14096 from silentoplayz/add-clear-button-to-remaining-pages
feat: Add Clear button to Functions and Models pages search bar
2025-05-20 21:30:07 +04:00
Silentoplayz 03eeb75bfe feat: Add Clear button for Function and admin Model pages 2025-05-20 12:21:32 -04:00
Timothy Jaeryang Baek 74ace200fe fix/refac: functions multi-replica issue 2025-05-20 20:20:27 +04:00
Tim Jaeryang Baek 2b5c015bcb Merge pull request #14093 from open-webui/main
dev
2025-05-20 19:48:26 +04:00
Timothy Jaeryang Baek 82716f3789 refac 2025-05-20 19:39:18 +04:00
Timothy Jaeryang Baek a8a9b35153 refac: file item modal 2025-05-20 19:29:31 +04:00
Tim Jaeryang Baek d3c7628092 Merge pull request #14059 from sreesdas/main
fix: resolve issue where external document loader was not invoked
2025-05-20 17:43:06 +04:00
Tim Jaeryang Baek 86f1aee20b Merge pull request #14054 from silentoplayz/delete-lightblub
fix: Correct typo in LightBulb component name and imports & delete lightblub.svelte (duplicate of lightbulb.svelte)
2025-05-20 17:25:42 +04:00
Tim Jaeryang Baek f9a66afe76 Merge pull request #14072 from torisetxd/alignment-fix
fix: Alignment issues with Text in Buttons in UI
2025-05-20 17:24:49 +04:00
Tim Jaeryang Baek fac5884d8c Merge pull request #14073 from tth37/fix_default_web_loader_verify_ssl
fix: Default web loader fail silently when `verify_ssl=False`
2025-05-20 17:24:22 +04:00
Tim Jaeryang Baek 6035664048 Merge pull request #14051 from Classic298/german-translation
i18n: German translation overhaul
2025-05-20 17:23:55 +04:00
Tim Jaeryang Baek 75a31e116a Merge pull request #14049 from mjmendo/web_search_optional_fields
fix: web search optional fields
2025-05-20 17:22:52 +04:00
tth37 78befd5a2f fix: Default web loader fail when verify_ssl=False 2025-05-20 19:44:18 +08:00
toriset b735042ecc Fix alignment issues with Buttons in UI 2025-05-20 14:33:04 +03:00
Jan Kessler 308d8ac04a make bm25_weight a regular parameter of query_doc.. / get_sources_from_files functions 2025-05-20 11:46:32 +02:00
Jan Kessler b5ddaf6417 make weight for bm25 retriever in hybrid search ui-configurable 2025-05-20 10:39:31 +02:00
Classic298 8d94a59f27 task models 2025-05-20 08:39:36 +02:00
Classic298 479b5ad820 fixes after feedback 2025-05-20 08:31:49 +02:00
sree f408b08965 minor bug fix for external document loader not working 2025-05-20 11:10:23 +05:30
Derek Wischusen 42be1f956a Add Azure OpenAI embedding support 2025-05-19 22:58:04 -04:00
Silentoplayz ab9486603c chore: fix on-hover visual 2025-05-19 22:42:15 -04:00
Silentoplayz 58b309149a chore: adjustment 2025-05-19 17:21:43 -04:00
Silentoplayz 83ed2d0661 chore: delete lightblub.svelte 2025-05-19 17:12:36 -04:00
DrMelone 4b538047dd various i18n fixes
typos, incomplete sentences fixed, wrong translations, inconsistencies fixed
2025-05-19 19:35:08 +02:00
DrMelone fd2ff5e777 i18n german update 1 2025-05-19 19:28:12 +02:00
Marcelo Mendoza 897727c7eb Merge branch 'open-webui:main' into web_search_optional_fields 2025-05-19 17:25:14 +02:00
Marcelo Mendoza d6ad96affb fix: use get method for title and snippet in search results 2025-05-19 17:24:47 +02:00
Tim Jaeryang Baek 5613cda5cf Merge pull request #14048 from open-webui/main
dev
2025-05-19 19:17:39 +04:00
Timothy Jaeryang Baek ed0659aca6 refac 2025-05-19 19:17:08 +04:00
Timothy Jaeryang Baek fd91b277a4 refac: pypi 2025-05-19 14:48:55 +04:00
Timothy Jaeryang Baek d2758c7fa2 refac: pypi 2025-05-19 14:35:51 +04:00
Tim Jaeryang Baek ef3232a24f Merge pull request #14023 from TiancongLx/dev
i18n: update zh-TW
2025-05-19 14:22:31 +04:00
Tim Jaeryang Baek 438eb90671 Merge pull request #14024 from hurxxxx/i18n/update-ko-KR
i18n: update ko-KR
2025-05-19 14:22:13 +04:00
Tim Jaeryang Baek c9bbfaee9d Merge pull request #14033 from SadmL/patch-2
[i18n] Russian locale update
2025-05-19 14:22:03 +04:00
Link [Связной] 1d0921de0d [i18n] Russian locale update 2025-05-19 11:24:08 +03:00
hurxxxx c1066d7e08 i18n: update ko-KR 2025-05-19 13:28:45 +09:00
Tiancong Li 23991c32c5 i18n: update zh-TW 2025-05-19 12:09:07 +08:00
Tim Jaeryang Baek e6afa69f59 Merge pull request #13887 from open-webui/dev
0.6.10
2025-05-19 05:34:23 +04:00
Timothy Jaeryang Baek 2b1c3b5208 Update CHANGELOG.md 2025-05-19 05:27:29 +04:00
Timothy Jaeryang Baek b905b73935 Update CHANGELOG.md 2025-05-19 05:24:03 +04:00
Timothy Jaeryang Baek fa5cd59ef8 doc: changelog 2025-05-19 05:20:57 +04:00
Timothy Jaeryang Baek 030c20feff refac 2025-05-19 05:12:53 +04:00
Tim Jaeryang Baek 8fb7b980a2 Merge pull request #14019 from silentoplayz/clear
feat: Improve remaining export buttons with total item count
2025-05-19 04:33:34 +04:00
Timothy Jaeryang Baek eafb8e014a chore: format 2025-05-19 04:32:00 +04:00
Timothy Jaeryang Baek 2ab5aa4d34 refac: azure openai 2025-05-19 04:31:04 +04:00
Silentoplayz 5cb1475e29 fix: apply change to functions and models pages 2025-05-18 20:12:53 -04:00
Timothy Jaeryang Baek 2f2a7ee0b0 chore: format 2025-05-19 03:58:42 +04:00
Timothy Jaeryang Baek 2e56b1f13d refac 2025-05-19 03:55:56 +04:00
Timothy Jaeryang Baek caeb822cdc feat: azure openai support 2025-05-19 03:40:32 +04:00
Timothy Jaeryang Baek 47f8b3500b feat: azure openai connections ui 2025-05-19 03:29:14 +04:00
Timothy Jaeryang Baek 73e64fe7fb refac: audio upload handling 2025-05-19 02:52:48 +04:00
Timothy Jaeryang Baekandsilentoplayz aee9d05916 enh: workspace search clear button
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2025-05-19 02:36:15 +04:00
Timothy Jaeryang Baek 3af289d196 refac 2025-05-19 02:32:06 +04:00
Timothy Jaeryang Baek 9f9fb3403d refac 2025-05-19 02:07:41 +04:00
Timothy Jaeryang Baek c6580a2a02 refac 2025-05-19 02:01:07 +04:00
Timothy Jaeryang Baek 417ba4980a chore: format 2025-05-19 01:55:02 +04:00
Timothy Jaeryang Baek 0c6f22b20b refac 2025-05-19 01:54:26 +04:00
Timothy Jaeryang Baek 96c7a0ac3c refac 2025-05-19 01:52:40 +04:00
Timothy Jaeryang Baek e895c33baa refac 2025-05-19 01:47:12 +04:00
Timothy Jaeryang Baek fbfd3ff134 refac 2025-05-19 01:44:27 +04:00
Timothy Jaeryang Baek 5a40feea1c enh: search shortcut 2025-05-19 01:40:51 +04:00
Timothy Jaeryang Baek 1f5860c4ab refac 2025-05-19 01:40:10 +04:00
Timothy Jaeryang Baek d069d1264d feat: search modal 2025-05-19 01:39:33 +04:00
Tim Jaeryang Baek 4f4811adb1 Merge pull request #14017 from athoik/title_tags
feat: read max_tokens from model config with fallback to 1000 for title and tag generation
2025-05-19 00:43:05 +04:00
Timothy Jaeryang Baek 05b79ce221 refac: model selection 2025-05-19 00:41:49 +04:00
Timothy Jaeryang Baekandsilentoplayz 18d6311951 feat: export count
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2025-05-19 00:15:07 +04:00
Timothy Jaeryang Baek 8f4104fb7a refac 2025-05-19 00:13:03 +04:00
Tim Jaeryang Baek 349b0ca0b7 Merge pull request #14002 from silentoplayz/search-by-user-or-email
feat: enhance search with username/email search across workspace pages
2025-05-19 00:12:11 +04:00
Tim Jaeryang Baek 2dde4102ad Merge pull request #14009 from TiancongLx/dev
i18n: update and improve zh-TW
2025-05-19 00:11:32 +04:00
Athanasios Oikonomou eabdd4a140 feat: read max_tokens from model config with fallback to 1000 for title and tag generation
Improves title and tag generation by using the max_tokens value from the model configuration when available, with a fallback to the previous default of 1000.

This change is necessary for models like Gemini Pro that generate longer responses and require a higher token limit to successfully generate titles or tags.
2025-05-18 22:45:33 +03:00
Tiancong Li 4667328d40 i18n: update zh-TW 2025-05-18 21:16:16 +08:00
Tim Jaeryang Baek 56740ab8d6 Merge pull request #13996 from Davixk/update-IT-translation
i18n: add and improve Italian translations
2025-05-18 15:04:54 +04:00
Silentoplayz 95badda1c2 feat: username and email search in workspace pages 2025-05-18 03:23:38 -04:00
Dave ebf2e4141e Merge remote-tracking branch 'upstream/dev' into update-IT-translation 2025-05-18 04:46:41 +02:00
Dave a8813c1a69 i18n: Update and Improve Italian translations 2025-05-18 04:36:12 +02:00
Tim Jaeryang Baek fbcc80485b Merge pull request #13972 from jarrod-lowe/otel-attrs
feat: Add user details to opentelemetry spans
2025-05-17 21:54:56 +04:00
Timothy Jaeryang Baek 765acc4cad chore: dep bump 2025-05-17 21:53:31 +04:00
Timothy Jaeryang Baek 9801a2d23f refac 2025-05-17 03:14:26 +04:00
Timothy Jaeryang Baek 424f6f71cf chore: duckduckgo-search bump 2025-05-17 03:03:07 +04:00
Timothy Jaeryang Baek b280f828b0 enh: very long audio transcription 2025-05-17 02:51:28 +04:00
Timothy Jaeryang Baek d54e588ec3 refac 2025-05-17 02:26:28 +04:00
Timothy Jaeryang Baek 08e4c163ea feat: local/external connections 2025-05-17 01:47:48 +04:00
Timothy Jaeryang Baek 000906cd99 chore: format 2025-05-17 01:13:36 +04:00
Timothy Jaeryang Baek c3acb30bb1 feat: model file upload capability 2025-05-17 01:13:13 +04:00
Jarrod Lowe df853246f3 Add user details to otel span 2025-05-17 09:11:26 +12:00
Timothy Jaeryang Baek 6692fb2181 chore: format 2025-05-17 01:00:37 +04:00
Timothy Jaeryang Baek b14398481d enh: model capabilities 2025-05-17 00:59:00 +04:00
Timothy Jaeryang Baek 7df6d7f325 refac/fix: signout redirect flow 2025-05-17 00:38:39 +04:00
Timothy Jaeryang Baek fcb93f3155 feat: artifacts download button 2025-05-17 00:27:20 +04:00
Timothy Jaeryang Baek 02e5bbc903 refac 2025-05-17 00:19:08 +04:00
Timothy Jaeryang Baek 359bcb837d refac 2025-05-17 00:08:03 +04:00
Timothy Jaeryang Baek ecae944fd0 refac 2025-05-16 23:59:24 +04:00
Timothy Jaeryang Baek 05f284d4a6 refac 2025-05-16 23:41:51 +04:00
Timothy Jaeryang Baek ea723374c7 refac 2025-05-16 23:36:33 +04:00
Timothy Jaeryang Baek 1f38350128 feat: toggle filter middleware 2025-05-16 23:33:02 +04:00
Timothy Jaeryang Baek e37433f2b1 refac 2025-05-16 23:21:08 +04:00
Timothy Jaeryang Baek b61efcf54a feat: toggle filter 2025-05-16 22:59:02 +04:00
Timothy Jaeryang Baek 32b386e8d0 refac 2025-05-16 22:44:47 +04:00
Timothy Jaeryang Baek 7bbeaec93b revert 2025-05-16 22:43:42 +04:00
Timothy Jaeryang Baek 34ef249a10 revert: remove reasoning capability 2025-05-16 22:24:23 +04:00
Timothy Jaeryang Baek 363ac35c09 refac 2025-05-16 22:17:47 +04:00
Tim Jaeryang Baek 50bc6d9b12 Merge pull request #13919 from dongfangzan/main
feat: add switching thinking/non-thinking modes to models
2025-05-16 22:08:04 +04:00
Timothy Jaeryang Baek 27bb5f5369 fix/refac: tts remove formattings 2025-05-16 21:51:29 +04:00
Timothy Jaeryang Baek 54dc24986f feat: preview html 2025-05-16 21:47:43 +04:00
Timothy Jaeryang Baek 07b5e84221 refac 2025-05-16 21:29:50 +04:00
Timothy Jaeryang Baek 2bd7db12a2 enh: ALLOWED_FILE_EXTENSIONS ui 2025-05-16 21:05:52 +04:00
Timothy Jaeryang Baek 528a2cf96a refac 2025-05-16 18:19:28 +04:00
Timothy Jaeryang Baek 2aa5e73728 refac: filter details 2025-05-16 18:01:55 +04:00
Timothy Jaeryang Baek dec9dd1ac0 refac: web search queries 2025-05-16 17:11:42 +04:00
Timothy Jaeryang Baek bb06df80a2 refac 2025-05-16 17:07:52 +04:00
Timothy Jaeryang Baek 0b761776c4 enh: high contrast mode 2025-05-16 17:06:21 +04:00
Timothy Jaeryang Baek 2450f2c5d8 chore: format 2025-05-16 16:57:30 +04:00
Timothy Jaeryang Baek 62180b15e1 refac: command arrow up/down behaviour 2025-05-16 15:39:26 +04:00
Tim Jaeryang Baek c201b4d689 Merge pull request #13931 from itk-dev/feature/better-frontend-error
WIP: Minor clean up of console log usage in the front end
2025-05-16 13:33:16 +04:00
Tim Jaeryang Baek bc66755fb0 Merge pull request #13950 from uryukikutani/feature/screen-reader
fix: made the chat response messages readable with a screen reader
2025-05-16 13:32:40 +04:00
Tim Jaeryang Baek e74c06d2f5 Merge pull request #13929 from mini-777/feat--Korean-translations-for-clarity-and-accuracy
i18n : korean translations for clarity and accuracy
2025-05-16 13:32:10 +04:00
uryukikutani 53dcaa63d4 made the chat response messages readable with a screen reader 2025-05-16 17:41:56 +09:00
Tim Jaeryang Baek 186a89bcba Merge pull request #13937 from tanerim/patch-1
Update translation.json
2025-05-16 10:23:47 +04:00
dongfangzan 351f0186b9 fix: typo 2025-05-16 08:05:49 +08:00
Taner Sezer 21e96247a9 Update translation.json
Added new translations
2025-05-16 01:19:53 +03:00
Jesper Kristensen 84e0605835 Cleaning up usage of console log in front end 2025-05-15 21:53:07 +02:00
Jesper Kristensen 20c1c3f66b Changed console logging of errors to use console error logging 2025-05-15 21:35:07 +02:00
mini-777 2a4fe1335e i18n: update Korean translations with new entries and corrections 2025-05-16 02:45:19 +09:00
mini-777 e24e22debe Merge commit 'e4179aa114fecc8d35ba48f091ce7c9abcc96065' into HEAD 2025-05-16 02:10:01 +09:00
mini-777 208b86ae53 feat: add new notes feature with editor and list components, and update routing for notes management 2025-05-16 02:06:36 +09:00
Tim Jaeryang Baek e4179aa114 Merge pull request #13922 from TiancongLx/dev
i18n: update zh-TW
2025-05-15 19:02:37 +04:00
Tiancong Li df5ef8e553 i18n: update zh-TW 2025-05-15 21:15:22 +08:00
dongfangzan 9b93b81f84 feat: add switching thinking/non-thinking modes to models 2025-05-15 19:56:10 +08:00
dongfangzan a7c90925ef test contribute 2025-05-15 19:31:40 +08:00
Tim Jaeryang Baek ca2cfb5bad Merge pull request #13899 from loitragg/apply-multitenant-for-qdrant
perf: implement multi-tenancy for Qdrant vector store client
2025-05-15 13:37:36 +04:00
Kiet Trinh 418ac1a8da refac: Rename Qdrant multi-tenancy variable for improved clarity and consistency 2025-05-15 09:09:24 +00:00
Tim Jaeryang Baek db24af6356 Merge pull request #13902 from yo-nagase/dev
i18n: Update Japanese translation
2025-05-15 12:59:17 +04:00
Timothy Jaeryang Baek 72b2555953 refac 2025-05-15 12:58:44 +04:00
Kiet Trinh 485bd7666c fix: Update Qdrant multi-tenancy variable name for consistency in configuration 2025-05-15 08:02:58 +00:00
Nagase Yoshimasa 6eb772c741 i18n: Update Japanese translation 2025-05-15 15:41:04 +09:00
LoiTra 184d8dfd7e feat: Implement Qdrant multi-tenancy support with collection management and tenant isolation 2025-05-15 11:28:06 +07:00
Timothy Jaeryang Baek 0a8cecfbfa feat: response watermark 2025-05-14 23:53:28 +04:00
Timothy Jaeryang Baek b143c71da2 refac: AIOHTTP_CLIENT_SESSION_SSL 2025-05-14 23:33:52 +04:00
Timothy Jaeryang Baek 04287eb6d6 refac 2025-05-14 23:27:34 +04:00
Timothy Jaeryang Baek 39b06dc3b6 refac 2025-05-14 23:13:06 +04:00
Tim Jaeryang Baek e358a66fb1 Merge pull request #13852 from fizyr-forks/self-signed-cert
feat: Add option to disable certificate validation for LDAP certificates.
2025-05-14 23:12:24 +04:00
Timothy Jaeryang Baek a6624a4b16 feat: RAG_ALLOWED_FILE_EXTENSIONS 2025-05-14 23:06:33 +04:00
Timothy Jaeryang Baek 7e241a3904 refac 2025-05-14 22:48:23 +04:00
Timothy Jaeryang Baek 42382b5167 fix 2025-05-14 22:46:01 +04:00
Timothy Jaeryang Baek 8732b64b6b feat: external document loader support 2025-05-14 22:28:40 +04:00
Timothy Jaeryang Baek 32ea31144e refac: file upload handling behaviour 2025-05-14 22:00:42 +04:00
Timothy Jaeryang Baek b80f0751f6 refac 2025-05-14 21:59:17 +04:00
Timothy Jaeryang Baek 0280ee30c7 chore: format 2025-05-14 21:56:22 +04:00
Timothy Jaeryang Baek 8fe4f789d4 fix 2025-05-14 21:53:46 +04:00
Timothy Jaeryang Baek dacf7e015d i18n: revert 2025-05-14 21:52:42 +04:00
Timothy Jaeryang Baek ac83568194 chore: format 2025-05-14 21:40:51 +04:00
Timothy Jaeryang Baek 10108fcd04 chore: format 2025-05-14 21:39:50 +04:00
Timothy Jaeryang Baek 74ccec2812 refac 2025-05-14 21:39:17 +04:00
Tim Jaeryang Baek 29ae231ee0 Merge pull request #13889 from Classic298/pendingtext
feat: Custom Title and Text for Account Activation Screen for pending users
2025-05-14 21:28:16 +04:00
Timothy Jaeryang Baek de70d0cb64 feat: docling do picture description support 2025-05-14 21:26:49 +04:00
DrMelone 3974e53cc3 i18n 2025-05-14 19:11:53 +02:00
DrMelone 92140118f2 revert i18n 2025-05-14 19:07:45 +02:00
DrMelone e9eb661b83 fix + i18n 2025-05-14 18:58:54 +02:00
DrMelone bdb3778f8b fix 2025-05-14 18:10:23 +02:00
Timothy Jaeryang Baek 6e8481e157 fix: evaluation feedback endpoints 2025-05-14 20:08:49 +04:00
DrMelone 143cb4cc34 feat custom text and title 2025-05-14 17:58:20 +02:00
Tim Jaeryang Baek 2217fc4fd9 Merge pull request #13883 from alpha-pet/fix-workspace-model-unintended-toggle
Fix: Unintentional toggling of model status on the workspace page.
2025-05-14 18:09:16 +04:00
Tim Jaeryang Baek 8029bf0dca Merge pull request #13881 from hwzhuhao/feat/vector-db
feat: Add vector type and vector factory class for vector database integration
2025-05-14 17:41:39 +04:00
Thomas Rehn 6b6ce36c96 fix: add unique key to model list to avoid state confusion when filtering 2025-05-14 15:33:32 +02:00
hwzhuhao 6f869ded43 feat:Add vector type and vector factory class for vector database integration 2025-05-14 21:30:50 +08:00
Tim Jaeryang Baek 4959e91fa7 Merge pull request #13832 from Ithanil/svelte_versioning
feat: Handle frontend updates according to Svelte docs
2025-05-14 17:19:32 +04:00
Tim Jaeryang Baek f77a076c16 Merge pull request #13882 from itk-dev/feature/enable_direct_connections
chore: Added missing "enable_direct_connections" to config type
2025-05-14 17:18:04 +04:00
Jesper Kristensen 8b194bc781 Added missing "enable_direct_connections" to config type 2025-05-14 14:53:36 +02:00
Tim Jaeryang Baek bd7d2978f1 Merge pull request #13846 from hary777/patch-2
i18n update translation.json fix typo "amin" in cs-CZ
2025-05-14 15:27:40 +04:00
Tim Jaeryang Baek c7e3ae9f39 Merge pull request #13812 from hwzhuhao/refactor/log
refactor: replace print statements with logging
2025-05-14 15:27:13 +04:00
Timothy Jaeryang Baek 92a8ea743a refac: form data edge case 2025-05-14 15:22:38 +04:00
Timothy Jaeryang Baek 3c4accaeb3 refac/security: ollama model upload path traversal 2025-05-14 15:17:07 +04:00
Timothy Jaeryang Baek a9c22bffc9 refac/security: pipelines upload path traversal 2025-05-14 15:15:05 +04:00
Tim Jaeryang Baek d89e37cc7c Merge pull request #13866 from itk-dev/feature/contrast-chat-input
feat: Contrast enhancements
2025-05-14 15:12:00 +04:00
Sine Jespersen 8eacd26573 add placeholder dark mode 2025-05-14 12:50:47 +02:00
Sine Jespersen 90bcf45b7b placeholder contrast changed 2025-05-14 10:24:09 +02:00
Yeyeong Cho bbb4e75df8 Merge pull request #2 from mini-777/i18n-ko-rewriting
feat(openwebui) : improve Korean translations for better readability Fixes mini-777/8dobibim#2
2025-05-14 17:23:48 +09:00
Sine Jespersen b052b5cced remove whitespace 2025-05-14 10:15:31 +02:00
Sine Jespersen 5db783d67b improve suggestions contrast 2025-05-14 09:52:44 +02:00
Sine Jespersen 43d0db5eea model selector contrast 2025-05-14 09:52:10 +02:00
Sine Jespersen 41f64da0d6 update message input contrast 2025-05-14 09:51:38 +02:00
Sine Jespersen 5cd0b99ae0 update toast contrast 2025-05-14 09:51:07 +02:00
mini-777 571d078a82 fix: improve Korean translations for better readability (fixes mini-777/8dobibim#2) 2025-05-14 15:37:59 +09:00
mini-777 f72fa9b269 fix: update Korean translations for clarity and accuracy 2025-05-14 15:28:46 +09:00
Hans Gaiser f63e76e653 Add option to disable certificate validation. 2025-05-13 17:38:06 +02:00
hary777 66d73cb1de Update translation.json fix typo
Fix typo "amin". I can not look at this anymore.
2025-05-13 15:24:48 +02:00
Tim Jaeryang Baek 950f3cdcc0 Merge pull request #13838 from TiancongLx/dev
i18n: update, complete, and optimize zh-TW
2025-05-13 16:53:52 +04:00
Tim Jaeryang Baek f907e7c979 Merge pull request #13836 from itk-dev/feature/build-watch
build: Added build:watch command to package.json
2025-05-13 16:53:24 +04:00
Jesper Kristensen 24c1b8911c Added build:watch script/command to package.json
Should make it eaiser to automatically build the front-end when
doing local development in docker node containers.
2025-05-13 10:36:48 +02:00
Tiancong Li b41fc1d2f4 i18n: update zh-TW 2025-05-13 16:30:59 +08:00
Jan Kessler dfd4037132 better handling of frontend updates, following svelte docs 2025-05-13 09:51:51 +02:00
Timothy Jaeryang Baek a904f874ee fix: admin signup logic 2025-05-12 20:03:40 +04:00
hwzhuhao fb2950201a refactor: replace print statements with logging 2025-05-12 22:18:47 +08:00
Timothy Jaeryang Baek e9b799676b chore: format 2025-05-12 17:34:33 +04:00
Tim Jaeryang Baek c7f743ddb7 Merge pull request #13810 from phpia/phpia-patch-1
i18n es
2025-05-12 17:31:18 +04:00
phpia 16a9210321 Update translation for mantain prompt
This pull request updates the Spanish localization by replacing all instances of "indicador"/"indicadores" with the more accurate terms "prompt"/"prompts" throughout the UI, documentation, and messages. 

Reason and Rationale: 

In the context of AI and Large Language Models (LLMs), the words "prompt" and "prompts" have become standardized terms worldwide, including within the Spanish-speaking technical community. While "indicador" is a valid literal translation of "prompt" in general Spanish, in generative AI contexts it is potentially confusing, since "indicador" more commonly refers to a gauge, dashboard indicator, or measuring device. This can cause misunderstanding for users, especially those familiar with AI concepts, who expect the term "prompt" to refer to the input text given to a model.
2025-05-12 14:59:15 +02:00
Sung Min c049837a11 Merge pull request #1 from mini-777/i18n-ko-missing
feat(openwebui) : add missing Korean translation strings Fixes mini-777/8dobibim#1
2025-05-12 20:55:14 +09:00
Tim Jaeryang Baek ca34ba318e Merge pull request #13801 from aleixdorca/dev
i18n: Update catalan translation.json
2025-05-12 14:56:19 +04:00
Tim Jaeryang Baek 0d8e24320e Merge pull request #13794 from Lutherwaves/dev
i18n: Bulgarian translations
2025-05-12 14:55:10 +04:00
Aleix Dorca b7ef9a03ac Update catalan translation.json 2025-05-12 08:56:52 +02:00
Tim Jaeryang Baek 4ce1e88750 Merge pull request #13795 from open-webui/dev
refac
2025-05-12 01:10:34 +04:00
Timothy Jaeryang Baek f32b042a00 refac 2025-05-12 01:08:49 +04:00
lutherwaves 792beb095e i18n: Bulgarian translations 2025-05-11 23:58:31 +03:00
Timothy Jaeryang Baek 4c06683e95 refac: Vazirmatn 2025-05-12 00:05:04 +04:00
Tim Jaeryang Baek 0cef844168 Merge pull request #13758 from open-webui/dev
0.6.9
2025-05-10 23:04:48 +04:00
Timothy Jaeryang Baek c56d6963b0 doc: changelog 2025-05-10 23:01:48 +04:00
Timothy Jaeryang Baek 92e2cfdd2f refac 2025-05-10 23:00:53 +04:00
Timothy Jaeryang Baek 3ad5a7d97c chore: bump 2025-05-10 22:48:26 +04:00
Timothy Jaeryang Baek 867fddb821 chore: format 2025-05-10 22:45:58 +04:00
Timothy Jaeryang Baek de69c08a1d enh: alert private task model 2025-05-10 22:43:53 +04:00
Timothy Jaeryang Baek 30cc51ec82 feat: edit message files 2025-05-10 22:27:39 +04:00
Timothy Jaeryang Baek ba69c751ca refac: temporary chat behaviour 2025-05-10 22:12:36 +04:00
Timothy Jaeryang Baek be85f7cc35 fix: confirm dialog focus 2025-05-10 22:09:05 +04:00
Tim Jaeryang Baek 4191ec692e Merge pull request #13751 from open-webui/dev
fix: external reranker
2025-05-10 19:33:59 +04:00
Timothy Jaeryang Baek 6b5f99bf66 fix: external reranker 2025-05-10 19:33:34 +04:00
Tim Jaeryang Baek ef301aa16b Merge pull request #13707 from open-webui/dev
0.6.8
2025-05-10 19:31:52 +04:00
Timothy Jaeryang Baek 32b27749ef Update CHANGELOG.md 2025-05-10 19:29:02 +04:00
Timothy Jaeryang Baek b81a5833c7 doc: changelog 2025-05-10 19:25:42 +04:00
Timothy Jaeryang Baek 6f635d8b7d refac 2025-05-10 19:16:09 +04:00
Timothy Jaeryang Baek 549989e9ec refac 2025-05-10 19:04:40 +04:00
Timothy Jaeryang Baek 1c665592e4 chore: bump 2025-05-10 19:01:12 +04:00
Timothy Jaeryang Baek c61790b355 chore: format 2025-05-10 19:00:01 +04:00
Timothy Jaeryang Baek 3a79840a87 feat: unstylized pdf export 2025-05-10 18:59:04 +04:00
Timothy Jaeryang Baek a515a5df1a refac 2025-05-10 18:38:30 +04:00
Timothy Jaeryang Baek ba72d4625f refac 2025-05-10 18:36:45 +04:00
Timothy Jaeryang Baek 3dc34c2402 feat: external reranker settings ui 2025-05-10 18:33:52 +04:00
Timothy Jaeryang Baek be912f1529 refac 2025-05-10 18:29:04 +04:00
Timothy Jaeryang BaekandBrendan Campbell d5fd3b3600 feat: external reranker
Co-Authored-By: Brendan Campbell <20541191+bcambs09@users.noreply.github.com>
2025-05-10 18:25:20 +04:00
Timothy Jaeryang BaekandMabeck 34ec10a78c refac: web search performance
Co-Authored-By: Mabeck <64421281+mmabeck@users.noreply.github.com>
2025-05-10 17:54:41 +04:00
Timothy Jaeryang Baek 015ac2f532 refac: user list loading indicator 2025-05-10 17:23:17 +04:00
Tim Jaeryang Baek 030b6b26af Merge pull request #13735 from Classic298/dev
Fix: Markdown in Knowledgebases rendered correctly now
2025-05-10 17:13:16 +04:00
Tim Jaeryang Baek 6d1c18e118 Merge pull request #13736 from taylorwilsdon/ideas/13702
enh: Improve visibility of overflow / hidden tools when more than 3 are present
2025-05-10 17:10:45 +04:00
Tim Jaeryang Baek 54dda08d39 Merge pull request #13712 from PVBLIC-F/dev
perf - Pinecone.py
2025-05-10 17:10:08 +04:00
Tim Jaeryang Baek 7bfe4c6a43 Merge pull request #13738 from dataway/dev
fix: allow non-root jupyter base_url
2025-05-10 17:09:09 +04:00
Timothy Jaeryang Baek cc1dc6cb78 refac: config 2025-05-10 17:08:09 +04:00
PVBLIC Foundation 3f58a17e47 Update pinecone.py
•	Removed the unused Pinecone REST‐client import; we now only import ServerlessSpec and the gRPC client.
	•	Enhanced close()
	•	Call self.client.close() to explicitly shut down the underlying gRPC channel.
	•	Log success or a warning on failure.
	•	Still tear down the thread‐pool executor afterward.
	•	Context‐manager support
	•	Added __enter__()/__exit__() so you can do:

with PineconeClient() as client:
    client.insert(...)
# automatically calls client.close()
2025-05-10 06:07:27 -07:00
Tim Jaeryang Baek 3e1be8b958 Merge pull request #13746 from ghscience/dev
i18n Updated Italian Language Translation Added missing translations
2025-05-10 17:05:49 +04:00
gh d704b8b686 i18n Updated Italian Language Translation 2025-05-10 09:53:52 +00:00
PVBLIC Foundation 12c2138982 Update pinecone.py
Refactor and added debug
2025-05-09 18:15:22 -07:00
Anthony Uk 337ece4d50 code_interpreter.py: allow non-root jupyter base_url 2025-05-09 20:32:01 +02:00
Taylor Wilsdon 1299c11650 only show tools toggle if overflow present 2025-05-09 10:30:45 -04:00
Taylor Wilsdon 628a10e34a make the collapse toggle more subtle & compact 2025-05-09 10:26:48 -04:00
Classic298 513895c2d5 Update KnowledgeBase.svelte 2025-05-09 16:24:07 +02:00
Taylor Wilsdon ccbc46fbbe implement visible scrollbar for tools overflow, add show all toggle 2025-05-09 10:20:17 -04:00
Tim Jaeryang Baek 8acc1ab425 Merge pull request #13731 from tth37/fix_duplicate_web_search_urls
fix: Duplicate web search urls
2025-05-09 16:43:11 +04:00
Tim Jaeryang Baek 616e9e2760 Merge pull request #13730 from Classic298/dev
feat: Increase default users per page in admin panel to 30
2025-05-09 16:42:29 +04:00
tth37 c95a65a4bd fix: Duplicate web search urls 2025-05-09 20:06:35 +08:00
Classic298 220d35ebcb Increase users shown per page to 30 2025-05-09 13:00:42 +02:00
Classic298 947f5e840e Increased PAGE_ITEM_COUNT to 30 2025-05-09 12:59:50 +02:00
Timothy Jaeryang Baek ebf5cb22ab refac: socket 2025-05-09 14:23:16 +04:00
Timothy Jaeryang Baek d84a3c0bf4 revert: websocket 2025-05-09 14:20:43 +04:00
Timothy Jaeryang Baek 9143716463 refac: chat pdf rendering 2025-05-09 13:56:53 +04:00
Yeyeong Cho 13e7a3dee9 fix:add missing Korean translation strings Fixes mini-777/8dobibim#1 2025-05-09 17:54:50 +09:00
Timothy Jaeryang Baek 9657474a8d refac: websocket 2025-05-09 12:45:53 +04:00
PVBLIC Foundation b38711a581 Update pinecone.py 2025-05-08 16:02:47 -07:00
PVBLIC Foundation 04b9065f08 Update pinecone.py
Now supports batched insert, upsert, and delete operations using a default batch size of 100, reducing API strain and improving throughput. All blocking calls to the Pinecone API are wrapped in asyncio.to_thread(...), ensuring async safety and preventing event loop blocking. The implementation includes zero-vector handling for efficient metadata-only queries, normalized cosine distance scores for accurate ranking, and protections against empty input operations. Logs for batch durations have been streamlined to minimize noise, while preserving key info-level success logs.
2025-05-08 15:53:30 -07:00
Timothy Jaeryang Baek 827326e1a2 refac: audio transcription issue 2025-05-08 22:57:48 +04:00
Timothy Jaeryang Baek bfa5550cc3 refac: openai already supports webm audio 2025-05-08 22:44:32 +04:00
Tim Jaeryang Baek e60fa7927d Merge pull request #13604 from Acters/dev
feat: Improve Default Code Interpreter Prompt
2025-05-08 22:14:29 +04:00
Tim Jaeryang Baek 1fea4f794f Merge pull request #13670 from HarrisonConsulting/fix/milvus-standalone-index
fix: enhance MilvusClient with dynamic index type and improved logging
2025-05-08 22:08:23 +04:00
Timothy Jaeryang Baek 7c8597765f refac/fix: ldap issue 2025-05-08 22:06:44 +04:00
Timothy Jaeryang Baek 08b6ea0e17 refac 2025-05-08 20:47:41 +04:00
Tim Jaeryang Baek 68f5ff540c Merge pull request #13695 from itk-dev/8908-focus-trap-modal
feat: focus trap modal
2025-05-08 20:44:36 +04:00
Tim Jaeryang Baek 9509528deb Merge pull request #13703 from hurxxxx/fix/onedrive-org-picker-error
fix: Add SharePoint tenant ID to OneDrive settings
2025-05-08 20:41:06 +04:00
hurxxxx 4ca0ea1e55 Add SharePoint tenant ID to OneDrive settings 2025-05-09 00:35:23 +09:00
Sine Jespersen 3886dee1ce add whitespace and semi colon 2025-05-08 13:29:24 +02:00
Sine Jespersen 305435b4ef use npm package focus-trap instead of npm package focus-trap-svelte 2025-05-08 13:22:47 +02:00
Matt Harrison 4abe2cfa7b fix: Specified "HNSW" for backwards compatibility prefering cluster environments over standalone. 2025-05-08 07:21:34 -04:00
Tim Jaeryang Baek a6d6c928d9 Merge pull request #13567 from tth37/fix_katex_chinese_delimiters
fix(katex): Allow CJK characters adjacent to math delimiters
2025-05-08 14:41:16 +04:00
Timothy Jaeryang Baek af518cacbf refac: filter out images 2025-05-08 12:43:13 +04:00
Tim Jaeryang Baek 54e4c1e0cc Merge pull request #13675 from feddersen-group/task/remove_files_from_tasks
perf: remove files from tasks
2025-05-08 12:38:39 +04:00
Tim Jaeryang Baek f6b20ca109 Merge pull request #13677 from silentoplayz/dev
refactor: Improve Default Title Generation Prompt Template for robust JSON output
2025-05-08 12:38:05 +04:00
silentoplayz 994f17b430 Update config.py
Update DEFAULT_TITLE_GENERATION_PROMPT_TEMPLATE
2025-05-08 07:31:51 +00:00
Alexander Grimm a655bb5a63 skip checks in title gen 2025-05-08 06:55:43 +00:00
Alexander Grimm cf5201aada remove files from message for tasks 2025-05-08 06:50:21 +00:00
Matt Harrison 2df9f7fb4d fix: remove import for os module in milvus.py 2025-05-08 00:28:24 -04:00
Matt Harrison 731251d11a refac: streamline Milvus index type handling using configuration options 2025-05-07 23:39:56 -04:00
Matt Harrison 2b8be86f23 feat: add Milvus configuration options for index and metric types 2025-05-07 23:32:58 -04:00
Matt Harrison 5e46c27806 refac: enhance MilvusClient with dynamic index type and improved logging 2025-05-07 21:51:28 -04:00
Timothy Jaeryang Baek b34401a087 refac/fix: notes hide hidden models 2025-05-07 23:55:20 +04:00
Timothy Jaeryang Baek 61a9d9927d refac/fix: message input rtl issue 2025-05-07 23:14:42 +04:00
Timothy Jaeryang Baek f761d2cf90 refac: allow html video controls 2025-05-07 23:06:00 +04:00
Timothy Jaeryang Baek 0f40cb0de4 feat: Vazirmatn font for Persian and Arabic languages 2025-05-07 22:31:59 +04:00
Timothy Jaeryang Baek b50dcb1862 refac: remove duplicate urls 2025-05-07 22:25:18 +04:00
Tim Jaeryang Baek b9f55a44b7 Merge pull request #13346 from dh4340/patch-1
Fix: Use dynamic Python command to run uvicorn and support pyenv setups.
2025-05-07 22:08:35 +04:00
Tim Jaeryang Baek f1bb43707e Merge pull request #13566 from itk-dev/8908-accessibility-enhancements
feat: Accessibility enhancements
2025-05-07 22:07:57 +04:00
Tim Jaeryang Baek 519bb64238 Merge pull request #13623 from panda44312/patch-15
i18n: zh-cn
2025-05-07 22:06:54 +04:00
Tim Jaeryang Baek 410af53eca Merge pull request #13581 from kaytwo/refreshOauthPfp
feat: refresh oauth profile picture
2025-05-07 22:06:43 +04:00
Tim Jaeryang Baek c2de7efa2f Merge pull request #13637 from mMabeck/my-dev
i18n: Update Danish translations (da-DK)
2025-05-07 22:02:29 +04:00
Tim Jaeryang Baek 6424c8b644 Merge pull request #13643 from suleimanelkhoury/S3-tagging-boto3
fix: Add S3_ENABLE_TAGGING env variable and fix S3_USE_ACCELERATE_ENDPOINT Type Error
2025-05-07 22:02:14 +04:00
Sine Jespersen bd2021e8e1 add aria modal true and role dialog to modal 2025-05-07 15:17:11 +02:00
Suleiman Elkhoury ccc64ac6b7 Update provider.py
Add S3_ENABLE_TAGGING to add tags optionally based on the env file.
2025-05-07 14:48:49 +02:00
Suleiman Elkhoury 7620a6bf8c Update config.py
Fixed S3_USE_ACCELERATE_ENDPOINT variable from "False" to "false" since boto3 expects a Python bool, not a string.
Added S3_ENABLE_TAGGING env variable to avoid incompatiblilty with Storages that does not support tagging (like Cloudflare R2)
2025-05-07 14:46:58 +02:00
Sine Jespersen 54b30e0b7f use svelte-focus-trap in modal 2025-05-07 14:21:56 +02:00
Sine Jespersen f56983632f add npm package svelte-focus-trap 2025-05-07 14:20:06 +02:00
Mabeck 3a553f7208 Updated danish translations 2025-05-07 14:06:30 +02:00
Panda 571e4c9600 Merge branch 'dev' into patch-15 2025-05-07 11:18:13 +02:00
Timothy Jaeryang Baek a38f3c7617 refac 2025-05-07 13:10:24 +04:00
Timothy Jaeryang Baek b1fb298bee enh: contributions stats script 2025-05-07 13:09:41 +04:00
Timothy Jaeryang Baek 176a7fc986 refac 2025-05-07 12:52:55 +04:00
Tim Jaeryang Baek efd50c3c5a Merge pull request #13607 from ssakar/dev
feat: add presence_penalty parameter to openai (Qwen3)
2025-05-07 12:48:23 +04:00
Sine Jespersen 263086aa91 break and indent divs 2025-05-07 09:21:04 +02:00
Tim Jaeryang Baek a3bb7df610 Merge pull request #13530 from open-webui/dev
0.6.7
2025-05-07 03:08:25 +04:00
Timothy Jaeryang Baek 3a6a05cef1 doc: changelog 2025-05-07 03:05:49 +04:00
Serkan Sakar d62353c140 enh: add presence_penalty parameter to openai 2025-05-07 00:56:20 +02:00
Timothy Jaeryang Baek 803b39b00c refac 2025-05-07 02:45:00 +04:00
Timothy Jaeryang Baek ed5de96d1d fix: tool servers ui settings can be bypassed with search 2025-05-07 02:41:33 +04:00
Timothy Jaeryang Baek c667d27c38 refac 2025-05-07 02:37:23 +04:00
acters e088f1ef23 Merge branch 'open-webui:dev' into dev 2025-05-06 16:17:54 -06:00
Timothy Jaeryang Baek ad1486c8bd refac 2025-05-07 02:06:18 +04:00
Timothy Jaeryang Baek 6359cb55fe chore: format 2025-05-07 02:01:03 +04:00
Timothy Jaeryang Baek 96618967bd refac 2025-05-07 02:00:10 +04:00
Tim Jaeryang Baek 19bf7289c1 Merge pull request #13603 from TiancongLx/dev
i18n: complete empty values and **fix a typo** in zh-TW
2025-05-07 01:53:16 +04:00
Timothy Jaeryang Baek 369f461691 refac 2025-05-07 01:48:54 +04:00
acters 9c760ace80 Improve Default Code Interpreter Prompt
The change to the default "Code Interpreter" prompt makes it more clear to the LLM to not wrap the code in markdown's code block formatting. This improves the reliability of having code generated in the XML tags that will run properly.
2025-05-06 15:36:17 -06:00
Tiancong Li 45e9d05240 i18n: update zh-TW 2025-05-07 05:16:44 +08:00
Timothy Jaeryang Baek ace3303ff5 enh: TOOL_SERVER_CONNECTIONS env var support 2025-05-07 01:11:28 +04:00
Timothy Jaeryang Baek 62e57a4cf5 refac: auth endpoint 2025-05-07 00:54:53 +04:00
Tim Jaeryang Baek 2a4dfc02a2 Merge pull request #13540 from NoMoreFood/dev
feat: Azure TTS Allow Base URL
2025-05-07 00:49:57 +04:00
Tim Jaeryang Baek e0e151f4f4 Merge pull request #13583 from torisetxd/torisetxd-image-patch
Fix: Fix Image parameter for Automatic1111 `/generations` endpoint
2025-05-07 00:45:08 +04:00
Tim Jaeryang Baek ea07e242f5 Merge pull request #13528 from Classic298/dev
feat: Enhance YouTube Transcription Loader for multi-language support
2025-05-07 00:44:45 +04:00
Timothy Jaeryang Baek 53f2ab1676 chore: wording 2025-05-06 20:15:09 +04:00
Chris Kanich 500f4d73e1 refresh oauth profile picture 2025-05-06 11:00:35 -05:00
toriset 6c957f2407 Fixed mis-use of set_image_model in automatic1111 Image generation
A custom model parameter would always throw an error.. :/
2025-05-06 18:17:52 +03:00
Classic298 1dcbec71ec Update youtube.py 2025-05-06 17:14:00 +02:00
Classic298 87dcbd198c Update youtube.py 2025-05-06 17:11:03 +02:00
Classic298 d7927506f1 Update youtube.py 2025-05-06 17:06:21 +02:00
Classic298 f65dc715f9 Update youtube.py 2025-05-06 16:30:18 +02:00
Classic298 c69278c13c Update youtube.py 2025-05-06 16:24:27 +02:00
Classic298 a129e0954e Update youtube.py 2025-05-06 16:22:40 +02:00
Classic298 5e1cb76b93 Update youtube.py 2025-05-06 16:16:58 +02:00
tth37 8e14372dd8 enh: Support more languages 2025-05-06 21:26:09 +08:00
Sine Jespersen 9d8d4393a6 remove alt text from logo, as this is decorative and provides no value for assistive tech users 2025-05-06 14:37:35 +02:00
Sine Jespersen c4a3a9c616 fix text-contrast from 3.71 to 7.55 on dark mode 2025-05-06 14:37:05 +02:00
Sine Jespersen 8c6f4f6579 change divs to labels, as this is what they semantically are 2025-05-06 14:33:26 +02:00
Sine Jespersen 86ce111edd Add aria-labelledby to icon-button to make assistive tech able to give info on what user can expect from button 2025-05-06 14:30:01 +02:00
Sine Jespersen 0889dd3a51 add close label to close button in changelog modal, only accessible for screen readers 2025-05-06 14:24:19 +02:00
tth37 de182ddec2 fix(katex): Allow Chinese characters adjacent to math delimiters 2025-05-06 18:38:42 +08:00
Panda bfdcc12cdc i18n: zh-cn 2025-05-06 08:30:28 +02:00
Tim Jaeryang Baek ed210517c2 Merge pull request #13533 from TheRauch1/main
feat: handle user OAuth groups as list or string
2025-05-06 09:57:14 +04:00
Tim Jaeryang Baek 7b5247810c Merge pull request #13542 from tuzkiyoung/main
fix: support gpt-image-1 with correct parameter
2025-05-06 09:56:48 +04:00
杨方亮 9cc00afc6b fix: support gpt-image-1 with correct parameter 2025-05-06 10:17:22 +08:00
Bryan Berns 5c055b73a3 Add Custom Azure TTS URL - Formatting 2025-05-05 22:17:18 -04:00
Bryan Berns 853adad894 Add Custom Azure TTS URL - Fix Spaces 2025-05-05 22:12:32 -04:00
Bryan Berns 5aabe21cbe Add Custom Azure TTS URL 2025-05-05 22:08:48 -04:00
Timothy Jaeryang Baek e63b8b3879 refac 2025-05-06 00:46:32 +04:00
Tim Jaeryang Baek 0a8199a056 Merge pull request #13522 from salbahra/bug/fix-missing-api-config
fix: Correct missing `api_config` for embedding Ollama proxy endpoints
2025-05-05 23:49:40 +04:00
Timothy Jaeryang Baek 7b36466c1c refac: audio transcribe supported filetype 2025-05-05 23:42:56 +04:00
Timothy Jaeryang Baek 27da31dc83 fix: tikaloader extract images 2025-05-05 23:40:34 +04:00
therauch1 c36acd46cc enh: handle user OAuth groups as list or string 2025-05-05 21:38:31 +02:00
Tim Jaeryang Baek 413297b5c7 Merge pull request #13532 from Classic298/main
i18n: Update de-DE translation
2025-05-05 23:37:54 +04:00
Classic298 f94965909c Update translation.json 2025-05-05 21:33:45 +02:00
Timothy Jaeryang Baek 982c84c8ac fix: non admin user notes 2025-05-05 23:31:37 +04:00
Timothy Jaeryang Baek 1f45b9df2e fix: notes non admin issue 2025-05-05 23:29:40 +04:00
Tim Jaeryang Baek 3dd2e80dec Merge pull request #13525 from Kylapaallikko/dev
i18n: Update fi-FI translation
2025-05-05 23:28:04 +04:00
Classic298 67a612fe24 Update youtube.py 2025-05-05 20:40:48 +02:00
Classic298 791dd24ace Update youtube.py 2025-05-05 20:08:25 +02:00
Classic298 9cf3381381 Update youtube.py 2025-05-05 20:07:52 +02:00
Classic298 b0d74a59f1 Update youtube.py 2025-05-05 20:07:37 +02:00
Classic298 1a30b3746e Update youtube.py 2025-05-05 20:03:00 +02:00
Classic298 0a3817ed86 Update youtube.py 2025-05-05 20:00:10 +02:00
Classic298 0a845db8ec Update youtube.py 2025-05-05 19:57:21 +02:00
Classic298 7680ac2517 Update youtube.py 2025-05-05 19:57:06 +02:00
Kylapaallikko b3eb3b3c05 Update fi-FI translation.json 2025-05-05 20:21:23 +03:00
Samer Albahra d5e866d839 Fix missing api_config for embedding Ollama proxy endpoints 2025-05-05 12:33:07 -04:00
Timothy Jaeryang Baek db0a0b395f fix: oauth 2025-05-05 19:38:36 +04:00
Tim Jaeryang Baek 23b9354cf6 Merge pull request #12932 from open-webui/dev
0.6.6
2025-05-05 17:58:52 +04:00
Timothy Jaeryang Baek 4fa2e136bf refac: styling 2025-05-05 17:58:40 +04:00
Timothy Jaeryang Baek 512d475ecc refac: api usage 2025-05-05 17:43:51 +04:00
Timothy Jaeryang Baek 56cefde161 doc: changelog 2025-05-05 17:13:09 +04:00
Timothy Jaeryang Baek f78811b253 chore: bump 2025-05-05 16:49:21 +04:00
Timothy Jaeryang Baek e6ca7a414b refac 2025-05-05 16:41:51 +04:00
Tim Jaeryang Baek 367f6fb8f1 Merge pull request #13498 from omahs/main
fix: typos
2025-05-05 16:27:33 +04:00
omahs 37e0313c83 Merge branch 'dev' into main 2025-05-05 14:26:40 +02:00
Timothy Jaeryang Baek 267889809d chore: format 2025-05-05 16:19:05 +04:00
Timothy Jaeryang Baek 33c206c15c enh: include profile image during user import 2025-05-05 16:17:20 +04:00
omahs 863f227be9 fix: typos 2025-05-05 14:14:59 +02:00
Timothy Jaeryang Baek abdde10b74 refac 2025-05-05 16:12:41 +04:00
Timothy Jaeryang Baek 26e9cd0b4b enh: user role update confirm dialog 2025-05-05 16:10:36 +04:00
Timothy Jaeryang Baek 457a0f318a refac 2025-05-05 16:05:39 +04:00
Timothy Jaeryang Baek 3771d27a52 refac 2025-05-05 15:50:09 +04:00
Timothy Jaeryang Baek d16ff54895 refac 2025-05-05 15:46:55 +04:00
Timothy Jaeryang Baek de0f52b686 doc: readme 2025-05-05 15:42:14 +04:00
Timothy Jaeryang Baek eec7a2afa1 refac 2025-05-05 11:25:00 +04:00
Timothy Jaeryang Baek 9e1400f055 enh: generate title 2025-05-05 10:36:01 +04:00
Timothy Jaeryang Baek aa374823ce refac 2025-05-05 10:16:34 +04:00
Timothy Jaeryang Baek a20a920ca4 refac: styling 2025-05-05 09:41:25 +04:00
Timothy Jaeryang Baek 827fd6606c refac 2025-05-05 09:36:34 +04:00
Timothy Jaeryang Baek deb1f6b6d7 feat: ai enhanced notes 2025-05-05 09:22:54 +04:00
Tim Jaeryang Baek 0f1df43bb2 Merge pull request #13485 from TiancongLx/dev
i18n: update zh-TW
2025-05-05 08:25:24 +04:00
Tiancong Li 62a5b14642 i18n: update zh-TW 2025-05-05 10:15:20 +08:00
Timothy Jaeryang Baek 9faf2d9849 refac: styling 2025-05-05 01:51:51 +04:00
Timothy Jaeryang Baek f24d0085c2 refac 2025-05-05 01:45:55 +04:00
Timothy Jaeryang Baek 463ac99e39 enh: note versioning 2025-05-05 01:35:43 +04:00
Timothy Jaeryang Baek e8b23ef0c1 refac 2025-05-05 00:05:06 +04:00
Timothy Jaeryang Baek a6a7ce6b68 enh: import md notes 2025-05-04 23:04:15 +04:00
Timothy Jaeryang Baek 8514669053 refac 2025-05-04 18:59:36 +04:00
Timothy Jaeryang Baek 291834ecbe chore: format 2025-05-04 18:32:56 +04:00
Timothy Jaeryang Baek 360b5b303a enh: note editor 2025-05-04 18:32:21 +04:00
Timothy Jaeryang Baek d8e9b000e3 enh: upload audio 2025-05-04 18:26:33 +04:00
Timothy Jaeryang Baek 62366ad020 refac: audio recording 2025-05-04 18:17:35 +04:00
Timothy Jaeryang Baek 2946f5fcce refac: styling 2025-05-04 17:33:15 +04:00
Timothy Jaeryang Baek f2cf21d64c enh: file item display audio 2025-05-04 17:29:59 +04:00
Timothy Jaeryang Baek 6475ae3b11 refac 2025-05-04 17:23:42 +04:00
Timothy Jaeryang Baek 84a05bec7b enh: notes user group permission 2025-05-04 17:22:51 +04:00
Timothy Jaeryang Baek f716968009 enh: delete notes 2025-05-04 17:01:12 +04:00
Timothy Jaeryang Baek 18149483f2 refac: note pdf export 2025-05-04 16:59:41 +04:00
Timothy Jaeryang Baek 175bbe27e9 refac 2025-05-04 16:53:48 +04:00
Tim Jaeryang Baek d1eaa9d4ee Merge pull request #13478 from SadmL/dev
[i18n] Russian locale update
2025-05-04 02:24:38 -07:00
SadmL 9b133a2245 misspell fix 2025-05-04 12:05:21 +03:00
SadmL 0e51b75654 Russian locale update 2025-05-04 11:59:13 +03:00
Timothy Jaeryang Baek 1cf9843468 refac 2025-05-04 12:02:10 +04:00
Timothy Jaeryang Baek dd42a10aa1 refac 2025-05-04 12:01:20 +04:00
Tim Jaeryang Baek 60c0aa36a2 Merge pull request #13470 from TiancongLx/dev
i18n: update zh-TW
2025-05-04 00:41:02 -07:00
Tiancong Li a7cbfeec9f i18n: update zh-TW 2025-05-04 11:58:20 +08:00
Timothy Jaeryang Baek c5c98591f9 refac 2025-05-04 00:20:30 +04:00
Timothy Jaeryang Baek 59e52add63 chore: bump 2025-05-04 00:15:46 +04:00
Timothy Jaeryang Baek 9c4a931d22 feat: capture display media audio 2025-05-04 00:14:19 +04:00
Timothy Jaeryang Baek 4cfb99248d chore: format 2025-05-03 23:48:24 +04:00
Timothy Jaeryang Baek aefd5d9557 chore: format 2025-05-03 23:48:12 +04:00
Timothy Jaeryang Baek 0f14f34dbe refac 2025-05-03 23:47:41 +04:00
Timothy Jaeryang Baek d74809853d enh: note files 2025-05-03 23:29:19 +04:00
Timothy Jaeryang Baek 23da63b06a refac: styling 2025-05-03 23:08:28 +04:00
Timothy Jaeryang Baek 116b61c53b refac 2025-05-03 23:06:46 +04:00
Timothy Jaeryang Baek f43cb87556 refac 2025-05-03 23:05:25 +04:00
Tim Jaeryang Baek 1af45435eb Merge pull request #13459 from open-webui/notes
feat: notes
2025-05-03 11:54:04 -07:00
Timothy Jaeryang Baek 4acd278624 refac 2025-05-03 22:53:23 +04:00
Timothy Jaeryang Baek 1d82a1c8c4 feat: note editor 2025-05-03 21:18:19 +04:00
Timothy Jaeryang Baek 52d32e8bf2 refac: styling 2025-05-03 21:02:21 +04:00
Timothy Jaeryang Baek a74297ed47 refac: styling 2025-05-03 18:56:27 +04:00
Timothy Jaeryang Baek 7de6112c5b feat: note list ui 2025-05-03 18:52:13 +04:00
Tim Jaeryang Baek bfacab5a0c Merge pull request #13447 from athoik/dev
feat(ocr): add support for Docling OCR engine and language configuration
2025-05-03 07:18:05 -07:00
Tim Jaeryang Baek bbc1ae0942 Merge pull request #13441 from salbahra/bug/fix-prefix-for-embedding-model
fix: Incorrect model reference with Ollama proxy when prefixes are used
2025-05-03 07:17:40 -07:00
Timothy Jaeryang Baek 7fee84c06e feat: notes 2025-05-03 18:16:32 +04:00
Athanasios Oikonomou 437804a2f8 fix: update validation logic for Docling OCR engine and language requirements
Both Docling OCR Engine and Language(s) must be provided or both left empty.
2025-05-03 08:12:58 +03:00
Athanasios Oikonomou 4801430ad2 fix: correct condition for Docling OCR engine and language validation
Both must have value or both must be empty.
2025-05-03 08:02:00 +03:00
Athanasios Oikonomou 657162e96d feat(ocr): add support for Docling OCR engine and language configuration
This commit adds support for configuring the OCR engine and language(s) for Docling.
Configuration can be set via the environment variables `DOCLING_OCR_ENGINE` and `DOCLING_OCR_LANG`, or through the UI.

Fixes #13133
2025-05-03 00:32:06 +03:00
Samer Albahra cafba3eaff Fix model reference with Ollama proxy when prefixes are used 2025-05-02 11:30:59 -04:00
Tim Jaeryang Baek 7d184c3a14 Merge pull request #13085 from ayan4m1/fix/tika-image-ocr
fix: pass extractInlineImages header to Tika if PDF_EXTRACT_IMAGES is true
2025-05-02 03:47:51 -07:00
Timothy Jaeryang Baek 754f631a07 feat: OAUTH_BLOCKED_GROUPS support 2025-05-02 14:47:02 +04:00
Timothy Jaeryang Baek c1ddb00377 refac: styling 2025-05-02 14:19:53 +04:00
Timothy Jaeryang Baek 74f160b849 refac 2025-05-02 14:16:11 +04:00
Tim Jaeryang Baek 11d599c55d Merge pull request #13111 from tth37/perf_multi_thread_web_searching
perf: Concurrent processing for web search queries
2025-05-02 03:15:49 -07:00
Tim Jaeryang Baek 7b014e44ee Merge pull request #13376 from Thaniel94/add-whisper-language-constraint
feat: Added WHISPER_LANGUAGE env variable
2025-05-02 03:08:00 -07:00
Timothy Jaeryang Baek 4a0b2a3afc chore: bump 2025-05-02 14:06:57 +04:00
Tim Jaeryang Baek 2d5643fb17 Merge pull request #13405 from yak1ex/fix_multiple_actions_in_an_action_module_do_not_work_as_intended
fix: Multiple actions in an action module do not work as intended.
2025-05-02 03:06:05 -07:00
Tim Jaeryang Baek d522914774 Merge pull request #13413 from hurxxxx/fix/eslint-version-mismatch
fix: eslint version mismatch
2025-05-02 03:05:30 -07:00
Tim Jaeryang Baek 3013ce2d1a Merge pull request #13415 from TiancongLx/dev
i18n: update zh-TW
2025-05-02 03:04:39 -07:00
Timothy Jaeryang Baek 6d81eef425 refac: reasoning detection 2025-05-02 14:04:12 +04:00
Timothy Jaeryang Baek c258272709 refac 2025-05-02 13:37:41 +04:00
Tim Jaeryang Baek a0981e01a0 Merge pull request #13417 from flefevre/dev-i8n-french
i18n french
2025-05-02 02:28:11 -07:00
hurxxxx 10243b0fac chore: bump @typescript-eslint/eslint-plugin to 8.31.1 2025-05-02 09:44:51 +09:00
nathaniel cc14aacaaa Improvements to parsing of WHISPER_LANGUAGE environment variable (Setting as empty string now equivalent to unsetting/removing WHISPER_LANGUAGE). Resolved crash caused when unset 2025-05-01 22:03:49 +01:00
nathaniel ef7acfbf3d WHISPER_LANGUAGE no longer a "PersistentConfig" variable (Was not appropriate with how WHISPER_LANGUAGE is currently configured). 2025-05-01 21:33:57 +01:00
flefevre fb8a7e8549 Merge branch 'dev' into dev-i8n-french 2025-05-01 20:17:50 +02:00
Francois LE FEVRE 754a3c4cb9 last elements to translate into french 2025-05-01 20:07:56 +02:00
Tiancong Li 725761ad6b i18n: update zh-TW 2025-05-01 22:56:47 +08:00
Francois LE FEVRE 57cb030a24 seconde review on french translation 2025-05-01 15:59:52 +02:00
Francois LE FEVRE 12626107b6 first elements translated in french 2025-05-01 15:46:58 +02:00
hurxxxx 72f985aba7 fix: align eslint plugin and parser versions 2025-05-01 22:39:29 +09:00
Timothy Jaeryang Baek 5d5e351937 feat: notes scaffolding 2025-05-01 16:39:36 +04:00
Tim Jaeryang Baek 2062d3434e Merge pull request #13385 from open-webui/dependabot/npm_and_yarn/dev/typescript-eslint/parser-8.31.1
build(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 8.31.1
2025-05-01 04:59:00 -07:00
Timothy Jaeryang Baek f26cafd984 chore: langchain bump 2025-05-01 15:58:45 +04:00
Tim Jaeryang Baek aca82d64a0 Merge pull request #13391 from open-webui/dependabot/pip/backend/dev/rapidocr-onnxruntime-1.4.4
build(deps): bump rapidocr-onnxruntime from 1.3.24 to 1.4.4 in /backend
2025-05-01 04:56:32 -07:00
Tim Jaeryang Baek 3715919a6b Merge pull request #13389 from open-webui/dependabot/npm_and_yarn/dev/codemirror-lang-hcl-0.1.0
build(deps): bump codemirror-lang-hcl from 0.0.0-beta.2 to 0.1.0
2025-05-01 04:55:52 -07:00
Tim Jaeryang Baek 0e3b9f9da1 Merge pull request #13388 from open-webui/dependabot/npm_and_yarn/dev/prosemirror-schema-list-1.5.1
build(deps): bump prosemirror-schema-list from 1.4.1 to 1.5.1
2025-05-01 04:55:45 -07:00
Tim Jaeryang Baek f10e7ac81b Merge pull request #13387 from open-webui/dependabot/npm_and_yarn/dev/tiptap/core-2.11.9
build(deps): bump @tiptap/core from 2.10.0 to 2.11.9
2025-05-01 04:55:36 -07:00
Tim Jaeryang Baek 61580e9490 Merge pull request #13404 from NoMoreFood/dev
fix: Use SHA256 For Query Result Computation
2025-05-01 04:55:16 -07:00
Tim Jaeryang Baek 6f2d61dc4f Merge pull request #13398 from hurxxxx/i18n-korean
i18n: Update Korean translation.json and parsed messages
2025-05-01 04:48:56 -07:00
Bryan Berns 32257089f9 Use SHA256 For Query Result Computation 2025-05-01 03:56:20 -04:00
Yak! b5cfa2b992 fix: Multiple actions in an action module do not work as intended. 2025-05-01 16:41:06 +09:00
dependabot[bot] c826717343 build(deps): bump @tiptap/core from 2.10.0 to 2.11.9
Bumps [@tiptap/core](https://github.com/ueberdosis/tiptap/tree/HEAD/packages/core) from 2.10.0 to 2.11.9.
- [Release notes](https://github.com/ueberdosis/tiptap/releases)
- [Changelog](https://github.com/ueberdosis/tiptap/blob/@tiptap/core@2.11.9/packages/core/CHANGELOG.md)
- [Commits](https://github.com/ueberdosis/tiptap/commits/@tiptap/core@2.11.9/packages/core)

---
updated-dependencies:
- dependency-name: "@tiptap/core"
  dependency-version: 2.11.9
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 05:44:35 +00:00
Tim Jaeryang Baek 35a64b55a1 Merge pull request #13386 from open-webui/dependabot/npm_and_yarn/dev/tiptap/extension-code-block-lowlight-2.11.9
build(deps): bump @tiptap/extension-code-block-lowlight from 2.10.0 to 2.11.9
2025-04-30 22:43:30 -07:00
Tim Jaeryang Baek 9695e08411 Merge pull request #13392 from open-webui/dependabot/pip/backend/dev/pytest-approx-eq-8.3.5
build(deps): update pytest requirement from ~=8.3.2 to ~=8.3.5 in /backend
2025-04-30 22:43:09 -07:00
Tim Jaeryang Baek c6d76acf76 Merge pull request #13393 from open-webui/dependabot/pip/backend/dev/elasticsearch-9.0.1
build(deps): bump elasticsearch from 8.17.1 to 9.0.1 in /backend
2025-04-30 22:42:55 -07:00
Tim Jaeryang Baek b6a76dc026 Merge pull request #13394 from open-webui/dependabot/pip/backend/dev/loguru-0.7.3
build(deps): bump loguru from 0.7.2 to 0.7.3 in /backend
2025-04-30 22:42:45 -07:00
Timothy Jaeryang Baek 079af5fffe fix: send webhook notification when user is not active 2025-05-01 09:41:07 +04:00
Tim Jaeryang Baek e57f2c928a Merge pull request #13379 from NoMoreFood/dev
feat: Azure STT Allow Base URL & Max Speaker Setting
2025-04-30 22:26:18 -07:00
hurxxxx 513d5c8bf5 Fix typos 2025-05-01 13:21:15 +09:00
hurxxxx d72e41c563 Consolidate duplicate messages into a single one 2025-05-01 13:16:47 +09:00
hurxxxx 1ca5d532b8 chore(i18n): update parsed i18n data and Korean translations 2025-05-01 13:00:27 +09:00
hurxxxx f46c7d53b7 update Korean translation 2025-05-01 12:55:07 +09:00
hurxxxx a7cbf62c68 update Korean translation 2025-05-01 12:43:19 +09:00
dependabot[bot] 4eaaeb1888 build(deps): bump loguru from 0.7.2 to 0.7.3 in /backend
Bumps [loguru](https://github.com/Delgan/loguru) from 0.7.2 to 0.7.3.
- [Release notes](https://github.com/Delgan/loguru/releases)
- [Changelog](https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/Delgan/loguru/compare/0.7.2...0.7.3)

---
updated-dependencies:
- dependency-name: loguru
  dependency-version: 0.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:54:59 +00:00
dependabot[bot] 753d530cd0 build(deps): bump elasticsearch from 8.17.1 to 9.0.1 in /backend
Bumps [elasticsearch](https://github.com/elastic/elasticsearch-py) from 8.17.1 to 9.0.1.
- [Release notes](https://github.com/elastic/elasticsearch-py/releases)
- [Commits](https://github.com/elastic/elasticsearch-py/compare/v8.17.1...v9.0.1)

---
updated-dependencies:
- dependency-name: elasticsearch
  dependency-version: 9.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:54:56 +00:00
dependabot[bot] 10f55d39d2 build(deps): update pytest requirement in /backend
Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.2...8.3.5)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 8.3.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:54:52 +00:00
dependabot[bot] 0b84863d76 build(deps): bump rapidocr-onnxruntime from 1.3.24 to 1.4.4 in /backend
Bumps [rapidocr-onnxruntime](https://github.com/RapidAI/RapidOCR) from 1.3.24 to 1.4.4.
- [Release notes](https://github.com/RapidAI/RapidOCR/releases)
- [Commits](https://github.com/RapidAI/RapidOCR/compare/v1.3.24...v1.4.4)

---
updated-dependencies:
- dependency-name: rapidocr-onnxruntime
  dependency-version: 1.4.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:54:49 +00:00
dependabot[bot] efc163fede build(deps): bump codemirror-lang-hcl from 0.0.0-beta.2 to 0.1.0
Bumps codemirror-lang-hcl from 0.0.0-beta.2 to 0.1.0.

---
updated-dependencies:
- dependency-name: codemirror-lang-hcl
  dependency-version: 0.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:53:31 +00:00
dependabot[bot] dc5107a473 build(deps): bump prosemirror-schema-list from 1.4.1 to 1.5.1
Bumps [prosemirror-schema-list](https://github.com/prosemirror/prosemirror-schema-list) from 1.4.1 to 1.5.1.
- [Changelog](https://github.com/ProseMirror/prosemirror-schema-list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prosemirror/prosemirror-schema-list/compare/1.4.1...1.5.1)

---
updated-dependencies:
- dependency-name: prosemirror-schema-list
  dependency-version: 1.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:53:26 +00:00
dependabot[bot] c5fd40d951 build(deps): bump @tiptap/extension-code-block-lowlight
Bumps [@tiptap/extension-code-block-lowlight](https://github.com/ueberdosis/tiptap/tree/HEAD/packages/extension-code-block-lowlight) from 2.10.0 to 2.11.9.
- [Release notes](https://github.com/ueberdosis/tiptap/releases)
- [Changelog](https://github.com/ueberdosis/tiptap/blob/@tiptap/extension-code-block-lowlight@2.11.9/packages/extension-code-block-lowlight/CHANGELOG.md)
- [Commits](https://github.com/ueberdosis/tiptap/commits/@tiptap/extension-code-block-lowlight@2.11.9/packages/extension-code-block-lowlight)

---
updated-dependencies:
- dependency-name: "@tiptap/extension-code-block-lowlight"
  dependency-version: 2.11.9
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:53:05 +00:00
dependabot[bot] 317032aa5c build(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 8.31.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.21.0 to 8.31.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.31.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 02:52:50 +00:00
Tim Jaeryang Baek f3b38e9777 Merge pull request #13372 from therealmichaelberna/main
**fix** convert_function_to_pydantic_model returning empty descriptions
2025-04-30 13:36:22 -07:00
Tim Jaeryang Baek 336d20fa33 Merge pull request #13364 from NovoNordisk-OpenSource/websocket-behind-auth
refactor: hiding websocket initalization behind authentication
2025-04-30 13:35:27 -07:00
Timothy Jaeryang Baek dadfa5f043 refac: HTML_FILE_ID handling 2025-05-01 00:32:29 +04:00
Timothy Jaeryang Baek e52e45d613 refac: collapsible 2025-04-30 22:26:07 +04:00
Michael Berna 4a6b964a51 Fixed convert_function_to_pydantic_model
convert_function_to_pydantic_model was returning empty function descriptions. I have renamed the variables more precisely which helps to avoid confusion and also resolved this issue which was caused by a variable naming conflict.
2025-04-30 14:22:38 -04:00
Timothy Jaeryang Baek 41904f21e4 refac 2025-04-30 19:41:16 +04:00
Timothy Jaeryang Baek ef2aeb7c0e fix: only allow admin uploaded html to be rendered as html 2025-04-30 19:34:53 +04:00
shcodenick 4c81b6ebc5 hiding websocket initalization behind authentication 2025-04-30 15:05:57 +02:00
Timothy Jaeryang Baek 783d409b1d refac 2025-04-30 16:58:38 +04:00
Timothy Jaeryang Baek c1fa989cb8 refac: styling 2025-04-30 16:54:51 +04:00
Bryan Berns 6c8a9d000e Azure STT Allow Base URL & Max Speaker Setting 2025-04-30 08:51:01 -04:00
Timothy Jaeryang Baek f9d238e850 refac: user list sub-standard code 2025-04-30 16:49:41 +04:00
Tim Jaeryang Baek db06a925fe Merge pull request #13267 from AnapatChaiwongse/dev
feat: implement pagination for /admin/users
2025-04-30 05:04:14 -07:00
Timothy Jaeryang Baek eb68b21e0f refac 2025-04-30 16:01:23 +04:00
Tim Jaeryang Baek e822984162 Merge pull request #13358 from feddersen-group/fix/load_ext_dependencies_on_startup
fix: install external requirements of tools and functions to prevent deactivation
2025-04-30 04:59:56 -07:00
Alexander Grimm e80ed32aeb fix: install external requirements of admin functions and tools on startups 2025-04-30 11:14:38 +00:00
Tim Jaeryang Baek c9d3bb35c3 Merge pull request #13342 from feddersen-group/feat/embedding_dim
feat: allow pgvector to use large embedding models
2025-04-30 02:41:26 -07:00
Alexander Grimm da9966aca1 ~ truncate vectors for pgvector if too big 2025-04-30 05:35:17 +00:00
Tim Jaeryang Baek 4ee5dd58b7 Merge pull request #13177 from tth37/fix_firecrawl_loader_default_mode
fix: FireCrawlLoader default mode to scrape
2025-04-29 08:39:06 -07:00
Tim Jaeryang Baek e87f2669fa Merge pull request #13191 from tth37/feat_firecrawl_search_engine
feat: Add Firecrawl search engine
2025-04-29 08:38:28 -07:00
Tim Jaeryang Baek 390263742c Merge pull request #13273 from spammenotinoz/dev
**FIX** Update Knowledge ReIndexing to continue upon missing\corrupt collections
2025-04-29 08:37:55 -07:00
Tim Jaeryang Baek 8f4be09dd2 Merge pull request #13315 from aleixdorca/dev
i18n: Update Catalan translation.json
2025-04-29 08:35:28 -07:00
Tim Jaeryang Baek 7b863465a9 Merge pull request #13311 from stephen304/yacy-support
feat: Yacy search support
2025-04-29 08:35:10 -07:00
Timothy Jaeryang Baek 6ae2d2c4ea refac: gpt-image-1 support 2025-04-29 19:34:00 +04:00
Timothy Jaeryang Baek addf44b21f refac 2025-04-29 19:27:54 +04:00
D 8f31b6d74a Fix: Use dynamic Python command to run uvicorn and support pyenv setups.
Updated the uvicorn startup command to dynamically detect and use either 'python3' or 'python',
ensuring compatibility across different environments and pyenv setups.
This avoids issues where only one of the commands is available.
2025-04-29 09:14:23 +01:00
Aleix Dorca bc88a9bc8b Update Catalan translation.json 2025-04-29 07:04:16 +02:00
Tim Jaeryang Baek f7f3ae7cc9 Merge pull request #13306 from tarmst/remove-blocking-websocket-awaits
Perf: Chat Websocket Sequential Awaits
2025-04-28 11:17:50 -07:00
Tim Jaeryang Baek 5a1c4dbe1b Merge pull request #13279 from panda44312/patch-14
i18n: zh-cn
2025-04-28 11:17:24 -07:00
Panda 63e4d1ea41 i18n: fix 2025-04-28 18:22:36 +02:00
tth37 cf2d7de873 refac: Implicit asyncio create_task 2025-04-29 00:20:55 +08:00
tarmst c9a9e05bb4 Fix websocket sequential awaits 2025-04-28 15:17:34 +00:00
Timothy Jaeryang Baek 3ac74a4fcb refac: styling 2025-04-28 18:21:48 +04:00
Timothy Jaeryang Baek 63fe426a52 chore: format 2025-04-28 17:46:05 +04:00
Timothy Jaeryang Baek ee8de1ee0b refac: disable jwt display for non-admin users 2025-04-28 17:45:17 +04:00
Timothy Jaeryang Baek 791c19acf7 enh: unicode char support for user import 2025-04-28 17:26:19 +04:00
Tim Jaeryang Baek a9999833d2 Merge pull request #13185 from Chayud-Ac/feature-thai-i18n
fix(i18n): improve Thai translations
2025-04-28 06:16:20 -07:00
Tim Jaeryang Baek c3da9f3026 Merge pull request #13246 from jmtatsch/fix-video-treated-as-text
Fix uploading video files
2025-04-28 06:15:40 -07:00
Tim Jaeryang Baek 2f5abf7374 Merge pull request #13187 from Mister-Hope/patch-1
feat: update default CUDA version to 12.8, close #13186
2025-04-28 06:15:01 -07:00
Tim Jaeryang Baek dedc45183f Merge pull request #13258 from choket/dev
Fix: Fixed a bug that caused user notification webhooks to never be sent
2025-04-28 06:14:24 -07:00
Tim Jaeryang Baek 6d59a5f809 Merge pull request #13253 from noexcs/dev
fix: The value of the 'Access-Control-Allow-Origin' header in the res…
2025-04-28 06:12:53 -07:00
Timothy Jaeryang Baek 10855cf5ed refac 2025-04-28 17:11:28 +04:00
Timothy Jaeryang Baek 9398c843d3 refac 2025-04-28 17:08:07 +04:00
Timothy Jaeryang Baek 45ad6776de fix: token cookie issue 2025-04-28 17:04:13 +04:00
Tim Jaeryang Baek fb1c101dc6 Merge pull request #13269 from jarrod-lowe/s3-tagging
feat: Add tags to S3 uploaded files
2025-04-28 05:57:08 -07:00
Tim Jaeryang Baek a0273aaea8 Merge pull request #13271 from schulti/patch-1
Update de-DE translation.json
2025-04-28 05:56:22 -07:00
Tim Jaeryang Baek 146a08c68f Merge branch 'dev' into patch-1 2025-04-28 05:49:50 -07:00
Timothy Jaeryang Baek 7d0a78a43a refac: aiohttp trust_env=True 2025-04-28 16:47:34 +04:00
Timothy Jaeryang Baek 9bfb4ae838 fix: ollama proxy "format" 2025-04-28 16:45:23 +04:00
Panda ec496de593 i18n: zh-cn 2025-04-28 11:05:06 +02:00
spammenotinoz 12fd7c8cb9 Update knowledge.py
Improve Error Handling ReIndexing Knowledge Database
2025-04-28 16:39:20 +10:00
Stefan Schultheis, OE1SCS d9186e138b Update de-DE translation.json
added a few translations and corrected some typos
2025-04-28 08:21:21 +02:00
Jarrod Lowe 141810039f Add tags to S3 uploaded files 2025-04-28 16:56:56 +12:00
KaeOhhhh 2112067054 Support pagination in /admin/users API
Update Users.svelte

Update index.ts

Update users.py

Update users.py

Update UserList.svelte
2025-04-28 11:29:42 +07:00
root 8a9de0a62f Fix bug that never triggers user notification webhooks 2025-04-27 21:31:34 +02:00
noexcs 4b9b24ae78 fix: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. 2025-04-27 21:29:13 +08:00
jmtatsch 056a042ef2 Update files.py
fix formatting
2025-04-27 11:18:27 +02:00
jmtatsch c51a91583e Dont attempt to infer charset for video files 2025-04-27 10:59:35 +02:00
nathaniel 1efa708f83 Added WHISPER_LANGUAGE env variable. If set to a country's ISO2, constrains Whisper's stt to that language. Detects language as normal if unset 2025-04-27 05:58:06 +01:00
Stephen Smith ea16426a8d Remove unused kwargs in yacy, update comments. 2025-04-27 00:41:46 -04:00
Stephen Smith f9b9217e98 Set Yacy search to text 2025-04-26 23:13:31 -04:00
Stephen Smith e6d43d70f3 Don't request nav and pass count to Yacy 2025-04-26 23:08:16 -04:00
Stephen Smith 240d91d38d Add yacy config for user/pass, automatically add yacy json api path 2025-04-26 22:28:30 -04:00
Stephen Smith 0f73b96616 first pass at yacy support copied from searxng 2025-04-26 14:07:13 -04:00
Timothy Jaeryang Baek 1349bc47b1 fix: chat message input ui styling 2025-04-25 14:21:58 +09:00
tth37 92dbeb1939 feat: Add Firecrawl search engine 2025-04-24 14:57:28 +08:00
Mister-Hope 5f69424215 Update Dockerfile 2025-04-24 13:59:57 +08:00
Chayud 86b9f252c6 fix(i18n): improve Thai translations 2025-04-24 10:35:02 +07:00
Timothy Jaeryang Baek 0b5514f376 refac 2025-04-24 03:16:46 +09:00
Timothy Jaeryang Baek 28ec3069de enh: exp token check 2025-04-24 03:12:22 +09:00
tth37 8f7195ceda fix: FireCrawlLoader default mode to scrape 2025-04-24 01:17:35 +08:00
Tim Jaeryang Baek 91e758f3ec Merge pull request #13165 from feddersen-group/perf/parallel_knowledge_search
perf: all knowledge searches in parallel in non-hybrid mode
2025-04-23 10:01:06 -07:00
Tim Jaeryang Baek d0a1a0f16b Merge pull request #13119 from jarrod-lowe/suggestions
feat: Set default prompt suggestions from environment variable DEFAULT_PROMPT_SUGGESTIONS
2025-04-23 09:55:57 -07:00
Timothy Jaeryang BaekandDrZoidberg09 732d7aee70 enh: sentence transformers env vars
Co-Authored-By: DrZoidberg09 <96449693+drzoidberg09@users.noreply.github.com>
2025-04-24 01:55:18 +09:00
Timothy Jaeryang Baek 3ec6652f99 chore: dep bump 2025-04-24 01:48:07 +09:00
Tim Jaeryang Baek cad9b292bf Merge pull request #13175 from PeterDaveHello/Improve-zh-TW-locale
i18n: improve zh-TW Traditional Chinese locale
2025-04-23 09:41:23 -07:00
Timothy Jaeryang Baek 09874ab83d fix: FireCrawlLoader 2025-04-24 01:40:34 +09:00
Peter Dave Hello c798adb04c i18n: improve zh-TW Traditional Chinese locale 2025-04-24 00:37:15 +08:00
Timothy Jaeryang Baek 7baca2b483 fix: ollama url model download issue 2025-04-24 01:26:19 +09:00
Tim Jaeryang Baek 2b10b378b6 Merge pull request #13170 from TiancongLx/dev
i18n: update zh-TW
2025-04-23 08:22:27 -07:00
Tim Jaeryang Baek 2652b91f5a Merge pull request #13166 from oleguldberg/update-danish-translation
i18n - Add to Danish Translation
2025-04-23 08:22:17 -07:00
Tiancong Li afdba443f4 i18n: update zh-TW 2025-04-23 21:28:46 +08:00
Ole Guldberg ba4f399ace Merge branch 'update-danish-translation' of https://github.com/oleguldberg/open-webui into update-danish-translation 2025-04-23 14:51:01 +02:00
Ole Guldberg 176ff56e85 Merge branch 'update-danish-translation' of https://github.com/oleguldberg/open-webui into update-danish-translation 2025-04-23 12:30:19 +02:00
Ole Guldberg f2765bee72 More Danish Translation
i18n - add to Danish translation. Made agains -dev.
2025-04-23 12:25:32 +02:00
Ole Guldberg 497a7b4ded More Danish Translation
i18n - add to Danish translation. Made agains -dev.
2025-04-23 12:06:17 +02:00
Alexander Grimm d182155fac ~ call knowledge searches in parallel in non-hybrid mode 2025-04-23 09:20:51 +00:00
Timothy Jaeryang Baek 5030041683 chore: format 2025-04-23 16:05:15 +09:00
Tim Jaeryang Baek faa3cac0e4 Merge pull request #13107 from tth37/fix_tavily_max_results
fix: `max_results` in Tavily search handler
2025-04-22 23:47:36 -07:00
Tim Jaeryang Baek d3e516934c Merge pull request #13098 from athoik/dev
feat: Add abstract base class for vector database integration
2025-04-22 23:24:08 -07:00
Timothy Jaeryang Baek 2f7b5acdf8 enh: chat share & export permissions 2025-04-23 14:43:33 +09:00
Tim Jaeryang Baek 7937ed3ee1 Merge pull request #13144 from PeterDaveHello/FixI18nInMultiResponseMessages
i18n: Add missing i18n locale for "Merged Response" string
2025-04-22 20:38:37 -07:00
Tim Jaeryang Baek f0a129482e Merge pull request #13145 from PeterDaveHello/Update-zh-TW-locale
i18n: improve zh-TW Traditional Chinese locale
2025-04-22 20:37:47 -07:00
Ole Guldberg 0e0ee3ca9c More Danish Translation 2025-04-22 21:32:21 +02:00
Ole Guldberg 26a2187e6e More Danish translation 2025-04-22 21:30:05 +02:00
Ole Guldberg 2b4e946f70 More danish 2025-04-22 21:10:51 +02:00
Ole Guldberg 17a9d11435 More dansh 2025-04-22 21:00:36 +02:00
Ole Guldberg a21ac3cc25 More danish 2025-04-22 20:54:33 +02:00
Peter Dave Hello 4eb6985c1b i18n: improve zh-TW Traditional Chinese locale 2025-04-23 02:03:07 +08:00
Peter Dave Hello 5f81755b86 i18n: Add missing i18n locale for "Merged Response" string 2025-04-23 02:01:18 +08:00
Ole Guldberg 4340431753 More danish translation 2025-04-22 18:10:43 +02:00
Timothy Jaeryang Baek f2314596ba enh: failed login attempts audit log 2025-04-23 00:06:44 +09:00
Timothy Jaeryang Baek 43efff0fe6 refac 2025-04-22 23:22:50 +09:00
Ole Guldberg 4e8cd688bf beginning of update 2025-04-22 16:05:13 +02:00
Jarrod Lowe af5efe1580 Set default prompt suggestions from environment variable 2025-04-22 11:39:01 +12:00
tth37 5b9c1de3d1 fix: Translatable 'Searching the web' 2025-04-22 01:24:30 +08:00
tth37 4b451b984b perf: Multi-thread web searching 2025-04-21 22:18:05 +08:00
tth37 bc315bd530 fix: max_results in Tavily search api 2025-04-21 20:59:47 +08:00
Athanasios Oikonomou 1e291aff25 feat: Add abstract base class for vector database integration
- Created `VectorDBBase` as an abstract base class to standardize vector database operations.
- Added required methods for common vector database operations: `has_collection`, `delete_collection`, `insert`, `upsert`, `search`, `query`, `get`, `delete`, `reset`.
- The base class can now be extended by any vector database implementation (e.g., Qdrant, Pinecone) to ensure a consistent API across different database systems.
2025-04-21 08:27:27 +03:00
Tim Jaeryang Baek 913f8a15f9 Merge pull request #13073 from athoik/dev
feat(vector-db): add support for Pinecone client
2025-04-20 14:42:36 -07:00
Tim Jaeryang Baek 7f85436a94 Merge pull request #13089 from izumi0004/fix/tool_calls
fix: handling tool calls in streamed responses
2025-04-20 14:08:09 -07:00
izumi0004 99ce85f20f fix: handling tool calls in streamed responses 2025-04-21 00:29:52 +08:00
ayan4m1 039dec6820 fix: pass header to Tika if PDF_EXTRACT_IMAGES is true 2025-04-20 17:36:40 +02:00
Athanasios Oikonomou e000c56ef7 feat(vector-db): add support for Pinecone client
Adds Pinecone as a supported vector database option.

- Implements `PineconeClient` with support for common operations: `add`, `query`, `delete`, `reset`.
- Emulates namespace support using metadata filtering (`collection_name` prefix).
- Dynamically configures Pinecone via the following env vars:
  - `PINECONE_API_KEY`
  - `PINECONE_ENVIRONMENT`
  - `PINECONE_INDEX_NAME`
  - `PINECONE_DIMENSION`
  - `PINECONE_METRIC`
  - `PINECONE_CLOUD`
- Integrates cleanly with the vector DB abstraction layer.
- Includes markdown documentation under `docs/getting-started/env-configuration.md`.

BREAKING CHANGE: None
2025-04-20 11:08:51 +03:00
Tim Jaeryang Baek af02708b4c Merge pull request #13072 from grandtele/fix/openai_o_series_handler
* fix: Refactor openai handler to support all o-series models universally
2025-04-20 00:42:39 -07:00
grand 5a8e417590 * refactor openai handler to support all o-series models universally 2025-04-20 09:14:27 +02:00
Timothy Jaeryang Baek 1a6e4c2948 refac 2025-04-19 23:40:31 -07:00
Timothy Jaeryang Baek 6fd082d55f enh: html token (allow yt embed) 2025-04-19 23:38:08 -07:00
Timothy Jaeryang Baek f4de3b4c45 enh: notificationSoundAlways option 2025-04-19 23:13:19 -07:00
Tim Jaeryang Baek 8fcad1df4e Merge pull request #13062 from open-webui/cla
chore: cla
2025-04-19 11:33:02 -07:00
Tim Jaeryang Baek 08a35417f2 Merge branch 'dev' into cla 2025-04-19 11:32:49 -07:00
Timothy Jaeryang Baek f7906790e1 refac 2025-04-19 11:32:16 -07:00
Timothy Jaeryang Baek 852d9dcbe9 chore: cla 2025-04-19 11:30:59 -07:00
Timothy Jaeryang Baek 48637893b1 fix: scroll on branch change w/ multi response chat 2025-04-19 04:09:46 -07:00
Timothy Jaeryang Baek 463d7fb628 refac: openapi to tool spec 2025-04-19 03:46:06 -07:00
Timothy Jaeryang Baek 332f8579d7 doc: readme 2025-04-19 02:55:02 -07:00
Timothy Jaeryang Baek ad8c8da438 refac 2025-04-19 02:47:48 -07:00
Timothy Jaeryang Baek f0447b24ab refac: wording 2025-04-19 01:51:40 -07:00
Timothy Jaeryang Baek 63a887151f chore: pr template 2025-04-19 00:47:52 -07:00
Timothy Jaeryang Baek 0aea894e2d Create CONTRIBUTOR_LICENSE_AGREEMENT.md 2025-04-19 00:41:08 -07:00
Timothy Jaeryang Baek 8507c47459 refac: WEBUI_AUTH_SIGNOUT_REDIRECT_URL 2025-04-18 23:58:37 -07:00
Tim Jaeryang Baek 221303eec5 Merge pull request #12592 from jarrod-lowe/main
feat: Redirect on sign out
2025-04-18 23:56:38 -07:00
Tim Jaeryang Baek 87844a8042 Merge pull request #12822 from tth37/feat_external_search_loader
feat: Support for Self-Hosted/External Web Search/Loader Engines
2025-04-18 23:51:27 -07:00
Timothy Jaeryang Baek 1c18282d19 fix 2025-04-18 18:21:49 -07:00
Tim Jaeryang Baek 6101067ea4 Merge pull request #12974 from holmlund/fix/prompts-international
fix: improve international character handling in prompt commands
2025-04-18 18:19:12 -07:00
Tim Jaeryang Baek d2f3c82fd6 Merge pull request #13031 from gaby/anyio-workers
feat: Add support for configuring FastAPI/AnyIO Thread Pool
2025-04-18 17:53:35 -07:00
Tim Jaeryang Baek 27936014b0 Merge pull request #13039 from taylorwilsdon/jit_oauth_groups
feat: Just-in-Time Group Creation for OAuth Groups
2025-04-18 17:53:04 -07:00
Timothy Jaeryang Baek 8b9527d887 refac 2025-04-18 17:14:09 -07:00
Timothy Jaeryang Baek a5476ef7d8 refac 2025-04-18 17:10:44 -07:00
Juan Calderon-Perez 62f87c2e38 Use default AnyIO pool size 2025-04-18 19:21:54 -04:00
Timothy Jaeryang Baek 60d84a3aae chore: license "branding" clause 2025-04-18 14:49:20 -07:00
Tim Jaeryang Baek 3e7bce0921 Merge pull request #13036 from erandow/translate-persian-texts
feat: translate all texts to persian
2025-04-18 12:32:17 -07:00
Taylor Wilsdon 1dbf4d0461 Add ENABLE_OAUTH_GROUP_CREATION flag for JIT group creation with OAuth group updates enabled 2025-04-18 10:17:08 -07:00
Taylor Wilsdon a67e5f725f Merge branch 'dev' of github.com:taylorwilsdon/open-webui into dev 2025-04-18 10:04:42 -07:00
Erfan Asadi 527c5e73dc fix: revert اولاما to ollama after feedback 2025-04-18 18:56:01 +03:30
Erfan Asadi 2ecfd3dbed Merge branch 'dev' of https://github.com/erandow/open-webui into translate-persian-texts 2025-04-18 18:55:14 +03:30
Erfan Asadi 5989b6ca12 Merge branch 'main' of https://github.com/erandow/open-webui into translate-persian-texts 2025-04-18 18:54:35 +03:30
Erfan Asadi e3af831db1 feat: translate the remaining texts in persian 2025-04-18 18:38:06 +03:30
Juan Calderon-Perez f77f6cd1e2 Update imports to match anyio docs 2025-04-18 09:30:34 -04:00
Juan Calderon-Perez e19554e9a8 Simplify import 2025-04-18 09:26:57 -04:00
Juan Calderon-Perez 19b3d88737 Add support for configuring FastAPI/AnyIO Thread Pool Size 2025-04-18 09:22:23 -04:00
Timothy Jaeryang Baek 0d09e46281 refac 2025-04-18 05:32:11 -07:00
Timothy Jaeryang Baek 961869a60c refac 2025-04-18 05:30:50 -07:00
Timothy Jaeryang Baek b8fb4e528d enh: toast close button 2025-04-18 04:33:18 -07:00
Tim Jaeryang Baek 794360addc Merge pull request #12997 from Elmolesto/feat/knowledge-lazy-load-content
feat: Lazy load file content on click
2025-04-18 04:04:29 -07:00
Tim Jaeryang Baek fa8132903e Merge pull request #12904 from hurxxxx/feat/onedrive-orgs
feat: support Organization and School accounts in OneDrive
2025-04-18 04:03:54 -07:00
Timothy Jaeryang Baek a86a932b46 refac: deprecate event dispatcher 2025-04-18 02:38:53 -07:00
Felipe Hernandez 14fa7d16f9 feat: Cache file content 2025-04-18 11:38:15 +02:00
Timothy Jaeryang Baek 64a98b2e0e refac: manifest orientation "any" 2025-04-18 02:24:44 -07:00
Timothy Jaeryang Baek 8f67ffabbd fix: model editor system not being preserved 2025-04-18 02:23:25 -07:00
Timothy Jaeryang Baek a22be555cb refac 2025-04-18 01:26:42 -07:00
Timothy Jaeryang Baek eb80719cf0 feat: AIOHTTP_CLIENT_SESSION_SSL 2025-04-17 22:11:42 -07:00
Tim Jaeryang Baek 840dd9c89a Merge pull request #12971 from tth37/fix_source_indexing
fix: Align backend <source> tag indexing with frontend citation grouping
2025-04-17 22:08:07 -07:00
Tim Jaeryang Baek 30e84adb51 Merge pull request #12883 from Classic298/patch-1
fix: UVICORN_WORKERS __init__.py pass application as string
2025-04-17 22:07:21 -07:00
Tim Jaeryang Baek 414ebc87ee Merge pull request #12894 from Classic298/patch-2
security/fix: prevent email and password changes to the primary admin account
2025-04-17 22:06:54 -07:00
Tim Jaeryang Baek 165eb50c22 Merge pull request #12958 from Youggls/fix_search_web
fix: use run_in_threadpool for search_web to prevent blocking
2025-04-17 22:03:31 -07:00
Tim Jaeryang Baek 477ac7de86 Merge pull request #12968 from alpha-pet/feat-openapi-parameter-description
feat: support OpenAPI parameter description and enum values in tool spec
2025-04-17 22:02:50 -07:00
Timothy Jaeryang Baek 824238a620 enh: AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL 2025-04-17 22:02:16 -07:00
Felipe Hernandez 88f97372d9 fix: Show content on upload file 2025-04-18 02:01:47 +02:00
Felipe Hernandez 0577dc2990 feat: Lazy load file content on click 2025-04-18 01:40:30 +02:00
Tim Jaeryang Baek 3b20c57ea8 Merge pull request #12956 from lukasz-pekala/feat/improve-polish-translation
fix: update Polish translations for clarity and consistency
2025-04-17 12:38:14 -07:00
Tim Jaeryang Baek 43b9bf17dc Merge pull request #12966 from damianmr/dev
i18n: Update es-ES (Spanish) translation.json
2025-04-17 12:38:03 -07:00
Tim Jaeryang Baek 246ff83864 Merge pull request #12981 from knight-upstage/dev
i18n: Update ko-KR (Korean) translation.json
2025-04-17 12:37:41 -07:00
knight-upstage cdf26d8189 i18n: Update ko-KR (Korean) translation.json 2025-04-17 09:57:22 -07:00
tth37 79bde6fa47 fix: Align backend <source> tag indexing with frontend citation grouping 2025-04-17 22:27:22 +08:00
Thomas Rehn 3dcbf1acf5 feat: support OpenAPI parameter description and enum values in tool spec 2025-04-17 15:48:55 +02:00
Damian Mendez Romera b1629d8660 i18n: Update es-ES (Spanish) translation.json 2025-04-17 13:58:00 +01:00
David Holmlund 9f8b94e45f fix: improve international character handling in prompt commands 2025-04-17 14:56:57 +02:00
Youggls 9669cd3454 fix: use run_in_threadpool for search_web to prevent blocking
Used fastapi's run_in_threadpool function to execute the search_web function,
preventing the synchronous function from blocking the entire web search process.
2025-04-17 17:23:20 +08:00
Łukasz Pękala c4edcdb12a fix: update Polish translations for clarity and consistency 2025-04-17 10:56:23 +02:00
Timothy Jaeryang Baek a6ccc48d91 refac: textarea component 2025-04-17 00:35:39 -07:00
Tim Jaeryang Baek b6caa95fac Merge pull request #12947 from gaby/qdrant-grpc
feat: Add gRPC support to Qdrant
2025-04-16 23:08:50 -07:00
Juan Calderon-Perez 6188c0c5b7 Add suport for Qdrant GRPC 2025-04-17 01:13:49 -04:00
Jarrod Lowe dfe50b4e56 Merge branch 'open-webui:main' into main 2025-04-17 15:46:24 +12:00
Taylor Wilsdon 54c6e64eec Merge branch 'dev' of github.com:taylorwilsdon/open-webui into dev 2025-04-16 13:01:04 -07:00
Tim Jaeryang Baek 465e879a78 Merge pull request #12917 from rimvel/patch-1
Update translation.json
2025-04-16 08:05:44 -07:00
Tim Jaeryang Baek 93fd5185f9 Merge pull request #12921 from aleixdorca/dev
i18n: Update catalan translation.json
2025-04-16 08:05:14 -07:00
Tim Jaeryang Baek 4ebee592f2 Merge pull request #12925 from JaworIwanowRoosi/main
fix: typos in German translation
2025-04-16 08:05:05 -07:00
JaworIwanowRoosi 6076476a74 fixed: typos in German translation 2025-04-16 14:47:15 +02:00
Aleix Dorca 59918b0f54 Update catalan translation.json 2025-04-16 11:20:03 +02:00
Rimvydas bb1dea72d4 Update translation.json
Fixed typo from "Tęstti" to "Tęsti" (continue).
2025-04-16 09:59:20 +03:00
Tim Jaeryang Baek 264a87f467 Merge pull request #12901 from Kylapaallikko/dev
i18n: Update Finnish Translation
2025-04-15 19:03:52 -07:00
Tim Jaeryang Baek 07347f518a Merge pull request #12896 from gaby/fix-12893
fix: Optional content from files routes
2025-04-15 15:54:29 -07:00
hurxxxx 84f5a52923 chore: clean up unnecessary code 2025-04-16 02:38:20 +09:00
Kylapaallikko 8a50d50038 Update translation.json 2025-04-15 19:44:20 +03:00
hurxxxx 41ef596472 Merge remote-tracking branch 'upstream/main' into feat/onedrive-orgs 2025-04-16 01:41:24 +09:00
Juan Calderon-Perez b4d0d840d1 Fix formatting of qdrant.py 2025-04-15 08:56:51 -04:00
Juan Calderon-Perez b1ef53873f Check if content is present before removing 2025-04-15 08:53:05 -04:00
Classic298 4f14b17c34 Update users.py 2025-04-15 13:50:52 +02:00
Classic298 36b2052fb0 Update __init__.py 2025-04-15 09:55:35 +02:00
Timothy Jaeryang Baek 12c7ecf0f4 refac: styling 2025-04-14 22:34:38 -07:00
Tim Jaeryang Baek e5cbef0baa Merge pull request #12868 from athoik/dev
feat: add QDRANT_ON_DISK configuration option for Qdrant integration
2025-04-14 21:31:46 -07:00
Tim Jaeryang Baek 44e2785495 Merge pull request #12859 from aindriu80/main
i18n: Updated Irish translation
2025-04-14 21:30:21 -07:00
Tim Jaeryang Baek f96c610e21 Merge pull request #12847 from panda44312/patch-13
i18n: zh-cn fix
2025-04-14 21:30:17 -07:00
Taylor Wilsdon 0fc5699533 Merge branch 'dev' of github.com:taylorwilsdon/open-webui into dev 2025-04-14 19:34:12 -04:00
Athanasios Oikonomou 575c12f80c feat: add QDRANT_ON_DISK configuration option for Qdrant integration
This commit will allow configuring the on_disk client parameter, to reduce the memory usage.
https://qdrant.tech/documentation/concepts/storage/?q=mmap#configuring-memmap-storage
Default is false, keeping vectors in memory.
2025-04-15 01:40:57 +03:00
Tim Jaeryang Baek 7e0e6177e9 Merge pull request #12865 from TiancongLx/dev
i18n: update zh-TW
2025-04-14 13:53:24 -07:00
Tiancong Li 0d388b4e54 i18n: update zh-TW 2025-04-15 03:33:30 +08:00
Aindriú Mac Giolla Eoin a3d950872c Updated Irish translations - April 2025-04-14 17:14:02 +01:00
hurxxxx 55d077b52a refactor 2025-04-15 00:35:18 +09:00
hurxxxx 2d7062fc99 fix: onedrive orgs selection 2025-04-15 00:27:59 +09:00
hurxxxx 5fd794612e add onedrive sub menu 2025-04-14 22:57:32 +09:00
Panda 21206bf4b9 i18n: zh-cn fix 2025-04-14 14:26:10 +02:00
tth37 dcb3f18e1e refac: styling 2025-04-14 18:56:47 +08:00
tth37 85f8e91288 feat: Allow admin editing external search/loader settings 2025-04-14 18:19:26 +08:00
tth37 008fec80c1 fix: Update external search/loader method to POST 2025-04-14 18:17:27 +08:00
Tim Jaeryang Baek 07d8460126 Merge pull request #12809 from open-webui/dev
0.6.5
2025-04-14 02:13:21 -07:00
Timothy Jaeryang Baek e4c7417522 refac 2025-04-14 02:12:58 -07:00
Timothy Jaeryang Baek 91523bbb07 chore: bump 2025-04-14 02:08:11 -07:00
Timothy Jaeryang Baek 49bf3207e8 chore: format 2025-04-14 02:00:52 -07:00
Timothy Jaeryang Baek ec730b08c5 chore: format 2025-04-14 02:00:46 -07:00
Timothy Jaeryang Baek 815d18b57e revert 2025-04-14 01:57:23 -07:00
Timothy Jaeryang Baek 8d33b5e063 refac 2025-04-14 01:56:52 -07:00
Timothy Jaeryang BaekandSebastian Whincop aa8db40376 enh: copy formatted option
Co-Authored-By: Sebastian Whincop <123417897+macjedi42@users.noreply.github.com>
2025-04-14 01:56:15 -07:00
Timothy Jaeryang Baek 95fca7b700 refac 2025-04-14 01:41:58 -07:00
Timothy Jaeryang Baek 87aa01a5c2 refac: styling 2025-04-14 01:40:29 -07:00
Timothy Jaeryang Baek d932fc555d enh: tts/stt user permissions 2025-04-14 01:40:22 -07:00
Timothy Jaeryang Baek ec3b8fab5b refac 2025-04-14 01:08:16 -07:00
Timothy Jaeryang Baek 403295600f refac: audio tts voice list 2025-04-14 00:20:51 -07:00
Tim Jaeryang Baek ceffac87b6 Merge pull request #12835 from weisser-dev/dev
Fix: Robust Handling of LDAP Email Attribute Types
2025-04-14 00:15:51 -07:00
Timothy Jaeryang Baek e7332fd6fe refac 2025-04-13 23:39:38 -07:00
Tim Jaeryang Baek 60596c362a Merge pull request #12815 from TomBayne/enh/vad_filter
feat/Enable vad_filter to improve quality of transcription in faster-whisper
2025-04-13 23:27:03 -07:00
Erik c749083935 Update auths.py 2025-04-14 08:12:37 +02:00
Timothy Jaeryang Baek 70718dda90 refac 2025-04-13 22:31:43 -07:00
Timothy Jaeryang Baek 2fcf5d8578 refac 2025-04-13 17:28:09 -07:00
Tim Jaeryang Baek bc2b5d3cc8 Merge pull request #12816 from SadmL/dev
[i18n] Russian locale update
2025-04-13 14:11:16 -07:00
Tim Jaeryang Baek 370f934158 Merge pull request #12819 from athoik/dev
fix: Properly handle ldap3.abstract.attribute.Attribute value
2025-04-13 14:09:56 -07:00
tth37 22f0365cef format 2025-04-14 02:05:58 +08:00
tth37 839ba22c90 feat: Backend for Self-Hosted/External Web Search/Loader Engines 2025-04-14 01:49:05 +08:00
Athanasios Oikonomou c70fedb626 Properly handle ldap3.abstract.attribute.Attribute value
This commit fixes an issue created on commit 2e7a01f30a.

Ldap object is type <class 'ldap3.abstract.attribute.Attribute'>.
So we need to return the value and verify if it's null, string or list.

Fixes #12813
2025-04-13 18:00:42 +03:00
SadmL 08bcfdb8cc [i18n] Russian locale update 2025-04-13 15:37:18 +03:00
Tom 24367d459b Enable vad_filter to improve quality of transcription in faster-whisper model. 2025-04-13 13:03:57 +01:00
Tim Jaeryang Baek 8158609c93 Merge pull request #12810 from tth37/i18n_small_fix
i18n: update zh-CN
2025-04-12 23:15:54 -07:00
tth37 70d9405e64 i18n: update zh-CN 2025-04-13 14:14:34 +08:00
Timothy Jaeryang Baek aaefba2777 chore: bump 2025-04-12 23:06:40 -07:00
Tim Jaeryang Baek aca37f592d Merge pull request #12807 from open-webui/dev
0.6.4
2025-04-12 23:01:19 -07:00
Timothy Jaeryang Baek 888b468576 fix 2025-04-12 23:00:34 -07:00
Timothy Jaeryang Baek 9348c05f1a doc: changelog 2025-04-12 22:57:13 -07:00
Timothy Jaeryang Baek 4dafbbccfc fix: rag template display issue 2025-04-12 22:55:24 -07:00
Tim Jaeryang Baek 8b0e565e2c Merge pull request #12715 from open-webui/dev
0.6.3
2025-04-12 22:44:24 -07:00
Timothy Jaeryang Baek 2766d7df6a doc: changelog 2025-04-12 22:44:00 -07:00
Tim Jaeryang Baek 8e810e758d Merge pull request #12806 from tth37/fix_web_rag_settings
fix: Resolve small bugs on updated web/rag settings
2025-04-12 22:26:04 -07:00
Timothy Jaeryang Baek e7821288f5 doc: changelog 2025-04-12 22:25:02 -07:00
tth37 db9d4ead59 format 2025-04-13 13:10:39 +08:00
Timothy Jaeryang Baek 1a6eaf6445 chore: dependency bump 2025-04-12 22:07:23 -07:00
tth37 8d53f1e770 fix: small bugs on updated web/rag settings 2025-04-13 12:55:50 +08:00
Timothy Jaeryang Baek c1444cbbba refac 2025-04-12 21:47:46 -07:00
Timothy Jaeryang Baek 40f9747ae4 refac 2025-04-12 21:44:47 -07:00
Timothy Jaeryang Baek ac8e81834c refac 2025-04-12 21:44:15 -07:00
Timothy Jaeryang Baek 8d62cc1935 refac 2025-04-12 21:09:26 -07:00
Timothy Jaeryang Baek f3fe82da80 fix: ongoing chat stop issue 2025-04-12 20:51:02 -07:00
Timothy Jaeryang Baek fa61065c1e refac 2025-04-12 20:15:00 -07:00
Timothy Jaeryang Baek 5844779384 refac: styling 2025-04-12 20:14:32 -07:00
Timothy Jaeryang Baek 451465151e refac 2025-04-12 19:31:02 -07:00
Tim Jaeryang Baek 85ef912f6a Merge pull request #12794 from TiancongLx/dev
i18n: update zh-TW
2025-04-12 19:27:26 -07:00
Tiancong Li 2b8cd4dff4 i18n: update zh-TW 2025-04-13 10:00:58 +08:00
Timothy Jaeryang Baek f6c8184a74 fix: model hide issue 2025-04-12 18:49:49 -07:00
Timothy Jaeryang Baek bde89fd29e refac: audio 2025-04-12 18:40:09 -07:00
Timothy Jaeryang Baek daabc188e8 fix: model list hide issue 2025-04-12 18:34:10 -07:00
Timothy Jaeryang Baek d5ee39de21 fix: katex display overflow issue 2025-04-12 18:27:23 -07:00
Timothy Jaeryang Baek cdb4904999 refac 2025-04-12 18:11:22 -07:00
Tim Jaeryang Baek 577406e00b Merge pull request #12788 from TiancongLx/dev
i18n: update zh-TW
2025-04-12 17:58:01 -07:00
Timothy Jaeryang Baek 175919c787 enh: widescreen mode in shared chats 2025-04-12 17:53:23 -07:00
Tiancong Li 03e2e5279f i18n: update zh-TW 2025-04-13 08:50:22 +08:00
Timothy Jaeryang Baek 4ca6247496 chore: format 2025-04-12 17:45:33 -07:00
Timothy Jaeryang Baek 40a3e7786b refac: voice recording 2025-04-12 17:41:53 -07:00
Timothy Jaeryang Baek 79dff685ea feat: multiple models chat user permissions 2025-04-12 17:37:30 -07:00
Timothy Jaeryang Baek 881d81d87f refac: default tool calling behaviour 2025-04-12 17:26:35 -07:00
Timothy Jaeryang Baek db8780fd9c refac: default tool boilerplate 2025-04-12 17:16:27 -07:00
Timothy Jaeryang Baek 0a69db291d enh: iframe sandbox policy setting 2025-04-12 17:09:39 -07:00
Timothy Jaeryang Baek af0d99b2a3 refac: artifacts styling 2025-04-12 17:01:45 -07:00
Tim Jaeryang Baek 540c27c589 Merge pull request #12784 from rgaricano/dev
UPD: Spanish Translation (es-ES)  Rev.0.6.3
2025-04-12 16:51:47 -07:00
_00_ 4106681889 UPD: Spanish Translation (es-ES) Rev.0.6.3
Revision of Spanish Translation (es-ES)
Adapted to Open-WebUI v.0.6.3

Has been done

Revision & Complete.
2025-04-13 01:42:28 +02:00
Timothy Jaeryang Baek 91a455a284 chore: format 2025-04-12 16:35:11 -07:00
Timothy Jaeryang Baek 77b25ae36a refac 2025-04-12 16:34:20 -07:00
Timothy Jaeryang Baek 48a23ce3fe refac: web/rag config 2025-04-12 16:33:36 -07:00
Timothy Jaeryang Baek c3497da5dd enh: only copy text message content 2025-04-12 15:11:03 -07:00
Timothy Jaeryang Baek bdef1001ac refac 2025-04-12 15:10:43 -07:00
Tim Jaeryang Baek 6862d8fba8 Merge pull request #12769 from tth37/feat_frontend_web_loader
feat: Add Frontend Configuration for `RAG_WEB_LOADER_ENGINE`
2025-04-12 14:56:47 -07:00
Tim Jaeryang Baek 02ba7aeb95 Merge pull request #12366 from Ithanil/redis_sentinel_2
chore: adapt websocket redis sentinel code to new native support in python-socketio
2025-04-12 11:41:30 -07:00
Jan Kessler c6755f9151 bump python-socketio to 5.13.0 (to support Redis Sentinel natively) 2025-04-12 19:22:10 +02:00
tth37 5eac5960ef feat: Add frontend configuration for web loader 2025-04-12 17:13:30 +08:00
Timothy Jaeryang Baek 30d02c638c refac: banners 2025-04-11 15:34:21 -07:00
Timothy Jaeryang Baek c5636ff68c refac 2025-04-11 15:27:25 -07:00
Timothy Jaeryang Baek c846a550fa refac 2025-04-11 15:19:47 -07:00
Timothy Jaeryang Baek 59dd798156 refac/security: set ac to private by default 2025-04-11 14:46:02 -07:00
Jarrod Lowe a8bbaa61bd Merge branch 'dev' into main 2025-04-11 22:14:41 +12:00
Timothy Jaeryang Baek 5fea0a2221 refac: styling 2025-04-10 21:52:03 -07:00
Timothy Jaeryang Baek 6d63337ee9 refac 2025-04-10 21:22:14 -07:00
Timothy Jaeryang Baek b97ea72616 refac: tool call result display 2025-04-10 20:06:00 -07:00
Timothy Jaeryang Baekanddulicon 1921420319 refac
Co-Authored-By: dulicon <57261058+dulicon@users.noreply.github.com>
2025-04-10 20:01:07 -07:00
Timothy Jaeryang Baek a47a958edd refac: rename functions 2025-04-10 19:43:26 -07:00
Timothy Jaeryang Baek 53df5d3946 refac: rename hard to understand cryptic function names 2025-04-10 19:41:17 -07:00
Timothy Jaeryang Baek 0f27968ceb fix: tool server session auth 2025-04-10 17:47:07 -07:00
Tim Jaeryang Baek 36ac81b229 Merge pull request #12727 from decent-engineer-decent-datascientist/main
feat: add Azure AI Speech STT provider
2025-04-10 16:50:40 -07:00
priten 9a55257c5b feat: add Azure AI Speech STT provider
- Add Azure STT configuration variables for API key, region and locales
- Implement Azure STT transcription endpoint with 200MB file size limit
- Update Audio settings UI to include Azure STT configuration fields
- Handle Azure API responses and error cases consistently
2025-04-10 15:38:59 -05:00
Timothy Jaeryang Baek 05aa9c6d9c refac 2025-04-10 12:27:11 -07:00
Tim Jaeryang Baek f0efee5de4 Merge pull request #12603 from alpha-pet/fix-convert-ogg-container-openai-transcription
fix: Convert ogg to wav for OpenAI transcription endpoint
2025-04-10 12:25:46 -07:00
Timothy Jaeryang Baek bf0716e85e refac: styling 2025-04-10 12:05:01 -07:00
Timothy Jaeryang Baek f9bd49bf56 refac 2025-04-10 11:18:53 -07:00
Tim Jaeryang Baek 4cbf16c456 Merge pull request #12717 from Kheiden/progressive-webapp-enhancements
feat: Add PWA external manifest URL env var
2025-04-10 10:55:54 -07:00
Timothy Jaeryang BaekandRobert Piosik 1eba6a812e enh: smaller code text size
Co-Authored-By: Robert Piosik <robertpiosik@gmail.com>
2025-04-10 10:50:46 -07:00
Timothy Jaeryang Baek 3f71929a69 refac: styling 2025-04-10 10:46:44 -07:00
Timothy Jaeryang Baek d8780e4de2 feat: detect artifacts toggle 2025-04-10 10:36:57 -07:00
Kurt Heiden c12f8d28b9 Add PWA external manifest URL env var 2025-04-10 11:35:43 -06:00
Timothy Jaeryang Baek d4297a3e3e refac: styling 2025-04-10 10:31:38 -07:00
Timothy Jaeryang Baek fb0ee1329d enh: tool server data timeout 2025-04-10 10:23:14 -07:00
Timothy Jaeryang Baek 23dcae7054 refac: selector 2025-04-10 10:18:56 -07:00
Tim Jaeryang Baek 7aab8b9307 Merge pull request #12567 from aleprj/fix/ms-sso
fix: Make Microsoft SSO work even when custom signing keys. #12475
2025-04-10 10:11:49 -07:00
Timothy Jaeryang BaekandAnthony Durussel f10566f3de feat: allow events from pipelines
Co-Authored-By: Anthony Durussel <87324020+anthonydurussel@users.noreply.github.com>
2025-04-10 09:20:18 -07:00
Timothy Jaeryang Baek 0611eb8ac7 refac: layout load 2025-04-10 09:15:08 -07:00
Tim Jaeryang Baek a3e477e100 Merge pull request #12602 from alpha-pet/fix-tool-server-indexing-mismatch
fix: mismatch between TOOL_SERVERS / TOOL_SERVER_CONNECTIONS indexing
2025-04-10 09:06:30 -07:00
Tim Jaeryang Baek b40b50fb2d Merge pull request #12563 from IONOS-Productivity/oidc-add-support-for-pkce
OIDC add support for PKCE
2025-04-10 09:03:31 -07:00
Tim Jaeryang Baek e065073bea Merge pull request #12689 from asncx/fix-folder-chat-rename
fix: Chat rename not updating inside folders
2025-04-10 08:51:22 -07:00
Tim Jaeryang Baek 33b35b797c Merge pull request #12594 from gaby/search-files
feat: Add support for searching files by name
2025-04-10 08:50:13 -07:00
Tim Jaeryang Baek ef14d0b46d Merge pull request #12562 from almajo/fix/agrimm/correct_knowledge_base_citations
fix: Correct Citations for knowledge base models
2025-04-10 08:48:47 -07:00
Tim Jaeryang Baek 62ef0bad6f Merge pull request #12680 from lucyknada/patch-1
fix #12678
2025-04-10 08:46:41 -07:00
Timothy Jaeryang Baek 63e5200e2f refac 2025-04-10 08:46:12 -07:00
Tim Jaeryang Baek 1865e29bfc Merge pull request #12683 from Youggls/dev
feat: Add sougou web search engine.
2025-04-10 08:45:15 -07:00
Tim Jaeryang Baek f7dc6474ee Merge pull request #12694 from SadmL/dev
[i18n] Russian locale misspelling fix
2025-04-10 08:43:51 -07:00
Timothy Jaeryang Baek 536bc36e36 chore: bump duckduckgo 2025-04-10 08:42:03 -07:00
Taylor Wilsdon 708fcdc6b7 Merge branch 'dev' of github.com:taylorwilsdon/open-webui into dev 2025-04-10 06:32:17 -04:00
SadmL de926a060d [i18n] Russian locale misspelling fix 2025-04-10 13:17:52 +03:00
Thomas Rehn 4731e0d0e3 fix: convert webm to wav for OpenAI transcription endpoint 2025-04-10 09:00:51 +02:00
Youggls 3e2a6df1fb feat: Add sougou web search API for backend, add config panel in for frontend. 2025-04-10 14:51:44 +08:00
lucy bc295546cd fix #12678 2025-04-10 07:23:34 +02:00
Tim Jaeryang Baek 6c9a4d6ce6 Merge pull request #12606 from alpha-pet/feat-openapi-yaml-support
Feat: openapi yaml support
2025-04-09 18:37:09 -07:00
Tim Jaeryang Baek e27c5989bc Merge pull request #12657 from noamtamim/patch-1
docs: Set FastAPI app title to "Open WebUI"
2025-04-09 18:32:26 -07:00
Tim Jaeryang Baek 5f116d69c2 Merge pull request #12664 from Beni34/main
Updated Hungarian language to full. translation.json
2025-04-09 16:43:08 -07:00
Tim Jaeryang Baek a27dcc84a3 Merge pull request #12654 from valckmir/main
feat: disable persistent config
2025-04-09 16:16:14 -07:00
Beni34 7cee0073cf Update translation.json 2025-04-09 21:40:23 +02:00
Miroslav Valcicak a5faaf388e refactor: rename persistent config variable 2025-04-09 21:22:25 +02:00
asncx 87af2692e5 fix: folder chat rename 2025-04-09 20:56:49 +02:00
Noam Tamim 15fd822916 Set FastAPI title to Open WebUI
This affects the generated OpenAPI (`/docs` and `/openapi.json`).
2025-04-09 19:45:17 +03:00
Miroslav Valcicak 68aea6bf10 feat: disable persistent config 2025-04-09 16:18:58 +02:00
Tim Jaeryang Baek 38d5b03685 Merge pull request #12647 from behrmann/multimail
fix: choose the first mail if multiple are returned from LDAP
2025-04-09 03:47:49 -07:00
Jörg Behrmann 2e7a01f30a fix: choose the first mail if multiple are returned from LDAP 2025-04-09 10:53:02 +02:00
Tim Jaeryang Baek a363c0619a Merge pull request #12638 from panda44312/patch-12
i18n: zh-cn
2025-04-09 01:45:41 -07:00
Tim Jaeryang Baek f49d3d09f5 Merge pull request #12637 from TiancongLx/dev
i18n: update zh-TW
2025-04-09 01:45:31 -07:00
Thomas Rehn 17ea20d3ad feat: OpenAPI YAML support for frontend toolserver 2025-04-09 09:46:44 +02:00
Panda 92611b588c i18n: zh-cn 2025-04-09 09:44:10 +02:00
Tiancong Li de1e9f3c0f i18n: update zh-TW 2025-04-09 15:25:37 +08:00
Tim Jaeryang Baek d8c0a1227a Merge pull request #12552 from tth37/dev
i18n: update zh-CN
2025-04-08 22:17:57 -07:00
Tim Jaeryang Baek 84ea9ea011 Merge pull request #12555 from SadmL/dev
[i18n] Russian locale update
2025-04-08 22:17:50 -07:00
Tim Jaeryang Baek b130b55f5b Merge pull request #12571 from hurxxxx/feat/reindex-knowledge-files
feat: reindex knowledge files
2025-04-08 22:10:35 -07:00
Tim Jaeryang Baek 2ff1657a7a Merge pull request #12573 from gem85247/dev
fix: manifest.json cross-origin issues
2025-04-08 22:07:43 -07:00
Tim Jaeryang Baek 2575dac4ed Merge pull request #12604 from maurerle/ddg_improve_stacktrace
**fix** improve stack trace of duckduckgo exception
2025-04-08 13:03:57 -07:00
Tim Jaeryang Baek 8c3146f6f8 Merge pull request #12615 from robert-norberg/additional-RAG-logging
chore: Add debug logging to RAG utils
2025-04-08 13:03:38 -07:00
Tim Jaeryang Baek 1f12023d85 Merge pull request #12617 from Classic298/dev
feat: UVICORN_WORKERS variable and docs
2025-04-08 12:52:47 -07:00
Timothy Jaeryang Baek 63eab42208 refac 2025-04-08 12:51:48 -07:00
Timothy Jaeryang Baek 60d11c1f6f enh: password max length verification 2025-04-08 12:50:25 -07:00
DrMelone f17befc853 Update __init__.py 2025-04-08 18:55:07 +02:00
DrMelone 65b5c6c0c7 Update start_windows.bat 2025-04-08 18:52:12 +02:00
DrMelone 2c1d0e3857 Update start.sh 2025-04-08 18:50:07 +02:00
DrMelone 4c9a791b06 Update env.py 2025-04-08 18:47:48 +02:00
DrMelone f822d89350 Update env.py 2025-04-08 18:38:00 +02:00
Robert Norberg 2337b36609 add debug logging to RAG utils 2025-04-08 12:08:32 -04:00
Thomas Rehn 81af20aa9b refac: use logging instead of print 2025-04-08 15:16:55 +02:00
Thomas Rehn 27e8c6fce4 feat: add support for OpenAPI spec in YAML format 2025-04-08 15:16:52 +02:00
Thomas Rehn d99a883867 fix: convert ogg to wav for OpenAI transcription endpoint 2025-04-08 15:04:04 +02:00
Thomas Rehn f5b2867e45 fix: mismatch between TOOL_SERVERS / TOOL_SERVER_CONNECTIONS indexing 2025-04-08 14:08:08 +02:00
Florian Maurer 760ea3f4af duckduckgo: backend api has been deprecated since december
also increase duckduckgo-search version

see https://github.com/deedy5/duckduckgo_search/commit/3ee8e08b1c8efc9b7356f406db299f1114dc4860
2025-04-08 14:02:06 +02:00
Florian Maurer 337c7caafa improve stack trace of duckduckgo exception
* fix search_results out of scope
* ddgs.text does already always return a list
2025-04-08 13:52:23 +02:00
Haodong Tian d50ca0aa43 Update zh-CN translation.json 2025-04-08 15:49:20 +08:00
Haodong Tian 399e7b1670 Update zh-CN translation.json 2025-04-08 15:47:24 +08:00
Haodong Tian e92d3073bb Update zh-CN translation.json
- Minor fix
2025-04-08 15:37:50 +08:00
Haodong Tian 00f58658f7 i18n: Apply i18n to Web Search proxy tooltips 2025-04-08 07:01:56 +00:00
Haodong Tian b15adc63fe Update zh-CN translation.json
- Standardize Chinese translations for "autocomplete"
2025-04-08 14:24:39 +08:00
Juan Calderon-Perez fed47f2e2b Add content param to /search route 2025-04-08 01:00:06 -04:00
Juan Calderon-Perez 1c60b8d543 Rewrite logic 2025-04-08 00:56:21 -04:00
Juan Calderon-Perez 8609ca3657 Fix formatting again 2025-04-08 00:49:55 -04:00
Juan Calderon-Perez e06ff17a70 Fix formatting 2025-04-08 00:48:54 -04:00
Juan Calderon-Perez 7c1b004687 simplify logic 2025-04-08 00:44:47 -04:00
Juan Calderon-Perez 353b104c77 add support for searching files 2025-04-08 00:42:37 -04:00
Jarrod Lowe b4465987f9 Environment variable to redirect on logout 2025-04-08 13:39:00 +12:00
Tim Jaeryang Baek 66322727e3 Merge pull request #12580 from lainedfles/opentelemetry-requirements-fix
fix: Upgrade OpenTelemetry instrumentation packages to 0.52b1
2025-04-07 14:19:17 -07:00
Self Denial 0e71b96597 fix: Upgrade OpenTelemetry instrumentation packages to 0.52b1
This commit updates all OpenTelemetry instrumentation dependencies (FastAPI, SQLAlchemy, Redis, Requests, Logging, HTTPX, aiohttp-client) from version 0.52b0 to 0.52b1 to satisfy opentelemetry-sdk==1.31.1 dependencies.
2025-04-07 14:49:47 -06:00
Gilles M f3f45209e9 fix: manifest.json cross-origin
When utilizing Cloudflare Zero Trust, fetching the manifest.json file may encounter issues because the request is redirected through the Zero Trust authentication page.
2025-04-07 19:01:18 +02:00
hurxxxx e7715f3760 i18n: add reindex knowledge files dialog 2025-04-08 01:37:50 +09:00
hurxxxx 7c828015d3 fix: ReindexKnowledgeFilesConfirmDialog 2025-04-08 00:53:11 +09:00
hurxxxx 4e545d432b feat: add new admin func - reindex knowledge files 2025-04-08 00:44:10 +09:00
Taylor Wilsdon 66bf6d88bc Merge branch 'dev' of github.com:taylorwilsdon/open-webui into dev 2025-04-07 10:17:57 -04:00
aleprj e8f02328f4 Merge branch 'open-webui:main' into fix/ms-sso 2025-04-07 11:16:21 -03:00
aleprj 818d24e672 fix: add appid to the URL to ensure we fetch the correct parameters in all scenarios 2025-04-07 11:15:47 -03:00
Alexander Grimm 1e7a36478b ~ update to latest change 2025-04-07 15:16:47 +02:00
Alexander Grimm d8a7e9c660 fix: correct document citation 2025-04-07 15:16:47 +02:00
Thomas Lehmann 5c658a4879 feat(config): add config OAUTH_CODE_CHALLENGE_METHOD
Add support to enable OIDC code challenge method (PKCE).
2025-04-07 14:03:52 +02:00
SadmL b81789190e [i18n] Russian locale update 2025-04-07 12:04:58 +03:00
Haodong Tian f172403049 Update zh-CN translation.json 2025-04-07 16:11:54 +08:00
Timothy Jaeryang Baek 9cb1104f09 refac 2025-04-07 00:58:32 -07:00
Timothy Jaeryang Baek d1a77a9110 Merge pull request #12549 from ulagbulag/fix/500-when-unknown-models
fix: internal server error when calling completions API with non-existent model names
2025-04-07 00:58:02 -07:00
Ho Kim 1efae95a36 fix: internal server error when calling completions API with non-existent model names
Signed-off-by: Ho Kim <ho.kim@ulagbulag.io>
2025-04-07 06:48:39 +00:00
Timothy Jaeryang Baek 54a74b2c0a chore: bump 2025-04-06 23:46:59 -07:00
Timothy Jaeryang Baek 908492702a chore: bump 2025-04-06 23:46:40 -07:00
Timothy Jaeryang Baek 5553ec3e51 Merge pull request #12537 from open-webui/dependabot/npm_and_yarn/dev/tiptap/pm-2.11.7
build(deps): bump @tiptap/pm from 2.10.0 to 2.11.7
2025-04-06 23:45:59 -07:00
Timothy Jaeryang Baek ddec6cf0fa Merge pull request #12545 from mogorman/elixir_syntax_highlighting
feat: add Elixir highlighting
2025-04-06 23:45:30 -07:00
Timothy Jaeryang Baek 1857f152c2 Merge pull request #12548 from aleixdorca/dev
i18n: Update Catalan translation.json
2025-04-06 23:45:07 -07:00
Timothy Jaeryang Baek c5deb5cda4 Merge pull request #12541 from open-webui/dependabot/uv/dev/opentelemetry-instrumentation-logging-0.52b0
build(deps): bump opentelemetry-instrumentation-logging from 0.51b0 to 0.52b0
2025-04-06 23:43:48 -07:00
Timothy Jaeryang Baek d3ed20e907 Merge pull request #12535 from open-webui/dependabot/pip/backend/dev/youtube-transcript-api-1.0.3
build(deps): bump youtube-transcript-api from 0.6.3 to 1.0.3 in /backend
2025-04-06 23:43:35 -07:00
Timothy Jaeryang Baek 82252cb760 Merge pull request #12532 from open-webui/dependabot/pip/backend/dev/chromadb-0.6.3
build(deps): bump chromadb from 0.6.2 to 0.6.3 in /backend
2025-04-06 23:43:08 -07:00
Timothy Jaeryang Baek 9e700dc9a2 Merge pull request #12533 from open-webui/dependabot/pip/backend/dev/pgvector-0.4.0
build(deps): bump pgvector from 0.3.5 to 0.4.0 in /backend
2025-04-06 23:42:30 -07:00
Timothy Jaeryang Baek e1f60feb7f Merge pull request #12529 from open-webui/dependabot/pip/backend/dev/azure-identity-1.21.0
build(deps): bump azure-identity from 1.20.0 to 1.21.0 in /backend
2025-04-06 23:41:53 -07:00
Timothy Jaeryang Baek aefb3117db fix: chat completion non-existent model issue 2025-04-06 23:40:48 -07:00
Aleix Dorca 76d8935d0b Update catalan translation.json 2025-04-07 08:31:44 +02:00
dependabot[bot] dbc06084a7 build(deps): bump opentelemetry-instrumentation-logging
Bumps [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) from 0.51b0 to 0.52b0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-python-contrib/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-python-contrib/commits)

---
updated-dependencies:
- dependency-name: opentelemetry-instrumentation-logging
  dependency-version: 0.52b0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:43:31 +00:00
Matthew O'Gorman 8a81f5f188 add support for elixir code syntax highlighting 2025-04-06 23:42:53 -04:00
dependabot[bot] ba66995532 build(deps): bump @tiptap/pm from 2.10.0 to 2.11.7
Bumps [@tiptap/pm](https://github.com/ueberdosis/tiptap/tree/HEAD/packages/pm) from 2.10.0 to 2.11.7.
- [Release notes](https://github.com/ueberdosis/tiptap/releases)
- [Changelog](https://github.com/ueberdosis/tiptap/blob/@tiptap/pm@2.11.7/packages/pm/CHANGELOG.md)
- [Commits](https://github.com/ueberdosis/tiptap/commits/@tiptap/pm@2.11.7/packages/pm)

---
updated-dependencies:
- dependency-name: "@tiptap/pm"
  dependency-version: 2.11.7
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:42:44 +00:00
dependabot[bot] 96ecdc37b3 build(deps): bump youtube-transcript-api from 0.6.3 to 1.0.3 in /backend
Bumps [youtube-transcript-api](https://github.com/jdepoix/youtube-transcript-api) from 0.6.3 to 1.0.3.
- [Release notes](https://github.com/jdepoix/youtube-transcript-api/releases)
- [Commits](https://github.com/jdepoix/youtube-transcript-api/compare/v0.6.3...v1.0.3)

---
updated-dependencies:
- dependency-name: youtube-transcript-api
  dependency-version: 1.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:42:21 +00:00
dependabot[bot] f187a1c9ef build(deps): bump pgvector from 0.3.5 to 0.4.0 in /backend
Bumps [pgvector](https://github.com/pgvector/pgvector-python) from 0.3.5 to 0.4.0.
- [Changelog](https://github.com/pgvector/pgvector-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgvector/pgvector-python/compare/v0.3.5...v0.4.0)

---
updated-dependencies:
- dependency-name: pgvector
  dependency-version: 0.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:42:17 +00:00
dependabot[bot] 9e8b7ac611 build(deps): bump chromadb from 0.6.2 to 0.6.3 in /backend
Bumps [chromadb](https://github.com/chroma-core/chroma) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/chroma-core/chroma/releases)
- [Changelog](https://github.com/chroma-core/chroma/blob/main/RELEASE_PROCESS.md)
- [Commits](https://github.com/chroma-core/chroma/compare/0.6.2...0.6.3)

---
updated-dependencies:
- dependency-name: chromadb
  dependency-version: 0.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:42:14 +00:00
dependabot[bot] 5379c08b9d build(deps): bump azure-identity from 1.20.0 to 1.21.0 in /backend
Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.20.0 to 1.21.0.
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.20.0...azure-identity_1.21.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-version: 1.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:42:11 +00:00
Timothy Jaeryang Baek 63533c9e3a Merge pull request #12524 from open-webui/dev
0.6.2
2025-04-06 20:41:10 -07:00
Timothy Jaeryang Baek 8e8bc3125e doc: changelog 2025-04-06 20:41:03 -07:00
Timothy Jaeryang Baek 2c083f58d9 chore: format 2025-04-06 20:36:24 -07:00
Timothy Jaeryang Baek 93962f01cc doc: changelog 2025-04-06 20:34:47 -07:00
Timothy Jaeryang Baek 40d019ff50 refac 2025-04-06 20:23:23 -07:00
Timothy Jaeryang Baek 3885ea4a15 Merge pull request #12526 from gaby/dependabot-update
chore: Dependabot update
2025-04-06 19:46:03 -07:00
Juan Calderon-Perez bd28173de6 Track backend/requirements.txt updates 2025-04-06 22:33:34 -04:00
Timothy Jaeryang Baek 06820e701c refac: citations modal 2025-04-06 19:14:24 -07:00
Timothy Jaeryang Baek 2be08f27ea revert 2025-04-06 19:12:08 -07:00
Timothy Jaeryang Baek fabe5876c0 Merge pull request #12525 from TiancongLx/dev
i18n: update zh-TW
2025-04-06 18:57:19 -07:00
Tiancong Li f1a4afeb8f i18n: update zh-TW 2025-04-07 09:28:20 +08:00
Timothy Jaeryang Baek 914eb49767 chore: include accelerate dependency 2025-04-06 17:44:05 -07:00
Timothy Jaeryang Baek a8bc0d65a0 chore: format 2025-04-06 17:36:16 -07:00
Timothy Jaeryang Baek cbe2056587 fix: audio file upload response issue 2025-04-06 17:31:50 -07:00
Timothy Jaeryang Baek 65ed76abe1 refac: embedding prefix 2025-04-06 17:17:24 -07:00
Timothy Jaeryang Baek bc17511a05 refac 2025-04-06 17:10:09 -07:00
Timothy Jaeryang Baek 3413dd8ae1 refac 2025-04-06 17:02:39 -07:00
Timothy Jaeryang Baek 03759e79a3 refac 2025-04-06 17:00:46 -07:00
Timothy Jaeryang Baek 20211a489f refac 2025-04-06 16:57:36 -07:00
Timothy Jaeryang Baek 5d2e725f81 refac 2025-04-06 16:53:30 -07:00
Timothy Jaeryang Baek 2722613cde refac 2025-04-06 16:43:58 -07:00
Timothy Jaeryang Baek f243e523a6 refac 2025-04-06 15:52:38 -07:00
Timothy Jaeryang Baek 155dbd5a66 refac 2025-04-06 15:45:48 -07:00
Timothy Jaeryang Baek 9825d03602 Merge pull request #12507 from Ithanil/fix_web_result_collection_source_ids
fix: fix web results all getting the same source id when using embedding and retrieval
2025-04-06 15:43:21 -07:00
Timothy Jaeryang Baek 66cd40f959 chore: format 2025-04-06 15:37:46 -07:00
Timothy Jaeryang Baek dc2f8ec8c6 refac 2025-04-06 15:37:27 -07:00
Timothy Jaeryang Baek bf118718b3 Merge pull request #12521 from gaby/optimize-workflow
chore: Only run GitHub workflows when needed
2025-04-06 15:24:20 -07:00
Timothy Jaeryang Baek 64a0b28dab refac 2025-04-06 15:23:40 -07:00
Timothy Jaeryang Baek 6751d68034 Merge pull request #12506 from Ithanil/fix_web_result_source_ids
fix: fix web results all getting the same source id when bypassing embedding and retrieval
2025-04-06 15:21:14 -07:00
Timothy Jaeryang Baek 6274f4d0d3 Merge pull request #12520 from gaby/bump-docker
chore: Bump Python Docker image to python3.12
2025-04-06 15:17:27 -07:00
Juan Calderon-Perez 624c5250b1 Optimize GitHub actions 2025-04-06 18:15:56 -04:00
Timothy Jaeryang Baek c1ff69721a refac 2025-04-06 15:14:57 -07:00
Timothy Jaeryang Baek 1e98ae7608 Merge pull request #12431 from gaby/fix-12237
feat: Allow making content optional when listing all files
2025-04-06 15:13:13 -07:00
Timothy Jaeryang Baek 1bde36e072 Merge pull request #12510 from newnol/patch-1
i18n language pack vietnamese
2025-04-06 15:12:09 -07:00
Juan Calderon-Perez 89e7913ff2 Bump Python base Docker image to 3.12 2025-04-06 18:10:38 -04:00
Timothy Jaeryang Baek 51bf9eaa88 Merge pull request #12493 from TiancongLx/dev
i18n: update zh-TW
2025-04-06 15:09:21 -07:00
Timothy Jaeryang Baek b8cf9b738d Merge pull request #12511 from panda44312/patch-11
i18n: zh-cn
2025-04-06 15:09:13 -07:00
Timothy Jaeryang Baek 635c08a5ab Merge pull request #12517 from Ithanil/only_keep_retrieved_urls
fix: only keep URLs as sources for which the content was actually retrieved
2025-04-06 15:08:47 -07:00
Timothy Jaeryang Baek 6323b9f4f0 Merge pull request #12515 from gaby/fix-dependabot
chore: Fix dependabot configuration
2025-04-06 13:41:18 -07:00
Juan Calderon-Perez 94453839ba Update index.ts 2025-04-06 16:02:16 -04:00
Jan Kessler a506a1a61e only keep URLs as sources for which the content could actually be retrieved 2025-04-06 20:31:12 +02:00
Juan Calderon-Perez d266490862 Fix dependabot configuration 2025-04-06 13:58:17 -04:00
Juan Calderon-Perez ff1d454bdd Fix formatting 2025-04-06 13:32:51 -04:00
Juan Calderon-Perez eda3eba084 Merge branch 'open-webui:main' into fix-12237 2025-04-06 13:30:37 -04:00
Taylor Wilsdon 0a2747bc6a Merge branch 'dev' of github.com:taylorwilsdon/open-webui into dev 2025-04-06 13:01:39 -04:00
Panda 60c6e00d9f i18n: fix 2025-04-06 16:47:06 +02:00
Panda 246c839ee6 i18n: zh-cn 2025-04-06 16:42:09 +02:00
Ngô Tấn Tài 2994c58fd9 Update translation.json 2025-04-06 21:26:58 +07:00
Jan Kessler 4476060044 fix web results all getting the same source id when using embedding and retrieval 2025-04-06 15:51:05 +02:00
Jan Kessler 2729d8aab4 fix web results all getting the same source id when bypassing embedding and retrieval 2025-04-06 13:37:42 +02:00
Tiancong Li 26e1bfc772 Merge remote-tracking branch 'upstream/dev' into dev
* upstream/dev:
  refac
  Fallback from desc to summary to placeholder
2025-04-06 10:33:01 +08:00
Timothy Jaeryang Baek 9ea6cea0ba refac 2025-04-05 14:31:22 -07:00
Timothy Jaeryang Baek 71625663c0 Merge pull request #12496 from dan-sullivan/fix-12479/add-desc-to-openapi-tools
fix: openapi tools should pass description to model not summary
2025-04-05 15:30:19 -06:00
Tiancong Li 33451cf66d i18n: update zh-TW 2025-04-06 04:46:31 +08:00
Timothy Jaeryang Baek 41aca84913 Merge pull request #12491 from open-webui/dev
refac
2025-04-05 10:24:32 -07:00
Timothy Jaeryang Baek 5296ee0f71 refac 2025-04-05 11:24:05 -06:00
Timothy Jaeryang Baek da94835165 Merge pull request #12373 from open-webui/dev
0.6.1
2025-04-05 10:15:32 -07:00
Timothy Jaeryang Baek 13dfca4e76 chore: bump 2025-04-05 11:13:30 -06:00
Timothy Jaeryang Baek d5063f47f2 doc: changelog 2025-04-05 11:11:37 -06:00
Timothy Jaeryang Baek ef787e4a79 Merge pull request #12486 from FabioPolito24/text-file-handling-docling
fix: text file handling with docling
2025-04-05 09:55:51 -07:00
Timothy Jaeryang Baek 48d690c55d Merge pull request #12481 from gaby/generic-errors
fix: Improve auth error messages
2025-04-05 09:47:52 -07:00
Timothy Jaeryang Baek 69c68df34b Merge pull request #12480 from Kylapaallikko/dev
i18n: Update Finnish Translation
2025-04-05 09:47:39 -07:00
Timothy Jaeryang Baek b3110ca291 Merge branch 'dev' into dev 2025-04-05 09:47:30 -07:00
Fabio Polito cd0a1b4852 fix: fix for text file handling with docling 2025-04-05 16:44:08 +00:00
Timothy Jaeryang Baek 32f309b41d chore: format 2025-04-05 10:42:21 -06:00
Timothy Jaeryang Baek d23f757c1f refac 2025-04-05 10:41:46 -06:00
Juan Calderon-Perez 324550423c Fix formatting issues 2025-04-05 10:03:24 -04:00
Juan Calderon-Perez b4277c7d2e Make auth error messages generic 2025-04-05 09:56:11 -04:00
Kylapaallikko 84788b73ce Update translation.json 2025-04-05 16:37:54 +03:00
dan-sullivan 09344bbb80 Fallback from desc to summary to placeholder 2025-04-05 14:18:14 +01:00
Timothy Jaeryang Baek fe4f760b4a refac 2025-04-05 05:57:25 -06:00
Timothy Jaeryang Baek 807b208418 refac 2025-04-05 05:55:56 -06:00
Timothy Jaeryang Baek ae484e8edf refac 2025-04-05 05:45:32 -06:00
Timothy Jaeryang Baek 56dc7c5640 refac 2025-04-05 05:38:46 -06:00
Timothy Jaeryang Baek e570a98bf7 refac: substandard codebase overhauled 2025-04-05 05:31:22 -06:00
Timothy Jaeryang Baek 93bb77ede3 refac 2025-04-05 05:03:15 -06:00
Timothy Jaeryang Baek 66db2e1515 refac: tools removed UNNECESSARY CODE 2025-04-05 04:59:11 -06:00
Timothy Jaeryang Baek c9e9ce931b refac 2025-04-05 04:49:07 -06:00
Timothy Jaeryang Baek 9747a0e1f1 refac: tool servers 2025-04-05 04:40:01 -06:00
Timothy Jaeryang Baek 61778c8f71 Merge pull request #12478 from theredcat/main
Improve FR translation
2025-04-05 03:22:54 -07:00
Timothy Jaeryang Baek 579aca65bb Merge pull request #12477 from Ithanil/improved_rag_template
fix: more coherent default RAG template
2025-04-05 03:22:41 -07:00
Timothy Jaeryang Baek ee44383c83 refac 2025-04-05 04:12:57 -06:00
Timothy Jaeryang Baek 0c0505e1cd refac 2025-04-05 04:05:52 -06:00
Nathan DELHAYE 1b8557ce86 i18n: improve fr translation 2025-04-05 12:04:12 +02:00
Jan Kessler e0da6003f1 tweak default rag template to be more coherent and improve consistency with citations 2025-04-05 11:40:48 +02:00
Timothy Jaeryang Baek 0f310b3509 Merge pull request #12476 from Phlogi/dev-hybrid-search
fix: Avoid secondary error when collection is empty in parallel hybrid search
2025-04-05 02:10:29 -07:00
Phlogi 8cf8121812 Update utils.py
Avoid running any tasks for collections that failed to fetch data (have assigned None)
2025-04-05 10:41:21 +02:00
Timothy Jaeryang Baek a2f2203325 Merge pull request #12426 from silentoplayz/fix-feedback
fix: Conditionally hide export buttons
2025-04-05 01:30:51 -07:00
Timothy Jaeryang Baek 193a927aba fix: temp chat 2025-04-05 02:16:35 -06:00
Timothy Jaeryang Baek 4ad10f0c6e chore: format 2025-04-05 01:31:45 -06:00
Timothy Jaeryang Baek 5e06b6d3f4 refac: styling 2025-04-05 01:24:32 -06:00
Timothy Jaeryang Baek cb94a87cb0 refac: tools styling 2025-04-05 01:05:47 -06:00
Timothy Jaeryang Baek 793aa307ef Merge pull request #12433 from gaby/fix-allowed-endpoints
fix: API Key Endpoint Restrictions for Dynamic Paths
2025-04-04 08:24:10 -07:00
Timothy Jaeryang Baek 7e46cc4562 Merge pull request #12439 from narutopden/i18n-add-Tibetan-translation
i18n: add Tibetan language
2025-04-04 08:20:25 -07:00
Timothy Jaeryang Baek b612af29e9 refac 2025-04-04 09:17:19 -06:00
Timothy Jaeryang Baek feaf434d4e refac: input prompt 2025-04-04 09:11:54 -06:00
Timothy Jaeryang Baek 77fa11098a enh: openapi tool server custom path 2025-04-04 08:31:13 -06:00
Timothy Jaeryang Baek a32bb850fa Merge pull request #12450 from mahenning/fix-missing-parameter-rag
Fix: Add missing parameter for query_doc_with_hybrid_search
2025-04-04 07:00:16 -07:00
Timothy Jaeryang Baek 64b68b3641 Merge pull request #12447 from floriankick/fix-openai-api-empty-message-after-tool-call
fix: make content parameter optional in OpenAI chat completion API endpoint
2025-04-04 06:59:12 -07:00
Marko Henning 3b2b6e183d Added missing parameter for query_doc_with_hybrid_search. 2025-04-04 15:30:57 +02:00
Juan Calderon-Perez 138e985d66 Rename field to include_content 2025-04-04 08:38:24 -04:00
Florian Kick ec3435de00 make content parameter optional in OpenAI chat completion API endpoint 2025-04-04 13:30:51 +02:00
narutopden a25d87607e i18n: add Tibetan language 2025-04-04 14:55:49 +08:00
Juan Calderon-Perez 1c57e3e02c Fix API_KEY_ALLOWED_ENDPOINTS 2025-04-03 23:52:10 -04:00
Silentoplayz 41b9ff9e00 fix: funcs, models, prompts, & tools conditional export button 2025-04-03 23:33:30 -04:00
Juan Calderon-Perez 6d5cb6b04e Add query param to remove content from GET /api/v1/files 2025-04-03 23:02:24 -04:00
silentoplayz 1366822f99 Update Feedbacks.svelte
fix
2025-04-04 02:38:03 +00:00
Silentoplayz 2b0d9c26eb fix: don't show export button if nothing to export 2025-04-03 22:20:40 -04:00
Timothy Jaeryang Baek be20e6dec0 refac: message edit 2025-04-03 13:43:45 -06:00
Timothy Jaeryang Baek a1f3300767 fix: tls cert requirement 2025-04-03 10:01:03 -07:00
Timothy Jaeryang Baek dfdde8bb1f refac 2025-04-03 09:40:26 -07:00
Timothy Jaeryang Baek ba77a72925 refac: styling 2025-04-03 01:00:40 -07:00
Timothy Jaeryang Baek bcf0a8791e refac: styling 2025-04-03 01:00:04 -07:00
Timothy Jaeryang Baek 100f5a57e7 refac 2025-04-02 23:56:15 -07:00
Timothy Jaeryang Baek 911321878f refac 2025-04-02 23:49:42 -07:00
Timothy Jaeryang Baek faa68fcdaa enh: image tool response 2025-04-02 23:46:39 -07:00
Jan Kessler 257ca45456 leave out @ in redis+sentine url when no username/password is provided 2025-04-03 08:24:24 +02:00
Timothy Jaeryang Baek 561b2c0b1a refac: styling 2025-04-02 21:23:45 -07:00
Timothy Jaeryang Baek 436e3ff7de refac 2025-04-02 20:42:23 -07:00
Timothy Jaeryang Baek c0711ba0c9 refac 2025-04-02 20:07:09 -07:00
Timothy Jaeryang Baek 5c5160c294 refac: remove None params 2025-04-02 19:56:39 -07:00
Timothy Jaeryang Baek 2277566ce1 fix: tool server api key not being sent 2025-04-02 19:52:12 -07:00
Timothy Jaeryang Baek 959995c715 refac: use selected model for merge response 2025-04-02 19:33:20 -07:00
Timothy Jaeryang Baek 7a1e10f3a7 refac: rm OAUTH_USE_PICTURE_CLAIM 2025-04-02 19:23:24 -07:00
Timothy Jaeryang Baek b15bf0dc70 refac 2025-04-02 19:17:26 -07:00
Timothy Jaeryang Baek 506950b03a Merge pull request #12376 from MushroomLamp-COB/main
feat: Add option to disable OAuth profile pictures
2025-04-02 19:16:36 -07:00
Timothy Jaeryang Baek 94353458a5 refac: settings ui styling 2025-04-02 19:01:39 -07:00
Timothy Jaeryang Baek 7eea95a48c feat: direct tools user permissions 2025-04-02 18:36:03 -07:00
Timothy Jaeryang Baek 94bf49440d enh: unload hybrid model if set to False 2025-04-02 18:15:14 -07:00
Timothy Jaeryang Baek 0644abe402 fix: admin folder deletion issue 2025-04-02 17:55:24 -07:00
Timothy Jaeryang Baek 9036945361 Merge pull request #12355 from silentoplayz/logging-fix
fix: update datetime and logging imports
2025-04-02 17:44:30 -07:00
silentoplayz dd5bafe8af Update env.py
Revert
2025-04-03 00:36:16 +00:00
CityOfBunbury 548c7f17d7 Added OAUTH_USE_PICTURE_CLAIM env var
Added OAUTH_USE_PICTURE_CLAIM to config.py

Added check to oauth.py on OAUTH_USE_PICTURE_CLAIM, to decide whether to user the profile picture in the claim or the default user.png
2025-04-03 08:24:14 +08:00
Timothy Jaeryang Baek bb7f4d408a Merge pull request #12364 from silentoplayz/archive-chats-option
feat: Added Archived Chats option in Chats settings section
2025-04-02 17:12:34 -07:00
Timothy Jaeryang Baek 6ee30042e7 Merge pull request #12353 from SadmL/dev
[i18n] Russian localization update
2025-04-02 15:47:44 -07:00
Timothy Jaeryang Baek 0554bbb1cb Merge pull request #12307 from paddy313/feature/mistral_ocr
feat: Added support for Mistral OCR for Content Extraction
2025-04-02 15:47:33 -07:00
Timothy Jaeryang Baek 517a57b7ca Merge pull request #12331 from panda44312/patch-10
i18n: zh-cn fix
2025-04-02 15:46:42 -07:00
Jan Kessler 35ea29b184 prepare websocket redis sentinel code for upcoming native support of sentinel in python-socketio 2025-04-02 21:50:00 +02:00
Silentoplayz ee68c9ea55 Update Chats.svelte
Added Archived Chats option in Chats settings section
2025-04-02 14:25:03 -04:00
Silentoplayz d65471c420 fix
my dev environment works again!
2025-04-02 11:28:45 -04:00
SadmL de8f94b008 [i18n] Russian localization update
Fixed typos and translated some lines
2025-04-02 18:13:52 +03:00
Patrick Wachter 0ac00b9256 refactor: update import path for MistralLoader 2025-04-02 13:56:10 +02:00
Timothy Jaeryang Baek d0db4756a6 Merge pull request #12310 from landerrosette/fix_filter_priority
fix: Filter function’s priority valve has no effect
2025-04-02 04:41:00 -07:00
Panda adaa614986 fix 2025-04-02 10:35:05 +02:00
Timothy Jaeryang Baek 5ab783001d Merge pull request #12304 from OriginalSimon/main
18n: Update Ukrainian translation
2025-04-01 16:12:59 -07:00
Timothy Jaeryang Baek 2a163996f9 Merge pull request #12294 from Xelaph/dev
**i18n**: Update Dutch translations
2025-04-01 16:12:48 -07:00
Timothy Jaeryang Baek 1b37bdcec8 Merge pull request #12278 from Saidoua/main
**i18n** Standard Arabic Translation
2025-04-01 16:11:54 -07:00
Timothy Jaeryang Baek 39b0c06630 Merge pull request #12299 from lowlyocean/rpi_onnxruntime
fix: Allow v0.6.0 to run on Raspberry Pi
2025-04-01 16:02:05 -07:00
landerrosette 2b7dd6e399 refactor: standardize filter valve retrieval logic 2025-04-02 02:58:02 +08:00
Patrick Wachter c5a8d2f857 refactor: update MistralLoader documentation and adjust parameters for signed URL retrieval 2025-04-01 20:14:34 +02:00
Patrick Wachter 93d7702e8c refactor: move MistralLoader to a separate module and just use the requests package instead of mistralai 2025-04-01 20:14:34 +02:00
Simon 0447d90951 Update translation.json 2025-04-01 20:01:08 +02:00
Daniel Nowak 8f8c34471e Pin onnxruntime to 1.20.1 to address SIGILL on certain arm64 hosts 2025-04-01 12:03:09 -04:00
Alex 883ad55f5c Update translation.json 2025-04-01 16:12:31 +02:00
Alex 82e5a6410c Update translation.json 2025-04-01 16:09:17 +02:00
Alex 88b93241db Update translation.json 2025-04-01 15:20:04 +02:00
Alex b652b8e5f3 Update translation.json 2025-04-01 14:25:04 +02:00
Patrick Wachter 1ac6879268 Add Mistral OCR integration and configuration support 2025-04-01 14:24:33 +02:00
Said Ouhdachi 825becceb0 Arabic Translation 2025-04-01 13:10:59 +02:00
Timothy Jaeryang Baek fffa793d6d Merge pull request #12270 from TiancongLx/dev
i18n: update zh-TW
2025-04-01 02:29:00 -07:00
Timothy Jaeryang Baek 289d49dbe7 Merge pull request #12269 from panda44312/patch-9
i18n: zh-cn
2025-04-01 02:28:51 -07:00
Tiancong Li fa72c277db i18n: update zh-TW 2025-04-01 17:10:32 +08:00
Panda 8799ff9575 fix 2025-04-01 10:52:05 +02:00
Panda 85c8a9bd68 i18n: zh-cn 2025-04-01 10:47:52 +02:00
Timothy Jaeryang Baek 15f6e3af12 Merge pull request #12259 from weisser-dev/dev
[FEAT] adjust Translations for temporary chat
2025-04-01 00:59:27 -07:00
Timothy Jaeryang Baek c79fa4214f Merge pull request #12262 from lukasz-pekala/fb/fixes-to-polish-translation
i18n: fixes to polish translation
2025-04-01 00:59:08 -07:00
Łukasz Pękala 29d5745335 fix: update Polish translation for "Capture" to improve accuracy 2025-04-01 09:14:29 +02:00
Erik 70bb0562f3 Merge branch 'open-webui:dev' into dev 2025-04-01 09:09:33 +02:00
Erik c8210d4043 upated like in PR discussed 2025-04-01 09:06:15 +02:00
Łukasz Pękala 9f470a4ff5 fix: update Polish translations to sound more natural 2025-04-01 08:53:12 +02:00
Timothy Jaeryang Baek cea5c1a63b Merge pull request #12254 from open-webui/dependabot/pip/backend/dev/einops-0.8.1
build(deps): bump einops from 0.8.0 to 0.8.1 in /backend
2025-03-31 23:45:23 -07:00
Timothy Jaeryang Baek 4ce05ad279 Merge pull request #12255 from open-webui/dependabot/pip/backend/dev/pypandoc-1.15
build(deps): bump pypandoc from 1.13 to 1.15 in /backend
2025-03-31 23:45:15 -07:00
Timothy Jaeryang Baek f3c2614b6c Merge pull request #12253 from open-webui/dependabot/pip/backend/dev/python-multipart-0.0.20
build(deps): bump python-multipart from 0.0.18 to 0.0.20 in /backend
2025-03-31 23:44:40 -07:00
Timothy Jaeryang Baek 79cca06e0c Merge pull request #12260 from weisser-dev/feat-default-value-for-enforce-temp-chat
[improvement] default permission for new groups is false for enforce …
2025-03-31 23:43:08 -07:00
Łukasz Pękala b60beb6ff6 fix: improve Polish translations for clarity and accuracy 2025-04-01 08:39:36 +02:00
Erik 295c7eb4c7 [improvement] default permission for new groups is false for enforce temp chat 2025-04-01 08:27:29 +02:00
Łukasz Pękala 361584b4fd fix: update Polish translations for clarity and accuracy 2025-04-01 08:26:21 +02:00
Erik abba7c128c [FEAT]-Adjust Translations for temporary chat 2025-04-01 08:21:03 +02:00
Timothy Jaeryang Baek e0ec2cdeb0 refac: $user 2025-03-31 20:32:12 -07:00
dependabot[bot] bb0e11bb97 build(deps): bump pypandoc from 1.13 to 1.15 in /backend
Bumps [pypandoc](https://github.com/JessicaTegner/pypandoc) from 1.13 to 1.15.
- [Release notes](https://github.com/JessicaTegner/pypandoc/releases)
- [Changelog](https://github.com/JessicaTegner/pypandoc/blob/master/release.md)
- [Commits](https://github.com/JessicaTegner/pypandoc/compare/v1.13...v1.15)

---
updated-dependencies:
- dependency-name: pypandoc
  dependency-version: '1.15'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 02:22:16 +00:00
dependabot[bot] fc5c8dbe3f build(deps): bump einops from 0.8.0 to 0.8.1 in /backend
Bumps [einops](https://github.com/arogozhnikov/einops) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/arogozhnikov/einops/releases)
- [Commits](https://github.com/arogozhnikov/einops/compare/v0.8.0...v0.8.1)

---
updated-dependencies:
- dependency-name: einops
  dependency-version: 0.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 02:22:13 +00:00
dependabot[bot] 1d30d8a13a build(deps): bump python-multipart from 0.0.18 to 0.0.20 in /backend
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.18 to 0.0.20.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.18...0.0.20)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 02:22:11 +00:00
Timothy Jaeryang Baek 04799f1f95 Merge pull request #11728 from open-webui/dev
0.6
2025-03-31 18:47:18 -07:00
Timothy Jaeryang Baek 1b7c125f00 refac 2025-03-31 18:47:08 -07:00
Timothy Jaeryang Baek 13f7a4cf56 doc: wording 2025-03-31 18:43:27 -07:00
Timothy Jaeryang Baek 8f8d8ba27d doc: changelog 2025-03-31 18:40:49 -07:00
Timothy Jaeryang Baek dca68871e6 doc: wording 2025-03-31 18:39:30 -07:00
Timothy Jaeryang Baek da561c50d0 doc: wording 2025-03-31 18:36:08 -07:00
Timothy Jaeryang Baek 3662ecdeab doc: changelog 2025-03-31 18:34:42 -07:00
Timothy Jaeryang Baek 391dd33da3 chore: format 2025-03-31 17:59:21 -07:00
Timothy Jaeryang Baek 0bc5441d72 refac: styling 2025-03-31 17:58:48 -07:00
Timothy Jaeryang Baek 5f792d2771 feat: enforced temporary chat 2025-03-31 17:58:43 -07:00
Timothy Jaeryang BaekandTaylor Wilsdon 580965df17 feat: public sharing permissions
Co-Authored-By: Taylor Wilsdon <6508528+taylorwilsdon@users.noreply.github.com>
2025-03-31 17:28:25 -07:00
Timothy Jaeryang Baek 50b3f47f81 feat: public sharing permissions 2025-03-31 17:15:51 -07:00
Timothy Jaeryang Baek 3ba12e7a43 Merge pull request #12239 from Phlogi/dev-threads-on-hybrid
perf: parallelize hybrid search
2025-03-31 17:06:32 -07:00
Timothy Jaeryang Baek def5444ea3 feat: hide base model 2025-03-31 16:51:42 -07:00
Timothy Jaeryang Baek cafc5413f5 refac 2025-03-31 14:13:27 -07:00
Timothy Jaeryang Baek 3dc40030a1 Merge pull request #12236 from Phlogi/fix_prefix
Fix middleware.py missing prefix on embedding function
2025-03-31 14:02:49 -07:00
Timothy Jaeryang Baek efb63fb13f chore: format 2025-03-31 14:02:02 -07:00
Timothy Jaeryang Baek 598222b76f Merge pull request #12238 from rgaricano/dev
PR: Translation (es-ES) - Spanish v0.6.0
2025-03-31 14:01:27 -07:00
Timothy Jaeryang Baek fac848ad33 refac: rm log info 2025-03-31 14:00:40 -07:00
_00_ 098c794de3 Update translation.json
fix X typo
lines 4 & 304
2025-03-31 19:52:15 +02:00
_00_ 1571e3dc16 FIX: Translation (es-ES) - Spanish
Complete Revision of Spanish Translation (es-ES)

Revised spanish translation.
Standardization of terminology, vocabulary, and syntax.
Revision of incorrectly explained or defined terms.
2025-03-31 17:12:55 +02:00
_00_ a65c426e1d FIX: Translation (es-ES) - Spanish rev.
Complete Revision of Spanish Translation (es-ES)

Revised spanish translation.
Standardization of terminology, vocabulary, and syntax.
Revision of incorrectly explained or defined terms.

(added two lost recently updated entries)
2025-03-31 16:59:05 +02:00
Phlogi 9c64310db5 Run hybrid_search in parallel 2025-03-31 16:43:37 +02:00
_00_ 3c507e829f FIX: Translation (es-ES) - Spanish
Complete Revision of Spanish Translation (es-ES)

Revised spanish translation.
Standardization of terminology, vocabulary, and syntax.
Revision of incorrectly explained or defined terms.
2025-03-31 16:42:56 +02:00
Phlogi bc64b2a67f Fix middleware.py missing prefix on embedding function 2025-03-31 15:19:07 +02:00
Timothy Jaeryang Baek 6ac153c989 refac: styling 2025-03-31 03:45:36 -07:00
Timothy Jaeryang Baek 5ce6c8ced3 refac 2025-03-31 01:45:22 -07:00
Timothy Jaeryang Baek 9809ffb095 refac 2025-03-31 01:30:08 -07:00
Timothy Jaeryang Baek a5dbd2e8dd refac: knowledge file ac 2025-03-31 01:10:18 -07:00
Timothy Jaeryang Baek 021e25ade1 Merge pull request #11087 from tarmst/fix-files-access-control
fix: Add access control usage to files APIs
2025-03-31 01:05:08 -07:00
Timothy Jaeryang Baek 05dfb9cecd refac: floating buttons behaviour in shared chat 2025-03-31 00:57:16 -07:00
Timothy Jaeryang Baek effa87638d refac: prompt command behaviour 2025-03-31 00:48:09 -07:00
Timothy Jaeryang Baek 300b7dfcc0 fix: model import/export 2025-03-31 00:39:20 -07:00
Timothy Jaeryang Baek fb875c574c Merge pull request #12218 from aleixdorca/dev
Update catalan translation.json
2025-03-31 00:19:28 -07:00
Aleix Dorca 6e190bebe8 Update catalan translation.json 2025-03-31 09:12:48 +02:00
Timothy Jaeryang Baek e4cc9f2b4f refac: folders 2025-03-30 23:36:15 -07:00
Timothy Jaeryang Baek 337df80c47 refac: styling 2025-03-30 23:17:06 -07:00
Timothy Jaeryang Baek d542881ee4 refac 2025-03-30 21:55:20 -07:00
Timothy Jaeryang Baek 4b75966401 refac: embedding prefix var naming 2025-03-30 21:55:15 -07:00
Timothy Jaeryang Baek 433b5bddc1 Merge pull request #8594 from jayteaftw/main
feat: Support for instruct/prefixing embeddings
2025-03-30 21:54:44 -07:00
Timothy Jaeryang Baek 12101fd26d Merge pull request #11307 from wangtunan/fix/stop_task_func_need_use_async_await_syntax
fix: stopTask func need use async/await syntax
2025-03-30 21:45:32 -07:00
Timothy Jaeryang Baek 33f93371dc feat: user webhooks system settings 2025-03-30 21:31:16 -07:00
Timothy Jaeryang Baek d55735dc1e refac: rm profile image from feedback user object 2025-03-30 21:23:42 -07:00
Timothy Jaeryang Baek d41844c308 feat: prompt autocompletion user setting 2025-03-30 21:19:09 -07:00
Timothy Jaeryang Baek 50b8dec3ac fix/refac: hybrid search 2025-03-30 20:48:22 -07:00
Timothy Jaeryang Baek ce0d82b55f Merge pull request #12132 from Phlogi/dev-fetch-documents-once
Avoid multiple data fetching
2025-03-30 20:44:32 -07:00
Timothy Jaeryang Baek febc85361f Merge pull request #12191 from rgaricano/dev
Fix alignament buttons text
2025-03-30 20:42:21 -07:00
Timothy Jaeryang Baek d9bbdd8dca revert 2025-03-30 20:38:47 -07:00
Timothy Jaeryang Baek 9c00f3caf3 Merge pull request #12192 from Ithanil/avatar_compression
feat: adjust jpeg compression quality to 0.15 for avatar uploads
2025-03-30 20:35:31 -07:00
Timothy Jaeryang Baek ee9ff96c7d Merge pull request #12194 from TiancongLx/dev
i18n: update zh-TW
2025-03-30 17:19:23 -07:00
Tiancong Li 50a0751418 i18n: update zh-TW 2025-03-30 23:24:27 +08:00
Jan Kessler 7f5dc22464 adjust jpeg compression quality to 0.15 for avatar uploads 2025-03-30 14:14:14 +02:00
_00_ 5b8317270e Fix alignament buttons text
Fix alignament buttons text

Fixed align tag on user & admin settings

- correction of some align tag assigned to buttons that are right and
have to be left, this means that although it is not noticeable in
English, in other languages, especially if several lines appear, it is
obvious.
2025-03-30 13:36:07 +02:00
Timothy Jaeryang Baek b5909ffe97 enh: tool args parse json fallback 2025-03-30 02:39:23 -07:00
Timothy Jaeryang Baek 03e61e7a4a refac: styling 2025-03-30 00:47:45 -07:00
Timothy Jaeryang Baek 215f991326 refac 2025-03-30 00:44:09 -07:00
Timothy Jaeryang Baek 2cee5a4a03 chore: format 2025-03-30 00:21:00 -07:00
Timothy Jaeryang Baek 3be626bef3 feat: goto message 2025-03-29 17:48:57 -07:00
Timothy Jaeryang Baek c700126c17 refac: html rendering 2025-03-29 16:52:49 -07:00
Timothy Jaeryang Baek feaa01dc77 fix: ollama requests 2025-03-29 16:52:42 -07:00
Timothy Jaeryang Baek 34607736c6 Merge pull request #12170 from JunaidPinjari/fix/csv-autodetect-encoding
Fix: CSV loader encoding issue using autodetect_encoding=True
2025-03-29 15:23:55 -07:00
Timothy Jaeryang Baek 5b9b802793 refac 2025-03-29 15:23:02 -07:00
Timothy Jaeryang Baek da5ea7acb8 Merge pull request #12176 from JunaidPinjari/feat/file-upload-download-options
Support skipping ingestion and downloading files as attachments
2025-03-29 15:20:47 -07:00
Timothy Jaeryang Baek 08ff1d8d88 refac 2025-03-29 15:03:10 -07:00
Timothy Jaeryang Baek c2ff73c3e1 refac 2025-03-29 14:59:03 -07:00
Junaid Pinjari a805e033a5 Feat: Add optional ingest_file and as_attachment params to upload and download endpoints 2025-03-29 15:42:11 +05:30
Junaid Pinjari e782e7d3a7 Fix: CSV loader encoding issue using autodetect_encoding=True 2025-03-29 13:14:53 +05:30
Timothy Jaeryang Baek 66015bb341 Merge pull request #12168 from yak1ex/fix_inconsistent_value_check_in_onMessageHandler_in_Chat_svelte
fix: Inconsistent value check in onMessageHandler() in Chat.svelte
2025-03-28 22:12:57 -07:00
Timothy Jaeryang Baek 737f41dd2e refac 2025-03-28 13:18:44 -07:00
Timothy Jaeryang Baek 402d32ccfd refac 2025-03-28 13:17:43 -07:00
Timothy Jaeryang Baek 0413c747a9 refac: hide hybrid option with full context mode 2025-03-28 13:16:56 -07:00
Timothy Jaeryang Baek acd5b07fb4 enh: tool servers info modal 2025-03-28 12:40:56 -07:00
Timothy Jaeryang Baek 0a49c366f0 refac 2025-03-28 12:25:59 -07:00
Timothy Jaeryang Baek af2c5f3a18 refac 2025-03-28 12:23:25 -07:00
Timothy Jaeryang Baek 115f34069a refac: tool call display 2025-03-28 12:18:27 -07:00
Timothy Jaeryang Baek 1ac87c55ff chore: format 2025-03-28 11:47:14 -07:00
Timothy Jaeryang Baek b8c1bb0ec5 refac 2025-03-28 02:30:13 -07:00
Timothy Jaeryang Baek f8835d78d9 refac: tool call block display 2025-03-28 02:27:40 -07:00
Timothy Jaeryang Baek fd9641dcd1 refac 2025-03-28 01:20:45 -07:00
Timothy Jaeryang Baek 5656f030c4 refac: error handling 2025-03-28 00:52:13 -07:00
Timothy Jaeryang Baek 2fc8ace46d fix: error message persistence issue 2025-03-28 00:25:00 -07:00
Timothy Jaeryang Baek 2070d1096b refac 2025-03-28 00:07:00 -07:00
Timothy Jaeryang Baek 5f9679253e refac: openapi tool server support 2025-03-27 23:59:16 -07:00
Timothy Jaeryang Baek 359e6f2fd2 Merge pull request #12149 from TiancongLx/dev
i18n: update zh-TW
2025-03-27 23:49:56 -07:00
Tiancong Li f647e86346 i18n: update zh-TW 2025-03-28 14:38:43 +08:00
Timothy Jaeryang Baek 7fce3e2a9c Merge pull request #11148 from Ithanil/redis_sentinel
feat: Support for Redis Sentinel
2025-03-27 20:36:53 -07:00
Timothy Jaeryang Baek c137d3ad17 enh: allow json schema for format 2025-03-27 20:27:16 -07:00
Timothy Jaeryang Baek 424f007b10 fix: ldap certificate path should not be required 2025-03-27 19:55:41 -07:00
Timothy Jaeryang Baek 5e720cd84b refac: ollama response_format support 2025-03-27 19:26:08 -07:00
Timothy Jaeryang Baek 7845b2fbef Merge pull request #12122 from panda44312/patch-8
i18n: zh-cn
2025-03-27 14:48:45 -07:00
Phlogi 04bf9ddab2 Avoid multiple data fetching 2025-03-27 19:05:20 +01:00
Panda 72bef8798f i18n: zh-cn 2025-03-27 11:05:57 +01:00
Timothy Jaeryang Baek 4547453141 refac 2025-03-27 02:57:02 -07:00
Timothy Jaeryang Baek fc6d432c2f refac 2025-03-27 02:53:24 -07:00
Timothy Jaeryang Baek 038df1131e refac 2025-03-27 02:50:53 -07:00
Timothy Jaeryang Baek d1bc2cfa2f refac: external tools server support 2025-03-27 02:27:56 -07:00
Jan Kessler 0615c11a53 fix sentinel connection being attempted for non-sentinel redis 2025-03-27 10:23:35 +01:00
Timothy Jaeryang Baek 69dee19568 refac 2025-03-27 01:42:33 -07:00
Timothy Jaeryang Baek 4a79320253 chore: format 2025-03-27 01:40:28 -07:00
Timothy Jaeryang Baek d9b6d78d5c feat: external tool server support frontend 2025-03-27 01:38:35 -07:00
Jan Kessler d0b13cf388 prefix sentinel envs with redis_ 2025-03-27 09:22:11 +01:00
Timothy Jaeryang Baek 3514a6c5ed Merge pull request #12050 from mahenning/fix-db-order
Fix: Normalize all database distances to score in [0, 1] (needs testing for different DBs)
2025-03-26 20:56:02 -07:00
Timothy Jaeryang Baek 7490bc9100 Merge branch 'dev' into fix-db-order 2025-03-26 20:55:42 -07:00
Timothy Jaeryang Baek eaba9d8a67 Merge pull request #11497 from mahenning/k_reranker
feat: Added new k_reranker parameter
2025-03-26 20:50:43 -07:00
Timothy Jaeryang Baek 9d834a8e90 Merge branch 'dev' into k_reranker 2025-03-26 20:50:31 -07:00
Timothy Jaeryang Baek 79e4f8a7bc refac 2025-03-26 20:47:52 -07:00
Timothy Jaeryang Baek 5119cc47fc refac 2025-03-26 20:46:55 -07:00
Timothy Jaeryang Baek 42636347e2 refac: start source citation from 1 2025-03-26 20:39:39 -07:00
Timothy Jaeryang Baek dd2d757270 Merge pull request #12090 from panda44312/patch-7
i18n: zh-cn
2025-03-26 20:37:27 -07:00
Timothy Jaeryang Baek 08cd749160 refac 2025-03-26 20:28:41 -07:00
Panda f2bc2f704e i18n: zh-cn 2025-03-26 15:14:16 +01:00
Timothy Jaeryang Baek a650d77af4 refac 2025-03-26 01:25:01 -07:00
Timothy Jaeryang Baek c062353a3f refac 2025-03-26 01:17:10 -07:00
Timothy Jaeryang Baek c1a02ec7d8 refac 2025-03-26 01:11:12 -07:00
Timothy Jaeryang Baek 1be6ad1250 feat: /messages chat endpoint support 2025-03-26 01:10:27 -07:00
Timothy Jaeryang Baek 7dcdb1b404 refac 2025-03-26 00:43:51 -07:00
Timothy Jaeryang Baek 5a7efad59c refac: tools 2025-03-26 00:40:24 -07:00
Timothy Jaeryang Baek 82ca88105c Merge pull request #12076 from TiancongLx/dev
i18n: update zh-TW
2025-03-25 23:50:27 -07:00
Tiancong Li ec08043f23 i18n: update zh-TW 2025-03-26 13:34:53 +08:00
Timothy Jaeryang Baek 823d9f0475 Merge pull request #12043 from Espinaydelfin/main
i18n: Agregar idioma Galego (Add Galician Language)
2025-03-25 21:02:16 -07:00
Timothy Jaeryang Baek 1a04028507 Merge pull request #12051 from PeterDaveHello/Update-zh-TW-locale
i18n: minor zh-TW Traditional Chinese translation fix
2025-03-25 21:01:12 -07:00
Timothy Jaeryang Baek 8fe4c51e26 Merge pull request #12054 from philipp-horstenkamp/main
i18n: Fixed typo in german translation
2025-03-25 21:00:57 -07:00
Timothy Jaeryang Baek 9ef5868226 Merge pull request #12056 from ivanbaldo/fix-tika-spaces
**fix**: Tika 3.1.0.0 sends a lot of blank lines which degrades the RAG results and don't look good on the UI, strip them.
2025-03-25 21:00:49 -07:00
Marko Henning 7531b7dcaa Satisfy github format check 2025-03-25 19:09:17 +01:00
Iván Baldo 115e46a6a2 Fix: Tika 3.1.0.0 sends a lot of blank lines which degrades the RAG results, strip them. 2025-03-25 14:53:14 -03:00
Philipp Horstenkamp ee263b2f2b Fixed typo in german translation 2025-03-25 17:19:35 +01:00
Peter Dave Hello ca50e339cd i18n: minor zh-TW Traditional Chinese translation fix 2025-03-26 00:04:33 +08:00
Marko Henning 94d9d3d590 Fix: Normalze all database distances to score in [0, 1] 2025-03-25 16:46:14 +01:00
Espinaydelfin 5cf730bba7 Agregar idioma Galego 2025-03-25 13:31:37 +01:00
Timothy Jaeryang Baek 4906af9319 refac: styling 2025-03-25 00:12:23 -07:00
Timothy Jaeryang Baek 0192b4b468 refac: styling 2025-03-25 00:10:09 -07:00
Timothy Jaeryang Baek 57d1527ce1 refac 2025-03-25 00:07:04 -07:00
Timothy Jaeryang Baek 48b89322fd Merge pull request #12009 from PeterDaveHello/Dockerfile
build: add one missing `--no-cache-dir` for `pip3 install` in Dockerfile
2025-03-24 11:44:25 -07:00
Timothy Jaeryang Baek 16018b75a3 Merge pull request #12016 from OriginalSimon/dev
18n: Update Ukrainian translation
2025-03-24 11:43:24 -07:00
Simon 0418416355 Update translation.json 2025-03-24 19:41:55 +01:00
Simon 1db46c31aa Merge branch 'open-webui:dev' into dev 2025-03-24 19:41:07 +01:00
Simon 4f06771559 Update translation.json 2025-03-24 19:40:30 +01:00
Timothy Jaeryang Baek 6ed617e9f5 Merge pull request #12006 from PeterDaveHello/Update-zh-TW-locale
i18n: Improve zh-TW Traditional Chinese translation
2025-03-24 11:36:54 -07:00
Timothy Jaeryang Baek f5590b2fc0 Merge pull request #12014 from PeterDaveHello/FixPullRequestTemplate
docs: fix spelling and grammatical issues in PR template
2025-03-24 11:36:40 -07:00
Timothy Jaeryang Baek 38d524f6a0 chore: format 2025-03-24 11:35:32 -07:00
Peter Dave Hello ed2ecca475 docs: fix spelling and grammatical issues in PR template 2025-03-25 00:26:21 +08:00
Peter Dave Hello aaf47486da build: add one missing --no-cache-dir for pip3 install in Dockerfile 2025-03-24 20:45:16 +08:00
Peter Dave Hello c1f1af97c1 i18n: Improve zh-TW Traditional Chinese translation 2025-03-24 04:27:14 +08:00
Timothy Jaeryang Baek d81d1333ba Merge pull request #11950 from shirayu/feat_auth_redirect
feat: Adding auth redirect parameter
2025-03-23 11:53:45 -07:00
Timothy Jaeryang Baek 9de3e6d716 Merge pull request #11971 from shirayu/remove_ENABLE_AUDIT_LOGS
Remove `ENABLE_AUDIT_LOGS`
2025-03-23 11:53:12 -07:00
Timothy Jaeryang Baek e5b7188379 refac: ollama only param 2025-03-23 11:50:40 -07:00
Timothy Jaeryang Baek a00e5a0c0e Merge pull request #11988 from binxn/dev
Updated middleware.py to add OpenRouter compatibility
2025-03-23 11:48:21 -07:00
Timothy Jaeryang Baek c94a1ec8f8 Merge pull request #11989 from MaxJa4/dev
i18n: Translation for de-DE German
2025-03-23 11:47:15 -07:00
Timothy Jaeryang Baek c714bd8739 refac 2025-03-23 11:45:55 -07:00
MaxJa4 f2866ed858 Adjust naming 2025-03-23 17:35:28 +01:00
MaxJa4 137f16a160 Rename chats 2025-03-23 17:35:23 +01:00
MaxJa4 73715538ed Fix spelling error 2025-03-23 17:35:23 +01:00
MaxJa4 e4078a6aee Add new translations 2025-03-23 17:35:23 +01:00
binxn efd86e2cb4 Updated middleware.py to add OpenRouter compatibility 2025-03-23 17:14:20 +01:00
Yak! c1f189a602 Fix inconsistent value check. 2025-03-23 17:52:48 +09:00
Yuta Hayashibe d144592660 chore: Remove ENABLE_AUDIT_LOGS and set the AUDIT_LOG_LEVEL NONE 2025-03-23 11:34:04 +09:00
Timothy Jaeryang Baek 75b18f92b9 refac 2025-03-22 14:01:07 -07:00
Timothy Jaeryang Baek 07a15494e5 Merge pull request #11955 from jfbloom22/dev
fix: Improve error handling in ChromaDB delete function for non-existent collections
2025-03-22 12:46:01 -07:00
Jonathan Flower bdd236fa3a improved error handling for deleting collections that do not exist in chromadb 2025-03-22 09:59:06 -04:00
Yuta Hayashibe 966940cb00 feat: Added redirect parameter to /auth 2025-03-22 15:04:46 +09:00
Timothy Jaeryang Baek f872bda19b Merge pull request #11936 from softue/auth-redirect
fix: redirection for users already logged in
2025-03-21 12:33:52 -07:00
Timothy Jaeryang Baek 22f6e0f2f4 refac 2025-03-21 08:08:15 -07:00
Timothy Jaeryang Baek 8aa6dade41 Merge pull request #11876 from mahenning/fix--rag-sorting
Fix: wrong citation order for chromadb, wrong order for hybrid search
2025-03-20 17:54:22 -07:00
Timothy Jaeryang Baek d047eb46cc refac 2025-03-20 17:54:13 -07:00
Timothy Jaeryang Baek 87a06a1976 fix: file delete from knowledge not working with bypass embedding 2025-03-20 17:46:11 -07:00
Timothy Jaeryang Baek a28436237c refac 2025-03-20 17:42:50 -07:00
Timothy Jaeryang Baek 558295f728 Merge pull request #11862 from hurxxxx/feat/auto-edit-new-folder
feat: Automatically enter edit mode when creating a new folder
2025-03-20 17:40:37 -07:00
Timothy Jaeryang Baek ca43a4e97a Merge pull request #11926 from djismgaming/spanish-translation-20250320
i18n: update Spanish translation
2025-03-20 17:24:36 -07:00
djismgaming cbd11cffa0 chore: update translation.json 2025-03-20 18:11:33 -04:00
Timothy Jaeryang Baek 1813bb509b Merge pull request #11830 from hurxxxx/feat/chat-title-rename-enter-submit
feat: submit chat title rename with Enter, cancel with ESC
2025-03-20 14:03:59 -07:00
Timothy Jaeryang Baek 1d305e7b2f chore: format 2025-03-20 14:02:33 -07:00
Timothy Jaeryang Baek 9b20ef4922 refac 2025-03-20 14:01:47 -07:00
Timothy Jaeryang Baek f066eea92e Merge pull request #11899 from genjuro214/set-playwright-timeout
perf: set shorter timeout for playwright and make it configurable
2025-03-20 14:00:59 -07:00
Timothy Jaeryang Baek b96557c46e refac: styling 2025-03-20 13:55:13 -07:00
Timothy Jaeryang Baek 13220991a4 Merge pull request #11846 from hurxxxx/feat/sidebar-chat-search-clear-button
feat: add clear ("X") button to sidebar chat search input
2025-03-20 13:50:58 -07:00
Timothy Jaeryang Baek 132a332ac7 Merge pull request #11915 from Alluuu/i18n-add-estonian-language
i18n: Add Estonian et-EE translations
2025-03-20 13:50:23 -07:00
Timothy Jaeryang Baek 42f3e40065 Merge pull request #11911 from diwakar-s-maurya/patch-1
fix: error message propagation from filter-pipeline
2025-03-20 13:48:36 -07:00
Rômulo Mendes Figueiredo c4c6e02b4c fix: redirection for users already logged in 2025-03-20 16:05:26 -03:00
Alluuu 5b276471b3 Added Estonian language translations.
Tried to organize language list, following existing pattern as best, as I could tell: English first, Alphabetical languages, finished by Chinese and Doge
2025-03-20 18:42:45 +02:00
Diwakar 2bdf77a726 Fix error message propagate from pipelines
Error message returned from pipelines was not being shown on UI. It showed "Connection closed". With this fix it will show the error message on the UI from the pipeline properly.
2025-03-20 22:20:27 +07:00
genjuro 07098c6352 perf: set shorter timeout for playwright and make it configurable 2025-03-20 15:28:09 +08:00
Marko Henning 5f48af5b91 Revert the ordering change with chromadb, not necessary with reranker results 2025-03-19 17:04:45 +01:00
Timothy Jaeryang Baek 70550e41fc enh: user groups/permissions endpoint 2025-03-19 08:47:31 -07:00
Timothy Jaeryang Baek c69d1c86fe enh: apply file size limit to knowledge 2025-03-19 08:36:41 -07:00
Timothy Jaeryang Baek f806ab0bd2 refac 2025-03-19 08:32:31 -07:00
hurxxxx 18a8a375ab fix: Enter edit mode with text pre-selected 2025-03-20 00:27:53 +09:00
Marko Henning ec8fc727b8 Fix wrong order for chromadb 2025-03-19 16:06:10 +01:00
Timothy Jaeryang Baek 6ace00df24 Merge pull request #11839 from tcgumus/patch-2
Turkish language pack updates
2025-03-19 06:24:44 -07:00
Timothy Jaeryang Baek b4c00b2eb2 Merge pull request #11833 from aleixdorca/dev
Update Catalan translation.json
2025-03-19 06:24:23 -07:00
Timothy Jaeryang Baek 4b10051326 Merge pull request #11832 from TiancongLx/dev
i18n: update zh-TW
2025-03-19 06:24:15 -07:00
Timothy Jaeryang Baek 01c236ee59 Merge pull request #11826 from panda44312/patch-6
i18n: zh-cn
2025-03-19 06:24:09 -07:00
Timothy Jaeryang Baek f28bec876e Merge pull request #11853 from genjuro214/fix-issue-11847
fix: correct incorrect usage of log.exception method
2025-03-19 06:22:56 -07:00
hurxxxx 11f2aaf7b1 feat: Automatically enter edit mode when creating a new folder 2025-03-19 21:55:15 +09:00
leilibj 3e8546135d fix: correct incorrect usage of log.exception method 2025-03-19 13:04:34 +08:00
hurxxxx 70610f8343 feat: add clear ("X") button to sidebar chat search input 2025-03-19 11:25:16 +09:00
Timothy Jaeryang Baek 6c4352de07 fix: table cells format 2025-03-18 17:53:11 -07:00
Tuna Çağlar Gümüş d68a6227ad Turkish language pack updates 2025-03-19 00:15:39 +03:00
Aleix Dorca bda5e0af74 Update Catalan translation.json 2025-03-18 20:08:16 +01:00
Tiancong Li 05fa67ae8f i18n: update zh-TW 2025-03-19 02:54:51 +08:00
hurxxxx 2b687e2c06 Use consistent function names. 2025-03-19 02:23:30 +09:00
hurxxxx 3b624f35ac feat: submit chat title rename with Enter, cancel with ESC 2025-03-19 02:00:58 +09:00
Marko Henning 5ab789e83e Add documentation on chroma special case 2025-03-18 16:44:58 +01:00
Marko Henning ba676b7ed6 Use k_reranker also for result merge, and add special sorting use case for ChromaDB 2025-03-18 16:25:24 +01:00
Panda 87a3a893e2 i18n: zh-cn 2025-03-18 15:54:03 +01:00
Timothy Jaeryang Baek 62e63cffe7 Merge pull request #11804 from djismgaming/spanish-translation-20250317
i18n: translated new language pairs to Spanish
2025-03-18 13:44:45 +00:00
Timothy Jaeryang Baek 20128e6aa8 Merge branch 'dev' into spanish-translation-20250317 2025-03-18 13:44:32 +00:00
Timothy Jaeryang Baek 9a9a8a4b28 Merge pull request #11808 from FarisHijazi/dev
FIX #5682 dates not surviving importing
2025-03-18 13:43:41 +00:00
Timothy Jaeryang Baek b609b9d297 chore: format 2025-03-18 06:39:42 -07:00
Timothy Jaeryang Baek 3186aeac08 chore: format 2025-03-18 06:39:37 -07:00
Marko Henning f13948d805 Fixed typo 2025-03-18 12:14:59 +01:00
Marko Henning c877b59cbc Address edge case with k < k_reranker, sort results for cutting off 2025-03-18 11:31:17 +01:00
Jan Kessler e68cd9b671 Redis Sentinel support for AppConfig 2025-03-18 09:30:18 +01:00
Jan Kessler 9167a8bef0 refac as prep for sentinel support in AppConfig 2025-03-18 08:44:50 +01:00
Jan Kessler 9bf663934a fixes & add envs for Sentinel implementation 2025-03-18 07:49:57 +01:00
Jan Kessler 4370332e32 second part of adding Redis Sentinel support 2025-03-18 07:49:57 +01:00
Jan Kessler 3b357746d8 first part of adding Redis Sentinel support 2025-03-18 07:49:56 +01:00
Faris Hijazi eff1a23c19 fixed 5682 dates not surviving importing
Simply replaced the frontend svelte code that does the importing. One of
the keys were wrong, it was `convo['timestamp']` instead of
`convo['create_time']`
2025-03-18 09:23:52 +03:00
djismgaming e2f6cdcf31 translated new languague pairs to Spanish 2025-03-17 23:18:24 -04:00
Timothy Jaeryang Baek f5c5a4119f Merge pull request #11785 from SadmL/dev
[i18n] Almost full Russian localization (rebased)
2025-03-18 01:28:02 +00:00
Timothy Jaeryang Baek 47d5e21061 Merge pull request #11786 from taylorwilsdon/scroll_enh
fix: Better visibility for scroll bar in webkit browsers
2025-03-18 01:25:58 +00:00
SadmL 9a55071d65 Update translation.json 2025-03-17 20:02:22 +03:00
Taylor Wilsdon 1119b06678 Widen scrollbar so that it can be clicked and dragged with a mouse or trackpad 2025-03-17 13:00:55 -04:00
Timothy Jaeryang Baek 54d5281256 refac 2025-03-15 18:41:04 +00:00
Timothy Jaeryang Baek 0777ab7011 refac 2025-03-15 18:28:02 +00:00
Timothy Jaeryang Baek d8eade736f refac 2025-03-15 18:23:40 +00:00
Timothy Jaeryang Baek b6e56c0e5a refac 2025-03-15 18:00:18 +00:00
Timothy Jaeryang Baek cfb2319923 refac: disable autocompletion by default 2025-03-15 17:40:39 +00:00
Timothy Jaeryang Baek 7de88cc4eb refac 2025-03-15 17:19:22 +00:00
Timothy Jaeryang Baek 10b9fa6ed0 refac 2025-03-15 17:16:19 +00:00
Timothy Jaeryang Baek 4f5aba8be7 refac 2025-03-15 17:13:40 +00:00
Timothy Jaeryang Baek d93828e923 enh: client-side pdf generation 2025-03-15 17:11:14 +00:00
Timothy Jaeryang Baek c57db1828f fix 2025-03-15 16:25:21 +00:00
Timothy Jaeryang Baek b5e74f4eae refac 2025-03-15 16:15:37 +00:00
Timothy Jaeryang Baek c8d02aafd9 Merge pull request #11697 from foraxe/fix-keep-alive-top-level
fix: Promote keep_alive to top-level in payload for Ollama API (dev branch)
2025-03-15 14:43:27 +00:00
Timothy Jaeryang Baek f1a84f45c8 Merge pull request #11699 from shaun-gallagher-octane/markdown-alert-renderer
feat: Markdown alert renderer
2025-03-15 02:12:16 +00:00
Timothy Jaeryang Baek 0551b90d47 Merge pull request #11611 from nikes/feat/pip-options
feat: pip options in tools/functions install requirements
2025-03-15 02:07:31 +00:00
Timothy Jaeryang Baek 2de03494a6 Merge pull request #11647 from kaytwo/multiline-valves
feat: allow string valves to include newlines
2025-03-15 02:05:56 +00:00
Timothy Jaeryang Baek aa37866798 chore: pyodide bump 2025-03-15 02:04:18 +00:00
Timothy Jaeryang Baek 7723705707 enh: always collapse code block 2025-03-15 02:01:59 +00:00
Timothy Jaeryang Baek dbf051ff4e enh: always expand details option 2025-03-15 01:56:04 +00:00
Shaun Gallagher 2065580a5f feat: Use AlertRenderer in blockquote evaluation 2025-03-14 15:22:56 -04:00
Shaun Gallagher 8bc797fe6a feat: Add renderer for Markdown alerts 2025-03-14 15:22:27 -04:00
foraxe 04046ed6c8 Alternative Temp Fix: Uncomment to Keep Alive Forever 2025-03-15 00:27:20 +08:00
foraxe 53448b3f0a Fix: Promote keep_alive to top-level in payload for Ollama API on dev branch 2025-03-15 00:08:05 +08:00
Timothy Jaeryang Baek 74da9c4e54 fix: firefox input height issue 2025-03-14 12:50:33 +00:00
Timothy Jaeryang Baek 4b1899bfca chore: dependency 2025-03-14 12:35:33 +00:00
Timothy Jaeryang Baek 8588b52fd6 Merge pull request #11605 from melroy89/update_fake_useragent
dependency: Update fake-useragent to v2.1.0
2025-03-14 11:52:30 +00:00
Timothy Jaeryang Baek 4025d61c33 Merge pull request #11636 from OliveiraHermogenes/fix-api-audio-mimetype-check
fix: audio api endpoint filetype check
2025-03-14 11:52:12 +00:00
Chris Kanich 53292e7d12 allow string valves to include newlines 2025-03-13 12:04:13 -05:00
Nikes b6664f5ae8 feat: pip options in tools/functions install requirements 2025-03-12 23:15:26 +02:00
Melroy van den Berg b02e6c6734 Deps: Update fake-useragent to v2.1.0 2025-03-12 20:41:51 +01:00
Timothy Jaeryang Baek d84e7d13d0 refac 2025-03-11 20:49:14 +00:00
Timothy Jaeryang Baek c309412980 enh: connection tags 2025-03-11 20:37:30 +00:00
Timothy Jaeryang Baek b427f506f6 fix 2025-03-11 20:12:34 +00:00
Timothy Jaeryang Baek ad51b0166c refac 2025-03-11 20:12:28 +00:00
Timothy Jaeryang Baek e1168139a6 refac 2025-03-11 19:30:09 +00:00
Timothy Jaeryang Baek 9e2fb73440 Merge pull request #11550 from silentoplayz/highlight-selected
feat: improve model dropdown highlight
2025-03-11 18:57:20 +00:00
Timothy Jaeryang Baek adfa67d9d2 Merge pull request #11507 from OrenZhang/feat_ot
feat(trace): opentelemetry instrument
2025-03-11 18:55:56 +00:00
Timothy Jaeryang Baek 396c28817c refac 2025-03-11 18:55:30 +00:00
Timothy Jaeryang Baek 7e0c5a44e3 Merge pull request #11552 from icsy7867/dev
Fixed knowledgebase view for decodeURIComponent
2025-03-11 18:53:17 +00:00
root 6fc9c69b9f Fixed knowledgebase view for decodeURIComponent 2025-03-11 14:44:04 -04:00
Timothy Jaeryang Baek 9adc1ebcc8 refac 2025-03-11 18:38:13 +00:00
Timothy Jaeryang Baek 6399aaf4b2 Merge pull request #11515 from davizucon/main
fix: url value when response contains url tag
2025-03-11 18:37:05 +00:00
Timothy Jaeryang Baek 16c383ab44 Merge pull request #11498 from tcgumus/patch-2
Add SSL Integration Comments and WebSocket Auto-Fix in start_windows.bat
2025-03-11 18:34:54 +00:00
Timothy Jaeryang Baek 8905d9e63b Merge pull request #11526 from rragundez/exlude-images-from-embeddings
Exlude images from embeddings
2025-03-11 18:32:38 +00:00
Timothy Jaeryang Baek 64fa37c15d Merge pull request #11545 from hurxxxx/fix/reset-taskId-after-conversation
fix: Reset taskId after completion to prevent incorrect cancellation behavior
2025-03-11 18:29:59 +00:00
Silentoplayz 2c99366543 feat: improve model dropdown highlight 2025-03-11 13:57:09 -04:00
Davi S. Zucon b1224b6839 fix code format 2025-03-11 12:40:31 -03:00
Davi S. Zucon 453200ca1e fix code format
fix code format
2025-03-11 12:39:15 -03:00
hurxxxx 1160e21d45 fix: reset taskId after conversation to prevent incorrect cancellation behavior 2025-03-11 21:18:53 +09:00
Timothy Jaeryang Baek 0e7164b4f5 Merge pull request #11520 from icsy7867/main
Added decodeURIcomponent function to several locations.
2025-03-11 10:33:41 +00:00
Rodrigo Agundez ac321f4b64 Add check if images and avoid trying to calculate embeddings 2025-03-11 12:50:44 +08:00
orenzhang 7bfda6652f feat(trace): optimize for trace env and instrument hooks 2025-03-11 11:53:03 +08:00
root 3fb477618e Added decodeURIcomponent function to several locations. 2025-03-10 17:40:40 -04:00
Tuna Çağlar Gümüş 9e7193b3d2 Update start_windows.bat 2025-03-10 22:37:57 +03:00
Davi S. Zucon 846509bf9f fix url value when response contains url tag
When the response contains b64 json, the "url" tag still exists but comes as null, the logic is to resolve this point where it contains the url tag, but empty, thus directing to b64_json
2025-03-10 15:59:08 -03:00
orenzhang c761e4fd08 feat(trace): opentelemetry instrument 2025-03-10 22:27:31 +08:00
Marko Henning 8b5b3f165a Add translation (partially) 2025-03-10 12:35:44 +01:00
Timothy Jaeryang Baek c2046b9247 refac 2025-03-10 11:16:30 +00:00
Tuna Çağlar Gümüş c5efeb2499 Add SSL Integration Comments and WebSocket Auto-Fix in start_windows.bat
This PR enhances the start_windows.bat script by:

Adding comments for SSL integration, making it easier for users to enable SSL when needed.
Including the -ws auto flag to address WebSocket-related issues, ensuring a smoother experience for users facing connection problems.
These improvements make the script more user-friendly and help troubleshoot common setup challenges.
2025-03-10 13:39:59 +03:00
Timothy Jaeryang Baek 116e0559f6 refac: oauth 2025-03-10 09:42:59 +00:00
Timothy Jaeryang Baek 428d89784b Merge pull request #11484 from xinhai-ai/mobile_touch
fix: mobile touch
2025-03-10 06:27:35 -03:00
星海 077c805880 fix: mobile touch 2025-03-10 15:43:53 +08:00
Timothy Jaeryang Baek 352ed67667 refac: prompt template behaviour 2025-03-10 01:15:45 +00:00
Timothy Jaeryang Baek ec29772068 refac: styling 2025-03-09 23:58:48 +00:00
Timothy Jaeryang Baek 3cc44b9de5 Merge pull request #11460 from silentoplayz/horizontal-scrol-tags2
feat: Horizontal scroll for tags in model dropdown selector
2025-03-09 20:58:05 -03:00
Timothy Jaeryang Baek f8ac44cfbd Merge pull request #11464 from FabioPolito24/docling_context_extraction_engine
feat: Docling context extraction engine
2025-03-09 20:57:48 -03:00
Timothy Jaeryang Baek 0c5a1e84e3 Merge pull request #11472 from thiswillbeyourgithub/better_frontmatter_pip_install3
fix: install all the requirements at the same time
2025-03-09 20:57:06 -03:00
Timothy Jaeryang Baek 1fe4d49ac6 Merge pull request #11466 from captn-hook/dev
fix: opensearch environment variables fix
2025-03-09 20:56:34 -03:00
Timothy Jaeryang Baek 41a83f1dc5 refac: code update behaviour 2025-03-09 23:49:26 +00:00
thiswillbeyourgithub 9e41b8b024 fix: install all the requirements at the same time
Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>
2025-03-09 23:38:23 +01:00
Tristan H 4c98508c0b Merge pull request #3 from open-webui/dev
Dev
2025-03-09 09:51:31 -07:00
Tristan H 084e2caf6f Update config.py to correctly handle environment strings
As seen in line 1536 just above this, strings need to be converted to bools in order to work.
2025-03-09 09:48:35 -07:00
Timothy Jaeryang Baek a75f82755d Update bug_report.yaml 2025-03-09 09:48:35 -07:00
Timothy Jaeryang Baek c1d2e0d999 refac 2025-03-09 09:48:35 -07:00
Timothy Jaeryang Baek 165e861a1d Create config.yaml 2025-03-09 09:48:35 -07:00
Timothy Jaeryang Baek fc056b1397 Update bug_report.yaml 2025-03-09 09:48:35 -07:00
Fabio Polito de0f158b04 Merge remote-tracking branch 'upstream/dev' into docling_context_extraction_engine
merge upstream dev
2025-03-09 16:12:43 +00:00
Fabio Polito 9d6743824e fix: fix params DoclingLoader 2025-03-09 16:12:14 +00:00
Silentoplayz ae1f0f0a3c feat: horizontal scroll for model dropdown tags 2025-03-09 11:41:14 -04:00
Timothy Jaeryang Baek cdb5eae43a refac 2025-03-09 15:05:13 +00:00
Timothy Jaeryang Baek 26980fb859 refac 2025-03-09 15:01:36 +00:00
Timothy Jaeryang Baekandrecrudesce 53a2acd541 enh: local, external, direct model list filter
Co-Authored-By: recrudesce <6450799+recrudesce@users.noreply.github.com>
2025-03-09 15:00:13 +00:00
Timothy Jaeryang Baek c58f0844a3 refac 2025-03-09 14:48:11 +00:00
Timothy Jaeryang Baek 5cc43ae880 enh: image panzoom 2025-03-09 14:39:54 +00:00
Timothy Jaeryang Baek 1c211e32b3 refac 2025-03-09 11:18:28 +00:00
Timothy Jaeryang Baek 0dce81f646 Merge pull request #11423 from silentoplayz/confirmation-prompts
feat: add more confirmation prompts
2025-03-09 07:40:36 -03:00
Timothy Jaeryang Baek b8863545d5 Merge pull request #11428 from silentoplayz/sticky-tags
feat: Sticky tags
2025-03-09 07:32:05 -03:00
Timothy Jaeryang Baek 36dd630057 Merge pull request #11444 from open-webui/main
dev
2025-03-09 07:31:02 -03:00
Silentoplayz 1de142f435 sticky tags 2025-03-08 18:00:06 -05:00
Hermógenes Oliveira e936d7b53d fix: audio api endpoint filetype check
RFC2046 allows the Content-Type field to have additional parameters
after the main type/subtype information (Section 1).

Following RFC4281, many applications put codec information inside
parameters in the Content-Type. This is especially common for formats
that support many codecs, such as Ogg (RFC5334, Section 4).

The `/api/audio/transcriptions` endpoint is currently rejecting files
that contain parameters in the Content-Type field with a bad request
error.

This commit changes the current check in order to accept any
Content-Type field that begins with a supported type/subtype as listed
in the `supported_filetypes` tuple.

Since Content-Type here is provided by the user, I believe this check
is meant to prevent honest mistakes, like posting a PDF to an audio
processing endpoint, not as a security measure against possibly
malicious use. Therefore, I think it's OK not to validate the rest of
the field.
2025-03-08 18:03:30 -03:00
Fabio Polito 0aa42615f9 Merge remote-tracking branch 'upstream/dev' into docling_context_extraction_engine
merge upstream
2025-03-08 18:52:51 +00:00
Silentoplayz d669932137 add confirmation prompts 2025-03-08 13:42:24 -05:00
Timothy Jaeryang Baek 6b806ae12f Merge pull request #11413 from hurxxxx/fix/global-filter-cannot-disable
fix: Prevent modification of global filter settings in "Admin panel" - "Settings" - "Models"
2025-03-08 14:15:47 -04:00
Timothy Jaeryang Baek b03fc97e28 Update bug_report.yaml 2025-03-08 18:13:28 +00:00
Timothy Jaeryang Baek d7bfa395b0 refac 2025-03-08 18:10:34 +00:00
Timothy Jaeryang Baek 67cd4f2ab1 Create config.yaml 2025-03-08 18:08:51 +00:00
Timothy Jaeryang Baek dc78d2f758 Update bug_report.yaml 2025-03-08 18:06:08 +00:00
Timothy Jaeryang Baek d40e696468 enh: multiple replica app state sync 2025-03-08 17:59:15 +00:00
Timothy Jaeryang Baek 324cd94c53 refac: user message delete 2025-03-08 17:03:08 +00:00
Timothy Jaeryang Baek 4e36b9794f fix: logit bias issue 2025-03-08 16:50:30 +00:00
Timothy Jaeryang Baek 58ff221d1f refac 2025-03-08 16:48:32 +00:00
Timothy Jaeryang Baek 1e36282708 refac 2025-03-08 16:23:20 +00:00
Timothy Jaeryang Baek 22b88f9593 Merge pull request #11324 from kela4/main
fix: opensearch vector db query structures, result mapping, filters, bulk query actions, knn_vector usage
2025-03-08 12:19:38 -04:00
Timothy Jaeryang Baek e4a79a0b0e Merge pull request #11394 from dannyl1u/fix/logit-bias-workspace-models
fix: logit_bias bug in workspace models
2025-03-08 12:11:53 -04:00
Timothy Jaeryang Baek 8375c2c32d Merge pull request #11397 from luke3butler/tavily-extract-depth
feat: Add environment variable to configure tavily extract depth
2025-03-08 12:11:37 -04:00
Timothy Jaeryang Baek e7013d45c5 Merge pull request #11409 from chengscott/patch-1
[feat] anonymous bind when LDAP_APP_DN is not specified
2025-03-08 12:11:13 -04:00
Timothy Jaeryang Baek ac507720c8 Merge pull request #11401 from TiancongLx/dev
i18n: update zh-TW
2025-03-08 12:10:58 -04:00
Timothy Jaeryang Baek d59433bf7e refac 2025-03-08 15:48:09 +00:00
hurxxxx 40257afeed fix: Using disabled attribute for elements is common 2025-03-09 00:12:37 +09:00
hurxxxx 851931fdf6 fix: Global filter cannot be modified in the model (changes have no effect) 2025-03-08 23:24:52 +09:00
Scott Cheng 8bd527be6a anonymous bind when LDAP_APP_DN is not specified 2025-03-08 21:19:21 +08:00
Tiancong Li e5b02f732b i18n: update zh-TW 2025-03-08 16:18:22 +08:00
Luke 7c4a9c2aea fix: correct type handling for TAVILY_EXTRACT_DEPTH configuration 2025-03-08 01:07:06 -05:00
Luke 7917128ed3 enh: enable configuration for tavily extract depth 2025-03-08 00:43:02 -05:00
dannyl1u 3c6a834ff4 fix: logit_bias in workspace models 2025-03-07 19:54:06 -08:00
Timothy Jaeryang Baek dc3abc2bcb refac 2025-03-08 00:13:58 +00:00
Timothy Jaeryang Baek 3ab917cdd0 Merge pull request #11325 from luke3butler/dev
feat: Add `tavily` as a `RAG_WEB_LOADER_ENGINE` option via extract API
2025-03-07 20:11:39 -04:00
Timothy Jaeryang Baek e3116aac76 Merge pull request #11361 from OriginalSimon/dev
18n: Update Ukrainian translation
2025-03-07 19:59:42 -04:00
Timothy Jaeryang Baek e85d69fe60 Merge branch 'dev' into dev 2025-03-07 19:59:33 -04:00
Timothy Jaeryang Baek 027c5c4b72 Merge pull request #11383 from Kylapaallikko/dev
i18n: Update Finnish Translation
2025-03-07 19:59:03 -04:00
Timothy Jaeryang Baek 88303093c0 Merge pull request #11384 from Peter-De-Ath/hotfix/tool-calls-params
fix: bug where default params in tools calls always used
2025-03-07 19:58:05 -04:00
Peter De-Ath 7e3be60f0e formating 2025-03-07 20:37:22 +00:00
Peter De-Ath 3b39807377 fix: updatepost_response_handler nativ tools handler to use parameters from properties fixing defaults always used 2025-03-07 20:07:36 +00:00
Kylapaallikko 17a4360566 Update translation.json 2025-03-07 19:44:56 +02:00
Timothy Jaeryang Baek 7a1cf1095a Merge pull request #11358 from OrenZhang/i18n_translation
i18n(common): add i18n translation
2025-03-07 13:33:59 -04:00
Timothy Jaeryang Baek ab92737a9a refac 2025-03-07 17:24:52 +00:00
Simon 27a6d1917d Update translation.json 2025-03-07 13:48:56 +01:00
Simon 25544b38bd Merge branch 'open-webui:dev' into dev 2025-03-07 13:42:46 +01:00
Simon cf449d1c7e Update translation.json 2025-03-07 13:42:05 +01:00
Simon 20826e15b3 Update translation.json 2025-03-07 13:31:56 +01:00
Timothy Jaeryang Baek d7a0437438 refac: model sort list 2025-03-07 12:16:16 +00:00
orenzhang b61ea393b4 refactor(lint): code lint 2025-03-07 20:03:53 +08:00
orenzhang dc04123330 Merge branch 'dev' into i18n_translation 2025-03-07 20:03:33 +08:00
orenzhang 72ea6dd9f1 refactor(lint): code lint 2025-03-07 19:59:09 +08:00
Timothy Jaeryang Baek f8f54237c6 Merge pull request #11290 from panda44312/patch-5
i18n: Update zh-cn
2025-03-07 06:06:40 -04:00
Timothy Jaeryang Baek 04921be9f1 Merge pull request #11287 from Youggls/dev
fix(chat): resolve duplicate collapsible IDs causing citation modal failures
2025-03-07 06:05:13 -04:00
Fabio Polito 1a066c0357 fix: fixed lock and pyproject 2025-03-07 00:32:02 +00:00
Fabio Polito 09ccd000d8 fix: fixing lock and pyproject 2025-03-07 00:27:59 +00:00
Fabio Polito e3eef58310 feat: merge with dev 2025-03-07 00:22:47 +00:00
Fabio Polito 17dbb3ec57 fix: fix typo 2025-03-07 00:19:26 +00:00
Peter De-Ath d862295a05 fix: update chat completion tools handler to use parameters from spec fixing defaults always used 2025-03-06 23:27:52 +00:00
Luke 987954c817 feat: Add Tavily extract web loader integration 2025-03-06 18:15:18 -05:00
Katharina 6cb0c0339a fix: opensearch vector db query structures, result mapping, filters, bulk query actions, knn_vector usage 2025-03-06 23:49:54 +01:00
wangtunan 7d1a094f9b fix: stopTask func need use async/await syntax 2025-03-07 00:07:04 +08:00
wangtunan 533c99e384 fix: stopTask func need use async/await syntax 2025-03-06 23:56:41 +08:00
orenzhang 92fb1109b6 i18n(common): add i18n translation 2025-03-06 20:16:34 +08:00
Fabio Polito 98857184ff Merge remote-tracking branch 'upstream/dev' into docling_context_extraction_engine
merge with dev branch
2025-03-06 12:12:50 +00:00
Panda 98376fbbce i18n: zh-cn 2025-03-06 13:08:35 +01:00
Panda 561f4d5d69 i18n: zh-cn 2025-03-06 11:26:04 +01:00
Perry Li 9cc9df3018 fix(chat): resolve duplicate collapsible IDs causing citation modal failures
Fix an issue where clicking inline citations in subsequent chat messages failed to open the citation modal when multiple collapsible sections are present.

The root cause was duplicate "collapsible-sources" IDs assigned to all Collapsible components. This led document.getElementById() to always return the first instance, preventing subsequent messages from opening their CitationModal.

Changes:
- Modify Collapsible ID generation in Citations.svelte to use unique IDs with "collapsible-${message.id}" pattern
- Update ResponseMessage.svelte's onSourceClick handler to reference the dynamic collapsible IDs
- Ensure proper citation modal binding for each chat message's sources

Affected components:
- Collapsible (expandable content sections)
- CitationsModal (citation detail popup)

This ensures each chat message's sources are independently collapsible and maintains proper citation modal binding throughout message history.
2025-03-06 10:10:53 +00:00
Marko Henning 41a4cf7106 Added new k_reranker parameter 2025-03-06 10:47:57 +01:00
Timothy Jaeryang Baek 3b70cd64d7 Merge pull request #11257 from open-webui/dev
0.5.20
2025-03-05 19:44:45 -08:00
Timothy Jaeryang Baek 1173459eee doc: changelog 2025-03-05 19:42:41 -08:00
Timothy Jaeryang Baek c0ecff9d70 fix: pinyin keyboard 2025-03-05 19:36:30 -08:00
Timothy Jaeryang Baek d4fca9dabf chore: format 2025-03-05 19:17:41 -08:00
Timothy Jaeryang Baek aaaebfabbe chore: format 2025-03-05 19:16:59 -08:00
Timothy Jaeryang Baek 6eccf8668e fix: non-root container issue 2025-03-05 19:14:43 -08:00
Timothy Jaeryang Baekandrecrudesce 5e78a5c510 enh: enable_code_execution toggle
Co-Authored-By: recrudesce <6450799+recrudesce@users.noreply.github.com>
2025-03-05 19:06:28 -08:00
Timothy Jaeryang Baek dce24225e0 Merge pull request #11249 from TiancongLx/dev
i18n: update zh-TW
2025-03-05 18:52:34 -08:00
Timothy Jaeryang Baek f9b44c6bf2 refac 2025-03-05 18:39:32 -08:00
Timothy Jaeryang Baek f573a90a56 Merge pull request #11254 from open-webui/main
dev
2025-03-05 18:11:18 -08:00
Timothy Jaeryang Baek 23bb0d927f chore: format 2025-03-05 18:10:24 -08:00
Fabio Polito 2982893d0d fix: format fixes 2025-03-06 00:39:00 +00:00
Tiancong Li 6b0af942db i18n: update zh-TW 2025-03-06 07:23:55 +08:00
Fabio Polito 0716f96da8 style: change style in DoclingLoader 2025-03-05 23:15:55 +00:00
Timothy Jaeryang Baek f95a482c24 Merge pull request #11209 from aleixdorca/dev
Update catalan translation.json
2025-03-05 14:56:37 -08:00
Timothy Jaeryang Baek edf94d732b refac 2025-03-05 14:54:48 -08:00
Fabio Polito 9aa407dbd2 feat: merge with main 2025-03-05 22:04:34 +00:00
Timothy Jaeryang Baek 73a77abd20 Merge pull request #11245 from tupe2009/kleqon.fix-es-bugs
fix: ElasticSearch indexes delete and upsert bugs(Post 0.5.19 release)
2025-03-05 13:36:55 -08:00
ofek a8f205213c fixed es bugs 2025-03-05 23:19:56 +02:00
Fabio Polito a44b35e99e fix: fix DoclingLoader input params 2025-03-05 17:53:45 +00:00
Timothy Jaeryang Baek 4770285c04 Merge pull request #11211 from open-webui/dev
fix: site.webmanifest
2025-03-05 00:45:21 -08:00
Timothy Jaeryang Baek 1639fbb544 fix: site.webmanifest 2025-03-05 00:45:04 -08:00
Aleix Dorca 2dc5f3c30c Update catalan translation.json 2025-03-05 08:42:16 +01:00
Timothy Jaeryang Baek 1a51584fe0 Merge pull request #10939 from open-webui/dev
0.5.19
2025-03-04 22:22:20 -08:00
Timothy Jaeryang Baek 976c94ba5a chore: pyproject 2025-03-04 22:13:51 -08:00
Timothy Jaeryang Baek 4df74690e1 doc: changelog 2025-03-04 22:10:51 -08:00
Timothy Jaeryang Baek e2d60bd92e chore: format 2025-03-04 22:10:47 -08:00
Timothy Jaeryang Baek c2eada36f1 Merge pull request #10898 from hurxxxx/fix/update-msal-browser-version
fix: update msal browser version
2025-03-04 21:56:22 -08:00
Timothy Jaeryang Baek 0ce6975ec8 chore: bump 2025-03-04 21:49:42 -08:00
Timothy Jaeryang Baek 1ddc56fcf8 Merge pull request #11201 from open-webui/main
dev
2025-03-04 21:43:33 -08:00
Timothy Jaeryang Baek 7f7365db4f Merge pull request #11132 from dongs0104/dev
fix: email claim constant
2025-03-04 21:39:28 -08:00
Timothy Jaeryang Baek c9e2ba56c6 Merge pull request #11198 from xinhai-ai/refa_filters
chore: move the filter_type check earlier to avoid unnecessary valve reads.
2025-03-04 21:27:36 -08:00
Timothy Jaeryang Baek b01c9184c2 chore: format 2025-03-04 21:24:17 -08:00
星海 3ee1ae8c95 refac: filters 2025-03-05 13:05:14 +08:00
星海 8ce6c8cf78 refac: filters 2025-03-05 13:00:45 +08:00
Timothy Jaeryang Baek fbf4f5eb30 refac 2025-03-04 18:19:05 -08:00
Timothy Jaeryang Baek 6c77e6fdb3 refac 2025-03-04 18:08:43 -08:00
Timothy Jaeryang Baek 3b74431ea3 refac: filters 2025-03-04 18:04:55 -08:00
Timothy Jaeryang Baek 53fe7c460b Merge pull request #11178 from silentoplayz/fix
chore: Update ToolkitEditor.svelte
2025-03-04 17:53:47 -08:00
Timothy Jaeryang Baek f39556b933 Merge pull request #11163 from tidely/pathfix
chore: Use platform specific path separators
2025-03-04 17:53:21 -08:00
Timothy Jaeryang Baek cffd02defe Merge pull request #11153 from panda44312/patch-4
i18n: update ZH-CN
2025-03-04 17:42:05 -08:00
Timothy Jaeryang Baek bdc6088159 Merge pull request #11151 from TiancongLx/dev
i18n: update zh-TW
2025-03-04 17:41:57 -08:00
Timothy Jaeryang Baek 2a75a85556 refac 2025-03-04 17:40:32 -08:00
Silentoplayz 94c025c6d7 Update ToolkitEditor.svelte
fix
2025-03-04 17:46:24 -05:00
Timothy Jaeryang Baek 8961bc2453 Merge pull request #11173 from TFWol/patch-2
chore: Revamp Feature Request template
2025-03-04 13:49:07 -08:00
TFWol cb82c7062a Revamp Feature Request template 2025-03-04 11:18:50 -08:00
tidely b15814c42f chore: remove unnecessary Path conversions
Remove unnecessary `pathlib.Path` conversions. (CACHE_DIR and DATA_DIR)

Use `/` Path joining shorthand to ensure using platform specific Path separators (Windows: \\, Unix: /)
2025-03-04 19:53:52 +02:00
Panda 023c8bb5b4 i18n: zh-cn Update 2025-03-04 16:08:06 +01:00
Tiancong Li 500440ebec i18n: update zh-TW 2025-03-04 22:51:24 +08:00
Timothy Jaeryang Baek b94de4f002 refac 2025-03-04 02:45:05 -08:00
Timothy Jaeryang Baek 039a1e1f14 refac: assets 2025-03-04 01:47:17 -08:00
Timothy Jaeryang Baek 14a6c1f496 refac: favicon 2025-03-04 01:30:22 -08:00
Timothy Jaeryang Baek 0a295ff56d refac: icons 2025-03-04 01:25:47 -08:00
Timothy Jaeryang Baek 36ffa9824b refac 2025-03-04 01:16:25 -08:00
Timothy Jaeryang Baek e3769c1073 refac 2025-03-04 01:16:08 -08:00
Timothy Jaeryang Baek d78fe4decc Merge pull request #11073 from vincent-thevenin/dev
fix: fix issue with call voice recording starting before voice detection
2025-03-04 00:55:03 -08:00
Timothy Jaeryang Baek 7b442e4be0 Merge pull request #11141 from Youggls/dev
fix: correct parameter name for MilvusClient instantiation
2025-03-04 00:54:49 -08:00
Timothy Jaeryang Baek d17ac95f95 Merge pull request #11143 from panda44312/patch-3
i18n: zh-cn
2025-03-04 00:53:31 -08:00
Panda 59c3203990 IUpdate translation.json 2025-03-04 09:48:03 +01:00
Timothy Jaeryang Baek a4747c88e0 refac 2025-03-04 00:33:19 -08:00
Timothy Jaeryang Baek 39ea59edc8 chore: format 2025-03-04 00:32:27 -08:00
Perry Li 67ed61d022 fixbug: correct parameter name for MilvusClient instantiation
Replace incorrect parameter 'database=MILVUS_DB' with valid 'db_name=MILVUS_DB'
2025-03-04 16:02:19 +08:00
Dong Shin b8f3abda5a fix: email claim constant 2025-03-04 15:50:04 +09:00
Timothy Jaeryang Baek 8697f72068 refac: styling 2025-03-03 22:44:03 -08:00
Timothy Jaeryang Baek 3e7077bb73 refac 2025-03-03 22:24:19 -08:00
Timothy Jaeryang Baek 5f89c1b137 enh: model selector tag filter 2025-03-03 21:47:27 -08:00
Timothy Jaeryang Baek 811e1f92b1 refac 2025-03-03 21:27:48 -08:00
Timothy Jaeryang Baek 15cbccc8f5 enh: code block collapse 2025-03-03 21:10:15 -08:00
Timothy Jaeryang Baek 1cfa491179 Merge pull request #10868 from tidely/loggingnamemap
chore: use logging.getLevelNamesMapping() for validating log level
2025-03-03 20:55:22 -08:00
Timothy Jaeryang Baek 35e7e07821 refac: cuda error gc 2025-03-03 20:55:07 -08:00
Timothy Jaeryang Baek 9ff54288ef refac 2025-03-03 20:53:14 -08:00
Timothy Jaeryang Baek baca6db680 Merge pull request #10987 from alpha-pet/feat-submit-on-ctrl-enter
feat: add alternative input configuration where Ctrl-Enter is required to send chat messages
2025-03-03 20:39:53 -08:00
Timothy Jaeryang Baek 6bd2bc5683 refac 2025-03-03 20:34:45 -08:00
Timothy Jaeryang Baek 029625ec4e refac 2025-03-03 20:34:17 -08:00
Timothy Jaeryang Baek 7e65f7fa4d fix: chat event handler not being registered on sign in 2025-03-03 20:31:35 -08:00
Timothy Jaeryang Baek 80f5573cf3 refac: AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST 2025-03-03 20:24:10 -08:00
Timothy Jaeryang Baek 1236157800 fix: timestamp missing in edited user message 2025-03-03 20:21:39 -08:00
Timothy Jaeryang Baek e628bfe6ff fix 2025-03-03 20:16:40 -08:00
Timothy Jaeryang Baek bb2bd7d721 Merge pull request #11120 from OrenZhang/fix_jupyter
fix(jupyter): fix kernel_id not set and optimize code
2025-03-03 20:15:09 -08:00
Timothy Jaeryang Baek 9c107f9d2d refac: images "url" fallback 2025-03-03 20:07:59 -08:00
orenzhang fafd847f18 refactor(jupyter): change log message for execution failed 2025-03-04 12:01:08 +08:00
orenzhang 3a7e5a5f31 feat(jupyter): check response status for destroy kernel 2025-03-04 12:00:04 +08:00
orenzhang 613d278afc refactor(jupyter): change log level 2025-03-04 11:58:32 +08:00
orenzhang 96e0c4d7b8 refactor(jupyter): replace httpx with aiohttp 2025-03-04 11:56:11 +08:00
Timothy Jaeryang Baek 46cea1f904 fix: ldap email case sensitive 2025-03-03 19:52:27 -08:00
Timothy Jaeryang Baek d844fc7edb refac: inline citation handling 2025-03-03 19:48:00 -08:00
Timothy Jaeryang Baek 3468dda556 refac: rm unused api endpoint 2025-03-03 19:33:55 -08:00
Timothy Jaeryang Baek e6ff4169e1 Merge pull request #11066 from NibbinNone/dev
feat: add support for reasoning_content
2025-03-03 16:37:28 -08:00
Timothy Jaeryang Baek 6f8c1a8f0d Merge pull request #11089 from tupe2009/kleqon.feat-add-elasticsearch-support
feat: Elasticsearch as a vector store support
2025-03-03 16:34:39 -08:00
Timothy Jaeryang Baek d529be86fe Merge pull request #11109 from panda44312/patch-2
i18n: Update zh-cn
2025-03-03 16:34:21 -08:00
Panda 3ad4b10470 i18n: Update zh-cn 2025-03-04 00:17:02 +01:00
Timothy Jaeryang Baek 376fce273e Merge pull request #11079 from MeteorSkyOne/dev
fix: allow error returns None
2025-03-03 14:57:54 -08:00
Timothy Jaeryang Baek c19960002b Merge pull request #11086 from aindriu80/main
(i18n)Updated Irish translations
2025-03-03 14:57:01 -08:00
Timothy Jaeryang Baek dc2b8fd327 Merge branch 'dev' into main 2025-03-03 14:56:48 -08:00
ofek 737dfd2763 added elasticsearch support 2025-03-03 23:39:42 +02:00
tarmst 1ad80490de Add read/write access control for files from knowledge 2025-03-03 20:03:21 +00:00
Aindriú Mac Giolla Eoin 3fa323d1a1 Updated Irish translations 2025-03-03 18:41:11 +00:00
MeteorSky a01ef6cfa0 fix: allow error returns None 2025-03-04 00:08:49 +08:00
Timothy Jaeryang Baek c7d4d2e41f Merge pull request #11067 from TiancongLx/dev
i18n: update zh-TW (fix typo)
2025-03-03 06:49:27 -08:00
orenzhang 744ffbb1fb fix(jupyter): fix kernel_id not set and optimize code 2025-03-03 22:18:02 +08:00
vincent-thevenin 4d6132b9de fix: fix issue with call voice recording starting before voice detection 2025-03-03 13:59:28 +01:00
Tiancong Li 7a31ff6a2f i18n: update zh-TW (fix typo) 2025-03-03 16:55:37 +08:00
CorbinChen 516f1cf67b feat: add support for reasoning_content 2025-03-03 16:47:35 +08:00
Timothy Jaeryang Baek 3d6e48b05e Merge pull request #11043 from TiancongLx/dev
i18n: update zh-TW
2025-03-02 12:16:56 -08:00
Tiancong Li 3dd492627e i18n: update zh-TW 2025-03-02 17:04:58 +08:00
Timothy Jaeryang Baek 66210b95fc Merge pull request #11038 from satlus/pwa-fix-linkrel
fixed manifest in app.html restoring PWA
2025-03-01 19:55:08 -08:00
satlus 6e58d99920 fixed manifest link rel, restoring PWA 2025-03-01 19:43:40 -05:00
Timothy Jaeryang Baek 6471f12668 Merge pull request #11033 from dtaivpp/main
fix: Changed to use collection_name and fixed bulk indexing missing index.
2025-03-01 16:00:13 -08:00
David Tippett f3c4c2b8e3 Changed to use colleciton name and fixed bulk indexing missing index. 2025-03-01 13:26:19 -05:00
Timothy Jaeryang Baek a73b6448c5 Merge pull request #11032 from cheahjs/chore/build-arm-on-arm
ci: Update GitHub Actions runner selection for multi-platform builds
2025-03-01 08:23:54 -08:00
Jun Siang Cheah 3238981202 ci: Update GitHub Actions runner selection for multi-platform builds 2025-03-01 16:04:26 +00:00
Timothy Jaeryang Baek 59ddce1ea3 chore: bump 2025-03-01 08:00:40 -08:00
Timothy Jaeryang Baek 2b025b267a chore: bump 2025-03-01 07:57:08 -08:00
Timothy Jaeryang Baek efe8c4ca69 chore: format 2025-03-01 07:28:00 -08:00
Timothy Jaeryang Baek d7088efe73 fix: "stream" hook not working 2025-03-01 06:56:24 -08:00
Timothy Jaeryang Baek 05c5e73304 Merge pull request #10373 from dannyl1u/logit_bias
feat: logit bias
2025-03-01 06:13:19 -08:00
Timothy Jaeryang Baek f00f518abe Merge pull request #11011 from open-webui/dependabot/pip/backend/dev/sqlalchemy-2.0.38
chore(deps): bump sqlalchemy from 2.0.32 to 2.0.38 in /backend
2025-02-28 18:44:20 -08:00
Timothy Jaeryang Baek 639f4a44e0 Merge pull request #11013 from open-webui/dependabot/pip/backend/dev/black-25.1.0
chore(deps): bump black from 24.8.0 to 25.1.0 in /backend
2025-02-28 18:44:14 -08:00
Timothy Jaeryang Baek 92e1c654ce Merge pull request #11014 from open-webui/dependabot/pip/backend/dev/peewee-3.17.9
chore(deps): bump peewee from 3.17.8 to 3.17.9 in /backend
2025-02-28 18:44:07 -08:00
Timothy Jaeryang Baek 81d2df4df9 Merge pull request #11015 from open-webui/dependabot/pip/backend/dev/bcrypt-4.3.0
chore(deps): bump bcrypt from 4.2.0 to 4.3.0 in /backend
2025-02-28 18:43:57 -08:00
Timothy Jaeryang Baek 65949dbcbc Merge pull request #11012 from open-webui/dependabot/pip/backend/dev/uvicorn-standard--0.34.0
chore(deps): bump uvicorn[standard] from 0.30.6 to 0.34.0 in /backend
2025-02-28 18:43:47 -08:00
dependabot[bot] eb97e30b0a chore(deps): bump bcrypt from 4.2.0 to 4.3.0 in /backend
Bumps [bcrypt](https://github.com/pyca/bcrypt) from 4.2.0 to 4.3.0.
- [Changelog](https://github.com/pyca/bcrypt/blob/main/release.py)
- [Commits](https://github.com/pyca/bcrypt/compare/4.2.0...4.3.0)

---
updated-dependencies:
- dependency-name: bcrypt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 02:37:41 +00:00
dependabot[bot] 84518490c5 chore(deps): bump peewee from 3.17.8 to 3.17.9 in /backend
Bumps [peewee](https://github.com/coleifer/peewee) from 3.17.8 to 3.17.9.
- [Release notes](https://github.com/coleifer/peewee/releases)
- [Changelog](https://github.com/coleifer/peewee/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coleifer/peewee/compare/3.17.8...3.17.9)

---
updated-dependencies:
- dependency-name: peewee
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 02:37:36 +00:00
dependabot[bot] dd73ecbdc9 chore(deps): bump black from 24.8.0 to 25.1.0 in /backend
Bumps [black](https://github.com/psf/black) from 24.8.0 to 25.1.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.8.0...25.1.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 02:37:32 +00:00
dependabot[bot] 588a179b7f chore(deps): bump uvicorn[standard] from 0.30.6 to 0.34.0 in /backend
Bumps [uvicorn[standard]](https://github.com/encode/uvicorn) from 0.30.6 to 0.34.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.30.6...0.34.0)

---
updated-dependencies:
- dependency-name: uvicorn[standard]
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 02:37:27 +00:00
dependabot[bot] 244915cd1e chore(deps): bump sqlalchemy from 2.0.32 to 2.0.38 in /backend
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.32 to 2.0.38.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 02:37:24 +00:00
Timothy Jaeryang Baek 094d777e55 Merge pull request #11009 from amuwall/fix-typing-error
fix: typing error in replace_messages_variable func args
2025-02-28 18:34:24 -08:00
amuwall b430deab15 fix: fix typing error in args 2025-03-01 10:20:29 +08:00
Timothy Jaeryang Baek fe44e4d344 i18n(html): sync html language with i18n language 2025-02-28 16:06:28 -08:00
Timothy Jaeryang Baek 88c02d5a14 refac 2025-02-28 16:02:15 -08:00
Timothy Jaeryang Baek b75b891de1 Merge pull request #10983 from NovoNordisk-OpenSource/yvedeng/fix-redis-timeout-config
fix: add redis lock timeout config
2025-02-28 16:01:59 -08:00
Timothy Jaeryang Baek f1ce653830 Merge pull request #10992 from softue/i18n-floating-buttons
i18n floating buttons (en-US and pt-BR)
2025-02-28 15:59:49 -08:00
Rômulo Mendes Figueiredo c06484297b i18n: ask and explain floating buttons 2025-02-28 12:39:57 -03:00
Timothy Jaeryang Baek 331caad5b8 fix 2025-02-28 07:36:56 -08:00
Thomas Rehn 8b3fcfea13 feat: add alternative input configuration where Ctrl-Enter is required to send chat messages 2025-02-28 15:23:03 +01:00
Timothy Jaeryang Baek 05599e1bb5 Merge pull request #10967 from OrenZhang/i18n_zh_cn
i18n(zh-cn): add chinese translation
2025-02-28 03:21:51 -08:00
orenzhang bcdbc4fb8a i18n(zh-cn): add chinese translation 2025-02-28 17:47:27 +08:00
Yifang Deng 41a2b86e70 fix: add redis lock timeout config 2025-02-28 10:12:51 +01:00
Danny Liu f9292ab4d2 Merge branch 'dev' into logit_bias 2025-02-27 23:51:13 -08:00
dannyl1u f4bd094128 Merge remote-tracking branch 'origin' into logit_bias 2025-02-27 23:48:22 -08:00
dannyl1u 90aa29528c logit_bias: handle comma seperated values 2025-02-27 23:13:30 -08:00
dannyl1u 34e3cb6881 logit bias: update tooltip message 2025-02-27 23:13:09 -08:00
Timothy Jaeryang Baek d0ddb0637e enh: web embed bypass embedding and retrieval support 2025-02-27 16:34:05 -08:00
hurxxxx 2405809f92 Merge branch 'main' into fix/update-msal-browser-version 2025-02-28 08:44:06 +09:00
hurxxxx 77579f5509 chore: cleanup 2025-02-28 08:42:02 +09:00
Timothy Jaeryang Baek 5e33955566 Merge pull request #10940 from TheMasterFX/update-de-DE-translation
i18n: Update de-DE translation
2025-02-27 15:17:59 -08:00
Timothy Jaeryang Baek 73c0262345 Merge branch 'dev' into update-de-DE-translation 2025-02-27 15:17:51 -08:00
Timothy Jaeryang Baek a3ea924f0a Merge pull request #10941 from TiancongLx/dev
i18n: update zh-TW
2025-02-27 15:17:03 -08:00
Tiancong Li 01435997b9 i18n: update zh-TW 2025-02-28 06:29:53 +08:00
Timmo 90fe437e29 i18n: Update de-DE translation - fix typos 2025-02-27 23:23:05 +01:00
Timmo 43077b82b7 i18n: Update de-DE translation 2025-02-27 23:09:02 +01:00
Timothy Jaeryang Baek 1b56a8f3cb Merge pull request #10864 from kurtdami/perplexity_integration
feat: add perplexity integration to web search
2025-02-27 13:51:03 -08:00
Timothy Jaeryang Baek 1d27402dd0 Merge pull request #10910 from saraangelmurphy/awsworkloadidentity
feat: add AWS workload identity support
2025-02-27 13:50:36 -08:00
Timothy Jaeryang Baek 6f7161acf8 chore: format 2025-02-27 13:04:39 -08:00
Timothy Jaeryang Baek 54e3ca8e6c refac: rm confusing defaults 2025-02-27 13:03:28 -08:00
Timothy Jaeryang Baek 95cadaca72 Merge pull request #10933 from open-webui/dev
0.5.18
2025-02-27 12:00:52 -08:00
Timothy Jaeryang Baek e26c443815 0.5.18 2025-02-27 12:00:23 -08:00
Timothy Jaeryang Baek 046f1fb30a Merge pull request #10927 from open-webui/dev
0.5.18
2025-02-27 11:50:08 -08:00
Timothy Jaeryang Baek 63d825692e doc: changelog 2025-02-27 11:49:59 -08:00
Timothy Jaeryang Baek 70667d5cc8 refac 2025-02-27 11:45:25 -08:00
Timothy Jaeryang Baek 2ac0eae99e Merge pull request #10925 from SleepyYui/fix-10905
fix: Fix OpenAI connection not actually deleting
2025-02-27 11:44:20 -08:00
Timothy Jaeryang Baek 1dd442f38b Merge pull request #10919 from df-cgdm/main
**fix** Resolve a bug in /api/models/base which was not returning openai models when ENABLE_FORWARD_USER_INFO_HEADERS is true
2025-02-27 11:42:51 -08:00
Yui 94c19f73b0 add config update when deleting openai model 2025-02-27 20:41:30 +01:00
Timothy Jaeryang Baek ed0b9be4e3 fix 2025-02-27 11:39:59 -08:00
Timothy Jaeryang Baek 866d02bbae refac 2025-02-27 11:39:00 -08:00
Timothy Jaeryang Baek f7c5cd486b Merge pull request #10908 from barnabehvrd/main
i18n: Updated translations for fr-FR
2025-02-27 11:37:58 -08:00
Timothy Jaeryang Baek 660a44c918 fix: insecure connection over LAN 2025-02-27 11:37:44 -08:00
Didier FOURNOUT b6873153c1 resolve a bug in /api/models/base not returning openai models when ENABLE_FORWARD_USER_INFO_HEADERS is true 2025-02-27 19:32:15 +00:00
df-cgdm 24a2e84692 Merge branch 'open-webui:main' into main 2025-02-27 19:13:00 +00:00
Sara Angel-Murphy 5e873bc643 feat: add AWS workload identity support 2025-02-27 13:12:54 -05:00
v0ltis f643182eb0 Updated french translation 2025-02-27 19:04:53 +01:00
hurxxxx c5cfcc1229 chore: cleanup 2025-02-27 23:16:52 +09:00
hurxxxx 203dfdedf1 Update deprecated msal-browser version to the latest 2025-02-27 23:12:09 +09:00
hurxxxx febc9ab885 Merge remote-tracking branch 'upstream/main' 2025-02-27 21:08:20 +09:00
Timothy Jaeryang Baek 38fb9d5fd8 chore: jspdf depedency 2025-02-27 03:54:16 -08:00
Timothy Jaeryang Baek 15485e7c5d Merge pull request #10469 from open-webui/dev
0.5.17
2025-02-27 03:46:08 -08:00
Timothy Jaeryang Baek 8241fa2e12 doc: changelog 2025-02-27 03:45:33 -08:00
Timothy Jaeryang Baek 37a7dd6d33 chore: format 2025-02-27 02:18:44 -08:00
Timothy Jaeryang Baek 85b7ec9387 Merge pull request #10873 from TiancongLx/dev
i18n: update zh-TW
2025-02-27 02:17:33 -08:00
Tiancong Li b838a1df99 i18n: update zh-TW 2025-02-27 17:57:10 +08:00
tidely d7b18b662b chore: use logging.getLevelNamesMapping()
Use `logging.getLevelNamesMapping()` for getting all valid logging levels. This also allows adding new ones using `logging.addLevel()`. This feature was [added](https://docs.python.org/3.11/library/logging.html#logging.getLevelNamesMapping) in Python 3.11 which is above the minimum supported Python version for open-webui.
2025-02-27 11:19:27 +02:00
kurtdami b061775932 feat: add perplexity integration to web search 2025-02-27 00:30:48 -08:00
Timothy Jaeryang Baek 8c4d967ef4 refac: evaluations settings ui 2025-02-26 23:58:43 -08:00
Timothy Jaeryang Baek ce7cf62a55 refac: dedup 2025-02-26 23:51:39 -08:00
Timothy Jaeryang Baek 0a4dbf7cf0 refac 2025-02-26 23:41:09 -08:00
Timothy Jaeryang Baek fcbdfbd744 refac 2025-02-26 23:35:09 -08:00
Timothy Jaeryang Baek 1ae702b8a6 Merge pull request #10860 from open-webui/audit-log-dev
feat: add audit logging feature
2025-02-26 23:19:37 -08:00
Timothy Jaeryang Baek 2d379cb35f chore: pyproject 2025-02-26 23:19:19 -08:00
Timothy Jaeryang Baek 76e90d9f3f Merge pull request #10436 from victorstevansuse/feat/audits
feat: add audit logging feature
2025-02-26 23:15:10 -08:00
Timothy Jaeryang Baekandsilentoplayz da8c42ee49 feat: Sort models by name in ascending/descending order
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2025-02-26 23:12:46 -08:00
Timothy Jaeryang Baek ddb30589e3 chore: format
HIDE MODELS
2025-02-26 22:18:18 -08:00
Timothy Jaeryang Baek ef734833a5 fix 2025-02-26 21:22:51 -08:00
Timothy Jaeryang Baek 40ddd172e0 refac: web search settings ui 2025-02-26 15:56:45 -08:00
Timothy Jaeryang Baek 57010901e6 enh: bypass embedding and retrieval 2025-02-26 15:42:19 -08:00
Timothy Jaeryang Baek 1c2e36f1b7 refac 2025-02-26 13:59:08 -08:00
Timothy Jaeryang Baek 34aeaaf020 refac 2025-02-26 13:54:26 -08:00
Timothy Jaeryang Baek fa91d83ac3 refac: documents settings ui 2025-02-26 13:48:56 -08:00
Timothy Jaeryang Baek 78a8ef8e66 refac: audio file handling 2025-02-26 13:09:52 -08:00
Timothy Jaeryang Baek 46ac6f2b29 fix 2025-02-26 12:53:07 -08:00
Timothy Jaeryang Baek 33d3558ca9 Merge pull request #10817 from NovoNordisk-OpenSource/ivaroli/adding-json-as-supported-file-type
fix: Using the TextLoader instead of Tika for JSON files
2025-02-26 12:49:29 -08:00
Timothy Jaeryang Baek c1c92b0c03 Merge pull request #10820 from oyve/dev
i18n: Update translation.json for nb-NO
2025-02-26 12:49:02 -08:00
Øyvind 618307f35b Update translation.json
Fill all empty translation
2025-02-26 16:29:47 +01:00
Ívar Óli Sigurðsson c5a09cdd21 adding a comma 2025-02-26 15:27:03 +01:00
Ívar Óli Sigurðsson 661711164a Adding json as a known source for Tika 2025-02-26 15:11:21 +01:00
Timothy Jaeryang Baek 80efaaffdd Merge pull request #10810 from panda44312/patch-1
i18n: Update zh-cn translation
2025-02-26 04:29:41 -08:00
Panda 46f2dc0d11 Update zh-cn 2025-02-26 12:24:52 +01:00
Timothy Jaeryang Baek 674d6e08fc Merge pull request #10809 from TobiasGoerke/feat/update_timestamp_asynchronously
feat: update get_current_user to refresh last active timestamp asynchronously
2025-02-26 02:38:06 -08:00
Tobias Goerke 76891f4760 feat: update get_current_user to refresh last active timestamp asynchronously 2025-02-26 10:53:47 +01:00
Timothy Jaeryang Baek 20f0b02b38 Merge pull request #10755 from softue/check-if-enable-ldap-chroma
Conditional import of ldap3 and chromadb
2025-02-25 16:02:40 -08:00
Timothy Jaeryang Baek bef7a532cc refac 2025-02-25 16:01:29 -08:00
Timothy Jaeryang Baek ced508c912 Merge pull request #10783 from silentoplayz/share-fix
fix: community sharing for prompts and tools
2025-02-25 15:35:11 -08:00
Timothy Jaeryang Baek c883368842 Merge pull request #10786 from silentoplayz/confirm-clear-for-memories
feat: Confirmation prompt on 'Clear' for memories
2025-02-25 15:34:14 -08:00
Silentoplayz 8097b6a3ff Update ManageModal.svelte
no confirmation when no memories exist
2025-02-25 18:00:59 -05:00
Silentoplayz 7cfbf6489a Update ManageModal.svelte
feat: Add ConfirmDialog to 'Clear Memory' button
2025-02-25 17:53:13 -05:00
Silentoplayz 11967a780d Share fix
Fix
2025-02-25 17:05:05 -05:00
Timothy Jaeryang Baek 6cf0ceedba refac 2025-02-25 11:11:36 -08:00
Timothy Jaeryang Baek ec72dcba75 Merge pull request #10742 from hjer/improve-swedish-translation
i18n: Add and improve Swedish translation
2025-02-25 10:54:19 -08:00
Timothy Jaeryang Baek 54d7bf8f28 Merge branch 'dev' into improve-swedish-translation 2025-02-25 10:54:08 -08:00
Timothy Jaeryang Baek 3be5e3129b Merge pull request #10752 from NovoNordisk-OpenSource/yvedeng/standardize-logging
refactor: replace print statements with logging
2025-02-25 10:53:02 -08:00
Rômulo Mendes Figueiredo 2298bfbd7e refac: conditional import of ldap3 2025-02-25 13:07:53 -03:00
Yifang Deng 0e5d5ecb81 refactor: replace print statements with logging for better error tracking 2025-02-25 15:53:55 +01:00
Rômulo Mendes Figueiredo b52a7e3543 refac: conditional import of chromadb 2025-02-25 11:35:36 -03:00
hjer df1238229c add and improve swedish translation 2025-02-25 13:58:09 +01:00
Timothy Jaeryang Baek eafefcf838 chore: bump 2025-02-25 01:46:57 -08:00
Timothy Jaeryang Baek 9f27d7710b chore: format 2025-02-25 01:46:08 -08:00
Timothy Jaeryang Baek 7c68a424f8 refac 2025-02-25 01:44:39 -08:00
Timothy Jaeryang Baek 5d3249848d refac: allow image only message via enter 2025-02-25 01:40:17 -08:00
Timothy Jaeryang Baek 7e2b2ec761 fix: openai usage display issue 2025-02-25 01:35:59 -08:00
Timothy Jaeryang Baek b964b175d4 refac 2025-02-25 01:03:15 -08:00
Timothy Jaeryang Baek 46c4da4864 enh: "stream" hook 2025-02-25 01:00:29 -08:00
df-cgdm 126045318f Merge branch 'open-webui:main' into main 2025-02-25 07:37:57 +00:00
Timothy Jaeryang Baek 205013da2f Merge pull request #10683 from grandtele/fix/openai-o1-legacy-roles
fix: restore compatibility for older o1 models (o1-mini, o1-preview)
2025-02-24 23:35:18 -08:00
Timothy Jaeryang Baek abf36c0645 Merge pull request #10711 from jasonpnnl/send-usage-to-pipeline-outlet
fix: Include usage in chatCompleted handler for pipeline outlet functions
2025-02-24 23:34:18 -08:00
Timothy Jaeryang Baek e06111a362 refac 2025-02-24 23:21:03 -08:00
Timothy Jaeryang Baek cd3904046d refac 2025-02-24 20:19:32 -08:00
Jason E. Jensen 89aaf64209 add optional usage to chatCompleted messages 2025-02-24 22:32:08 +00:00
Timothy Jaeryang Baek 95ae2aeef3 Merge pull request #10704 from TiancongLx/dev
i18n: update zh-TW
2025-02-24 12:11:27 -08:00
Tiancong Li cefe274f74 i18n: update zh-TW 2025-02-25 04:03:16 +08:00
Timothy Jaeryang Baek d8bc3098db Merge pull request #9918 from df-cgdm/main
feat: Add  X-OpenWebUI when forwarding to ollama servers
2025-02-24 11:55:04 -08:00
Timothy Jaeryang Baek 628b89009c Merge pull request #10690 from hurxxxx/feat/onedrive-file-attach
feat: OneDrive file picker integration
2025-02-24 11:52:37 -08:00
Timothy Jaeryang Baek 23ff2988bf Merge branch 'dev' into feat/onedrive-file-attach 2025-02-24 11:51:59 -08:00
Timothy Jaeryang Baek e0c199255f Merge pull request #10666 from EkaterinePapava/main
i18n: Update Georgian translation
2025-02-24 11:37:18 -08:00
hurxxxx b2422b3c8f i18n: onedrive related 2025-02-25 01:56:33 +09:00
hurxxxx 4cc3102758 feat: onedrive file picker integration 2025-02-25 01:47:07 +09:00
grand 8c020488dd * fix: restore compatibility for older o1 models (o1-mini, o1-preview) 2025-02-24 12:04:06 +01:00
Gunwoo Hur 0335d479f9 feat: add onedrive file picker 2025-02-24 17:27:37 +09:00
Ekaterine Papava dcaab9d6b5 Update Georgian translation 2025-02-24 09:07:45 +01:00
Timothy Jaeryang Baek 0ba45ad82b Merge pull request #10617 from grandtele/fix/openai-o1-o3-role
fix: replace "system" with "developer" for o1 and o3 models
2025-02-23 22:33:59 -08:00
Timothy Jaeryang Baek 802f8809dd fix: codeblock 2025-02-23 21:39:34 -08:00
Timothy Jaeryang Baek 7a63947b94 fix: tailwind v4 ios 16.4 compatibility issue 2025-02-23 18:41:33 -08:00
Timothy Jaeryang Baek 737b1723c7 refac 2025-02-23 14:12:41 -08:00
Timothy Jaeryang Baek e90e254575 Merge pull request #10605 from silentoplayz/shortcuts-modal-update
feat: Add more keyboard shortcuts
2025-02-23 13:48:55 -08:00
Timothy Jaeryang Baek f8ad74fc42 refac 2025-02-23 13:32:19 -08:00
Timothy Jaeryang Baek 6c862b8fbf Merge pull request #10619 from OrenZhang/feat_s3_virtual_path
feat(s3): support for s3 virtual path style
2025-02-23 13:27:22 -08:00
Timothy Jaeryang Baek 4b908ea626 Merge pull request #10607 from TiancongLx/dev
i18n: update zh-TW
2025-02-23 13:24:04 -08:00
Timothy Jaeryang Baek b77937dfad Merge pull request #10634 from sebdanielsson/handle-no-location-access
fix: Handle no location permission
2025-02-23 13:23:47 -08:00
Sebastian b00e14eb3f Handle no location permission 2025-02-23 20:27:55 +01:00
orenzhang 9748a030f7 Merge remote-tracking branch 'oui/dev' into feat_s3_virtual_path 2025-02-23 20:54:04 +08:00
orenzhang 1060d62add refactor(s3): code lint 2025-02-23 20:52:22 +08:00
orenzhang 4c3dd84b32 feat(s3): support for s3 virtual path style 2025-02-23 20:31:08 +08:00
grand 82657acdce * fix: adjust role mapping for o1 and o3 models in openai_o1_o3_handler 2025-02-23 13:20:45 +01:00
Tiancong Li c96cc831d5 i18n: update zh-TW 2025-02-23 14:29:51 +08:00
Silentoplayz e41a5278f7 Update ShortcutsModal.svelte
fix
2025-02-22 23:00:06 -05:00
Silentoplayz b5aa562039 Update ShortcutsModal.svelte
Added more shortcuts
2025-02-22 22:50:37 -05:00
Silentoplayz 5281aeb07b Merge branch 'dev' of https://github.com/silentoplayz/open-webui into dev 2025-02-22 21:17:56 -05:00
Timothy Jaeryang Baek 39717812ee Merge pull request #10572 from Kylapaallikko/dev
i18n: Update Finnish Translation
2025-02-22 14:31:24 -08:00
Timothy Jaeryang Baek 9f6e182400 Merge pull request #10573 from dom133/dev
i18n: Update Polish Translation
2025-02-22 14:30:27 -08:00
Timothy Jaeryang Baek e4ba8fea8a Merge pull request #10583 from hurxxxx/feat/show_at_model_suggestions_to_placeholder
feat: Show atSelectedModel suggestions in Placeholder
2025-02-22 14:29:52 -08:00
hurxxxx f80aea60c7 fix: Fix incorrect object property usage 2025-02-23 00:19:51 +09:00
hurxxxx a407558375 feat: Show suggestions when selecting the atModel. 2025-02-22 23:27:13 +09:00
dom133 65aa41ab81 i18n: Update Polish Translation 2025-02-22 13:10:30 +01:00
Kylapaallikko 6331963e66 Update translation.json 2025-02-22 13:34:35 +02:00
Timothy Jaeryang Baek 32fa8d5143 Merge pull request #10566 from oloflarsson/feat/async-pipes
feat: add optional support for async pipes
2025-02-22 02:47:08 -08:00
Timothy Jaeryang Baek 8f3fcdcf5c refac 2025-02-22 02:00:06 -08:00
Timothy Jaeryang Baek 794919e91d refac 2025-02-22 01:22:17 -08:00
Timothy Jaeryang Baek 667d26ca12 refac 2025-02-22 01:16:58 -08:00
Timothy Jaeryang Baek 50dec12072 refac 2025-02-21 22:15:22 -08:00
Timothy Jaeryang Baek 8fb6b03ddc Merge pull request #10555 from pwnless/dev
fix: ollama backend native tool calling
2025-02-21 21:09:51 -08:00
hopeless 7bfa29fa81 Update payload.py
Fixes ollama native tool calling because native tool calling content will be str '', and tool call processing will be completely ignored.
2025-02-22 12:13:14 +08:00
Timothy Jaeryang Baek 9bada6421e refac: code block image styling 2025-02-21 16:39:56 -08:00
Timothy Jaeryang Baekandharry zhou b14e75dd6c feat: added Trust Proxy Environment switch in Web Search admin settings tab.
Co-Authored-By: harry zhou <67385896+harryzhou2000@users.noreply.github.com>
2025-02-21 13:40:11 -08:00
Timothy Jaeryang Baek 6623583004 Merge pull request #10549 from jeannotdamoiseaux/fix/oauth-groups-default-typeerror
Fix: Ensure `user_oauth_groups` defaults to an empty list to prevent TypeError
2025-02-21 13:37:35 -08:00
Jeannot Damoiseaux d50098b622 Fix: Ensure user_oauth_groups defaults to an empty list to prevent TypeError
When the OAuth groups claim does not yield a list, `user_oauth_groups` was previously
set to None, causing a TypeError during membership checks. Changed this default to
an empty list (`[]`) to ensure the variable is always iterable, preventing errors
for non-admin users while logging in.

This fix ensures stability in the `update_user_groups` function.
2025-02-21 22:25:22 +01:00
Timothy Jaeryang Baek 642dcd4b70 fix: model import 2025-02-21 13:19:11 -08:00
Timothy Jaeryang Baek a7d8ed0c6d refac 2025-02-21 12:11:21 -08:00
Timothy Jaeryang Baek ab1b910d80 Merge pull request #10486 from Micca/feature/document_intelligence_support
Feat: Adding Support for Azure AI Document Intelligence for Content Extraction (Revised)
2025-02-21 10:56:18 -08:00
Timothy Jaeryang Baek a3c2ff61ed Merge pull request #10483 from KarlLee830/translate
i18n: Update Chinese Translation
2025-02-21 10:55:55 -08:00
Timothy Jaeryang Baek b111434fa9 Merge pull request #10488 from glimpse-0201/dev
fix:Quick selection tool lost
2025-02-21 10:55:44 -08:00
Timothy Jaeryang Baek 613a087387 refac 2025-02-21 10:55:03 -08:00
Timothy Jaeryang Baek b0a19a9801 Merge pull request #10501 from Synergyst/feature/openai-tts-custom-url-fix-dev
fix: Custom OpenAI-TTS URL to fetch actual voices and models
2025-02-21 10:52:41 -08:00
Timothy Jaeryang Baek 086a78f863 Merge pull request #10521 from Seniorsimo/add-stop-parameter
**fix** Added support for stop parameter in OpenAI to Ollama conversion
2025-02-21 10:51:49 -08:00
Timothy Jaeryang Baek b4c64a21b3 Merge pull request #10513 from mcelrath/dev
Support thinking/solution tags used by Openthinker
2025-02-21 10:49:45 -08:00
Simone fb3886cf04 Added support for stop parameter 2025-02-21 18:46:10 +01:00
Bob McElrath c9079d4b4d Merge branch 'open-webui:dev' into dev 2025-02-21 09:13:53 -05:00
Bob McElrath c4b441de65 Support thinking tags used by Openthinker 2025-02-21 09:12:34 -05:00
Synergyst f789ad59a9 Update audio.py
Removed original code that was commented out
2025-02-21 04:47:46 -06:00
Coleton M cdf620e6ee Update audio.py to fetch custom URL voices and models 2025-02-21 04:41:45 -06:00
huanght 2993332b38 fix:Quick selection tool lost 2025-02-21 16:10:11 +08:00
Olof Larsson ab1f2ae914 feat/async-pipes 2025-02-21 08:24:48 +01:00
Karl Lee 68e33b5386 i18n: Update Chinese Translation 2025-02-21 14:58:40 +08:00
Timothy Jaeryang Baek e31f680788 refac 2025-02-20 20:46:00 -08:00
Timothy Jaeryang Baek 1bf16ec23d Merge pull request #10462 from Seniorsimo/fix-ollama-stream-conversion
**fix** ollama to openai conversion on one shot streamed response
2025-02-20 13:30:29 -08:00
Timothy Jaeryang Baek 2697a4d7f8 Merge pull request #10460 from aleixdorca/dev
Update catalan translation.json
2025-02-20 13:30:00 -08:00
Timothy Jaeryang Baek 8629f6b0f3 Merge pull request #10466 from HuangruiChu/main
i18n: Update zh-Chinese translation
2025-02-20 13:29:49 -08:00
Richard (Huangrui) Chu 1332a0d381 Update zh-CN translation
1. remove the typo ”‘’"  for -1 表示无限制,正整数表示具体限制”
2. Token should be kept rather than translated as "标记"
3. Max Tokens (num_predict) should be "最大Token数量 (num_predict)"
4. "Enter Jupyter Token" here “Token" could be translated as ”令牌“ just as 	"JWT Token": "JWT 令牌", (line 582)
5. "TLS" which means "Transport Layer Security" should be translated to "传输层安全协议"
6. "Tokens To Keep On Context Refresh (num_keep)" "在语境刷新时需保留的 Token 数量"
7. change token to "Token" in the Chinese translation.
2025-02-20 16:07:32 -05:00
Simone a8859a8145 Fix on ollama to openai conversion - stream can return a single message with content 2025-02-20 21:25:32 +01:00
Timothy Jaeryang Baek 6fedd72e39 Merge pull request #10459 from open-webui/dev
0.5.16
2025-02-20 11:26:36 -08:00
Timothy Jaeryang Baek 472a291c24 doc: changelog 2025-02-20 11:25:17 -08:00
Aleix Dorca 08df5f6d7c Update catalan translation.json 2025-02-20 20:24:58 +01:00
Timothy Jaeryang Baek b124c15018 Merge pull request #10431 from EntropyYue/dev
i18n: Update Chinese translation
2025-02-20 11:19:18 -08:00
Timothy Jaeryang Baek 0a7a265ff5 Merge pull request #10445 from PkmX/pr-fix-web-search-proxy
fix: correctly interpret RAG_WEB_SEARCH_TRUST_ENV as bool
2025-02-20 11:16:47 -08:00
Timothy Jaeryang Baek 93d486d50e revert: faulty dedup code 2025-02-20 11:02:45 -08:00
PkmX af10aba805 fix: correctly interpret RAG_WEB_SEARCH_TRUST_ENV as bool 2025-02-21 01:46:17 +08:00
Victor Ribeiro 39c6ecb50d feat: add audit logger middleware and custom logger using loguru 2025-02-20 11:15:38 -03:00
hurxxxx f865a23a18 Merge remote-tracking branch 'upstream/main' 2025-02-20 23:08:47 +09:00
EntropyYue 89b4627e9a Update translation.json 2025-02-20 21:47:21 +08:00
EntropyYue e920f96b17 Update translation.json 2025-02-20 21:12:04 +08:00
Timothy Jaeryang Baek cf4bbcde14 Merge pull request #10421 from open-webui/dev
fix: workflow
2025-02-20 02:10:02 -08:00
Timothy Jaeryang Baek c882aacc23 fix: workflow 2025-02-20 02:09:44 -08:00
Timothy Jaeryang Baek 624f2ebcff Merge pull request #10420 from open-webui/dependabot/pip/pip-e8a89e233e
build(deps): bump the pip group across 2 directories with 1 update
2025-02-20 02:03:07 -08:00
dependabot[bot] eb218f6674 build(deps): bump the pip group across 2 directories with 1 update
Bumps the pip group with 1 update in the / directory: [python-jose](https://github.com/mpdavis/python-jose).
Bumps the pip group with 1 update in the /backend directory: [python-jose](https://github.com/mpdavis/python-jose).


Updates `python-jose` from 3.3.0 to 3.4.0
- [Release notes](https://github.com/mpdavis/python-jose/releases)
- [Changelog](https://github.com/mpdavis/python-jose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mpdavis/python-jose/compare/3.3.0...3.4.0)

Updates `python-jose` from 3.3.0 to 3.4.0
- [Release notes](https://github.com/mpdavis/python-jose/releases)
- [Changelog](https://github.com/mpdavis/python-jose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mpdavis/python-jose/compare/3.3.0...3.4.0)

---
updated-dependencies:
- dependency-name: python-jose
  dependency-type: direct:production
  dependency-group: pip
- dependency-name: python-jose
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-20 10:02:35 +00:00
Timothy Jaeryang Baek 9fdf2cd16c Merge pull request #10330 from open-webui/dev
0.5.15
2025-02-20 02:01:29 -08:00
Timothy Jaeryang Baek 385a894b3c chore: pyproject 2025-02-20 01:42:11 -08:00
Timothy Jaeryang Baek 2d5b685429 doc: changelog 2025-02-20 01:39:50 -08:00
Timothy Jaeryang Baek 900dc1f0a3 chore: bump 2025-02-20 01:28:46 -08:00
Timothy Jaeryang Baek eeb00a5ca2 chore: format 2025-02-20 01:01:29 -08:00
Timothy Jaeryang Baek 2b913a99a3 Merge pull request #10417 from hangxingliu/liu/fix-build-proxy
build: load the proxy from the system env for Pyodide to download packages
2025-02-20 00:58:27 -08:00
Timothy Jaeryang Baek 0994a07874 Merge pull request #10415 from labanzu/better-pdf-preview
feat: better pdf preview
2025-02-20 00:57:11 -08:00
Timothy Jaeryang Baek a818d8e3b7 Merge pull request #10413 from dom133/dev
i18n: Improve Polish translation
2025-02-20 00:55:52 -08:00
Liu Yue 3ae7302f7b build: load the proxy from the system env for Pyodide to download packages #6234 2025-02-20 16:40:31 +08:00
dom133 9ba03523e7 i18n: Improve Polish translation 2025-02-20 09:26:07 +01:00
labanzu f4e67bf2d3 update 2025-02-20 16:10:29 +08:00
labanzu a3d3ca293e chore: optimize pdf view 2025-02-20 15:55:18 +08:00
Timothy Jaeryang Baek d6f3444141 fix: katex issue 2025-02-19 23:37:11 -08:00
Timothy Jaeryang Baek 0e20b15afe Merge pull request #10410 from xinhai-ai/dev
fix: GitHub OAuth email retrieval when public email is not set
2025-02-19 23:16:46 -08:00
Timothy Jaeryang Baek e1cc104805 Merge pull request #10408 from hangxingliu/liu/fix-proxy
fix: respect proxy and timeout settings in audio-related aiohttp requests
2025-02-19 23:16:15 -08:00
星海 de8492de34 fix: GitHub OAuth email retrieval when public email is not set 2025-02-20 15:06:07 +08:00
Liu Yue 90d9cdacfa fix: respect proxy and timeout settings in audio-related aiohttp requests 2025-02-20 14:55:45 +08:00
Timothy Jaeryang Baek 13e58c1b64 Merge pull request #10360 from ferret99gt/ollama-option-conversion-fixes
fix: Update Ollama option handling in payload.py's convert_payload_openai_to_ollama
2025-02-19 22:44:07 -08:00
Timothy Jaeryang Baek d5a049dc54 Merge pull request #10401 from xinhai-ai/main
fix: email claim doesn't effect
2025-02-19 20:43:43 -08:00
星海 dec44e4bcd Fix: email claim doesn't effect 2025-02-20 11:32:48 +08:00
Timothy Jaeryang Baek ae0554224a refac 2025-02-19 18:22:31 -08:00
Timothy Jaeryang Baek fe5c4b95d5 enh: configurable jupyter execution timeout 2025-02-19 17:05:37 -08:00
Timothy J. Baek 90fca993f3 wip: jupyter code excution timeout 2025-02-19 16:41:54 -08:00
dannyl1u 8aa6415500 include logit_bias in form_data 2025-02-19 16:23:58 -08:00
Timothy Jaeryang Baek efefff71d1 Merge pull request #10363 from ferret99gt/ollama-model-option-conversion-updates
feat: Update Payload's apply_model_params_to_body_ollama with full Ollama supported options
2025-02-19 12:32:46 -08:00
Timothy Jaeryang Baek 5da47de6eb Merge pull request #10366 from tarmst/fix-no-nested-claims-for-group-oauth
Fix: Add nested claim search for group oauth management
2025-02-19 12:23:54 -08:00
Timothy Jaeryang Baek b032f34831 Merge pull request #10364 from Lutherwaves/translations
i18n: Add bulgarian translations
2025-02-19 12:23:30 -08:00
Timothy Jaeryang Baek ea4ad3944c Merge pull request #10378 from Seniorsimo/message-conversion
**fix** Add support for tool message in openai to Ollama message conversion
2025-02-19 12:23:11 -08:00
Timothy Jaeryang Baek ea3f873ae9 Merge pull request #10377 from Seniorsimo/chat-message-validator
**fix** ChatMessage validator: content can be null when using tools
2025-02-19 12:22:31 -08:00
Timothy Jaeryang Baek de7e8fd918 Merge pull request #10362 from Seniorsimo/usage-openai-compatible
**fix** Added OpenAI usage standard keys to API signature
2025-02-19 12:20:41 -08:00
Timothy Jaeryang Baek 17560967c7 Merge pull request #10347 from Youggls/dev
fix(deps): upgrade pydantic from v2.9.2 to v2.10.3+ in requirements.txt and pyproject.toml
2025-02-19 12:18:51 -08:00
Timothy Jaeryang Baek 9a4f2b9aa3 Merge pull request #10354 from TiancongLx/dev
i18n: update zh-TW
2025-02-19 12:18:32 -08:00
Simone 6f698073bb Add support for tool message in openai to Ollama message conversion 2025-02-19 21:11:39 +01:00
Simone 8662108344 Fix on ChatMessage validator: content can be null when using tools 2025-02-19 21:03:23 +01:00
dannyl1u 4a2a12fd21 feat: scaffolding for logit_bias 2025-02-19 10:33:49 -08:00
tarmst efe3bca19e Add nested claim search for groups oauth claim 2025-02-19 16:47:52 +00:00
lutherwaves 6898fd7d0f chore: Add bulgarian translations 2025-02-19 17:35:56 +02:00
ferret99gt 5701d6d333 Change the opt dictionary to a mappings dictionary with appropriate casts
This is to bring consistency with apply_model_params_to_body_openai. Both now use a mapping dictionary then call and return apply_model_params_to_body directly.
2025-02-19 09:30:16 -05:00
Simone 074ce356de Added OpenAI usagerequested keys 2025-02-19 15:28:39 +01:00
ferret99gt fa885c3346 Update remapping logic
We copy the params from from the original key to the new key, then delete it. This is to ensure Ollama only gets valid options.

(Add a comment as well)
2025-02-19 09:25:47 -05:00
ferret99gt a4249a6351 Remove remapping of frequency_penalty to repeat_penalty
1) Ollama natively supports frequency_penalty, so this is not necessary.
2) Repeat_penalty is being added to Open WebUI in PR #10016, allowing Ollama users to pick which penalty methods they want.
2025-02-19 09:24:38 -05:00
ferret99gt 877d21a029 Move parameter remapping above the opt dictionary.
This is so that any remappings are handled before options are handled by apply_model_params_to_body
2025-02-19 09:23:33 -05:00
ferret99gt 6b2ba73701 Remove tfs_z
See https://github.com/ollama/ollama/blob/main/docs/api.md#request-8

tfs_z was removed from Llama.cpp and Ollama in January 2025.
2025-02-19 09:21:36 -05:00
ferret99gt cee08e316d Update Ollama request option list with full supported options
See https://github.com/ollama/ollama/blob/main/docs/api.md#request-8

This adds the full suite of supported Ollama options.
2025-02-19 09:21:05 -05:00
ferret99gt 8125b0499b Remove empty ollama_options
1) The empty dictionary from line 176 is never used.
2) Lines 193-194 are not necessary as they were already done at line 177
2025-02-19 08:57:05 -05:00
ferret99gt 57b01cf8fb Fix for system prompt setting
1) Ollama supports sending the system prompt as a parameter, not as an option. (See https://github.com/ollama/ollama/blob/main/docs/api.md#request-8) However, it is in the options dictionary and needs moved to the payload dictionary.
2) After moving the system parameter from ollama_options to ollama_payload, delete it from ollama_options. This is to prevent Ollama throwing a warning about invalid options.
2025-02-19 08:55:11 -05:00
ferret99gt fea169a9c0 Core fix for num_predict not working.
1) max_tokens was being looked for in openai_payload, but is present in openai_payload['options'], so is never found.
2) After copying the value for max_tokens to num_predict, delete max_tokens from the dictionary. This is to prevent Ollama throwing a warning about invalid option (max_tokens)
2025-02-19 08:52:34 -05:00
ferret99gt adde37394b Remove parameters that map directly, as they are part of options
1) This may be legacy code?
2) All three of these parameters, temperature, top_p and seed, are found in openai_payload["options"], not openai_payload. They do not need remapped any longer.
2025-02-19 08:44:59 -05:00
ferret99gt aea8977d05 Remove mapping of max_completion_tokens
1) max_completion_tokens is being looked for in openai_payload, but would be located in openai_payload['options'], so is never found. (This applies to the prior two commits as well).
2) max_completion_tokens is not sent from the frontend, only max_tokens. It does not appear in AdvancedParams.svelte.
2b) Openai.py does use max_completion_tokens, but for o1,o3 models and converts it from max_tokens.
2025-02-19 08:39:33 -05:00
ferret99gt e6919c3242 Remove mapping of frequency_penalty to repeat_penalty
1) Ollama natively supports frequency_penalty.
2) repeat_penaltywas added to Open Webui in PR #10016 and is not merged to main yet at this time. Once both changes go live, Ollama users can freely choose between frequency/presence penalty, or repeat penalty, as they choose.
2025-02-19 08:33:29 -05:00
ferret99gt a560f789e4 Remove mapping of presence_penalty to new_topix_penalty
1) Ollama natively supports presence_penalty.
2) new_topic_penalty is not a valid option in Ollama. (See https://github.com/ollama/ollama/blob/main/docs/api.md#request-8)
3) Presence_penalty was added to Open Webui in PR #10016 and is not merged to main yet at this time.
2025-02-19 08:31:57 -05:00
Tiancong Li 61c6048b45 i18n: update zh-TW 2025-02-19 20:06:03 +08:00
Youggls 1692a52a6a fix(deps): upgrade pydantic from v2.9.2 to v2.10.3+ in requirements.txt and pyproject.toml 2025-02-19 19:08:17 +08:00
Timothy Jaeryang Baek 3e1337d753 Merge pull request #10341 from Youggls/dev
feat: Add Firecrawl web loader integration
2025-02-19 02:07:19 -08:00
Youggls 0fb3c08181 feat: Add Firecrawl web loader integration 2025-02-19 16:54:44 +08:00
Timothy Jaeryang Baek dab6396ebe fix: inline citations 2025-02-19 00:35:01 -08:00
Timothy Jaeryang Baek c073b8b4ee refac 2025-02-18 23:49:27 -08:00
Timothy Jaeryang Baek 8f72f8def9 fix: styling 2025-02-18 23:44:54 -08:00
Timothy Jaeryang Baek 9ca4727573 enh: web search behaviour 2025-02-18 21:29:27 -08:00
Timothy Jaeryang Baek 5465cabd40 refac 2025-02-18 21:17:09 -08:00
Timothy Jaeryang Baek 81715f6553 enh: RAG full context mode 2025-02-18 21:14:58 -08:00
Timothy Jaeryang Baek a6a7c548d5 refac: code block styling 2025-02-18 20:24:04 -08:00
Timothy Jaeryang Baek 003968f06a enh: jupyter matplotlib support 2025-02-18 20:15:16 -08:00
Timothy Jaeryang Baek 2ee09d9f7d fix: prompt suggestions settings 2025-02-18 20:07:59 -08:00
Timothy Jaeryang Baek 9380fcd09a refac 2025-02-18 20:01:24 -08:00
Timothy Jaeryang Baek 32432d6df1 fix: do NOT update changelog 2025-02-18 20:00:24 -08:00
Timothy Jaeryang Baek 1bbecd46c8 Merge pull request #10052 from roryeckel/playwright
Support Playwright RAG Web Loader: Revised
2025-02-18 19:57:48 -08:00
Timothy Jaeryang Baek c658781995 Merge pull request #10268 from hurxxxx/feat/hide-citations-in-message
feat: citations disabled model to exclude source citations in messages
2025-02-18 19:37:12 -08:00
Timothy Jaeryang Baek 84af508525 Merge branch 'dev' into feat/hide-citations-in-message 2025-02-18 19:37:03 -08:00
Timothy Jaeryang Baek 6f792e0558 Merge pull request #10271 from juquxiang/feat_user_query
Added user filtering by email and username
2025-02-18 19:36:18 -08:00
Timothy Jaeryang Baek 4ef7aff663 refac 2025-02-18 19:35:22 -08:00
Timothy Jaeryang Baek 8f7528a0bc Merge pull request #10272 from mkhludnev/dedupe-rag-docs
fix: dedupe results from multiple queries
2025-02-18 19:34:33 -08:00
Timothy Jaeryang Baek 5a7f9c81e3 Merge pull request #10308 from crpietschmann/azure-storage
feat: Add AzureStorageProvider for Azure Blob Storage support
2025-02-18 19:32:17 -08:00
Timothy Jaeryang Baek 886d756200 Merge pull request #10285 from the-c0d3br34k3r/issue8885_auth
fix: Fixed an issue with clearing application cookies during OAuth signout
2025-02-18 19:31:24 -08:00
Timothy Jaeryang Baek a33214ab6b Merge pull request #10304 from ttv20/dev
i18n: Improve RTL text handling in chat and sidebar with auto-direction #2
2025-02-18 19:31:12 -08:00
Timothy Jaeryang Baek 32a90deeaf Merge pull request #10309 from JoaoCostaIFG/gemini_image_gen
feat: add Google Imagen/Gemini API image generation
2025-02-18 19:30:20 -08:00
Timothy Jaeryang Baek 0b271d24d1 Merge pull request #10311 from alexgleason/fix-undefined-title
Fix "Cannot read properties of undefined (reading 'startsWith')"
2025-02-18 19:29:42 -08:00
Timothy Jaeryang Baek ea759c4742 Merge pull request #10323 from iamobservable/feature/frontend-authentication-redirection
feat: Feature/frontend authentication redirection
2025-02-18 19:29:23 -08:00
= 7837843f82 Add redirect capability
This feature allows the authentication process to redirect to a
route passed in the querystring. This allows the /auth route
a means of bringing the user to an expected route instead of the
main page (root).
2025-02-18 21:16:54 -06:00
Alex Gleason 5639ba423b Fix "Cannot read properties of undefined (reading 'startsWith')" 2025-02-18 18:47:56 -06:00
JoaoCostaIFG 918764a4f7 fix: Use x-goog-api-key header for Gemini image generation
Place the API key in a header instead of a query parameter. This avoids leaking the API key in logs on request failure, etc...
2025-02-19 00:00:54 +00:00
JoaoCostaIFG e56b5c063c feat: add Google Imagen/Gemini API image generation
Adds support for Gemini API as an image generation backend. By setting the API Base URL to something like 'https://generativelanguage.googleapis.com/v1beta' and providing their API Key, users should be able to start generating images using models like 'imagen-3.0-generate-002'.
2025-02-18 22:39:32 +00:00
Chris Pietschmann a232f1f34e Update test_provider.py 2025-02-18 15:53:54 -05:00
Chris Pietschmann 9864185b57 Update test_provider.py 2025-02-18 15:49:44 -05:00
Chris Pietschmann 888ae00867 Update test_provider.py 2025-02-18 15:39:47 -05:00
Chris Pietschmann 7b5f82ffc7 Update test_provider.py 2025-02-18 15:26:04 -05:00
Chris Pietschmann 7404494772 formatting 2025-02-18 15:19:35 -05:00
Chris Pietschmann a29f83c4e7 updates to formatting 2025-02-18 15:17:49 -05:00
Chris Pietschmann 4c352ff974 Update test_provider.py 2025-02-18 15:14:46 -05:00
Chris Pietschmann 55bd7a1c65 Update test_provider.py 2025-02-18 15:13:30 -05:00
Chris Pietschmann 9c8c837ab9 Update test_provider.py 2025-02-18 15:12:35 -05:00
Chris Pietschmann 2c328cc7c9 Update test_provider.py 2025-02-18 15:04:49 -05:00
Chris Pietschmann 56060db29d Update test_provider.py 2025-02-18 15:01:26 -05:00
Chris Pietschmann 7d1ec20429 Update test_provider.py 2025-02-18 14:57:51 -05:00
Chris Pietschmann ff5f0c3e39 Update test_provider.py 2025-02-18 14:51:17 -05:00
Chris Pietschmann 9a2e81f5f0 Update test_provider.py 2025-02-18 14:49:03 -05:00
Chris Pietschmann f674e28263 Update test_provider.py 2025-02-18 14:45:13 -05:00
Chris Pietschmann 4a9a88b683 Update test_provider.py 2025-02-18 14:41:42 -05:00
Chris Pietschmann b86f8df29f Update test_provider.py 2025-02-18 14:37:10 -05:00
Elkana Bardugo 61644f216e Update CHANGELOG.md 2025-02-18 21:30:25 +02:00
Chris Pietschmann cb0666ac21 update 2025-02-18 14:13:54 -05:00
Chris Pietschmann 2f4f4c2376 add tests 2025-02-18 14:09:00 -05:00
Elkana Bardugo 0b1e30988a Update MarkdownTokens.svelte
More dir="auto" to auto direction on RTL
2025-02-18 21:08:25 +02:00
Chris Pietschmann 13227fc017 Merge branch 'azure-storage' of https://github.com/crpietschmann/open-webui into azure-storage 2025-02-18 13:39:37 -05:00
Chris Pietschmann cc4598c41b Update build-release.yml 2025-02-18 13:39:27 -05:00
Timothy Jaeryang Baek e7560a5acf Merge pull request #10269 from KarlLee830/translate
i18n: Update Chinese Translation
2025-02-18 10:37:16 -08:00
Chris Pietschmann 745b24f13a Merge branch 'open-webui:main' into azure-storage 2025-02-18 13:36:56 -05:00
Chris Pietschmann aee57107bc Update config.py 2025-02-18 13:27:37 -05:00
Chris Pietschmann e4febfa097 Add AzureStorageProvider config options 2025-02-18 13:25:49 -05:00
Chris Pietschmann fd3c24af4e Add AzureStorageProvider 2025-02-18 13:25:31 -05:00
Timothy Jaeryang Baek d0114e0703 fix: temp chat issue 2025-02-18 09:57:12 -08:00
Timothy Jaeryang Baek 359f8b67f8 fix: mobile hover issue 2025-02-18 09:54:31 -08:00
Ranjan Mohan 6c6be5de88 Fixed an issue with clearing application cookies during OAuth signout
Closes #8885.

During the OAuth signout flow, although the `token` and `oauth_id_token`
cookies were marked for deletion, a new RedirectResponse is created and
returned. This does not contain the header info from the he Response object
used to mark the cookies to be deleted. Hence the cookies remained.
Fixed this by re-using the headers from the other Response object.
2025-02-18 12:44:14 -05:00
mikhail-khludnev 925bfe840b dedupe results from multiple queries 2025-02-18 20:10:57 +03:00
juxiang 55b0ac85d1 Added user filtering by email and username
Added user filtering by email and username
2025-02-19 00:53:38 +08:00
KarlLee830 d4743b1a17 i18n: Update Chinese Translation 2025-02-18 23:42:22 +08:00
KarlLee830 4939d6871b i18n: Update Chinese Translation 2025-02-18 23:40:25 +08:00
hurxxxx a381ffc585 revert 2025-02-18 23:17:06 +09:00
hurxxxx cdc13e9960 chore: Fix unnecessary whitespace issues 2025-02-18 23:15:57 +09:00
hurxxxx 9d06e3b2cd feat: chat responses using the citations-disabled model to exclude source citations 2025-02-18 21:56:16 +09:00
Timothy Jaeryang Baek 3f3a5bb0ab Merge pull request #10238 from open-webui/dev
0.5.14
2025-02-17 21:48:39 -08:00
Timothy Jaeryang Baek 0c3ba5123e doc: changelog 2025-02-17 21:48:00 -08:00
Timothy Jaeryang Baek c513308ded Merge pull request #10236 from open-webui/dev
refac
2025-02-17 21:34:36 -08:00
Timothy Jaeryang Baek 1764170307 refac 2025-02-17 21:34:06 -08:00
Timothy Jaeryang Baek e4c9734fcb Merge pull request #10038 from open-webui/dev
0.5.13
2025-02-17 20:36:50 -08:00
Timothy Jaeryang Baek 188b928548 doc: changelog 2025-02-17 20:28:13 -08:00
Timothy Jaeryang Baek e8b11a78d1 chore: format 2025-02-17 20:18:03 -08:00
Rory 10e0c81de9 Merge remote-tracking branch 'upstream/dev' into playwright
# Conflicts:
#	backend/open_webui/retrieval/web/utils.py
#	backend/open_webui/routers/retrieval.py
2025-02-17 21:53:39 -06:00
Timothy Jaeryang Baek d5ab2c6891 refac: readme 2025-02-17 19:52:34 -08:00
Timothy Jaeryang Baek fdaa6a9ee5 doc: readme 2025-02-17 19:51:41 -08:00
Timothy Jaeryang Baek c657e2a1bb doc: readme 2025-02-17 19:51:10 -08:00
Rory bc82f48ebf refac: RAG_WEB_LOADER -> RAG_WEB_LOADER_ENGINE 2025-02-17 21:43:32 -06:00
Timothy Jaeryang Baek 658944e756 refac 2025-02-17 19:29:28 -08:00
Timothy Jaeryang Baek ba6cde8a87 fix: include_domain does NOT exist 2025-02-17 19:20:49 -08:00
Timothy Jaeryang Baek 9bd26d6faa enh: avif support 2025-02-17 18:55:48 -08:00
Timothy Jaeryang Baek a79a6a5c34 chore: format 2025-02-17 18:51:40 -08:00
Timothy Jaeryang Baek 0c461023fe enh: svg diagram download button 2025-02-17 18:50:23 -08:00
Timothy Jaeryang Baek 93731e4ca9 fix: temp chat message continue 2025-02-17 18:40:40 -08:00
Timothy Jaeryang Baek f72e28a56c enh: message delete confirm dialog 2025-02-17 18:33:21 -08:00
Timothy Jaeryang Baek dbe5d1ca08 refac 2025-02-17 18:16:23 -08:00
Timothy Jaeryang Baek ca0b7217d2 enh: full context web search 2025-02-17 18:14:26 -08:00
Timothy Jaeryang Baek 16ce8ab16c refac 2025-02-17 17:41:58 -08:00
Timothy Jaeryang Baek 70a5be08c7 refac 2025-02-17 16:33:14 -08:00
Timothy Jaeryang Baek b850b8a5a4 refac: styling 2025-02-17 16:33:01 -08:00
Timothy Jaeryang Baek 05af00305d enh: warning 2025-02-17 16:30:13 -08:00
Timothy Jaeryang Baek 2f75eef499 enh: code execution settings 2025-02-17 16:25:50 -08:00
Timothy Jaeryang Baek 3df6fa7ccb Merge pull request #10206 from ttv20/patch-1
i18n: Improve RTL text handling in chat and sidebar with auto-direction
2025-02-17 15:24:59 -08:00
Timothy Jaeryang Baek a5fa1cd835 Merge pull request #10209 from i-infra/iinf/fix-for-openrouter
[fix] no unambiguous indexing on "owned_by" - fix OpenRouter.ai
2025-02-17 15:24:21 -08:00
Elkana Bardugo 8d149348a0 Update MarkdownTokens.svelte: Revert text-align for download button in rtl
prevent button overriding because the download button is in absolute position and it doesn't have start/end properties
2025-02-17 22:43:34 +02:00
Elkana Bardugo d26569f636 Update ChatItem.svelte: Revert text-align for download button in rtl
prevent button overriding because the menu button is in absolute position and it doesn't have start/end properties
2025-02-17 22:42:37 +02:00
Elkana Bardugo 93590d224b Merge branch 'dev' into patch-1 2025-02-17 22:35:36 +02:00
Elkana Bardugo 0888ddde7c Fix card title direction and alignment (for RTL) 2025-02-17 22:03:03 +02:00
Elkana Bardugo 834617ab91 fix blockquote border line direction in RTL 2025-02-17 21:57:47 +02:00
Elkana Bardugo b73b8343d5 fix table header align on rtl 2025-02-17 21:40:11 +02:00
Elkana Bardugo ab94017e3a Auto text direction (fix for RTL) in most cases
to test it use the prompt:
"write please a sample headers (level 1,2,3), text (bold/italic), list, numbered list, quetes, table, code
write each example in hebrew
dont output markdown in code block"

need to be fixed:
* Redundant border properties in quotes:
Removed border-left as border-inline-start properly handles both LTR/RTL and by this prevents double borders in RTL layouts

* table header have `text-align: left` instead of start
e.g.
text-align and direction is not the save thing
the text direction is ok. the `dir="auto"` is fixing the direction שמג the text-align by default is set by the direction, if it set manually is should be start/end to respect the direction attribute
2025-02-17 21:27:05 +02:00
Timothy Jaeryang Baek 82189066e8 refac 2025-02-16 18:35:09 -08:00
Timothy Jaeryang Baek 3b856b64ed refac 2025-02-16 02:33:25 -08:00
Timothy Jaeryang Baek 63cf80a456 refac 2025-02-16 00:11:18 -08:00
Timothy Jaeryang Baek 91de8e082e refac: styling 2025-02-15 22:35:42 -08:00
Timothy Jaeryang Baek 19c340d3fb refac: pipelines 2025-02-15 22:25:18 -08:00
Timothy Jaeryang Baek ea15d91e29 Merge pull request #10016 from ferret99gt/tweak-and-add-advanced-parameters-for-ollama
feat: Tweak and add advanced parameters for ollama
2025-02-15 22:07:59 -08:00
Timothy Jaeryang Baek 5af926bac8 refac 2025-02-15 21:14:03 -08:00
Timothy Jaeryang Baek e4d6fc65ca refac: theme 2025-02-15 21:04:07 -08:00
Timothy Jaeryang Baek 87ff1a9038 refac: styling 2025-02-15 20:35:10 -08:00
Timothy Jaeryang Baek f2006c7efe refac: styling 2025-02-15 20:22:57 -08:00
Rory 66c2acc08d Merge branch 'dev' into playwright 2025-02-15 22:14:16 -06:00
Timothy Jaeryang Baek fab093395b Merge pull request #10065 from LuyiTian/dev
fix:Update Chat.svelte error handling of previous message
2025-02-15 20:11:40 -08:00
Timothy Jaeryang Baek b0ad5cd863 Merge pull request #10076 from crizCraig/local_date
fix: return local date from `getFormattedDate`
2025-02-15 20:10:56 -08:00
Timothy Jaeryang Baek fd8998a38f refac 2025-02-15 19:50:40 -08:00
Timothy Jaeryang Baek 052531ac13 refac 2025-02-15 19:41:09 -08:00
Timothy Jaeryang Baek 60e322962e refac 2025-02-15 19:35:12 -08:00
Timothy Jaeryang Baek e3fa48b6ce chore: tailwind v4 migration 2025-02-15 19:27:25 -08:00
Timothy Jaeryang Baek 30182d77cc refac 2025-02-15 19:08:07 -08:00
Timothy Jaeryang Baek a0126f371e refac: general admin settings 2025-02-15 18:24:13 -08:00
Timothy Jaeryang Baek ff60754091 refac: general admin settings 2025-02-15 18:15:50 -08:00
Timothy Jaeryang Baek b99f296494 Merge pull request #10075 from TiancongLx/dev
i18n: update zh-TW
2025-02-15 17:28:52 -08:00
Timothy Jaeryang Baek bbda717b69 refac: citations 2025-02-15 17:24:29 -08:00
Timothy Jaeryang Baek 3d0c06ccee refac: duckduckgo 2025-02-15 16:45:56 -08:00
i-infra 5e3742f899 and one last edit 2025-02-15 19:42:58 -05:00
i-infra fb12ee3f52 fix exception where openrouter doesn't populate - no longer index without fallback 2025-02-15 19:41:41 -05:00
Timothy Jaeryang Baek 38291e9af2 refac 2025-02-15 16:21:19 -08:00
Timothy Jaeryang Baek f0feb7bd35 refac 2025-02-15 16:10:35 -08:00
Craig Quiter e67eb89e05 style: black format 2025-02-15 10:53:16 -08:00
Craig Quiter 0dae8ded13 fix: return local date from getFormattedDate 2025-02-15 10:37:40 -08:00
Tiancong Li 4045e96e96 i18n: update zh-TW 2025-02-16 01:54:58 +08:00
Luyi Tian 1aa963a2fe Update Chat.svelte error handling of previous message
related to this discussion: https://github.com/open-webui/open-webui/discussions/10034. in some cases the previous message have error but it still generate a response. in such case we should also next round chat. so I update the if condition to add another checking of the content in previous message.
2025-02-15 21:25:12 +08:00
Rory 8e9b00a017 Fix docstring 2025-02-14 22:48:15 -06:00
Rory b1bab2ece8 Remove duplicate loader.alazy_load line from merge 2025-02-14 22:43:46 -06:00
Rory aa2b764d74 Finalize incomplete merge to update playwright branch
Introduced feature parity for trust_env
2025-02-14 22:32:45 -06:00
Rory 4da220c513 Merge remote-tracking branch 'upstream/dev' into playwright
# Conflicts:
#	backend/open_webui/config.py
#	backend/open_webui/main.py
#	backend/open_webui/retrieval/web/utils.py
#	backend/open_webui/routers/retrieval.py
#	backend/open_webui/utils/middleware.py
#	pyproject.toml
2025-02-14 20:48:22 -06:00
Timothy Jaeryang Baek 74c8690cd1 Merge pull request #9989 from Yimi81/feate-webloader-support-proxy
feat: web loader support proxy
2025-02-14 18:08:51 -08:00
Guofeng Yi b38acc8559 Merge branch 'dev' into feate-webloader-support-proxy 2025-02-15 09:50:02 +08:00
ferret99gt bb72957535 Update field label for Ollama convention 2025-02-14 18:02:30 -05:00
Timothy Jaeryang Baek 3e543691a4 Merge pull request #9988 from Yimi81/feat-support-async-load
feat: websearch support async docs load
2025-02-14 14:10:46 -08:00
Timothy Jaeryang Baek 2a67d3d6cd Merge pull request #10005 from bogdanr/main
Added Romanian translations
2025-02-14 14:09:35 -08:00
Timothy Jaeryang Baek a13f90fc60 Merge pull request #10002 from alpha-pet/fix-markdown-inline-whitespace
fix: remove whitespace to improve typesetting for inline Markdown
2025-02-14 13:28:18 -08:00
Timothy Jaeryang Baek c797ef3357 Merge pull request #9990 from panda44312/patch-4
i18n Update zh-cn
2025-02-14 13:27:55 -08:00
Timothy Jaeryang Baek 0746e2f682 Merge pull request #10021 from silentoplayz/ASCII-font-change
enh: "Open WebUI" ASCII Art with ANSI Shadow Font
2025-02-14 13:27:32 -08:00
Timothy Jaeryang Baek 8d63ee55f3 Merge pull request #10019 from liucoj/dev
fix: Domain filter list in Tavily search
2025-02-14 13:27:13 -08:00
Timothy Jaeryang Baek 7705ba16e4 Merge pull request #10024 from Kylapaallikko/main
18n: Update Finnish translation
2025-02-14 13:26:55 -08:00
Timothy Jaeryang Baek 3d26bca7c5 refac: deprecate [ ] prompt variables 2025-02-14 12:40:42 -08:00
Kylapaallikko 7037ae2f55 Update translation.json 2025-02-14 20:06:59 +02:00
Kylapaallikko 2448c4e290 Update translation.json 2025-02-14 20:01:14 +02:00
Kylapaallikko fcb1178dc7 Update translation.json 2025-02-14 19:57:58 +02:00
silentoplayz 665b67ff35 Update main.py
Change ASCII font for "Open WebUI" from "Standard" to "ANSI Shadow"
2025-02-14 12:52:57 -05:00
Kylapaallikko c70947c967 Update translation.json 2025-02-14 19:52:20 +02:00
silentoplayz 1a2d81bc01 Update main.py
Change ASCII font for "Open WebUI" from "Standard" to "ANSI Shadow"
2025-02-14 12:48:33 -05:00
Kylapaallikko 6b853ec36b Update translation.json 2025-02-14 19:47:48 +02:00
Kylapaallikko 9a170790ad Update translation.json 2025-02-14 19:31:05 +02:00
LiuC0j ca8458024e Merge pull request #1 from liucoj/liucoj-patch-1
fix: Domain Filter list in tavily.py
2025-02-14 18:21:38 +01:00
ferret99gt 941c787806 Add presence penalty (openAi/ollama/others) and repeat penalty (ollama only?)
- Add Presence Penalty, which I believe most providers have.
- Add repeat_penalty, an Ollama / Llama.cpp only parameter
- Widen temperature range to 2 (supported by many providers and similar front ends)
- Widen Top K range (supported by many providers and similar front ends)
- Adjust description of freqency_penalty in line with OpenAI documentation
- Add presence_penalty with an OpenAI documentation based description
- Add repeat_penalty with an Ollama documentation based description
2025-02-14 12:02:55 -05:00
hdnh2006 0afe972bc6 embeddings function added 100% OpenAI compatible 2025-02-14 17:57:47 +01:00
LiuC0j a8e310429c FIx: Domain Filter list in tavily.py 2025-02-14 14:57:16 +01:00
LiuC0j 5ca39eb9fd Update tavily.py 2025-02-14 14:56:01 +01:00
Bogdan Radulescu 8d898f2d12 Added romanian translations 2025-02-14 15:17:25 +02:00
Thomas Rehn 9072959858 fix: remove whitespace to improve typesetting for inline Markdown 2025-02-14 13:16:03 +01:00
Fabio Polito 2419ef06a0 feat: docling support for document preprocessing 2025-02-14 12:08:03 +00:00
Panda 42119e2c52 Update translation.json 2025-02-14 09:04:48 +01:00
Panda f376a61578 Merge branch 'open-webui:main' into patch-4 2025-02-14 09:02:45 +01:00
Panda 85c22889da Update translation.json 2025-02-14 09:00:58 +01:00
Yimi81 d3f71930f0 web loader support proxy 2025-02-14 07:15:09 +00:00
Timothy Jaeryang Baek 2017856791 Merge pull request #9945 from open-webui/dev
0.5.12
2025-02-13 23:12:46 -08:00
Timothy Jaeryang Baek 893bfe9d3a doc: changelog 2025-02-13 23:11:58 -08:00
Yimi81 ceef600223 support async load for websearch 2025-02-14 07:05:10 +00:00
Timothy Jaeryang Baek 99b50b39fe refac 2025-02-13 22:57:12 -08:00
Timothy Jaeryang Baek 304aed0f13 chore: format 2025-02-13 22:54:45 -08:00
Timothy Jaeryang Baek 7b37cdcebb Merge pull request #9980 from xring/web_search_serpapi
feat: add web search via SerpApi
2025-02-13 22:51:14 -08:00
Timothy Jaeryang Baek d9ee53b504 refac: placeholder performance 2025-02-13 22:45:03 -08:00
Timothy Jaeryang Baek fa92abce31 refac 2025-02-13 22:37:01 -08:00
Timothy Jaeryang Baek b7aeb432ed refac 2025-02-13 22:11:56 -08:00
Timothy Jaeryang Baek c9a8808b0d refac 2025-02-13 21:45:29 -08:00
xring 27d395ba06 feat: add web search via SerpApi 2025-02-14 12:24:58 +08:00
Timothy Jaeryang Baek da757069de refac 2025-02-13 17:06:55 -08:00
Timothy Jaeryang Baek e1435501aa fix 2025-02-13 15:17:41 -08:00
Timothy Jaeryang Baek 68519d6ca7 enh: multiple tool calls support 2025-02-13 14:50:46 -08:00
Timothy Jaeryang Baek f20b7c2f33 fix: user direct connections 2025-02-13 14:21:34 -08:00
Timothy Jaeryang Baek deeb04e695 Merge pull request #9942 from SleepyYui/bugfix-9635
fix: Fix text completion on playground page
2025-02-13 13:14:11 -08:00
Timothy Jaeryang Baek cd27845c75 fix: direct connections 2025-02-13 13:05:57 -08:00
SleepyYui ba4b0db462 fix playground text completion 2025-02-13 22:05:41 +01:00
Timothy Jaeryang Baek 95d56c737d Merge pull request #9907 from smonux/dev
fix: re-enable tools in native function calls after first invocation
2025-02-13 12:52:47 -08:00
Timothy Jaeryang Baek df1ff8f994 chore: remove flask 2025-02-13 12:52:17 -08:00
Timothy Jaeryang Baek c315634365 Merge pull request #9917 from nachogmd/dev
feat: Optional title generation
2025-02-13 12:51:54 -08:00
Kylapaallikko 70e8337536 Update translation.json 2025-02-13 22:36:45 +02:00
Didier FOURNOUT 06062568c7 black formatting 2025-02-13 16:12:46 +00:00
Didier FOURNOUT 6d62e71c34 Add x-Open-Webui headers for ollama + more for openai 2025-02-13 15:29:26 +00:00
Nacho G. Mac Dowell c47eddce32 Optional title generation
The boolean configuration var ENABLE_TITLE_GENERATION makes title generation optionaL
2025-02-13 16:28:39 +01:00
Samuel e98f859a14 format 2025-02-13 12:19:24 +00:00
Samuel 86074cff6c fix: re-enable tool use when sending tool output 2025-02-13 12:18:21 +00:00
Timothy Jaeryang Baek 3ac3615ecd Merge pull request #9890 from OriginalSimon/dev
18n: Update Ukrainian translation
2025-02-13 02:22:36 -08:00
Simon d590647d09 Update translation.json 2025-02-13 11:21:18 +01:00
Timothy Jaeryang Baek e4d7d41df6 Merge pull request #9889 from open-webui/dev
doc: changelog
2025-02-13 02:11:00 -08:00
Timothy Jaeryang Baek a461861030 doc: changelog 2025-02-13 02:10:36 -08:00
Timothy Jaeryang Baek 4d667e447d Merge pull request #9480 from open-webui/dev
0.5.11
2025-02-13 02:06:04 -08:00
Timothy Jaeryang Baek 57e256be3e chore: bump 2025-02-13 02:05:26 -08:00
Timothy Jaeryang Baek f831104708 doc: changelog 2025-02-13 02:03:13 -08:00
Timothy Jaeryang Baek acb3eef619 refac 2025-02-13 01:57:02 -08:00
Timothy Jaeryang Baek 6acda2e6ec refac: code interpreter 2025-02-13 00:40:04 -08:00
Timothy Jaeryang Baek 6d899b80d0 refac: direct connections 2025-02-13 00:34:45 -08:00
Timothy Jaeryang Baek eb568695e7 chore: format 2025-02-13 00:13:33 -08:00
Timothy Jaeryang Baek 7ff719938a refac: citations 2025-02-12 23:55:14 -08:00
Timothy Jaeryang Baek a1dc2664c2 refac 2025-02-12 23:49:00 -08:00
Timothy Jaeryang Baek c28d82b10d Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2025-02-12 23:38:53 -08:00
Timothy Jaeryang Baek c5b92dbffa chore: bump 2025-02-12 23:38:48 -08:00
Timothy Jaeryang Baek c0dfafca70 Merge pull request #9844 from Seniorsimo/bug-9773
Fix - Added support for API tool_calls when stream false
2025-02-12 23:37:24 -08:00
Timothy Jaeryang Baek 7e73790d6c refac 2025-02-12 23:33:53 -08:00
Timothy Jaeryang Baek 5626426c31 chore: format 2025-02-12 23:28:57 -08:00
Timothy Jaeryang Baek 83e5db7be7 refac 2025-02-12 23:26:47 -08:00
Timothy Jaeryang Baek 2b7f9d14d0 refac 2025-02-12 23:21:16 -08:00
Timothy Jaeryang Baek c83e68282d feat: direct connections integration 2025-02-12 22:56:33 -08:00
Simone b0ade6c04c Fixed typo 2025-02-13 07:04:02 +01:00
Rory 40d4db97e6 Merge remote-tracking branch 'upstream/dev' into playwright 2025-02-12 22:32:44 -06:00
Timothy Jaeryang Baek 304ce2a14d Merge pull request #9865 from feynmanliang/fix-9864
fix - Fixes citation modal toggle when clicking inliine citations and # citations > 3
2025-02-12 14:32:02 -08:00
Timothy Jaeryang Baek 67958c02b4 refac 2025-02-12 14:29:43 -08:00
Timothy Jaeryang Baek 9f9adce72c fix 2025-02-12 14:23:53 -08:00
Feynman Liang 361a98980e Retab collapsible 2025-02-12 13:49:37 -08:00
Feynman Liang 113addef46 Merge branch 'dev' into fix-9864 2025-02-12 13:47:54 -08:00
Feynman Liang 08bc7d4cfe Uncollapse so all source buttons visible 2025-02-12 13:46:42 -08:00
Feynman Liang 3f24062416 Adds source-* ids when citations > 3 2025-02-12 12:30:23 -08:00
Timothy Jaeryang Baek a0df6cce40 refac 2025-02-12 01:41:59 -08:00
Timothy Jaeryang Baek 2e77d5ef0e refac 2025-02-12 01:32:49 -08:00
Timothy Jaeryang Baek 0bec9122c1 refac 2025-02-12 01:22:53 -08:00
Timothy Jaeryang Baek 431e97b03a wip: direct models 2025-02-12 01:17:30 -08:00
Simone 7dc000a6b9 added support for API tool_calls if stream false 2025-02-12 09:11:26 +01:00
Timothy Jaeryang Baek 982b1fb7e2 wip: direct connections 2025-02-12 00:08:51 -08:00
Timothy Jaeryang Baek cd2f4142d5 fix: user settings save issue 2025-02-11 23:42:31 -08:00
Timothy Jaeryang Baek 862b5a947a refac: connections 2025-02-11 23:21:09 -08:00
Timothy Jaeryang Baek 689317c5b5 refac 2025-02-11 23:13:48 -08:00
Timothy Jaeryang Baek 8daa549146 refac 2025-02-11 23:12:00 -08:00
Timothy Jaeryang Baek 153413dc54 refac 2025-02-11 22:33:03 -08:00
Timothy Jaeryang Baek afe92fd227 refac 2025-02-11 22:31:27 -08:00
Timothy Jaeryang Baek 3891161173 feat: direct api settings backend 2025-02-11 22:29:45 -08:00
Timothy Jaeryang Baek 24cbc469cc enh: allow image only message 2025-02-11 21:52:31 -08:00
Timothy Jaeryang Baek a5bba20915 Merge pull request #9837 from silverriver/patch-1
feat Make Google PSE search return more than 10 google search results
2025-02-11 21:36:53 -08:00
Timothy Jaeryang Baek f916fbba56 enh: custom code interpreter prompt 2025-02-11 21:36:16 -08:00
Timothy Jaeryang Baek 953e408077 refac 2025-02-11 21:13:42 -08:00
Timothy Jaeryang Baek ab70f1bb50 Merge pull request #9486 from rragundez/store-images
Use DB for generated images
2025-02-11 21:12:17 -08:00
Timothy Jaeryang Baek 627ed7c9ce refac 2025-02-11 21:03:38 -08:00
Silver 7e08373ae5 Update google_pse.py to return results more than 10 2025-02-12 13:01:09 +08:00
Timothy Jaeryang Baek 8906a2e260 Merge pull request #9803 from BochaAI/main
add Bocha
2025-02-11 21:01:04 -08:00
Timothy Jaeryang Baek 8199281eee Merge pull request #9784 from aleixdorca/dev
Update catalan translation.json
2025-02-11 18:58:01 -08:00
Timothy Jaeryang Baek a1554559c4 Merge pull request #9800 from rragundez/404-non-html
WIP Return 404 for non html files
2025-02-11 18:57:51 -08:00
Timothy Jaeryang Baek 591ca35275 Merge pull request #9827 from TiancongLx/dev
i18n: update zh-TW
2025-02-11 18:55:18 -08:00
Tiancong Li 7057814c3b i18n: update zh-TW 2025-02-12 05:37:15 +08:00
Rodrigo Agundez 31ee7a68a2 Only javascript files 2025-02-11 21:21:27 +08:00
Rodrigo Agundez 5d68737b31 Return 404 for non html files 2025-02-11 18:49:36 +08:00
Aleix Dorca 92a584bf3c Update catalan translation.json 2025-02-11 06:45:03 +01:00
Timothy Jaeryang Baek 16bae8f33a refac 2025-02-10 13:53:16 -08:00
Timothy Jaeryang Baek 7ebb07c04c refac 2025-02-10 13:44:25 -08:00
Timothy Jaeryang Baek a273cba0fb refac: code intepreter 2025-02-10 13:12:05 -08:00
Timothy Jaeryang Baek 610f9d039a fix: account page issue 2025-02-10 13:00:44 -08:00
Timothy Jaeryang BaekandSimone 0f12c4d14f fix: ollama tool calling
Co-Authored-By: Simone <6941100+seniorsimo@users.noreply.github.com>
2025-02-10 12:18:49 -08:00
Timothy Jaeryang Baek 293f64353d Merge pull request #9751 from pseudorm/bug/user-signup/fix-oauth-username-claim-has-no-effect
Fix: Setting OAUTH_USERNAME_CLAIM has no effect on username for user during oauth signup
2025-02-10 11:26:56 -08:00
Timothy Jaeryang Baek 63a5ee3adb refac 2025-02-10 11:25:38 -08:00
Timothy Jaeryang Baek b935a839fe Merge pull request #9744 from hurxxxx/fix/title-tag-gen-at-model
fix: title and tag generation did not work when selecting "atSelectedModel"
2025-02-10 11:16:03 -08:00
Timothy Jaeryang Baek 54e0299dda chore: bump 2025-02-10 11:14:04 -08:00
pseudorm 336d1d95c5 Merge branch 'dev' into bug/user-signup/fix-oauth-username-claim-has-no-effect 2025-02-10 22:00:20 +08:00
chester.cheng 1b6e12a255 add warning 2025-02-10 20:49:55 +08:00
chester.cheng db0a12f9f1 check name is none 2025-02-10 20:36:01 +08:00
Timothy Jaeryang Baek abfe868732 enh: code interpreter global toggle 2025-02-10 02:28:01 -08:00
Timothy Jaeryang Baek f9c5819314 enh: code interpreter jupyter support 2025-02-10 02:25:02 -08:00
luckyman-yan 31360fe991 add Bocha 2025-02-10 16:44:47 +08:00
Gunwoo Hur 91d0632bf4 fix: Fix issue where title and tag generation did not work when selecting the At model 2025-02-10 17:06:22 +09:00
Timothy Jaeryang Baek 29c781875d refac 2025-02-10 00:02:23 -08:00
Timothy Jaeryang Baek d95e5e0ba5 enh: kokorojs call support 2025-02-09 23:54:24 -08:00
Timothy Jaeryang Baek 205ce635f6 feat: Kokoro-js TTS support 2025-02-09 23:42:27 -08:00
Timothy Jaeryang Baek a22d1d5410 refac: code block 2025-02-09 22:43:32 -08:00
Timothy Jaeryang Baek 60095598ec chore: format 2025-02-09 22:20:47 -08:00
Timothy Jaeryang Baek 426f8f29ad refac 2025-02-09 22:19:02 -08:00
Timothy Jaeryang Baek 5551a4bff5 Merge pull request #9739 from yukiteruamano/fix-spanish
i18n: fix Spanish (es_ES) translations
2025-02-09 22:15:39 -08:00
Timothy Jaeryang Baek de2026b5cc Merge pull request #9733 from rragundez/patch-ssrf
Prevent SSRF and HTML injection
2025-02-09 22:15:03 -08:00
Rory 2c711d8365 Merge remote-tracking branch 'upstream/dev' into playwright
# Conflicts:
#	backend/requirements.txt
2025-02-09 23:52:21 -06:00
Jose Maldonado aka Yukiteru b1711e9491 i18n: fix a bad (badword: propmt) translation in es_ES (Spanish) 2025-02-10 01:07:32 -04:00
Jose Maldonado aka Yukiteru a756adfaee i18n: fix translations for es_ES (Spanish) 2025-02-10 00:37:59 -04:00
Rodrigo Agundez 167c8bf00d Prevent SSRF and HTML injection 2025-02-10 10:35:10 +08:00
Timothy Jaeryang Baek 3e1452902f chore: bump 2025-02-09 16:02:09 -08:00
Timothy Jaeryang Baek 790a747647 fix 2025-02-09 13:18:26 -08:00
Timothy Jaeryang Baek a1b31f99ae Merge pull request #9688 from yfzhou0904/main
feat: if autocomplete-generation is turned off, frontend should not attempt autocomplete request
2025-02-09 13:07:43 -08:00
Timothy Jaeryang Baek d5a815b19c Merge pull request #9693 from vinsdragonis/main
fix: Fixed error occurring when using OpenSearch as a vector db
2025-02-09 13:06:19 -08:00
Timothy Jaeryang Baek 40bba83cee Delete docs/OpenSearch docker setup.md 2025-02-09 13:06:05 -08:00
Timothy Jaeryang Baek f25df15997 Merge pull request #9596 from engineeringpatrick/main
feat: add s3 key prefix support
2025-02-09 13:05:41 -08:00
Timothy Jaeryang Baek b7f676311f Merge pull request #9675 from manwallet/patch-1
Update translation.json
2025-02-09 13:05:15 -08:00
Timothy Jaeryang Baek ae6ca4f16c Merge pull request #9704 from s1adem4n/main
i18n: Add missing German translations
2025-02-09 13:05:02 -08:00
Jonathan 7ab674991e add missing german translations 2025-02-09 17:19:21 +01:00
Vineeth B V b9d049cb05 Create OpenSearch docker setup.md 2025-02-09 16:43:34 +05:30
Vineeth B V 5a1652bc63 Update requirements.txt 2025-02-09 16:14:41 +05:30
yfzhou 11f0c48434 frontend stores ENABLE_AUTOCOMPLETE_GENERATION state, prevents making autocomplete request if turned off 2025-02-09 17:13:54 +08:00
btcman bd9d60b5a0 Update translation.json
Some Chinese translation issues
2025-02-09 10:45:19 +08:00
Timothy Jaeryang Baek 43df7e1424 fix: sensitive input button type 2025-02-08 14:02:59 -08:00
Timothy Jaeryang Baek 425a8a9178 fix: connection config shifting 2025-02-08 14:01:56 -08:00
Timothy Jaeryang Baek 338a34563a fix: web search config 2025-02-08 13:44:08 -08:00
Rodrigo Agundez 2b05c9d944 Move file metadata into the [meta][data] key 2025-02-08 19:35:27 +09:00
Timothy Jaeryang Baek 181fca4707 refac: transformer.js 2025-02-08 02:34:30 -08:00
Timothy Jaeryang Baek 9be8bea6f4 fix: filter 2025-02-08 01:07:05 -08:00
Timothy Jaeryang Baek ee0152c1fa Merge pull request #9634 from zoupingshi/dev
chore: fix some typos
2025-02-07 23:07:25 -08:00
Timothy Jaeryang Baek 8c2164928a Merge pull request #9242 from NachoNoCheese/dev
feat: Add Deepgram STT Support
2025-02-07 23:06:57 -08:00
Timothy Jaeryang Baek 79c0b45543 Merge pull request #9631 from XingjianXie/remove_inlet_outlet_duplication
Refactor common code between inlet and outlet
2025-02-07 22:57:49 -08:00
Timothy Jaeryang Baek 3dde2f67cf refac 2025-02-07 22:57:39 -08:00
Timothy Jaeryang Baek dee07a6260 Merge pull request #9629 from rragundez/handle-no-picture
Handle no picture when retrieving from Microsoft EntraID
2025-02-07 22:52:35 -08:00
Timothy Jaeryang Baek 6862081d6b Merge pull request #9641 from SentinalMax/bugfix/GGUF-upload-issue
Fix: GGUF model upload instability
2025-02-07 22:51:44 -08:00
SentinalMax 95aaacfeb4 fixed GGUF model upload instability 2025-02-07 22:52:24 -06:00
zoupingshi d39a274ef8 chore: fix some typos
Signed-off-by: zoupingshi <hangfachang@outlook.com>
2025-02-08 12:14:01 +08:00
Rodrigo Agundez 546ef6ab42 Check is response is OK from retrieve the picture if not then default 2025-02-08 09:49:16 +09:00
Timothy Jaeryang Baek 4271b652a5 Merge pull request #9619 from XingjianXie/fix_after_tag
Fix tag_content_handler issue
2025-02-07 14:42:14 -08:00
Timothy Jaeryang Baek febc5d392f Merge pull request #9620 from tarmst/add-oauth-debug-logs
feat: Adding debug logs for oauth role & group management
2025-02-07 14:41:43 -08:00
Xingjian Xie c56bedc5ff Fix tag_content_handler issue: after_tag should be remove from the current content_blocks 2025-02-07 20:15:54 +00:00
tarmst 85912d726e Adding debug logs for oauth role & group management 2025-02-07 19:53:25 +00:00
Timothy Jaeryang Baek 4b4a86d4e7 chore: dependencies 2025-02-07 11:51:27 -08:00
Patrick Deniso f8a8218149 fix bug where '/' was not properly inserted in s3 key strings 2025-02-07 14:42:16 -05:00
Timothy Jaeryang Baek 3c5ac4ace5 Merge pull request #9416 from abdalrohman/fix_filter_domains
feat(ui): implement domain filter list for web search settings
2025-02-07 11:23:15 -08:00
Timothy Jaeryang Baek c092db379e fix 2025-02-07 11:23:04 -08:00
Timothy Jaeryang Baek 8a54df1ed2 Merge pull request #9516 from cloudron-io/oauth_username
oidc: pick up username correctly
2025-02-07 11:18:53 -08:00
Timothy Jaeryang Baek 65cef7c3e4 Merge pull request #9541 from EntropyYue/dev
feat: optimize time display
2025-02-07 11:17:39 -08:00
Timothy Jaeryang Baek 035330f70e Merge pull request #9505 from binxn/patch-1
Update jina_search.py
2025-02-07 11:17:13 -08:00
Timothy Jaeryang Baek 897c9b2616 Merge pull request #9588 from TiancongLx/dev
i18n: update zh-TW
2025-02-07 11:15:54 -08:00
Timothy Jaeryang Baek 4ed544a4b5 Merge pull request #9598 from Mistrick/patch
fix: correct max seed for comfyui
2025-02-07 11:15:41 -08:00
Patrick Deniso 7f82476926 use key_prefix in rest of S3StorageProvider 2025-02-07 13:56:57 -05:00
Mistrick 94f56db5ee fix max seed for comfyui 2025-02-08 01:10:18 +07:00
Patrick Deniso 5ca6afc0fc add s3 key prefix support 2025-02-07 12:15:54 -05:00
Mazurek Michal 35f3824932 feat: Implement Document Intelligence as Content Extraction Engine 2025-02-07 13:44:47 +01:00
Tiancong Li 5ef00dece9 i18n: update zh-TW 2025-02-07 19:13:51 +08:00
EntropyYue 3a2d964d39 enh: optimize time display 2025-02-07 07:43:39 +08:00
Rodrigo Agundez ffb9e73975 Save image metadata to DB 2025-02-07 08:32:06 +09:00
Rodrigo Agundez 312f273a1b Add extension to image filename 2025-02-07 08:22:20 +09:00
Rodrigo Agundez 4974c9cbb0 Refactor upload function 2025-02-07 08:12:04 +09:00
Xingjian Xie 89669a21fc Refactor common code between inlet and outlet 2025-02-06 23:07:47 +00:00
Rodrigo Agundez 7e97e9dcc9 Improve style 2025-02-07 07:37:18 +09:00
Rodrigo Agundez ac3338265d Set get_config as the name of the function 2025-02-07 07:30:58 +09:00
Girish Ramakrishnan 8215aa36d0 oidc: pick up username correctly 2025-02-06 17:59:16 +01:00
binxn 88db4ca7ba Update jina_search.py
Updated Jina's search function in order to use POST and make use of the result count passed by the user

Note: Jina supports a max of 10 result count
2025-02-06 14:30:27 +01:00
Timothy Jaeryang Baek 14398ab628 refac: styling 2025-02-06 01:28:33 -08:00
Rodrigo Agundez 8d43fdadc1 Add functionality in other image generation types 2025-02-06 18:24:57 +09:00
Timothy Jaeryang Baek 8ca21ea838 refac: styling 2025-02-06 01:07:01 -08:00
Rodrigo Agundez 159578dfd4 Enable usage of the DB to store generated images 2025-02-06 17:59:59 +09:00
Timothy Jaeryang Baek 4a33956e77 Merge pull request #9378 from open-webui/dependabot/npm_and_yarn/npm_and_yarn-4be97f86df
build(deps-dev): bump vitest from 1.6.0 to 1.6.1 in the npm_and_yarn group across 1 directory
2025-02-06 00:55:18 -08:00
Timothy Jaeryang Baek a1e26016bb fix: new connections config 2025-02-06 00:52:22 -08:00
Timothy Jaeryang Baek feffdf197f doc: readme 2025-02-06 00:38:06 -08:00
Timothy Jaeryang Baek a023667e1e fix: user params save issue 2025-02-06 00:37:10 -08:00
Timothy Jaeryang Baek b3a7cb938f Merge pull request #9463 from roryeckel/cleanup-code-interpreter-markdown
fix: Improve automatic cleanup of code_interpreter formatting
2025-02-06 00:32:55 -08:00
Timothy Jaeryang Baek 10e2b3c055 Merge pull request #9471 from hurxxxx/fix/o3_not_support_max_tokens
fix: o3 does not support max_tokens parameter
2025-02-06 00:31:48 -08:00
Vineeth B V 7c78facfd9 Update opensearch.py 2025-02-06 13:36:11 +05:30
hurxxxx b9480c0e8a fix : o1 should also be applied 2025-02-06 16:53:04 +09:00
hurxxxx 80e123f58f fix : O3 also does not support the max_tokens parameter, so title generation is not possible when using the O3 model 2025-02-06 16:41:24 +09:00
Vineeth B V fd6b039859 Added a query method for OpenSearch vector db.
- This PR aims to address the error 400: "**'OpenSearchClient' object has no attribute 'query'**".
- With the implemented query() method, this issue should be resolved and allow uploaded documents to be vectorized and retrieved based on the given query.
2025-02-06 12:04:14 +05:30
Rory 74b971b888 refac: clean up solution for correcting code_interpreter backticks 2025-02-05 23:38:35 -06:00
Rory c676303a55 enh: automatically remove incorrect backticks before code_interpreter tags 2025-02-05 23:26:13 -06:00
Timothy Jaeryang Baek 397595de9d Merge pull request #9456 from mitomac/fix-oidc-email-claim-new
fix: check for email claim before skipping userinfo endpoint
2025-02-05 20:00:35 -08:00
D. MacAlpine 34b62e71cc fix: check for email claim before skipping userinfo endpoint 2025-02-05 21:31:55 -05:00
Rory ec6fe9939b Merge remote-tracking branch 'upstream/dev' into playwright 2025-02-05 17:47:58 -06:00
JT 40dea3fbe1 Merge branch 'dev' into main 2025-02-05 15:15:24 -08:00
Timothy Jaeryang Baek e9d6ada25c Merge pull request #9445 from open-webui/dev
0.5.10
2025-02-05 14:46:41 -08:00
Timothy Jaeryang Baek b8fe9497fb refac 2025-02-05 14:46:25 -08:00
Timothy Jaeryang Baek ed49c2e75a doc: changelog 2025-02-05 14:42:28 -08:00
Timothy Jaeryang Baek 7ba717d171 refac: system prompt template 2025-02-05 14:35:18 -08:00
Timothy Jaeryang Baek fb92694d61 Merge pull request #9415 from aindriu80/main
i18n Updated Irish translations
2025-02-05 14:29:26 -08:00
Timothy Jaeryang Baek d9f17225ef refac 2025-02-05 14:26:09 -08:00
Timothy Jaeryang Baek 1e67956db9 refac 2025-02-05 14:20:51 -08:00
Timothy Jaeryang Baek 648878782b refac: response parse 2025-02-05 14:10:53 -08:00
jayteaftw 157c781b0a Merge branch 'main' of https://github.com/jayteaftw/open-webui 2025-02-05 14:07:59 -08:00
jayteaftw 6d2f87e904 Added server side Prefixing 2025-02-05 14:03:16 -08:00
Timothy Jaeryang Baek ff84c120f5 fix: api usage 2025-02-05 13:18:17 -08:00
M.Abdulrahman Alnaseer 68703951e8 feat(ui): implement domain filter list for web search settings 2025-02-05 19:14:40 +03:00
Aindriú Mac Giolla Eoin e56b8d99ee Updated Irish translations from 0.5.9 2025-02-05 15:50:52 +00:00
Timothy Jaeryang Baek ab94468ffa Merge pull request #9387 from open-webui/dev
0.5.9
2025-02-05 02:38:21 -08:00
Timothy Jaeryang Baek 13c7d96515 refac 2025-02-05 02:38:05 -08:00
Timothy Jaeryang Baek bffbf7e238 doc: changelog 2025-02-05 02:35:16 -08:00
Timothy Jaeryang Baek 90cd6f272f fix: tag support 2025-02-05 02:33:40 -08:00
Timothy Jaeryang Baek c36c63f1e8 fix: <think> tag 2025-02-05 02:10:28 -08:00
dependabot[bot] 98ba0c37b9 build(deps-dev): bump vitest
Bumps the npm_and_yarn group with 1 update in the / directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `vitest` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v1.6.1/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-05 09:25:26 +00:00
Timothy Jaeryang Baek dc3b2f1f1e Merge pull request #9190 from open-webui/dev
0.5.8
2025-02-05 01:16:35 -08:00
Timothy Jaeryang Baek 1ab66e83c6 refac: styling 2025-02-05 01:14:46 -08:00
Timothy Jaeryang Baek 3b7926f00d doc: changelog 2025-02-05 01:09:23 -08:00
Timothy Jaeryang Baek e27de61318 Merge pull request #9377 from OriginalSimon/dev
18n: Update Ukrainian translation
2025-02-05 01:08:39 -08:00
Timothy Jaeryang Baek cda6b5ad17 refac: styling 2025-02-05 01:07:38 -08:00
Simon 3f188b0b86 Update translation.json 2025-02-05 10:05:38 +01:00
Timothy Jaeryang Baek b33b49789e enh: responsive styling 2025-02-05 01:03:40 -08:00
Timothy Jaeryang Baek cce1762cb8 refac: tool calling 2025-02-05 01:03:16 -08:00
Simon 1fbbd36433 Update translation.json 2025-02-05 10:02:59 +01:00
Timothy Jaeryang Baek f6b955e6a0 chore: format 2025-02-05 00:44:07 -08:00
Timothy Jaeryang Baek 41ca399dfd chore: format 2025-02-05 00:42:51 -08:00
Timothy Jaeryang Baek 5385d39420 Merge pull request #9374 from KarlLee830/translate
i18n: Update Chinese translation
2025-02-05 00:38:18 -08:00
Timothy Jaeryang Baek d4a18a5765 refac: always on web search 2025-02-05 00:37:47 -08:00
KarlLee830 3f547eb395 i18n: Update Chinese translation 2025-02-05 16:34:51 +08:00
Timothy Jaeryang Baek 336984c254 Merge pull request #9370 from hurxxxx/feat/always-web-search
feat: Add "Always-On Web Search" configuration.
2025-02-05 00:27:29 -08:00
Timothy Jaeryang Baek 58bb4758df chore: bump 2025-02-05 00:25:11 -08:00
Timothy Jaeryang Baek 102b56b938 doc: changelog 2025-02-05 00:23:30 -08:00
Timothy Jaeryang Baek e41a2682f5 chore: format 2025-02-05 00:07:45 -08:00
Timothy Jaeryang Baek f6f8c08cb0 Merge pull request #9068 from df-cgdm/main
**feat** Add user related headers when calling an external embedding api
2025-02-05 00:05:44 -08:00
Timothy Jaeryang Baek 8e831a5433 Merge pull request #9358 from KarlLee830/translate
i18n: Update Chinese translation
2025-02-05 00:04:12 -08:00
Timothy Jaeryang Baek c778345e84 refac 2025-02-05 00:01:24 -08:00
hurxxxx 0e3c1ac392 Merge remote-tracking branch 'upstream/dev' into feat/always-web-search
# Conflicts:
#	src/lib/components/chat/Chat.svelte
2025-02-05 16:56:34 +09:00
Timothy Jaeryang Baek 2b0af33274 refac 2025-02-04 23:48:01 -08:00
Timothy Jaeryang Baek 9624493b55 refac 2025-02-04 23:44:51 -08:00
Timothy Jaeryang Baek e349e26cd8 refac 2025-02-04 23:20:09 -08:00
Timothy Jaeryang Baek 314b674f32 feat: native tool calling support 2025-02-04 23:05:14 -08:00
Timothy Jaeryang Baek 7766a08b70 refac: ollama tool calls 2025-02-04 21:42:49 -08:00
Timothy Jaeryang Baek c5a9cfacf1 refac 2025-02-04 21:20:03 -08:00
Timothy Jaeryang Baek 8d520eeecd fix: ollama native tool calling 2025-02-04 21:08:26 -08:00
Timothy Jaeryang Baek f88a80ac47 wip: pyodide kernel 2025-02-04 21:02:11 -08:00
Timothy Jaeryang Baek e7da506add refac: middleware 2025-02-04 21:01:53 -08:00
Timothy Jaeryang Baek 2e61ea7cc9 refac: chat 2025-02-04 20:56:13 -08:00
KarlLee830 0a5b421ac1 i18n: Update Chinese translation 2025-02-05 12:53:06 +08:00
Timothy Jaeryang Baek a4ea2e0996 fix: multi response message 2025-02-04 20:33:02 -08:00
Timothy Jaeryang Baekandsmonux 23df351239 refac: ollama tool calling support
Co-Authored-By: smonux <85928277+smonux@users.noreply.github.com>
2025-02-04 19:22:08 -08:00
Timothy Jaeryang Baek ec9be0d20d feat: native tool calling frontend 2025-02-04 19:14:59 -08:00
Timothy Jaeryang Baek 533b62f062 refac: deprecate non web worker pyodide 2025-02-04 18:41:53 -08:00
Timothy Jaeryang Baek fba25c6cec refac 2025-02-04 18:36:22 -08:00
Timothy Jaeryang Baek 6ee924924e refac: code interpreter 2025-02-04 18:33:22 -08:00
Timothy Jaeryang Baek 9c0a783991 refac: pyodide 2025-02-04 17:29:10 -08:00
Timothy Jaeryang Baek 266899acc0 refac 2025-02-04 14:45:47 -08:00
Timothy Jaeryang Baek 2b0c5f322f fix: suggestions 2025-02-04 14:41:42 -08:00
Timothy Jaeryang Baek 08ce91ad86 Merge pull request #9325 from Mavyre/patch-1
fix: Corrected chat generation error after failed web search query generation
2025-02-04 14:02:10 -08:00
Timothy Jaeryang Baek d062af4129 Merge pull request #9332 from le-ross/main
fixing french typo
2025-02-04 14:01:38 -08:00
Timothy Jaeryang Baek 5cda8a57e7 Merge pull request #9337 from abdalrohman/exa_integration
feat: implement Exa search engine integration
2025-02-04 14:00:06 -08:00
Timothy Jaeryang Baek b02a38487c Merge pull request #9328 from kahghi/fix-unstructured-pkg-version
fix: increment unstructured package version to fix UnstructuredExcelLoader
2025-02-04 13:59:39 -08:00
JT 81102f4be2 Merge branch 'open-webui:main' into main 2025-02-04 13:06:04 -08:00
jvinolus 7b8e5d4e7c Fixed errors and added more support 2025-02-04 13:04:36 -08:00
M.Abdulrahman Alnaseer 2bb6b49f11 feat: implement Exa search engine integration 2025-02-04 21:13:16 +03:00
rossm d6b88c7ef7 fixing french typo 2025-02-04 10:43:19 -05:00
kahghi 1868cf0a91 increment unstructured package version 2025-02-04 22:40:49 +08:00
Mavyre bbffdeb758 Corrected chat generation error after failed web search query generation 2025-02-04 12:13:54 +01:00
Timothy Jaeryang Baek ce08ea5f6c refac 2025-02-04 01:06:03 -08:00
Timothy Jaeryang Baek 12a7f4d43b refac: styling 2025-02-04 01:03:41 -08:00
Timothy Jaeryang Baek 6ba9ccdd79 refac: styling 2025-02-04 00:55:55 -08:00
Timothy Jaeryang Baek 0b01fd9d6f Merge pull request #9322 from jannikstdl/smart-suggestions
feat: smart suggestions
2025-02-04 00:38:56 -08:00
Jannik Streidl 17c1c2f0f3 fix: only animate on change 2025-02-04 09:36:11 +01:00
Jannik Streidl b8b82b9156 i18n 2025-02-04 09:17:55 +01:00
Jannik Streidl 43a490457d feat: smart suggestions 2025-02-04 09:14:02 +01:00
Timothy Jaeryang Baek f58ae6bd17 refac: styling 2025-02-03 22:11:01 -08:00
Timothy Jaeryang Baek 49e5d01213 refac: pyodide 2025-02-03 22:07:59 -08:00
Timothy Jaeryang Baek b20603e01a refac 2025-02-03 22:05:52 -08:00
Timothy Jaeryang Baek 3adfa29f7d chore: format 2025-02-03 21:56:35 -08:00
Timothy Jaeryang Baek a38ce75eda refac: styling 2025-02-03 21:25:16 -08:00
Timothy Jaeryang Baek 7e971f9dd1 refac 2025-02-03 21:13:27 -08:00
Timothy Jaeryang Baek 074a443790 refac 2025-02-03 21:10:49 -08:00
Timothy Jaeryang BaekandJannik S. 454294a101 refac: design
thanks @jannikstdl for nudging me to redesign 🙌

Co-Authored-By: Jannik S. <jannik@streidl.dev>
2025-02-03 20:53:46 -08:00
Timothy Jaeryang Baek d1c7a3cff3 enh: code interpreter prompt 2025-02-03 20:49:54 -08:00
Rory 7bac1a170d Merge remote-tracking branch 'upstream/dev' into playwright
# Conflicts:
#	backend/open_webui/retrieval/web/utils.py
2025-02-03 22:32:46 -06:00
Timothy Jaeryang Baek 1b8dc673e7 Merge pull request #9314 from roryeckel/validate-rag-urls
Validate URLs returned by search engine
2025-02-03 20:26:34 -08:00
Timothy Jaeryang Baek 71039b00a8 chore: format 2025-02-03 20:21:49 -08:00
Timothy Jaeryang Baek 16d62d7869 refac: tooltip 2025-02-03 20:21:11 -08:00
Timothy Jaeryang Baek 0ae7d12343 refac 2025-02-03 20:15:19 -08:00
Timothy Jaeryang Baek 1c518ab688 refac: styling 2025-02-03 20:13:14 -08:00
Timothy Jaeryang Baek ebde5c47d9 refac: styling 2025-02-03 20:06:58 -08:00
Timothy Jaeryang Baek 2bf68593af refac: styling 2025-02-03 20:06:17 -08:00
Timothy Jaeryang Baek b61138e676 refac: message input 2025-02-03 19:54:20 -08:00
Timothy Jaeryang Baek 2517a2b653 refac: styling 2025-02-03 19:34:36 -08:00
Timothy Jaeryang Baek 6d797820f5 refac: input ui 2025-02-03 19:18:31 -08:00
Timothy Jaeryang Baek f527f31d2b refac 2025-02-03 19:11:23 -08:00
Timothy Jaeryang Baek 94c6428ae2 refac: chat 2025-02-03 19:06:15 -08:00
Rory 1a1cc1514f Merge branch 'dev' into validate-rag-urls 2025-02-03 20:44:59 -06:00
Rory f85d7e3686 Merge branch 'dev' into playwright 2025-02-03 20:44:39 -06:00
Timothy Jaeryang Baek 8fdd3024f7 refac 2025-02-03 18:36:49 -08:00
Timothy Jaeryang Baek aa7184ae0d refac 2025-02-03 18:17:38 -08:00
Timothy Jaeryang Baek 51de2ffcc0 fix: ff 2025-02-03 18:03:38 -08:00
Timothy Jaeryang Baek e5bb0f014a refac 2025-02-03 17:19:33 -08:00
Rory 93cc1a88ee Merge branch 'dev' into playwright 2025-02-03 19:09:26 -06:00
Rory 310a18eef2 Merge branch 'dev' into validate-rag-urls 2025-02-03 19:09:11 -06:00
Rory 1b581b714f Moving code out of playwright branch 2025-02-03 18:47:26 -06:00
Timothy Jaeryang Baek df07d671ce refac 2025-02-03 16:21:44 -08:00
Rory 3db6b4352f fix: Filter out invalid RAG web URLs (continued) 2025-02-03 18:18:49 -06:00
Timothy Jaeryang Baek 31c176a485 refac 2025-02-03 16:18:07 -08:00
Timothy Jaeryang Baek 943a57474f refac 2025-02-03 16:14:00 -08:00
Timothy Jaeryang Baek 1635dcb69b refac 2025-02-03 16:07:43 -08:00
Rory 121a13d4ed fix: Filter to valid RAG web search URLs 2025-02-03 17:37:20 -06:00
Rory 22746c7a3f Merge remote-tracking branch 'upstream/dev' 2025-02-03 17:28:53 -06:00
Timothy Jaeryang Baek e3214d08b5 refac 2025-02-03 15:20:27 -08:00
Timothy Jaeryang Baek db0ff839dd refac 2025-02-03 14:24:30 -08:00
Timothy Jaeryang Baek d87a7b2f8b refac: styling 2025-02-03 14:16:22 -08:00
Timothy Jaeryang Baek b891a398fd refac 2025-02-03 13:50:57 -08:00
Timothy Jaeryang Baek c85ce07f92 refac 2025-02-03 13:42:03 -08:00
Timothy Jaeryang Baek 5c0854c6b3 Merge pull request #9287 from taylorwilsdon/authenticate_gooogle_settings
fix: Restrict Google Drive credentials to authenticated users
2025-02-03 13:40:39 -08:00
Timothy Jaeryang Baek 3061d4bd10 Merge pull request #9291 from moblangeois/french-translation
i18n: Update French translation
2025-02-03 13:38:26 -08:00
Timothy Jaeryang Baek d37a7a1fe1 Merge branch 'dev' into french-translation 2025-02-03 13:38:08 -08:00
Timothy Jaeryang Baek 70b8199030 chore: format 2025-02-03 13:37:29 -08:00
Timothy Jaeryang Baek 9b78dde8a9 Merge pull request #9295 from OriginalSimon/dev
18n: Update Ukrainian translation
2025-02-03 13:36:42 -08:00
Simon bc56f442c1 Update translation.json 2025-02-03 21:04:17 +01:00
Morgan Blangeois 6c81cf9795 i18n: Add French translation 2025-02-03 20:16:53 +01:00
Taylor Wilsdon 74cf5e2a2e fix: Restrict Google Drive credentials to authenticated users 2025-02-03 11:55:52 -05:00
Matteo Sirri 22c100bb6b feat: add contributing guide 2025-02-03 16:45:25 +00:00
Matteo Sirri e6715ce8b8 docs: fix readme 2025-02-03 16:43:59 +00:00
Matteo Sirri 65443a3a66 feat: initial commit 2025-02-03 16:35:46 +00:00
Timothy Jaeryang Baek 70116e7251 refac: styling 2025-02-03 01:18:16 -08:00
Timothy Jaeryang Baek 95c6d0e78c enh: code interpreter toggle 2025-02-03 01:14:38 -08:00
Timothy Jaeryang Baek ca4b839e6d enh: code interpreter 2025-02-03 00:24:09 -08:00
Timothy Jaeryang Baek 58d2fd9ac1 refac: styling 2025-02-03 00:03:41 -08:00
Timothy Jaeryang Baek 78853a67e4 refac 2025-02-02 23:35:58 -08:00
Timothy Jaeryang Baek 09cd95bffe enh: pyodide 2025-02-02 23:08:37 -08:00
Timothy Jaeryang Baek 8685256002 feat: code interpreter 2025-02-02 22:38:19 -08:00
Timothy Jaeryang Baek 0d33725d21 enh: pyodide 2025-02-02 21:18:52 -08:00
Timothy Jaeryang Baek eb1ede119e refac: reasoning tag 2025-02-02 20:50:54 -08:00
Timothy Jaeryang Baek e4fc2e0e51 refac 2025-02-02 19:24:07 -08:00
Rory f837d2cdbb Merge branch 'dev' of https://github.com/open-webui/open-webui
# Conflicts:
#	src/lib/i18n/locales/sr-RS/translation.json
2025-02-02 20:31:27 -06:00
Rory c3df481b22 Introduce docker-compose.playwright.yaml + run-compose update 2025-02-02 19:44:40 -06:00
Timothy Jaeryang Baek 74172461c7 enh: pyodide python result handling 2025-02-02 16:56:21 -08:00
Rory 8da33721d5 Support PLAYWRIGHT_WS_URI 2025-02-02 17:58:09 -06:00
Timothy Jaeryang Baek b94b691993 enh: utils 2025-02-02 15:11:50 -08:00
Tristan Morris a004bf2a6d Merge branch into dev 2025-02-02 08:44:57 -06:00
Tristan Morris 5df474abb9 Add support for Deepgram STT 2025-02-02 08:12:13 -06:00
Timothy Jaeryang Baek fc1cec10be chore: bump 2025-02-01 21:05:08 -08:00
Timothy Jaeryang Baek 95c94d8a85 Merge pull request #9191 from NYU-ITS/milvus_auth_token
[feat] Milvus: new optional config var, MILVUS_TOKEN
2025-02-01 21:04:30 -08:00
Timothy Jaeryang Baek 5ce4b1c570 Merge pull request #9173 from KarlLee830/fix-duckduckgo
Fix DuckDuckGo's 202 Error RateLimit
2025-02-01 21:02:31 -08:00
Timothy Jaeryang Baek af6f0641cb chore: bump 2025-02-01 21:02:12 -08:00
Timothy Jaeryang Baek 642a093d02 refac: tool calls 2025-02-01 21:01:06 -08:00
Rory a84e488a4e Fix playwright in docker by updating unstructured 2025-02-01 22:58:28 -06:00
Timothy Jaeryang Baek 28cf616147 Merge pull request #9200 from open-webui/dependabot/pip/backend/dev/opencv-python-headless-4.11.0.86
build(deps): bump opencv-python-headless from 4.10.0.84 to 4.11.0.86 in /backend
2025-02-01 10:04:26 -08:00
Timothy Jaeryang Baek ffe1abfda9 Merge pull request #9198 from open-webui/dependabot/pip/backend/dev/aiohttp-3.11.11
build(deps): bump aiohttp from 3.11.8 to 3.11.11 in /backend
2025-02-01 10:04:18 -08:00
Timothy Jaeryang Baek 6b879abdb9 Merge pull request #9199 from open-webui/dependabot/pip/backend/dev/soundfile-0.13.1
build(deps): bump soundfile from 0.12.1 to 0.13.1 in /backend
2025-02-01 10:04:11 -08:00
Timothy Jaeryang Baek a4b8e3d958 Merge pull request #9201 from open-webui/dependabot/pip/backend/dev/authlib-1.4.1
build(deps): bump authlib from 1.3.2 to 1.4.1 in /backend
2025-02-01 10:04:02 -08:00
Timothy Jaeryang Baek 442ad41d2b Merge pull request #9202 from open-webui/dependabot/pip/backend/dev/pymdown-extensions-10.14.2
build(deps): bump pymdown-extensions from 10.11.2 to 10.14.2 in /backend
2025-02-01 10:03:53 -08:00
Timothy Jaeryang Baek 3502e09d9f fix: image prompt gen template 2025-01-31 23:50:58 -08:00
Timothy Jaeryang Baek af10f87075 refac: textarea 2025-01-31 23:49:25 -08:00
Timothy Jaeryang Baek 4e375c892a refac 2025-01-31 23:15:49 -08:00
Timothy Jaeryang Baek bc5452ea41 Merge pull request #9195 from rragundez/default-picture
[EASY] Set default picture to user.png
2025-01-31 19:35:52 -08:00
dependabot[bot] aa2eb37e10 build(deps): bump pymdown-extensions from 10.11.2 to 10.14.2 in /backend
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.11.2 to 10.14.2.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.11.2...10.14.2)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 02:36:20 +00:00
dependabot[bot] c00d1a2f87 build(deps): bump authlib from 1.3.2 to 1.4.1 in /backend
Bumps [authlib](https://github.com/lepture/authlib) from 1.3.2 to 1.4.1.
- [Release notes](https://github.com/lepture/authlib/releases)
- [Changelog](https://github.com/lepture/authlib/blob/master/docs/changelog.rst)
- [Commits](https://github.com/lepture/authlib/compare/v1.3.2...v1.4.1)

---
updated-dependencies:
- dependency-name: authlib
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 02:36:17 +00:00
dependabot[bot] 824aad4703 build(deps): bump opencv-python-headless in /backend
Bumps [opencv-python-headless](https://github.com/opencv/opencv-python) from 4.10.0.84 to 4.11.0.86.
- [Release notes](https://github.com/opencv/opencv-python/releases)
- [Commits](https://github.com/opencv/opencv-python/commits)

---
updated-dependencies:
- dependency-name: opencv-python-headless
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 02:36:14 +00:00
dependabot[bot] f661bfde7d build(deps): bump soundfile from 0.12.1 to 0.13.1 in /backend
Bumps [soundfile](https://github.com/bastibe/python-soundfile) from 0.12.1 to 0.13.1.
- [Release notes](https://github.com/bastibe/python-soundfile/releases)
- [Commits](https://github.com/bastibe/python-soundfile/compare/0.12.1...0.13.1)

---
updated-dependencies:
- dependency-name: soundfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 02:36:11 +00:00
dependabot[bot] 9d52120c62 build(deps): bump aiohttp from 3.11.8 to 3.11.11 in /backend
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 02:36:08 +00:00
Rodrigo Agundez 30e4b32a5b Set default picture to user.png 2025-02-01 08:32:04 +09:00
Sajid Ali 7b31c75271 Milvus: new optional config var, MILVUS_TOKEN
modified:   backend/open_webui/config.py
	modified:   backend/open_webui/retrieval/vector/dbs/milvus.py
2025-01-31 17:01:00 -05:00
Timothy Jaeryang Baek 9b640b0ac2 Merge pull request #9163 from rragundez/default-role
Bug fix, configurable default if using oauth via the `DEFAULT_USER_ROLE` env variable
2025-01-31 12:38:32 -08:00
KarlLee830 e7de41499a fix: DuckDuckGo's RateLimit exception 2025-02-01 02:01:22 +08:00
Rodrigo Agundez 1f2b5fa68f move comment to top 2025-01-31 23:05:33 +09:00
Rodrigo Agundez 681851ca6b Configurable default role for oauth 2025-01-31 23:00:24 +09:00
Timothy Jaeryang Baek 74aec6bdf9 Merge pull request #9143 from kostich/dev
i18n: Update Serbian translation
2025-01-31 00:47:50 -08:00
Timothy Jaeryang Baek e3e7176b0b Merge pull request #9142 from dannyl1u/feat/delete-unused-response-message
feat: delete unused response message from other "branches"
2025-01-30 21:28:10 -08:00
Rory 77ae73e659 Adjust search event messages + translations 2025-01-30 23:18:11 -06:00
Марко М. Костић (Marko M. Kostić) 968787ac3e Update Serbian translation 2025-01-31 06:16:08 +01:00
dannyl1u e9f05b6cd7 feat: delete message responses 2025-01-30 20:48:06 -08:00
Rory 2452e271cd Refine RAG_WEB_LOADER 2025-01-30 20:31:31 -06:00
Rory 8dafe3cba8 Merge branch 'dev' of https://github.com/open-webui/open-webui 2025-01-30 18:26:55 -06:00
Timothy Jaeryang Baek 8fdb37a17f Merge pull request #9131 from 0xThresh/dev
fix: Add error catching for function pip install issues
2025-01-30 15:02:47 -08:00
Timothy Jaeryang Baek 4d376c011a Merge pull request #9129 from imJack6/dev
i18n: Corrected localization typos in Simplified Chinese
2025-01-30 15:00:21 -08:00
Timothy Jaeryang Baek 5ebcd44163 Merge pull request #9110 from muhac/dev
i18n: improved Chinese translations of think tag
2025-01-30 15:00:04 -08:00
James W. 124fdcc48c Merge branch 'open-webui:dev' into dev 2025-01-30 13:34:01 -07:00
James Westbrook 48c2fb0d24 fix: Add error catching for function pip install issues 2025-01-30 13:32:11 -07:00
Jack Lei 0d4d81e012 i18n: Corrected localization typos in Simplified Chinese 2025-01-31 03:47:37 +08:00
Muhan Li 14bbcd7046 i18n: improved Chinese translations of think tag 2025-01-30 05:22:59 -05:00
Timothy Jaeryang Baek cc99673906 refac: prompt variables 2025-01-29 21:56:51 -08:00
Timothy Jaeryang Baek d6c82939e6 refac 2025-01-29 21:56:28 -08:00
Timothy Jaeryang Baek 33fffd6b1d refac: rm print statement 2025-01-29 21:36:05 -08:00
Timothy Jaeryang Baek cd088b2f71 fix 2025-01-29 21:32:07 -08:00
Timothy Jaeryang Baek a8f2919e9e fix: #9003 2025-01-29 21:31:18 -08:00
Timothy Jaeryang Baek be665f2a3e Merge pull request #8493 from kyunwang/fix/oidc-500-error-name-field
fix: Check OAuth name type with fallback
2025-01-29 21:08:21 -08:00
Timothy Jaeryang Baek 8727b91664 fix: display usage for non-streaming ollama response 2025-01-29 21:07:22 -08:00
Timothy Jaeryang Baek 248fcf1636 refac: styling 2025-01-29 21:06:01 -08:00
Timothy Jaeryang Baek 7f61d01fde refac: playground 2025-01-29 20:35:37 -08:00
Timothy Jaeryang Baek 52010accc9 refac 2025-01-29 20:11:37 -08:00
Timothy Jaeryang Baek 6658e67113 fix: title gen 2025-01-29 20:03:46 -08:00
Timothy Jaeryang Baek 08ad4ee018 enh: check for reasoning tags 2025-01-29 14:59:23 -08:00
Timothy Jaeryang Baek 5420c165c6 refac: title generation 2025-01-29 14:40:36 -08:00
Timothy Jaeryang Baek 4abede9a2b fix: uploaded file should not be deleted 2025-01-29 14:20:51 -08:00
Timothy Jaeryang Baek 40a4443949 Merge pull request #9082 from Alex1607/main
FIX max_tokens not being set properly
2025-01-29 11:48:05 -08:00
Timothy Jaeryang Baek 84c700b92c Merge pull request #9059 from jrespeto/jrespeto-patch-1
fix:  Update ollama.py - Missing await in coroutine
2025-01-29 11:39:42 -08:00
Timothy Jaeryang Baek 5fef92c95e Merge pull request #9064 from iidx/i18n-typo
i18n: update ko-KR
2025-01-29 11:39:29 -08:00
Alexander c2e742afe1 Fix max_tokens not being set properly 2025-01-29 19:28:09 +01:00
Jonathan Respeto a32782e527 fix: Update openai.py
need to await get_filtered_models
2025-01-29 08:47:54 -05:00
Didier FOURNOUT 6ca295ec59 Add user related headers when calling an external embedding api 2025-01-29 10:55:52 +00:00
iidx 938a151f12 i18n: some korean update 2025-01-29 17:30:53 +09:00
iidx f502e7db51 i18n: some korean update 2025-01-29 17:18:13 +09:00
iidx bd24ed953a i18n: Corrected typos in korean 2025-01-29 15:57:44 +09:00
Rory 4e8b390682 Add RAG_WEB_LOADER + Playwright mode + improve stability of search 2025-01-28 23:03:15 -06:00
Timothy Jaeryang Baek 9418364062 chore: fastapi bump 2025-01-28 18:36:23 -08:00
Jonathan Respeto b4be58f6b6 Update ollama.py
Missing await in coroutine

causing 500 errors on /ollama/api/tags since v0.5.0
2025-01-28 18:27:41 -05:00
Timothy Jaeryang Baek c5b5303a55 Merge pull request #9031 from bunnerz-king/main
LDAP auth, return user permissions in response
2025-01-28 14:50:04 -08:00
Timothy Jaeryang Baek c021aba094 enh: chat "clone" i18n 2025-01-28 12:49:06 -08:00
hurxxxx 8e0c0b4ae3 fix : Infinite loading issue occurs. 2025-01-29 04:42:41 +09:00
hurxxxx 857b3f0da8 Merge remote-tracking branch 'upstream/dev' into feat/rag-status 2025-01-29 02:01:50 +09:00
hurxxxx af979ce49a feat: Add user setting for "Always Enable Search" 2025-01-29 02:01:46 +09:00
Andrew King a1b5c18ef7 ldap pass user permissions into response 2025-01-28 09:51:21 -05:00
Timothy Jaeryang Baek 8c7e52e5a1 Merge pull request #9010 from Shadowfita/patch-1
fix: Include empty delta object on openai_chat_chunk_message_template per OpenAI API documentation
2025-01-27 17:51:09 -08:00
Orion 95f4d99e3b Update misc.py
Include empty delta object on openai_chat_chunk_message_template per OpenAI API documentation. 

https://platform.openai.com/docs/api-reference/chat/streaming#chat/streaming
2025-01-28 09:53:22 +10:00
Timothy Jaeryang Baek ce6e8d1264 Merge pull request #9006 from TiancongLx/dev
i18n: update zh-TW
2025-01-27 15:15:32 -08:00
Tiancong Li 45e19fb9bd i18n: update zh-TW 2025-01-28 05:08:19 +08:00
Timothy Jaeryang Baek cd560a359c Merge pull request #8946 from zeroxs/feat/localize-dates
feat: Localized dates and times
2025-01-27 10:33:59 -08:00
Timothy Jaeryang Baek ec62104211 Merge pull request #8978 from antpyykk-kone/feature/separate-auth-cookie-config
fix: Separate cookie configuration between session & auth cookies to prevent oauth flow from breaking
2025-01-27 10:32:13 -08:00
Timothy Jaeryang Baek acdcb32ac5 Merge pull request #9003 from tarmst/fix-no-file-upload-for-write-groups
Fix: Users with write adding docs to knowledge, deleting, and fixing read/write toggle on model & knowledge creation
2025-01-27 10:30:18 -08:00
tarmst 751a61a364 Adding more checks for write access. Adding accessRoles to Model & Knowledge creation 2025-01-27 18:11:52 +00:00
Kangyun Wang 564c0fed95 Fallback using email
- Use Email ass fallback for missing "name" field
- "email" because the email scope is required unlike the profile scope
2025-01-27 13:11:20 +01:00
Kevin Wang 9eaf01c323 Merge branch 'open-webui:main' into fix/oidc-500-error-name-field 2025-01-27 13:10:08 +01:00
Timothy Jaeryang Baek 6eb51ab62e enh: file upload permission indicator 2025-01-26 23:30:46 -08:00
Timothy Jaeryang Baek 6f3c92f6d5 enh: chat loading screen 2025-01-26 23:17:58 -08:00
Timothy Jaeryang Baek 91221cd4b1 Merge pull request #8948 from kokutaro/i18n/japanese-translation
Fix typo on Japanese
2025-01-26 20:11:14 -08:00
kokutaro 2d562ed317 Fixed the type on translation.json
Fixed the typo on Japanese translation file
2025-01-26 17:51:20 +09:00
Sharon Fox dda945f4ad feat: Localized dates and times 2025-01-26 02:47:23 -05:00
Timothy Jaeryang Baek 24ab79f5e9 Merge pull request #8857 from KarlLee830/translate
i18n: Update Chinese Translation
2025-01-24 08:41:02 -08:00
KarlLee830 6e306beaa2 i18n: Update Chinese Translation 2025-01-24 16:02:35 +08:00
Timothy Jaeryang Baek b72150c881 Merge pull request #8835 from open-webui/dev
0.5.7
2025-01-23 13:47:40 -08:00
Timothy Jaeryang Baek ceaefd8053 refac 2025-01-23 13:45:45 -08:00
Timothy Jaeryang Baek 2d84db2621 doc: changelog 2025-01-23 13:36:38 -08:00
Timothy Jaeryang Baek 3527023d88 refac: think tag 2025-01-23 13:04:37 -08:00
Timothy Jaeryang Baek e99453219a chore: format 2025-01-23 12:58:39 -08:00
Timothy Jaeryang Baek 45f88b80ad refac: think status 2025-01-23 12:53:17 -08:00
Timothy Jaeryang Baek ba81b47800 refac 2025-01-23 12:06:25 -08:00
Timothy Jaeryang Baek 646671c576 Merge pull request #8837 from TiancongLx/dev
i18n: update zh-TW
2025-01-23 11:23:40 -08:00
Tiancong Li 3d5e361a21 i18n: update zh-TW 2025-01-24 03:13:10 +08:00
Timothy Jaeryang Baek bb45d35a36 fix: ollama prefix id 2025-01-23 11:04:50 -08:00
Timothy Jaeryang Baek 6a9978dd12 Merge pull request #8801 from aleixdorca/dev
i18n: Update catalan translation.json
2025-01-23 10:53:24 -08:00
Timothy Jaeryang Baek 1dd8e5fafd Merge pull request #8821 from panda44312/patch-3
i18n - Update zh-cn Updated translation
2025-01-23 10:52:26 -08:00
Timothy Jaeryang Baek dd6de749d5 fix: model update access 2025-01-23 10:40:49 -08:00
Timothy Jaeryang Baek 8fc5532e2f fix: tools valves access 2025-01-23 10:37:44 -08:00
Panda 863f73de20 Update zh-cn 2025-01-23 18:44:52 +01:00
Antti Pyykkönen 412923dc91 feat: separate cookie settings between session & auth cookies
Introducing two new env config options to control cookies settings regarding
authentication. These values are taken into use when setting 'token' and 'oauth_id_token'.
To maintain backwards compatibility, the original session cookie values are used as
fallback.

Separation is done to prevent issues with the session cookie. When the config value was
set as 'strict', the oauth flow was broken (since the session cookie was not provided
after the callback).

Providing a separate config for auth & session cookies allows us to keep the 'strict'
settings for auth related cookies, while also allowing the session cookie to behave as
intended (e.g., by configuring it as 'lax').

The original config was added in commit #af4f8aa. However a later commit #a2e889c reused
this config option for other type of cookies, which was not the original intent.
2025-01-23 16:16:50 +02:00
Aleix Dorca 6f17c29d93 Update catalan translation.json 2025-01-23 08:39:02 +01:00
Timothy Jaeryang Baek 6c8d68b6fc Merge pull request #8793 from open-webui/dev
fix: model ids not being applied
2025-01-22 19:01:31 -08:00
Timothy Jaeryang Baek 4a2792b4da fix: model ids not being applied 2025-01-22 19:00:46 -08:00
Timothy Jaeryang Baek 9dd45ddf7c Merge pull request #8779 from open-webui/dev
fix: changelog
2025-01-22 14:13:56 -08:00
Timothy Jaeryang Baek dcc57500dd fix: changelog 2025-01-22 14:13:06 -08:00
Timothy Jaeryang Baek e3ae30e42f Merge pull request #8776 from open-webui/dev
refac: image gen
2025-01-22 12:49:53 -08:00
Timothy Jaeryang Baek 14e650077a refac 2025-01-22 12:49:29 -08:00
Timothy Jaeryang Baek 36b9bcee0f Merge pull request #8770 from open-webui/dev
0.5.6
2025-01-22 12:47:05 -08:00
Timothy Jaeryang Baek 6186dec781 doc: changelog 2025-01-22 12:43:46 -08:00
Timothy Jaeryang Baek 667928efb0 chore: format 2025-01-22 12:38:42 -08:00
Timothy Jaeryang Baek f4b5039adf enh: new ollama create model method 2025-01-22 12:36:18 -08:00
Timothy Jaeryang Baek 8380d3f5ae refac 2025-01-22 12:19:11 -08:00
Timothy Jaeryang Baek 419005a578 refac: manage ollama 2025-01-22 12:19:01 -08:00
Timothy Jaeryang Baek 7593d11b97 refac: wording 2025-01-22 12:08:08 -08:00
Timothy Jaeryang Baek aaf97b85dc enh: reasoning_effort param support for openai 2025-01-22 12:07:04 -08:00
Timothy Jaeryang Baek ea7d4ec6ea refac: styling 2025-01-22 11:56:39 -08:00
Timothy Jaeryang Baek 568dbc545c Merge pull request #8351 from open-webui/dev
0.5.5
2025-01-22 11:34:03 -08:00
Timothy Jaeryang Baek b641756020 refac: disable duplicate attachments 2025-01-22 11:28:54 -08:00
Timothy Jaeryang Baek c6660f1d7c refac: favicon 2025-01-22 11:27:03 -08:00
Timothy Jaeryang Baek 195e632ed4 chore: logo 2025-01-22 11:19:42 -08:00
Timothy Jaeryang Baek b7f743d24c refac: favicon styling 2025-01-22 11:11:12 -08:00
Timothy Jaeryang Baek 1080ecd22c refac 2025-01-22 11:06:06 -08:00
Timothy Jaeryang Baek b5bce9cbea fix: file attachment 2025-01-22 11:04:12 -08:00
Timothy Jaeryang Baek 647195c578 chore: format 2025-01-22 10:51:29 -08:00
Timothy Jaeryang Baek ab4372600c chore: bump duckduckgo-search 2025-01-22 10:46:57 -08:00
Timothy Jaeryang Baek 8114223b54 infra: disable integration test 2025-01-22 10:43:35 -08:00
Timothy Jaeryang Baek a1a658d55b chore: dependecies 2025-01-22 10:43:08 -08:00
Timothy Jaeryang Baek 6eb4c0aecd doc: changelog 2025-01-22 10:40:48 -08:00
Timothy Jaeryang Baek 8b998420fe refac 2025-01-22 10:12:09 -08:00
Timothy Jaeryang Baek c2b5200663 refac 2025-01-22 09:42:40 -08:00
Timothy Jaeryang Baek ed7db1dd41 enh: 'notification' event type 2025-01-22 09:38:44 -08:00
Timothy Jaeryang Baek a1e4e7c007 refac: omit reasoning content in payload 2025-01-22 09:29:26 -08:00
Timothy Jaeryang Baek 9feed97f22 refac: think tag 2025-01-22 09:24:40 -08:00
Timothy Jaeryang Baek cf470e70e2 Merge pull request #8743 from open-webui/dependabot/npm_and_yarn/npm_and_yarn-37a58caa2a
build(deps): bump the npm_and_yarn group across 1 directory with 2 updates
2025-01-22 01:10:21 -08:00
Timothy Jaeryang Baek 2b1c2942a8 refac: message timestamp 2025-01-22 01:02:52 -08:00
Timothy Jaeryang Baek 10ffbca34b refac: more reasoning tags support 2025-01-22 00:56:55 -08:00
Timothy Jaeryang Baek d42f811a8d refac: think tag 2025-01-22 00:49:41 -08:00
Timothy Jaeryang Baek 039d685547 refac 2025-01-22 00:32:09 -08:00
Timothy Jaeryang Baek 2777d3ec49 refac: think tag styling 2025-01-22 00:23:47 -08:00
Timothy Jaeryang Baek c9dc7299c5 enh: <think> tag support 2025-01-22 00:13:24 -08:00
dependabot[bot] 0e6c680db8 build(deps): bump the npm_and_yarn group across 1 directory with 2 updates
Bumps the npm_and_yarn group with 2 updates in the / directory: [katex](https://github.com/KaTeX/KaTeX) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `katex` from 0.16.10 to 0.16.21
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.10...v0.16.21)

Updates `vite` from 5.4.6 to 5.4.14
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.14/packages/vite)

---
updated-dependencies:
- dependency-name: katex
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: vite
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-22 06:16:45 +00:00
Timothy Jaeryang Baek 8d3c73aed5 chore: format backend 2025-01-21 19:33:33 -08:00
Timothy Jaeryang Baek 4c86f39a84 chore: format 2025-01-21 19:33:26 -08:00
Timothy Jaeryang Baek 35547c4246 Merge pull request #8736 from aqiray/dev
i18n: Update Turkish Translation
2025-01-21 19:32:20 -08:00
Giray a839808991 i18n: Update Turkish Translation 2025-01-22 05:29:46 +03:00
Timothy Jaeryang Baek 80e004c31f Merge pull request #8637 from kahghi/add-gcs-storage-provider
feat:add GCSStorageProvider
2025-01-21 18:14:22 -08:00
Timothy Jaeryang Baek ffd10e8b6f Merge pull request #8712 from rragundez/improve-s3-provider-tests
Improve s3 provider tests
2025-01-21 11:35:46 -08:00
Timothy Jaeryang Baek 8cca31e6fe Merge pull request #8711 from KarlLee830/translate
i18n: Update Chinese Translation
2025-01-21 11:34:25 -08:00
Rodrigo Agundez bdc6082221 Move patchin of S3 obects inside the init 2025-01-21 17:21:54 +08:00
kahghi a93124cafb tidied up test fixture for gcp storage emulator 2025-01-21 17:19:56 +08:00
KarlLee830 b2178b982d i18n: Update Chinese Translation 2025-01-21 15:50:16 +08:00
Timothy Jaeryang Baek 6408452e8f refac: model editor 2025-01-20 23:44:47 -08:00
kahghi 4aa9b8d5e7 removed unused pytest-env and imports 2025-01-21 15:38:41 +08:00
Timothy Jaeryang Baek 94d0f84c0c refac: styling 2025-01-20 23:26:43 -08:00
Timothy Jaeryang Baek 45f4bc18f8 refac: access controls 2025-01-20 23:20:47 -08:00
Timothy Jaeryang Baek aa442f694b enh: validate user id before saving group 2025-01-20 23:09:55 -08:00
Timothy Jaeryang Baek 31ed1fcdb8 fix: tools permissions 2025-01-20 22:57:40 -08:00
Timothy Jaeryang Baek 7a70fd1312 fix: bing search 2025-01-20 22:52:19 -08:00
kahghi b1887fef1b added suggestions 2025-01-21 14:47:56 +08:00
Timothy Jaeryang Baek 006208f9a9 enh: title edit should auto focus to input 2025-01-20 22:44:59 -08:00
Timothy Jaeryang Baek a863f98c53 refac: toast error 2025-01-20 22:41:32 -08:00
Timothy Jaeryang Baek af48f346f1 enh: reintroduce model management to models settings 2025-01-20 22:39:00 -08:00
kahghi 55cc127b03 gcs tests pass, updated get_file and delete_file to retrieve blob instead of instantiating blob 2025-01-21 12:53:49 +08:00
kahghi 4b56c15a3f test_upload_file working, added gcp-storage-emulator, updated gcs client instantiation 2025-01-20 22:35:43 +08:00
kahghi 44574c434d removed unnecessary GCS_PROJECT_ID variable 2025-01-20 15:27:55 +08:00
Timothy Jaeryang Baek 59c349de00 refac: styling 2025-01-19 12:46:02 -08:00
Timothy Jaeryang Baek bdc60e7850 chore: format backend 2025-01-19 11:59:07 -08:00
Timothy Jaeryang Baek a1e33a82f0 chore: format 2025-01-19 11:58:58 -08:00
Timothy Jaeryang Baek 9a794b1f8f refac 2025-01-19 11:49:51 -08:00
Timothy Jaeryang Baek 149eea2377 refac: chat controls 2025-01-19 11:49:16 -08:00
Timothy Jaeryang Baek db8b3d29da refac: app styling 2025-01-19 11:48:05 -08:00
Timothy Jaeryang Baek 6b7fe4f81a Merge pull request #8683 from OriginalSimon/dev
18n: Update Ukrainian translation
2025-01-19 11:47:42 -08:00
Timothy Jaeryang Baek e240b95026 Merge pull request #8675 from jyje/i18n/ko-KR
i18n: update ko-KR for settings and admin settings
2025-01-19 11:47:01 -08:00
Simon 475568d9e7 Update translation.json 2025-01-19 19:32:16 +01:00
Simon fd3348d564 Update translation.json 2025-01-19 19:25:15 +01:00
kahghi 49f31ddcd8 added alternative storage client instantiation method, corrected filepaths, added missing type hinting 2025-01-19 22:42:29 +08:00
jyje 4fa234b6e9 i18n: fix ko-KR for awkward words 2025-01-19 19:57:08 +09:00
jyje 04b646eac0 i18n: update ko-KR for 'admin settings audio'
- admin Settings/Audio
2025-01-19 19:49:31 +09:00
jyje 5e65471560 i18n: update ko-KR for 'admin settings interface' 2025-01-19 19:40:29 +09:00
jyje a98a84859e i18n: update ko-KR for 'admin settings web search'
- admin Settings/WebSearch
2025-01-19 19:30:14 +09:00
jyje 39bc76cbc4 i18n: update ko-KR for 'admin settings documents'
- admin Settings/Documents
2025-01-19 18:59:07 +09:00
jyje 03d54f97ab i18n: update ko-KR for 'admin settings evaluations'
- Settings/Evaulations/ArenaModelModal
- Workspace/Common/AccessControl
2025-01-19 17:33:04 +09:00
jyje 568b873fff i18n: update ko-KR for admin Settings/Models, Settings/Models/ConfigureModelsModal 2025-01-19 17:14:28 +09:00
jyje 09827064fe i18n: update ko-KR for admin Settings/Connections 2025-01-19 17:08:18 +09:00
jyje c26e7820e1 i18n: update ko-KR for admin Settings/General 2025-01-19 17:00:39 +09:00
jyje 0a6ba21e57 i18n: update ko-KR for Settings/Account 2025-01-19 16:47:43 +09:00
jyje 42db2748e6 i18n: update ko-KR for Settings/General, Settings/Advanced 2025-01-19 16:37:34 +09:00
Timothy Jaeryang Baek 3fefbb9e20 refac 2025-01-18 17:50:03 -08:00
Timothy Jaeryang Baek 71ab8b9c93 enh: allow connections with duplicate urls 2025-01-18 17:22:29 -08:00
Timothy Jaeryang Baek ca0285fc91 refac: connections handling 2025-01-18 17:10:15 -08:00
Timothy Jaeryang Baek 430854e223 refac 2025-01-18 16:34:13 -08:00
Timothy Jaeryang Baek 43c4b8e518 fix: ollama connections 2025-01-18 16:28:39 -08:00
Timothy Jaeryang Baek 2b66a7a8dc Merge pull request #8670 from SlavikCA/main
docs: Update incorrect hint about `num_gpu` parameter
2025-01-18 15:42:10 -08:00
slavik.fursov c7c3c4a23c Update incorrect hint about num_gpu parameter 2025-01-18 14:22:01 -08:00
Timothy Jaeryang Baek 27f1ed18f7 Merge pull request #8668 from jyje/i18n/ko-KR
i18n: update ko-KR
2025-01-18 11:07:18 -08:00
jyje 66796b38bc i18n: update ko-KR for Settings/Interface, Messages/RateComment and etc 2025-01-19 02:11:39 +09:00
Timothy Jaeryang Baek f5437dae4a refac: electron app 2025-01-17 17:05:52 -08:00
Timothy Jaeryang Baek 70aced7f58 refac: styling 2025-01-17 17:03:25 -08:00
Timothy Jaeryang Baek 2535e1b53a Merge pull request #8659 from open-webui/dependabot/npm_and_yarn/npm_and_yarn-7064c9a8ac
build(deps): bump katex from 0.16.10 to 0.16.21 in the npm_and_yarn group across 1 directory
2025-01-17 15:25:45 -08:00
Timothy Jaeryang Baek 7519f683ed Merge pull request #8660 from jk-f5/fix/decode
Remove unnecessary decode statement from release_lock method
2025-01-17 15:25:36 -08:00
Jason Kidd c5b67ea430 fix: Remove unnecessary decode statement
Since we create our Redis instance with , we don't
need to worry about decoding this value here. Plus this doesn't work
in python3 anyway
2025-01-17 13:43:56 -08:00
dependabot[bot] 1827eaca2d build(deps): bump katex in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [katex](https://github.com/KaTeX/KaTeX).


Updates `katex` from 0.16.10 to 0.16.21
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.10...v0.16.21)

---
updated-dependencies:
- dependency-name: katex
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-17 21:34:21 +00:00
Timothy Jaeryang Baek 217e3a13c8 feat: Add ability to change permissions on group creation API 2025-01-17 12:03:24 -08:00
Timothy Jaeryang Baek 2818f3cf95 Merge pull request #8610 from excho0/patch-1
🌟 Chore: Add Svelte Inspector for Easier Development 🌟
2025-01-17 10:30:03 -08:00
Timothy Jaeryang Baek 3994b1c6f7 Merge pull request #8623 from Tryanks/autocompletion
feat: non-english (chinese) autocompletion handling
2025-01-17 10:28:32 -08:00
Timothy Jaeryang Baek 382dece228 Merge pull request #8638 from Tryanks/oauth2-github
refactor: Extend OIDC support to all OAuth authentication methods
2025-01-17 10:27:49 -08:00
kahghi 1764de41f3 updated to use credentials json, tested with local built image and upload to gcs works 2025-01-17 21:53:41 +08:00
kahghi 8efc543f49 added google-cloud-storage package, added gcs related functions 2025-01-17 16:16:25 +08:00
Tryanks e7971b5840 enh: add github oauth2 provider support 2025-01-17 13:22:35 +08:00
Tryanks f3e6dacf0d refac: Extend OIDC support to all OAuth authentication methods 2025-01-17 12:56:03 +08:00
kahghi 42b7beb8a7 add GCSStorageProvider 2025-01-17 09:39:59 +08:00
Timothy Jaeryang Baek 7cf4c9c89c refac: comfyui 2025-01-16 11:17:37 -08:00
Timothy Jaeryang Baek 5526c43853 Merge pull request #8620 from Tryanks/dev
fix: incorrectly indexing the key userinfo in the token.
2025-01-16 11:12:41 -08:00
Timothy Jaeryang Baek eb17cf6915 Merge pull request #8608 from rragundez/hotfix-get-picture
Hotfix get picture
2025-01-16 11:12:18 -08:00
Timothy Jaeryang Baek 4645943066 refac: file handler 2025-01-16 11:11:23 -08:00
Tryanks 612ca54afa enh: non-english (chinese) autocompletion handling 2025-01-17 01:50:23 +08:00
Tryanks 4b6700a4b2 fixed: incorrectly indexing the key userinfo in the token. 2025-01-17 00:33:20 +08:00
Excho 8468085291 Update svelte.config.js
Added svelte inspector for easier development
2025-01-16 14:29:00 +02:00
Rodrigo Agundez 91df1c56b2 Add headers 2025-01-16 19:32:35 +08:00
Timothy Jaeryang Baek 0425621494 refac 2025-01-16 00:13:02 -08:00
Timothy Jaeryang Baek 0360aa5520 enh: image prompt enhancer 2025-01-16 00:06:37 -08:00
Timothy Jaeryang Baek d3a5b9c127 refac: styling 2025-01-15 23:39:29 -08:00
Timothy Jaeryang Baek a10302d909 enh: image generation toggle 2025-01-15 23:32:13 -08:00
Timothy Jaeryang Baek 92022dd81f enh: image permissions 2025-01-15 23:12:40 -08:00
Timothy Jaeryang Baek 90d4bedae8 enh: ability to set chat controls permissions 2025-01-15 23:08:54 -08:00
Timothy Jaeryang Baek 56f57928c2 enh/refac: permissions 2025-01-15 23:01:43 -08:00
Timothy Jaeryang Baek 2aa82d98cc refac: styling 2025-01-15 21:51:11 -08:00
Timothy Jaeryang Baek 8b3fb2a8b5 Merge pull request #8580 from rragundez/split-storage-providers
Split the storage providers into separate classes in preparation for adding more cloud providers
2025-01-15 21:08:04 -08:00
Rodrigo Agundez f14467c65e Update dependencies to include mock 2025-01-16 13:00:17 +08:00
Rodrigo Agundez 544243fabb Add moto as a dependency 2025-01-16 12:37:54 +08:00
Rodrigo Agundez 021c1f3900 Add test for S3 using moto 2025-01-16 12:37:44 +08:00
Rodrigo Agundez 357e7dd20f Add tests for local provider 2025-01-16 11:13:10 +08:00
jvinolus 47b8412695 Initialize support for prefixing embeddings 2025-01-15 17:05:04 -08:00
Rodrigo Agundez 3aa28de5f1 Add test classes for the providers 2025-01-16 08:31:59 +08:00
Rodrigo Agundez 535e59af8d Start testing files for provider 2025-01-16 08:10:17 +08:00
Rodrigo Agundez dd16c3d5c1 add function to retrieve the storage provider so it can be easily tested 2025-01-16 08:09:56 +08:00
Rodrigo Agundez 0129255478 Set default storage provider to local 2025-01-16 08:01:26 +08:00
Rodrigo Agundez a3f737c0c6 Split the storage providers into separate classes in preparation for other storage providers like GCS 2025-01-16 07:50:12 +08:00
Timothy Jaeryang Baek 372658be6d Merge pull request #8547 from juananpe/file-deletion
fix: File deletion doesn't properly clean up database entries
2025-01-15 10:11:29 -08:00
Timothy Jaeryang Baek d1bde9f348 Merge pull request #8562 from NYU-ITS/milvus_custom_db
[feat] Milvus: add new config var, MILVUS_DB
2025-01-15 10:10:10 -08:00
Timothy Jaeryang Baek b797112322 Merge pull request #8565 from mykola-mmm/fix/show_user_chats_from_folders
Fix: updated get_chat_list_by_user_id method to return all user cha…
2025-01-15 10:09:43 -08:00
Timothy Jaeryang Baek 3328e2ea97 Merge pull request #8566 from rragundez/ms-auth-picture
Add functionality to retrive picture for microsoft oauth
2025-01-15 10:02:28 -08:00
Timothy Jaeryang Baek 0775ddbdf5 Merge pull request #8585 from TiancongLx/dev
i18n: update zh-TW
2025-01-15 09:53:34 -08:00
Tiancong Li 6e088df173 i18n: update zh-TW 2025-01-16 01:05:26 +08:00
Timothy Jaeryang Baek 5e548fa7b8 refac: styling 2025-01-14 23:53:19 -08:00
Rodrigo Agundez 32f121f019 Add functionality to retrive picture for microsoft oauth 2025-01-15 09:18:16 +08:00
Rodrigo Agundez c8be0b20cc Add functionality to retrive picture for microsoft oauth 2025-01-15 09:17:22 +08:00
mykola b1568878e7 Fixed: updated get_chat_list_by_user_id method to return all user chats (including those moved to the folders) 2025-01-14 23:15:56 +00:00
Sajid Ali 7a95df008e Milvus: add new config var, MILVUS_DB
modified:   backend/open_webui/config.py
	modified:   backend/open_webui/retrieval/vector/dbs/milvus.py
2025-01-14 15:48:15 -05:00
Juanan Pereira f477f4f790 fix: fixess issue #7181 2025-01-14 09:32:04 +01:00
Timothy Jaeryang Baek f6a54c96bc Merge pull request #8470 from tarmst/add-read-write-toggle-to-access-control
feat: Add toggle to read/write perms on access control
2025-01-13 21:22:36 -08:00
Timothy Jaeryang Baek bb261fcc4a refac: styling 2025-01-13 21:20:31 -08:00
Timothy Jaeryang Baek 4044d80024 fix 2025-01-13 21:15:59 -08:00
Timothy Jaeryang Baek 3a3764bf68 refac: drag region 2025-01-13 21:15:22 -08:00
Timothy Jaeryang Baek c4486b4a77 refac: styling 2025-01-13 21:13:16 -08:00
Timothy Jaeryang Baek ac5bdac161 refac: styling 2025-01-13 20:21:47 -08:00
Timothy Jaeryang Baek ce1712fed1 fix: electron api 2025-01-13 19:53:00 -08:00
Timothy Jaeryang Baek 15e591f30d enh: electron window focus detect 2025-01-13 19:47:24 -08:00
Timothy Jaeryang Baek 84b7583982 refac: styling 2025-01-13 19:39:18 -08:00
Timothy Jaeryang Baek 4fcf0caa4d refac 2025-01-13 19:25:07 -08:00
Timothy Jaeryang Baek 22ad0264c1 refac: styling 2025-01-13 19:23:57 -08:00
Timothy Jaeryang Baek f299e19002 refac: styling 2025-01-13 19:18:32 -08:00
Timothy Jaeryang Baek 147eb0d2d1 refac: electron drag region 2025-01-13 18:19:46 -08:00
Timothy Jaeryang Baek 44da86895d refac: styling 2025-01-13 18:08:17 -08:00
Timothy Jaeryang Baek eb99785047 Merge pull request #8450 from d4v3y0rk/fix-integration-test-error
ci: fix for cypress error in integration test
2025-01-13 13:16:57 -08:00
Timothy Jaeryang Baek d83acb2f03 Merge pull request #8510 from MadsLang/main
Add DATABASE_SCHEMA as env var
2025-01-13 13:16:06 -08:00
Timothy Jaeryang Baek b6128efb43 chore: bump 2025-01-13 00:34:44 -08:00
Timothy Jaeryang Baek ad93341b74 refac 2025-01-13 00:34:15 -08:00
MadsLang d4a26f8031 Merge branch 'open-webui:main' into main 2025-01-13 08:28:13 +01:00
Timothy Jaeryang Baek 42e8d8ce49 Merge pull request #8447 from steelcg/dev
feat: add LDAP_ATTRIBUTE_FOR_MAIL to env-configuration
2025-01-12 18:15:28 -08:00
Timothy Jaeryang Baek 8e08c218c5 Merge pull request #8499 from juananpe/file-cleanup-knowledge
fix: complete file cleanup when removing from Knowledge Base
2025-01-12 18:14:48 -08:00
Timothy Jaeryang Baek 3e7036151e Merge pull request #8490 from flefevre/i18n-fr-FR
i18n - Updated French Translation
2025-01-12 12:03:54 -08:00
Juanan Pereira 913e0d391b fix: complete file cleanup when removing from Knowledge Base 2025-01-12 20:04:25 +01:00
Kangyun Wang 1ad9be9c07 Check OAuth name type with fallback 2025-01-12 12:21:53 +01:00
Francois LE FEVRE 805e0ec7d1 i18n - Updated French Translation 2025-01-12 10:28:19 +01:00
Timothy Jaeryang Baek b1bcca90b5 refac 2025-01-11 20:23:26 -08:00
Timothy Jaeryang Baek 5d3f778b2a fix: openai proxy endpoints 2025-01-11 16:56:25 -08:00
Timothy Jaeryang Baek ccbd98dfab refac: action buttons styling 2025-01-11 13:47:02 -08:00
Timothy Jaeryang Baek 21abe43f3b refac 2025-01-10 16:27:37 -08:00
Timothy Jaeryang Baek dd08b457d8 Merge pull request #8471 from open-webui/main
Update About.svelte
2025-01-10 11:46:59 -08:00
Timothy Jaeryang Baek 4269df041f Update About.svelte 2025-01-10 11:46:35 -08:00
Timothy Jaeryang Baek 042c9fbef3 Merge pull request #8469 from open-webui/main
Update README.md
2025-01-10 11:09:14 -08:00
Timothy Jaeryang Baek 1972f33100 Update README.md 2025-01-10 11:07:45 -08:00
Timothy Jaeryang Baek 6aee001ab0 Merge pull request #8468 from open-webui/main
Update LICENSE
2025-01-10 10:55:37 -08:00
tarmst 49eca68e28 Add toggle to read/write perms on access control 2025-01-10 18:44:50 +00:00
Timothy Jaeryang Baek a76068d69c Update LICENSE 2025-01-10 10:40:39 -08:00
Timothy Jaeryang Baek cd20c578d2 Merge pull request #8449 from hurxxxx/main
fix : incorrect element id
2025-01-10 08:28:47 -08:00
Timothy Jaeryang Baek a078403c34 Merge pull request #8457 from panda44312/patch-2
i18n - zh-cn Updated translation
2025-01-10 08:28:04 -08:00
Timothy Jaeryang Baek 5ccdddff99 Merge pull request #8458 from aindriu80/main
i18n - Updated Irish translations
2025-01-10 08:27:52 -08:00
Aindriú Mac Giolla Eoin 0be703ecb7 Updating Irish translations 2025-01-10 15:11:46 +00:00
Panda 35ca4f565f Update translation.json 2025-01-10 15:48:52 +01:00
Dave York 4d349ac5c9 potential fix for cypress error 2025-01-10 01:27:00 -05:00
Gunwoo Heo a6ca6c1712 fix : incorrect element id 2025-01-10 14:41:39 +09:00
Li, Steel ab6dffffd0 feat: add LDAP_ATTRIBUTE_FOR_MAIL to env-configuration 2025-01-10 08:53:03 +08:00
Timothy Jaeryang Baek 88614ec70a Merge pull request #8432 from juananpe/kb-detachment-from-models
fix: Knowledge Base Detachment from Models
2025-01-09 10:24:57 -08:00
Juanan Pereira f72490093a fix frontend format 2025-01-09 18:56:40 +01:00
Juanan Pereira de735b3c8c fix format 2025-01-09 18:41:18 +01:00
Juanan Pereira 5b616dd34f fix: Knowledge Base Detachment from Models 2025-01-09 16:47:12 +01:00
Timothy Jaeryang Baek 942fd384de refac: chroma 2025-01-08 13:18:14 -08:00
Timothy Jaeryang Baek bd9bc4d7eb Merge pull request #8401 from TiancongLx/dev
i18n: update zh-TW
2025-01-08 11:34:48 -08:00
Timothy Jaeryang Baek 6c4b2b0a8e Merge pull request #8407 from LuisMalhadas/no_line_break_pdf(#8405)
fix: solves the lack of line breaks in chat download as pdf #8405
2025-01-08 11:34:32 -08:00
Timothy Jaeryang Baek 256b9161e6 Merge pull request #8409 from vertago1/main
**docs**: docs/apache.md: Add websocket proxy
2025-01-08 11:34:17 -08:00
Timothy Jaeryang Baek 9516eb3f32 refac: bump chromadb 2025-01-08 11:33:30 -08:00
Allen Webb 76f99d193f docs/apache.md: Add websocket proxy
After 0.5 websocket support is required so update the proxy instructions
to include websockets.

Issue #8074#issuecomment-2562017399
2025-01-08 10:13:00 -06:00
Luis Malhadas 882d8f4ce1 solves the lack of line breaks in chat download as pdf #8405 2025-01-08 16:49:53 +01:00
Tiancong Li 130a771b60 i18n: update zh-TW 2025-01-08 20:17:41 +08:00
Timothy Jaeryang Baek e6db4d017b fix 2025-01-08 00:59:03 -08:00
Timothy Jaeryang BaekandIzhar Firdaus 987664f9b5 fix
Co-Authored-By: Izhar Firdaus <480984+kagesenshi@users.noreply.github.com>
2025-01-08 00:57:52 -08:00
Timothy Jaeryang BaekandIzhar Firdaus b3c7ecaea1 fix: oauth webhook
Co-Authored-By: Izhar Firdaus <480984+kagesenshi@users.noreply.github.com>
2025-01-08 00:38:00 -08:00
Timothy Jaeryang Baek c79b975ad0 refac: chroma 2025-01-08 00:21:50 -08:00
Timothy Jaeryang Baek 656a887db6 refac 2025-01-08 00:10:38 -08:00
Timothy Jaeryang Baek e63c0aeb1b refac: styling 2025-01-08 00:03:31 -08:00
Timothy Jaeryang Baek 433168c450 fix: add user modal 2025-01-08 00:02:33 -08:00
Timothy Jaeryang Baek 0129f463b4 fix: &lt; rendering issue 2025-01-07 23:59:58 -08:00
Timothy Jaeryang Baek e0054298a4 Merge pull request #8377 from Vojtech-Siler/multiple-error-fixes
fix: Multiple Fixes for Range and Type Errors
2025-01-07 23:53:48 -08:00
Timothy Jaeryang Baek 0e7c3d4eb8 Merge pull request #8379 from qiaozhi199/main
Fix the issue of inaccurate answers after enabling RAG query generation
2025-01-07 23:53:31 -08:00
Timothy Jaeryang Baek 70914d2764 Merge pull request #8376 from steelcg/dev
perf: use ldap3.NONE for parameter get_info in ldap_auth function to accelerate login
2025-01-07 23:50:11 -08:00
Timothy Jaeryang Baek 156579ab3a fix/doc: changelog date 2025-01-07 17:19:46 -08:00
Timothy Jaeryang Baek 81d03540bd Merge pull request #8385 from jk-f5/refac/pgvectorlength
fix: Pgvector vector column size check was failing on initialization …
2025-01-07 14:35:47 -08:00
Jason Kidd b3a52be401 fix: Pgvector vector column size check was failing on initialization of database 2025-01-07 09:15:13 -08:00
zhiguo.qiao 91f22a8a8d Return the top k results with the highest similarity. 2025-01-07 17:41:30 +08:00
Vojtěch Šiler 70a6a0d9e8 Fix errors for RangeErrors, Fix for accessing undefined objects in Chat.svelte 2025-01-07 08:54:42 +01:00
Li, Steel 82ff6c371b use ldap3.NONE for parameter get_info in ldap_auth function to accelerate login 2025-01-07 14:13:18 +08:00
Timothy Jaeryang Baek 0c5bb6df80 Merge pull request #8371 from tarmst/fix-admins-added-to-groups-from-oauth-group-mgmt
fix: Fix admins added to groups from oauth group management
2025-01-06 10:30:08 -08:00
tarmst 8117bf8603 Add admin check 2025-01-06 18:23:42 +00:00
Timothy Jaeryang Baek a0e63b08c3 fix: searchapi engine not showing 2025-01-06 10:10:25 -08:00
Timothy Jaeryang BaekandRich Tong 960683eced fix: torch mps not working
Co-Authored-By: Rich Tong <1782087+richtong@users.noreply.github.com>
2025-01-06 10:08:12 -08:00
Timothy Jaeryang Baek 15a182c9d6 refac: styling 2025-01-05 13:58:29 -08:00
Timothy Jaeryang Baek 61303a216c refac: styling 2025-01-05 13:56:42 -08:00
Timothy Jaeryang Baek 1dfb479d36 Merge pull request #8329 from open-webui/dev
infra: disable codespell
2025-01-05 01:53:03 -08:00
Timothy Jaeryang Baek c517fa906f infra: disable codespell 2025-01-05 01:52:47 -08:00
Timothy Jaeryang Baek 506dc0149c Merge pull request #8246 from open-webui/dev
0.5.4
2025-01-05 01:38:42 -08:00
Timothy Jaeryang Baek d651cdb1e4 doc: changelog 2025-01-05 01:38:34 -08:00
Timothy Jaeryang Baek 0c40319371 doc: readme 2025-01-05 01:36:27 -08:00
Timothy Jaeryang Baek c74083ace7 doc: wording 2025-01-05 01:34:31 -08:00
Timothy Jaeryang Baek a3ca39f377 refac 2025-01-05 01:33:12 -08:00
Timothy Jaeryang Baek d11e6e40b1 doc: changelog 2025-01-05 01:32:26 -08:00
Timothy Jaeryang Baek 71bbdf25c6 refac 2025-01-05 01:18:30 -08:00
Timothy Jaeryang Baek f4a595db11 chore: format 2025-01-05 01:12:19 -08:00
Timothy Jaeryang Baek c8be0ee1e0 fix: temp chat json export 2025-01-05 01:10:45 -08:00
Timothy Jaeryang Baek 6ed8c3cb70 Update pyproject.toml 2025-01-05 00:56:32 -08:00
Timothy Jaeryang Baek c434aff1a2 refac: styling 2025-01-05 00:48:41 -08:00
Timothy Jaeryang Baek 3886c82ed0 Merge pull request #8286 from srajangarg/sg
feat: functionality to clone shared chats
2025-01-05 00:45:55 -08:00
Timothy Jaeryang Baek fe59b7f39c refac 2025-01-05 00:44:38 -08:00
Timothy Jaeryang Baek a4132322d9 refac 2025-01-05 00:28:36 -08:00
Timothy Jaeryang Baek d477f73c7e enh: torch mps support 2025-01-05 00:27:44 -08:00
Timothy Jaeryang Baek 614379a427 fix: chat drag and drop 2025-01-04 02:42:26 -08:00
Timothy Jaeryang Baek b4d91b5cb4 refac 2025-01-04 02:34:12 -08:00
Timothy Jaeryang Baek f31e2af349 refac: play sound only in last active tab 2025-01-04 02:30:51 -08:00
Timothy Jaeryang Baek afcbf2cafb enh: native notifications 2025-01-04 02:15:57 -08:00
Timothy Jaeryang Baek c0b93791dc refac 2025-01-04 02:05:42 -08:00
Timothy Jaeryang Baek f3a4d61f81 fix: actions 2025-01-03 21:31:24 -08:00
Timothy Jaeryang Baek 99c3194181 fix: API_KEY_ALLOWED_ENDPOINTS 2025-01-03 13:08:21 -08:00
Timothy Jaeryang Baek 0e805e7dc4 Merge pull request #8298 from jk-f5/feat/pg_vector_size
feat: Allow setting the initial vector length on pgvector document_chunk table
2025-01-03 13:03:53 -08:00
Timothy Jaeryang Baek 226408ffe3 Merge pull request #8309 from yarikoptic/enh-codespell
ci: add codespell support (config, workflow to detect/not fix) and make it fix few typos
2025-01-03 13:02:32 -08:00
Yaroslav Halchenko 8f1953e667 [DATALAD RUNCMD] run codespell throughout fixing few left typos automagically
=== Do not change lines below ===
{
 "chain": [],
 "cmd": "codespell -w",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^
2025-01-03 15:07:21 -05:00
Yaroslav Halchenko 1a928bc6a4 Add rudimentary codespell config 2025-01-03 15:07:21 -05:00
Yaroslav Halchenko 2e5fbba961 Add github action to codespell main on push and PRs 2025-01-03 15:07:21 -05:00
Jason Kidd 70b74b5217 feat: Allow setting the initial vector length on pgvector document_chunk table 2025-01-03 09:18:59 -08:00
Timothy Jaeryang Baek 996ade9090 refac: notification sound behaviour 2025-01-02 21:39:40 -08:00
Srajan Garg 2444327a47 add functionality to clone shared chats 2025-01-03 00:08:49 -05:00
Timothy Jaeryang Baek 6b3be4bb5b refac: sidebar styling 2025-01-02 20:53:30 -08:00
Timothy Jaeryang Baek b2b56d14cb fix: channel thread 2025-01-02 20:48:50 -08:00
Timothy Jaeryang Baek 3e9c92729d refac: styling 2025-01-02 20:28:01 -08:00
Timothy Jaeryang Baek 0c49553f79 refac: styling 2025-01-02 20:23:07 -08:00
Timothy Jaeryang Baek 66b8166397 refac: styling 2025-01-02 20:19:52 -08:00
Timothy Jaeryang Baek 87ba39df57 fix: moa 2025-01-02 14:32:25 -08:00
Timothy Jaeryang Baek 43964de675 refac: audio input 2025-01-02 02:32:51 -08:00
Timothy Jaeryang Baek fab82b51de fix: generate_queries 2025-01-01 20:13:28 -08:00
Timothy Jaeryang Baek 44716a4cb2 refac: disable ENABLE_REALTIME_CHAT_SAVE by default 2025-01-01 20:12:42 -08:00
Timothy Jaeryang Baek d9fb971196 Merge pull request #8249 from albinvar/main
fix: raise exceptions properly in process_chat_payload
2025-01-01 18:44:42 -08:00
Timothy Jaeryang Baek 51d875a14e Merge pull request #8251 from TiancongLx/dev
i18n: update zh-TW
2025-01-01 18:44:16 -08:00
Tiancong Li 45cc0e6209 i18n: update zh-TW
待翻譯:「Add Reaction」
2025-01-01 21:20:11 +08:00
Albin Varghese c561eb7bbd fix: raise exceptions properly in process_chat_payload 2025-01-01 17:15:06 +05:30
Timothy Jaeryang Baek 00a089b596 doc: readme 2024-12-31 20:37:54 -08:00
Timothy Jaeryang Baek 541fa37c5c Merge pull request #8245 from open-webui/dependabot/pip/backend/dev/peewee-3.17.8
build(deps): bump peewee from 3.17.6 to 3.17.8 in /backend
2024-12-31 20:00:01 -08:00
Timothy Jaeryang Baek 06301aa90d Merge pull request #8243 from open-webui/dependabot/pip/backend/dev/validators-0.34.0
build(deps): bump validators from 0.33.0 to 0.34.0 in /backend
2024-12-31 19:59:45 -08:00
Timothy Jaeryang Baek 55fbc60ad3 Merge pull request #8244 from open-webui/dependabot/pip/backend/dev/flask-3.1.0
build(deps): bump flask from 3.0.3 to 3.1.0 in /backend
2024-12-31 19:59:36 -08:00
Timothy Jaeryang Baek b69941caf4 Merge pull request #8242 from open-webui/dependabot/pip/backend/dev/fpdf2-2.8.2
build(deps): bump fpdf2 from 2.7.9 to 2.8.2 in /backend
2024-12-31 19:59:13 -08:00
Timothy Jaeryang Baek 80600dbe63 Merge pull request #8241 from open-webui/dependabot/pip/backend/dev/pyjwt-crypto--2.10.1
build(deps): bump pyjwt[crypto] from 2.9.0 to 2.10.1 in /backend
2024-12-31 19:58:59 -08:00
Timothy Jaeryang Baek 085f48366b refac 2024-12-31 19:54:11 -08:00
Timothy Jaeryang Baek 60fc24cd39 refac: channel message input 2024-12-31 19:42:49 -08:00
dependabot[bot] 7fb87ddf99 build(deps): bump peewee from 3.17.6 to 3.17.8 in /backend
Bumps [peewee](https://github.com/coleifer/peewee) from 3.17.6 to 3.17.8.
- [Release notes](https://github.com/coleifer/peewee/releases)
- [Changelog](https://github.com/coleifer/peewee/blob/master/CHANGELOG.md)
- [Commits](https://github.com/coleifer/peewee/compare/3.17.6...3.17.8)

---
updated-dependencies:
- dependency-name: peewee
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 02:15:02 +00:00
dependabot[bot] b41c1128c6 build(deps): bump flask from 3.0.3 to 3.1.0 in /backend
Bumps [flask](https://github.com/pallets/flask) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/3.0.3...3.1.0)

---
updated-dependencies:
- dependency-name: flask
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 02:14:54 +00:00
dependabot[bot] 5bb308a098 build(deps): bump validators from 0.33.0 to 0.34.0 in /backend
Bumps [validators](https://github.com/python-validators/validators) from 0.33.0 to 0.34.0.
- [Release notes](https://github.com/python-validators/validators/releases)
- [Changelog](https://github.com/python-validators/validators/blob/master/CHANGES.md)
- [Commits](https://github.com/python-validators/validators/compare/0.33.0...0.34.0)

---
updated-dependencies:
- dependency-name: validators
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 02:14:51 +00:00
dependabot[bot] 236410cd95 build(deps): bump fpdf2 from 2.7.9 to 2.8.2 in /backend
Bumps [fpdf2](https://github.com/py-pdf/fpdf2) from 2.7.9 to 2.8.2.
- [Release notes](https://github.com/py-pdf/fpdf2/releases)
- [Changelog](https://github.com/py-pdf/fpdf2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/fpdf2/compare/2.7.9...2.8.2)

---
updated-dependencies:
- dependency-name: fpdf2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 02:14:48 +00:00
dependabot[bot] f1800e2853 build(deps): bump pyjwt[crypto] from 2.9.0 to 2.10.1 in /backend
Bumps [pyjwt[crypto]](https://github.com/jpadilla/pyjwt) from 2.9.0 to 2.10.1.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.9.0...2.10.1)

---
updated-dependencies:
- dependency-name: pyjwt[crypto]
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 02:14:45 +00:00
Timothy Jaeryang Baek 4bc9904b3c Merge pull request #8159 from open-webui/dev
0.5.3
2024-12-31 13:41:03 -08:00
Timothy Jaeryang Baek 995f80002f doc: changelog 2024-12-31 13:40:49 -08:00
Timothy Jaeryang Baek ffdb45cc4b refac 2024-12-31 13:39:03 -08:00
Timothy Jaeryang Baek f5ee5deec8 chore: format 2024-12-31 13:30:59 -08:00
Timothy Jaeryang Baek 02777ffc54 doc: changelog 2024-12-31 13:23:05 -08:00
Timothy Jaeryang Baek a5627d4226 refac 2024-12-31 13:09:17 -08:00
Timothy Jaeryang Baek 435a174316 Merge pull request #8232 from okamototk/improve-jp-trans
i18n - Updated Japanese Translation
2024-12-31 13:04:58 -08:00
Timothy Jaeryang Baek d905202afb refac 2024-12-31 13:04:27 -08:00
Takashi Okamoto 221cc19ac6 i18n - Updated Japanese Translation 2024-12-31 11:58:43 +00:00
Timothy Jaeryang Baek 3d69eaf34f refac: styling 2024-12-31 03:57:43 -08:00
Timothy Jaeryang Baek e7c501677c refac 2024-12-31 03:54:43 -08:00
Timothy Jaeryang Baek 96b1c2024b refac 2024-12-31 03:45:54 -08:00
Timothy Jaeryang Baek f7ecfafe1a refac: styling 2024-12-31 03:25:25 -08:00
Timothy Jaeryang Baek 6ecee8b920 refac: emoji picker optimisation 2024-12-31 03:24:05 -08:00
Timothy Jaeryang Baek cce8f37ada refac 2024-12-31 02:58:15 -08:00
Timothy Jaeryang Baek 60247fe18d refac 2024-12-31 02:51:52 -08:00
Timothy Jaeryang Baek de4e086bd5 refac 2024-12-31 02:48:43 -08:00
Timothy Jaeryang Baek 3da7ff1721 refac 2024-12-31 02:42:46 -08:00
Timothy Jaeryang Baek c8cdc6377b refac 2024-12-31 02:30:03 -08:00
Timothy Jaeryang Baek 85038cef69 refac: styling 2024-12-31 02:27:49 -08:00
Timothy Jaeryang Baek 016b91adda chore: format 2024-12-31 02:26:30 -08:00
Timothy Jaeryang Baek 0846a08795 Merge pull request #8230 from moblangeois/dev
i18n: update fr-FR
2024-12-31 02:24:42 -08:00
Timothy Jaeryang Baek 277eef62c2 Merge pull request #8210 from open-webui/channels
enh: channel threads & reactions
2024-12-31 02:24:10 -08:00
Timothy Jaeryang Baek 9f19933e64 refac: styling 2024-12-31 02:23:26 -08:00
Timothy Jaeryang Baek 904ddcec13 refac: styling 2024-12-31 02:19:22 -08:00
Timothy Jaeryang Baek 77da0a6cc1 refac: styling 2024-12-31 02:17:39 -08:00
Timothy Jaeryang Baek a754a4388a feat: channel threads 2024-12-31 02:16:07 -08:00
Morgan Blangeois 93f262c6a2 i18n: update fr-FR 2024-12-31 11:09:31 +01:00
Timothy Jaeryang Baek 16a48ef4eb fix 2024-12-31 02:06:55 -08:00
Timothy Jaeryang Baek 841f74894e refac 2024-12-31 02:06:19 -08:00
Timothy Jaeryang Baek 9c337552e6 enh: reply count 2024-12-31 02:05:11 -08:00
Timothy Jaeryang Baek 584e9e6da5 refac: threads 2024-12-31 00:51:43 -08:00
Timothy Jaeryang Baek a3dfa90668 refac: optimisation 2024-12-31 00:11:46 -08:00
Timothy Jaeryang Baek 00e8849445 refac 2024-12-30 23:55:19 -08:00
Timothy Jaeryang Baek 2840ff405b refac 2024-12-30 23:48:55 -08:00
Timothy Jaeryang Baek 9d39404e6c refac: styling 2024-12-30 23:16:50 -08:00
Timothy Jaeryang Baek 371201d820 refac 2024-12-30 23:12:50 -08:00
Timothy Jaeryang Baek f93c2e4a8d feat: reactions 2024-12-30 23:06:34 -08:00
Timothy Jaeryang Baek 4b0fa112bb Merge pull request #8222 from open-webui/dev
dev
2024-12-30 17:55:13 -08:00
Timothy Jaeryang Baek fd0170c179 revert 2024-12-30 16:55:29 -08:00
Timothy Jaeryang Baek 9b56b64cfa Merge pull request #8212 from ashm-dev/main
feat: Small optimization
2024-12-30 16:00:18 -08:00
Timothy Jaeryang Baek 887627fa34 Merge pull request #8217 from gabriel-ecegi/batch_fix
fix: Add missing request parameter to knowledge and retrieval routes
2024-12-30 15:58:10 -08:00
Timothy Jaeryang Baek 46bcf98ef2 fix: usage stats 2024-12-30 15:52:07 -08:00
Timothy Jaeryang Baek 947f5600d6 refac 2024-12-30 15:39:35 -08:00
Timothy Jaeryang Baek 79ce6e0a3f refac 2024-12-30 11:29:18 -08:00
Gabriel Ecegi 46e57706c1 refac: formatting 2024-12-30 17:45:43 +01:00
Gabriel Ecegi ba2964cb01 fix: missing parameter 2024-12-30 17:36:34 +01:00
shamil a0aee4ff28 feat: Small optimization 2024-12-30 13:45:20 +03:00
Timothy Jaeryang Baek 45289b0fa8 refac 2024-12-30 02:21:45 -08:00
Timothy Jaeryang Baek eece28ccc6 feat: emoji picker 2024-12-30 02:20:09 -08:00
Timothy Jaeryang Baek c216d89520 enh: threads & reactions 2024-12-29 23:16:18 -08:00
Timothy Jaeryang Baek d94134ad2d refac 2024-12-29 22:11:20 -08:00
Timothy Jaeryang Baek 952822ad5d refac 2024-12-29 21:02:11 -08:00
Timothy Jaeryang Baek 79d7e67e51 fix: ollama options 2024-12-29 16:30:36 -08:00
Timothy Jaeryang Baek 6de1923151 Merge pull request #8192 from TiancongLx/dev
i18n: update zh-TW
2024-12-29 15:36:19 -08:00
Tiancong Li abdbd6a67e i18n: update zh-TW 2024-12-30 03:13:20 +08:00
Timothy Jaeryang Baek a14dee87e8 Merge pull request #8184 from vishwamartur/fix-offline-docker
Fix offline docker container startup issue
2024-12-28 22:26:38 -08:00
Vishwanath Martur 00e6ffe83c Fix offline docker container startup issue
Related to #7207

Modify the code to allow the docker container to start in an offline environment for versions >= 0.4.0.

* **backend/open_webui/retrieval/utils.py**
  - Import `OFFLINE_MODE` from `open_webui.env`.
  - Set `local_files_only` to `True` when `OFFLINE_MODE` is enabled in `snapshot_kwargs`.

* **backend/open_webui/env.py**
  - Add logic to set `HF_HUB_OFFLINE` environment variable to `1` when `OFFLINE_MODE` is enabled.

* **README.md**
  - Document setting `HF_HUB_OFFLINE` environment variable to `1` for offline environments.
2024-12-29 11:53:09 +05:30
Timothy Jaeryang Baek 36d927e1ba refac 2024-12-28 19:31:03 -08:00
Timothy Jaeryang Baek 091e9e2f40 refac 2024-12-28 18:08:30 -08:00
Timothy Jaeryang Baek 54daf3b765 fix: outlet filter hook 2024-12-28 18:05:07 -08:00
Timothy Jaeryang Baek 76decdba2a fix: delete file 2024-12-28 17:40:00 -08:00
Timothy Jaeryang Baek e6e8978f78 refac 2024-12-28 16:42:43 -08:00
Timothy Jaeryang Baek fcaeb2f539 Merge pull request #8179 from cvaz1306/add_reset_button_mermaidjs_renderer
i18n: Add reset panzoom button to SVGPanZoom and cleanup
2024-12-28 16:27:44 -08:00
cvaz1306 f7d1833f41 Fixing formatting 2024-12-28 15:50:23 -08:00
cvaz1306 95598e5435 Merge branch 'dev' into add_reset_button_mermaidjs_renderer 2024-12-28 15:46:23 -08:00
cvaz1306 8a7e8b57a8 Add reset panzoom button to SVGPanZoom and cleanup 2024-12-28 15:27:47 -08:00
Timothy Jaeryang Baek 5a720a4a31 refac 2024-12-27 22:46:50 -08:00
Timothy Jaeryang Baek d55884b50e enh: ENABLE_REALTIME_CHAT_SAVE 2024-12-27 22:36:14 -08:00
Timothy Jaeryang Baek c8fb11db59 Merge pull request #8158 from cvaz1306/add_reset_button_mermaidjs_renderer
feat: Add reset button mermaidjs renderer
2024-12-27 17:55:00 -08:00
cvaz1306 7b3a86475d Add reset panzoom button to SVGPanZoom and cleanup 2024-12-27 17:06:15 -08:00
Timothy Jaeryang Baek 59ed53ec1e Merge pull request #8145 from bernadinm/fix/modified_update_ollama_models.sh
fix: Add execute permissions to update_ollama_models.sh
2024-12-27 16:24:32 -08:00
Timothy Jaeryang Baek 7f8b6ebbd5 refac: styling 2024-12-27 12:24:58 -08:00
Miguel Bernadin 3f0dd80898 fix: chmod +x update_ollama_models.sh 2024-12-27 08:29:54 -08:00
Timothy Jaeryang Baek 2299f48430 Merge pull request #8131 from open-webui/dev
fix: api key restrictions
2024-12-27 00:32:37 -08:00
Timothy Jaeryang Baek 99386bf680 fix: api key restrictions 2024-12-27 00:32:25 -08:00
Timothy Jaeryang Baek 4e4e2792b1 Merge pull request #8130 from open-webui/dev
refac
2024-12-27 00:06:41 -08:00
Timothy Jaeryang Baek d99e3d49e1 refac 2024-12-27 00:05:32 -08:00
Timothy Jaeryang Baek e42cbf07f5 Merge pull request #8122 from open-webui/dev
0.5.2
2024-12-26 23:51:49 -08:00
Timothy Jaeryang Baek 016862a6b8 doc: changelog 2024-12-26 23:51:40 -08:00
Timothy Jaeryang Baek cd9dae0f3a refac 2024-12-26 23:51:30 -08:00
Timothy Jaeryang Baek b7baf4ddef doc: changelog 2024-12-26 23:46:07 -08:00
Timothy Jaeryang Baek 1584015d3b chore: format 2024-12-26 23:35:56 -08:00
Timothy Jaeryang Baek e4b4a78e52 refac 2024-12-26 23:35:01 -08:00
Timothy Jaeryang Baek 50534a0dcf enh: user status indicator 2024-12-26 23:29:33 -08:00
Timothy Jaeryang Baek c53ace3c98 refac 2024-12-26 22:03:39 -08:00
Timothy Jaeryang Baek 7fa60dd63e refac 2024-12-26 21:55:21 -08:00
Timothy Jaeryang Baek 6ff6d57507 enh: typing indicator 2024-12-26 21:51:09 -08:00
Timothy Jaeryang Baek 4f93ecf519 refac 2024-12-26 20:58:46 -08:00
Timothy Jaeryang Baek 1e974439d9 enh: configurable api key endpoint restrictions 2024-12-26 20:57:51 -08:00
Timothy Jaeryang Baek 611955bc91 refac 2024-12-26 20:38:27 -08:00
Timothy Jaeryang Baek e3937ada38 fix: ollama usage 2024-12-26 20:35:14 -08:00
Timothy Jaeryang Baek c5b8466c0e fix: playground 2024-12-26 19:12:08 -08:00
Timothy Jaeryang Baek e25b082162 fix: pipelines outlet 2024-12-26 19:10:28 -08:00
Timothy Jaeryang Baek 247d7896fc Merge pull request #8093 from aleixdorca/dev
i18n: Updated Catalan translation.json
2024-12-26 13:34:30 -08:00
Timothy Jaeryang Baek a0ad681c77 Merge pull request #8101 from panda44312/dev
i18n - Updated Simplified Chinese Translation
2024-12-26 13:34:21 -08:00
Timothy Jaeryang Baek 1b7ee5dd2b Merge pull request #8115 from taylorwilsdon/fix_drive_integration
Fix drive integration
2024-12-26 13:34:09 -08:00
Timothy Jaeryang Baek 8b6d03e430 fix: elevenlabs audio 2024-12-26 12:54:31 -08:00
Taylor Wilsdon efc4ad9f65 Update Documents.svelte 2024-12-26 14:48:38 -05:00
Taylor Wilsdon 3cfb6507c5 Update .gitignore 2024-12-26 14:47:41 -05:00
Taylor Wilsdon 24a314876b formatting 2024-12-26 14:46:41 -05:00
Taylor Wilsdon 190911206b Remove logging 2024-12-26 14:46:06 -05:00
Taylor Wilsdon ea11521961 Remove unnecessary logging 2024-12-26 14:44:36 -05:00
Taylor Wilsdon 909c94e983 Fix Google Drive integration 2024-12-26 14:41:58 -05:00
Taylor Wilsdon (aider) 1c7ff7b1dc fix: Initialize enableGoogleDriveIntegration with default value 2024-12-26 12:22:58 -05:00
Taylor Wilsdon (aider) c7cec2131c debug: Add detailed logging for Google Drive Integration state changes 2024-12-26 12:21:38 -05:00
Taylor Wilsdon (aider) 6f3e7ed0e9 debug: Add console logs for Google Drive Integration state changes 2024-12-26 12:19:53 -05:00
Panda d4ccd25760 Update translation.json 2024-12-26 11:51:44 +01:00
Timothy Jaeryang Baek dd933e406f Merge pull request #8095 from open-webui/dev
fix: automatic1111 image generation
2024-12-25 23:35:10 -08:00
Timothy Jaeryang Baek 3c74ce3653 fix: automatic1111 image generation 2024-12-25 23:34:54 -08:00
Timothy Jaeryang Baek de2bda3e2e Merge pull request #8094 from open-webui/dev
refac: title generation logic
2024-12-25 23:52:21 -07:00
Timothy Jaeryang Baek 4b3e1bb747 refac: title generation logic 2024-12-25 22:51:08 -08:00
Aleix Dorca bb30a83520 Update catalan translation.json 2024-12-26 07:49:49 +01:00
Timothy Jaeryang Baek 2bdf99b398 Merge pull request #8071 from open-webui/dev
0.5.1
2024-12-25 23:31:01 -07:00
Timothy Jaeryang Baek 96a06effe2 doc: wording 2024-12-25 22:30:52 -08:00
Timothy Jaeryang Baek df4a8e167d doc: changelog 2024-12-25 22:28:20 -08:00
Timothy Jaeryang Baek c16896e96d refac 2024-12-25 22:23:59 -08:00
Timothy Jaeryang Baek da7fa09053 fix: non-stream chat completion 2024-12-25 22:21:44 -08:00
Timothy Jaeryang Baek 23bf71022e fix: title generation issue 2024-12-25 16:46:49 -07:00
Timothy Jaeryang Baek 798886105e enh: option to toggle notification sound 2024-12-25 13:49:24 -07:00
Timothy Jaeryang Baek 645313e321 Merge pull request #8062 from OriginalSimon/main
18n: Update Ukrainian translation
2024-12-25 12:44:32 -08:00
Timothy Jaeryang Baek 0915352cb0 Merge pull request #8068 from open-webui/dev
fix: get users
2024-12-25 12:39:27 -08:00
Timothy Jaeryang Baek 70a108e54f fix: get users 2024-12-25 13:39:04 -07:00
Timothy Jaeryang Baek a8289745da Merge pull request #8066 from open-webui/dev
fix: get_automatic1111_api_auth
2024-12-25 12:26:59 -08:00
Timothy Jaeryang Baek d3ba77837a fix: get_automatic1111_api_auth 2024-12-25 13:26:13 -07:00
Timothy Jaeryang Baek 3161a5d1f7 Merge pull request #8063 from open-webui/dev
fix: pipelines not loading
2024-12-25 12:08:27 -08:00
Timothy Jaeryang Baek 3a35f9ae7c fix: pipelines not loading 2024-12-25 13:07:55 -07:00
Simon 12cf2b0104 Update translation.json 2024-12-25 20:34:01 +01:00
Timothy Jaeryang Baek 22132e155a Merge pull request #7896 from open-webui/dev
0.5.0
2024-12-25 10:39:01 -08:00
Timothy Jaeryang Baek d7d08b40ed fix: pip install not working 2024-12-25 11:36:40 -07:00
Timothy Jaeryang Baek 4f886c3944 doc: wording 2024-12-25 10:52:40 -07:00
Timothy Jaeryang Baek afdb162f4f doc: changelog 2024-12-25 10:45:45 -07:00
Timothy Jaeryang Baek a4b5a9ac09 chore: format 2024-12-25 09:51:23 -07:00
Timothy Jaeryang Baek c4937cc144 enh: webui url 2024-12-25 09:50:57 -07:00
Timothy Jaeryang Baek b5bb853c66 chore: format 2024-12-25 09:38:51 -07:00
Timothy Jaeryang Baek cd367534b7 refac 2024-12-25 02:32:47 -07:00
Timothy Jaeryang Baek 2e5c2bc4c2 refac 2024-12-25 00:57:39 -07:00
Timothy Jaeryang Baek 34cc472c48 refac 2024-12-25 00:53:50 -07:00
Timothy Jaeryang Baek d701b69e05 enh: channel notification 2024-12-25 00:53:25 -07:00
Timothy Jaeryang Baek 0d7d6899b9 refac 2024-12-24 23:45:21 -07:00
Timothy Jaeryang Baek a2366a20ba refac: api key auth allowed paths 2024-12-24 23:32:34 -07:00
Timothy Jaeryang Baek 326514be4e enh: image compression 2024-12-24 23:28:14 -07:00
Timothy Jaeryang Baek 591aac5e16 chore: format 2024-12-24 22:44:21 -07:00
Timothy Jaeryang Baek e10897236d chore: format 2024-12-24 22:44:10 -07:00
Timothy Jaeryang Baek 91429640ff Merge pull request #8053 from Adhithya03/main
enh: add configurable log level for uvicorn server
2024-12-24 21:42:03 -08:00
Timothy Jaeryang Baek d0828711bd refac: styling 2024-12-24 22:36:57 -07:00
Timothy Jaeryang Baek 11b36fe03e refac 2024-12-24 22:33:42 -07:00
Timothy Jaeryang Baek 47419a77af refac 2024-12-24 22:31:03 -07:00
Timothy Jaeryang Baek d93107d1d6 refac 2024-12-24 22:16:22 -07:00
Timothy Jaeryang Baek e39617b1c0 refac 2024-12-24 22:04:43 -07:00
Timothy Jaeryang Baek 31a97d8fec refac: styling 2024-12-24 21:30:30 -07:00
Timothy Jaeryang Baek f91e56d6df refac 2024-12-24 21:28:35 -07:00
Timothy Jaeryang Baek 688f11e1c5 refac 2024-12-24 21:17:24 -07:00
Timothy Jaeryang Baek 4442411f40 refac 2024-12-24 21:16:09 -07:00
Timothy Jaeryang Baek cd7eff3bdb refac 2024-12-24 20:37:59 -07:00
Timothy Jaeryang Baek 0d70ae6307 refac: message input styling 2024-12-24 20:20:38 -07:00
Timothy Jaeryang Baek e61943f55f refac: styling 2024-12-24 20:16:02 -07:00
Timothy Jaeryang Baek f8269de947 fix 2024-12-24 20:10:52 -07:00
Timothy Jaeryang Baek 4b7f0c5be1 refac 2024-12-24 19:39:53 -07:00
Timothy Jaeryang Baek cd86161f33 refac 2024-12-24 19:34:56 -07:00
Timothy Jaeryang Baek e51722348a refac 2024-12-24 19:27:17 -07:00
Timothy Jaeryang Baek 346856b578 refac 2024-12-24 18:41:06 -07:00
Timothy Jaeryang Baek b70a31f81e enh: notification sound 2024-12-24 18:33:49 -07:00
Timothy Jaeryang Baek 2d44cd4cda enh: chat/channel notification toast 2024-12-24 18:25:59 -07:00
Timothy Jaeryang Baek 46e319dedc refac 2024-12-24 18:04:41 -07:00
Timothy Jaeryang Baek 55da6224b8 enh: save status from the backend 2024-12-24 18:03:14 -07:00
Timothy Jaeryang Baek 95da0734b6 refac 2024-12-24 17:56:46 -07:00
Timothy Jaeryang Baek 6b25139d4f refac: web search 2024-12-24 17:52:57 -07:00
Timothy Jaeryang Baek a074991d3a refac 2024-12-24 17:01:17 -07:00
Timothy Jaeryang Baek 00f3a9cb52 refac 2024-12-24 16:56:52 -07:00
Timothy Jaeryang Baek a2e0fbc943 refac: collection query status 2024-12-24 16:49:32 -07:00
Timothy Jaeryang Baek 01649fad64 enh: esc to stop response 2024-12-24 15:38:54 -07:00
Timothy Jaeryang Baek e1a198f0a3 fix: prompt import 2024-12-24 15:32:23 -07:00
Timothy Jaeryang Baek 364d6eb9c4 Merge pull request #8042 from panda44312/dev
i18n - Updated Simplified Chinese Translation
2024-12-24 14:28:41 -08:00
Panda 8511847320 Update translation.json 2024-12-24 18:19:15 +01:00
Adhithya d52fc40038 format 2024-12-24 22:25:13 +05:30
Adhithya03 16da847342 enh: add configurable log level for uvicorn server 2024-12-24 22:18:31 +05:30
Timothy Jaeryang Baek ecd3b4ebd4 enh: channel file upload 2024-12-23 14:43:58 -07:00
Timothy Jaeryang Baek b4d7268bed fix 2024-12-23 14:00:58 -07:00
Timothy Jaeryang Baek 689b910c77 refac 2024-12-23 01:38:45 -07:00
Timothy Jaeryang Baek 582253fc68 refac 2024-12-23 01:37:13 -07:00
Timothy Jaeryang Baek 6d02485999 refac: styling 2024-12-23 01:35:03 -07:00
Timothy Jaeryang Baek 190aeb3fef refac 2024-12-23 01:29:59 -07:00
Timothy Jaeryang Baek 51e0ed454c chore: format 2024-12-23 01:25:25 -07:00
Timothy Jaeryang Baek f05dbb895e Merge pull request #8015 from open-webui/channels
feat: channels
2024-12-23 00:23:05 -08:00
Timothy Jaeryang Baek 83d2bf1c0d refac: styling 2024-12-23 01:22:43 -07:00
Timothy Jaeryang Baek 5cca378cc8 refac 2024-12-23 01:22:04 -07:00
Timothy Jaeryang Baek ed44b21a78 enh: edited indicator 2024-12-23 01:19:30 -07:00
Timothy Jaeryang Baek fb3c297df2 enh: message edit/delete integration 2024-12-23 01:12:55 -07:00
Timothy Jaeryang Baek 2c8fb66383 refac 2024-12-23 01:06:59 -07:00
Timothy Jaeryang Baek b44b7e8162 refac 2024-12-23 01:03:59 -07:00
Timothy Jaeryang Baek 15fa7b44ea refac: styling 2024-12-23 01:03:14 -07:00
Timothy Jaeryang Baek 83099a093d enh: message edit 2024-12-23 00:53:45 -07:00
Timothy Jaeryang Baek cdc75237b2 refac: styling 2024-12-23 00:41:22 -07:00
Timothy Jaeryang Baek 76c8602324 refac 2024-12-23 00:31:33 -07:00
Timothy Jaeryang Baek 4c756b5501 enh: channel delete 2024-12-22 23:15:29 -07:00
Timothy Jaeryang Baek 7ad8918cd9 enh: update channel 2024-12-22 23:09:51 -07:00
Timothy Jaeryang Baek e9194d9524 refac 2024-12-22 22:39:44 -07:00
Timothy Jaeryang Baek e93b37bab1 refac: styling 2024-12-22 22:37:14 -07:00
Timothy Jaeryang Baek 74cacf8bf5 enh: channel navbar 2024-12-22 22:33:13 -07:00
Timothy Jaeryang Baek 198bd49cc2 enh: channel messages 2024-12-22 22:24:09 -07:00
Timothy Jaeryang Baek a4333295ce refac 2024-12-22 22:20:24 -07:00
Timothy Jaeryang Baek 5748f6ef77 refac 2024-12-22 22:08:27 -07:00
Timothy Jaeryang Baek c6dcac99ac refac: db schema 2024-12-22 22:06:16 -07:00
Timothy Jaeryang Baek 698f2f4e51 refac 2024-12-22 21:57:32 -07:00
Timothy Jaeryang Baek a165e76486 refac: styling 2024-12-22 21:56:51 -07:00
Timothy Jaeryang Baek f4e5e5171f feat: channels backend 2024-12-22 21:50:14 -07:00
Timothy Jaeryang Baek cb3e01de8a enh: channels enable/disable option 2024-12-22 21:02:14 -07:00
Timothy Jaeryang Baek 0d29f31846 refacx 2024-12-22 20:28:15 -07:00
Timothy Jaeryang Baek 5e8f3048f9 refac 2024-12-22 19:47:40 -07:00
Timothy Jaeryang Baek f1d21fc59a feat: channel socket integration 2024-12-22 19:40:01 -07:00
Timothy Jaeryang Baek eaecd15e69 refac 2024-12-22 17:16:14 -07:00
Timothy Jaeryang Baek 2914c29ab3 refac: styling 2024-12-22 15:11:10 -07:00
Timothy Jaeryang Baek e444f769f6 refac 2024-12-22 04:49:24 -07:00
Timothy Jaeryang Baek 2e85c8e24d refac 2024-12-22 04:10:10 -07:00
Timothy Jaeryang Baek 7c8de9e221 feat: channels backend 2024-12-22 03:42:19 -07:00
Timothy Jaeryang Baek 79aae7a76e refac: styling 2024-12-22 02:47:32 -07:00
Timothy Jaeryang Baek 7083a61ddb refac 2024-12-21 18:25:16 -07:00
Timothy Jaeryang Baek 27d2fbbe33 refac: sidebar styling 2024-12-21 18:12:44 -07:00
Timothy Jaeryang Baek 24c3f7a664 fix: custom model 2024-12-21 16:29:48 -07:00
Timothy Jaeryang Baek 06a692282b refac 2024-12-21 16:08:20 -07:00
Timothy Jaeryang Baek 556c75e876 refac 2024-12-21 09:59:12 -07:00
Timothy Jaeryang Baek 271acb2e67 refac 2024-12-21 09:45:52 -07:00
Timothy Jaeryang Baek c611734088 refac: styling 2024-12-21 09:41:49 -07:00
Timothy Jaeryang Baek 41cabf5a2c chore: format 2024-12-21 09:20:20 -07:00
Timothy Jaeryang Baek 6981e1e467 enh: preserve input 2024-12-21 09:16:29 -07:00
Timothy Jaeryang Baek 7a787efc4b Merge pull request #7988 from TiancongLx/dev
i18n: update zh-TW
2024-12-21 07:51:24 -08:00
Tiancong Li 9d3ab2e40e Merge branch 'open-webui:dev' into dev 2024-12-21 15:48:08 +08:00
Tiancong Li 2b7213f04a i18n: update zh-TW 2024-12-21 15:47:02 +08:00
Timothy Jaeryang Baek de2825bb89 refac 2024-12-20 23:09:40 -08:00
Timothy Jaeryang Baek 423fee347a refac: discord webhook 2024-12-20 23:05:22 -08:00
Timothy Jaeryang Baek 2fd7bbc259 refac 2024-12-20 22:56:37 -08:00
Timothy Jaeryang Baek 50db2514dc refac 2024-12-20 22:55:46 -08:00
Timothy Jaeryang Baek 4820ecc371 enh: webhook notification 2024-12-20 22:54:43 -08:00
Timothy Jaeryang Baek 03cfac185f chore: bump 2024-12-20 19:57:26 -08:00
Timothy Jaeryang Baek da0438f08c fix 2024-12-20 19:13:17 -08:00
Timothy Jaeryang Baek cf0aca1487 fix 2024-12-20 18:37:25 -08:00
Timothy Jaeryang Baek b1b2a6d78c refac 2024-12-20 18:31:20 -08:00
Timothy Jaeryang Baek e9cb6e4714 fix 2024-12-20 18:29:57 -08:00
Timothy Jaeryang Baek 8cc834901f refac 2024-12-20 15:21:27 -08:00
Timothy Jaeryang Baek 6524cae407 refac 2024-12-20 15:19:54 -08:00
Timothy Jaeryang Baek 47318daef0 enh: add to conversation 2024-12-20 15:09:17 -08:00
Timothy Jaeryang Baek ad5cc9d79e refac 2024-12-20 14:44:12 -08:00
Timothy Jaeryang Baek 37ce88e744 refac: floating buttons 2024-12-20 14:38:15 -08:00
Timothy Jaeryang Baek d6f0c77c34 Merge pull request #7978 from OriginalSimon/dev
18n: Update Ukrainian translation
2024-12-20 14:08:11 -08:00
Simon 544f516104 Update translation.json 2024-12-20 17:28:04 +01:00
Timothy Jaeryang Baek 2721c5939e Merge pull request #7967 from aleixdorca/dev
Update catalan translation.json
2024-12-20 00:22:25 -08:00
Aleix Dorca 2cd75ceb53 Update catalan translation.json 2024-12-20 09:10:57 +01:00
Timothy Jaeryang Baek bf4f71879f refac 2024-12-19 20:59:45 -08:00
Timothy Jaeryang Baek 50f36a5262 refac: styling 2024-12-19 20:56:16 -08:00
Timothy Jaeryang Baek ef5a5be60d fix 2024-12-19 20:16:24 -08:00
Timothy Jaeryang Baek eabd9192f3 refac 2024-12-19 20:11:13 -08:00
Timothy Jaeryang Baek 38208866b9 fix 2024-12-19 20:01:18 -08:00
Timothy Jaeryang Baek db9aef0eaf refac 2024-12-19 19:05:20 -08:00
Timothy Jaeryang Baek 70de5cf7b8 fix: audio 2024-12-19 16:18:54 -08:00
Timothy Jaeryang BaekandCopilot Autofix powered by AI 455b38dcc1 Fix code scanning alert no. 150: Information exposure through an exception
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2024-12-19 15:59:03 -08:00
Timothy Jaeryang Baek 49b36937ad refac 2024-12-19 15:45:31 -08:00
Timothy Jaeryang Baek 8535974ea3 refac: styling 2024-12-19 15:16:51 -08:00
Timothy Jaeryang Baek d9573befff feat: chat completion notification 2024-12-19 15:14:09 -08:00
Timothy Jaeryang Baek f133353734 Merge pull request #7964 from jk-f5/fix/cleanup
Fix Redis Lock Expiration in periodic_usage_pool_cleanup
2024-12-19 14:45:18 -08:00
Timothy Jaeryang Baek 6b713bc487 Merge pull request #7963 from panda44312/dev
i18n: Updated Simplified Chinese translation, hopefully won't miss version 5.0.0!
2024-12-19 14:20:23 -08:00
Panda 7268ea7abd Update translation.json 2024-12-19 23:17:46 +01:00
Jason Kidd 03e48de1a9 fix: Issue in some environments running in dev mode with redis where periodic cleanup takes longer than TIMEOUT_DURATION*2 seconds to be called and the lock expires. 2024-12-19 14:15:02 -08:00
Timothy Jaeryang Baek 8455396249 fix: websocket redis 2024-12-19 13:46:30 -08:00
Timothy Jaeryang Baek 16504b88f5 fix 2024-12-19 13:11:44 -08:00
Timothy Jaeryang Baek 71d4ed1f6a Merge pull request #7955 from matthewdtwo/dev
fix: Hide workspace model community share button when community sharing is disabled.
2024-12-19 12:45:07 -08:00
Timothy Jaeryang Baek 0db0b8ce2c fix 2024-12-19 12:19:06 -08:00
Timothy Jaeryang Baek 1ea00a58f9 refac 2024-12-19 12:16:47 -08:00
Timothy Jaeryang Baek 4c989808d6 refac 2024-12-19 11:07:02 -08:00
Matthew 0b9c6466ce Hide community share button when community sharing is disabled.
Only show the share button on the workspaces model menu when Community sharing is enabled.
2024-12-19 10:48:02 -06:00
Timothy Jaeryang Baek c3e8cd03b2 chore: format 2024-12-19 01:07:50 -08:00
Timothy Jaeryang Baek 0d5ce23885 refac 2024-12-19 01:05:47 -08:00
Timothy Jaeryang Baek 64fe2de962 refac 2024-12-19 01:02:05 -08:00
Timothy Jaeryang Baek 2be9e55545 refac: chat requests 2024-12-19 01:00:32 -08:00
Timothy Jaeryang Baek ea0d507e23 chore: format 2024-12-18 18:33:41 -08:00
Timothy Jaeryang Baek 0523ebcc5e Merge pull request #7887 from jk-f5/disablepolling
Disable Polling Transport When WebSockets Are Enabled and Implement Cleanup Locking Mechanism
2024-12-18 18:32:56 -08:00
Timothy Jaeryang Baek e4573d0b6c refac 2024-12-18 18:32:19 -08:00
Timothy Jaeryang Baek ddac34f769 refac 2024-12-18 18:15:58 -08:00
Timothy Jaeryang Baek 2875326015 fix: table export 2024-12-18 18:11:01 -08:00
Timothy Jaeryang Baek 0f6d302760 refac 2024-12-18 18:04:56 -08:00
Timothy Jaeryang Baek 5871df02ac Merge pull request #7900 from taylorwilsdon/add_google_drive_integration
feat: Add Google Drive integration for Open-Webui
2024-12-18 18:00:13 -08:00
Taylor Wilsdon f3454a8bba Add google drive requirements to requirements.txt 2024-12-18 13:35:37 -05:00
Taylor Wilsdon 1120f4d09a npm run format 2024-12-18 13:32:46 -05:00
Taylor Wilsdon 0dc75363aa Add configurable Google Drive toggle in the Documents admin section along with necessary config scaffolding 2024-12-18 13:25:57 -05:00
Taylor Wilsdon (aider) 5c149c3aa2 style: Align Google Drive switch to the right side of text 2024-12-18 13:24:13 -05:00
Taylor Wilsdon d43ca803ca feat: Add Google Drive integration toggle to document settings 2024-12-18 13:24:11 -05:00
Taylor Wilsdon 366158ff04 npm run format 2024-12-18 12:18:31 -05:00
Taylor Wilsdon 89e86f5e2e functional 2024-12-18 12:15:23 -05:00
Taylor Wilsdon 76ca3cf452 upstream 2024-12-18 12:11:17 -05:00
Taylor Wilsdon e28427803f Fix dev upstream merge conflicts 2024-12-18 12:04:55 -05:00
Jason Kidd 8f51681801 feat: Make ENABLE_WEBSOCKET_SUPPORT disable polling entirely to allow multiple replicas without sticky sessions.
See https://socket.io/docs/v4/using-multiple-nodes/ for details why this was done.

Also create a redis key to track which replica is running the cleanup job
2024-12-18 07:54:12 -08:00
Timothy Jaeryang Baek a38934bd23 feat: screen capture 2024-12-18 01:27:32 -08:00
Timothy Jaeryang Baek e500461dc0 refac 2024-12-17 18:40:50 -08:00
Timothy Jaeryang Baek c7e3692678 Merge pull request #7919 from denispol/main
fix: enhance Markdown text cleaning for TTS compatibility
2024-12-17 13:54:58 -08:00
Timothy Jaeryang Baek 9abae36264 Merge pull request #7881 from gabriel-ecegi/dev
feat: Batch Processing for Large-Scale Document Import
2024-12-17 13:54:00 -08:00
Timothy Jaeryang Baek 5bdb1c99bb refac 2024-12-17 13:52:57 -08:00
Timothy Jaeryang Baek 1902d4238b chore: format 2024-12-17 13:51:29 -08:00
Timothy Jaeryang Baek 08398e511e Merge pull request #7905 from devdev999/make-swagger-available-offline
feat: make swagger docs available offline
2024-12-17 13:37:42 -08:00
Timothy Jaeryang Baek a14c06fa0b Merge pull request #7920 from envision3d/ollama-structured-output
feat: pass structured output format through to ollama
2024-12-17 13:37:24 -08:00
Timothy Jaeryang Baek 9531edf6d6 Merge pull request #7923 from tarmst/groups-from-oauth
feat: Allow user groups to be managed by oauth
2024-12-17 13:36:34 -08:00
Timothy Jaeryang Baek 1b599057e9 Merge pull request #7915 from short-circuit/dev
feat: add comfyui api key
2024-12-17 13:35:49 -08:00
tarmst 0f33856182 Removing prints used for debugging 2024-12-17 19:50:59 +00:00
tarmst 9737869d11 Adding oauth group management for users upon login 2024-12-17 19:38:07 +00:00
envision3d 16d900247a feat: pass structured output format through to ollama 2024-12-17 09:33:32 -06:00
denispol e6add2869b Update index.ts 2024-12-17 14:56:12 +01:00
denispol d87584e7ad refactor(utils): enhance Markdown text cleaning for TTS compatibility 2024-12-17 14:52:02 +01:00
Davide Del Popolo 987b0f0dfd feat: add comfyui api key 2024-12-17 08:29:00 +01:00
gabriel-ecegi 54f6ae8fb5 Merge branch 'open-webui:dev' into dev 2024-12-17 06:03:53 +01:00
KX d681357c0c fix: update swagger-ui version to latest release 5.18.2 2024-12-17 11:12:40 +08:00
Timothy Jaeryang Baek 18fd3db3d5 refac 2024-12-16 13:27:54 -08:00
Taylor Wilsdon 9000fddffc Merge branch 'add_google_drive_integration' of github.com:taylorwilsdon/open-webui into add_google_drive_integration 2024-12-16 15:33:19 -05:00
Taylor Wilsdon 7c9f04bd59 fix merge conflicts 2024-12-16 15:29:49 -05:00
Timothy Jaeryang BaekandCopilot Autofix powered by AI 6962f8f3b3 Fix code scanning alert no. 148: Information exposure through an exception
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2024-12-16 12:27:11 -08:00
Taylor Wilsdon a26d5a2d95 clean up drift 2024-12-16 15:24:55 -05:00
Taylor Wilsdon 61aed5fe28 clean up drift 2024-12-16 15:20:56 -05:00
Taylor Wilsdon a27df11c02 Fix formatting 2024-12-16 15:11:05 -05:00
Taylor Wilsdon bf9ff1af56 packagelock 2024-12-16 15:10:01 -05:00
Timothy Jaeryang BaekandCopilot Autofix powered by AI ad82f790c1 Fix code scanning alert no. 149: Information exposure through an exception
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2024-12-16 11:59:50 -08:00
Taylor Wilsdon (aider) f078bbf006 feat: Add Google Drive config values to /api/config endpoint 2024-12-16 14:58:14 -05:00
Taylor Wilsdon (aider) 513d88b26d feat: Add Google Drive config values to /api/config endpoint 2024-12-16 14:51:02 -05:00
Taylor Wilsdon (aider) edebbd2f6d refactor: Retrieve Google Drive credentials from main config endpoint 2024-12-16 14:48:19 -05:00
Taylor Wilsdon (aider) 49c1267089 fix: Update Google Drive credentials endpoint URL 2024-12-16 14:47:14 -05:00
Taylor Wilsdon (aider) 4528770a0e feat: Implement dynamic Google Drive credentials fetching from backend config 2024-12-16 14:44:17 -05:00
Taylor Wilsdon (aider) e4b2d29cba feat: Add Google Drive client ID and API key config options 2024-12-16 14:43:33 -05:00
Taylor Wilsdon (aider) 4215c8ac3f fix: Change Google Docs export format from markdown to plain text 2024-12-16 14:09:35 -05:00
Taylor Wilsdon (aider) b46f4ff3e0 feat: Change Google Docs export format to markdown 2024-12-16 13:49:53 -05:00
Taylor Wilsdon (aider) f4b9f77cc9 feat: Add support for Google Slides with text/plain export 2024-12-16 13:40:39 -05:00
Taylor Wilsdon (aider) 9fc4ef323c feat: Add CSV export support for Google Spreadsheets in Drive picker 2024-12-16 13:37:50 -05:00
Taylor Wilsdon 15f14d0318 fix formatting 2024-12-16 13:36:25 -05:00
KX ab8f8bcf92 feat: add offline swagger docs 2024-12-17 02:00:51 +08:00
Taylor Wilsdon (aider) 81bb816881 refactor: Remove spreadsheet export format handling in Google Drive picker 2024-12-16 11:11:21 -05:00
Taylor Wilsdon (aider) 8bf09ae29c feat: Remove spreadsheet support from Google Drive picker 2024-12-16 11:11:08 -05:00
Taylor Wilsdon (aider) 81e601002f fix: Handle collection_name for spreadsheet file uploads 2024-12-16 11:05:36 -05:00
Taylor Wilsdon (aider) 31f499af0e fix: Simplify Google Drive file upload handling for spreadsheets 2024-12-16 11:00:40 -05:00
Taylor Wilsdon (aider) 51061afb10 fix: Declare finalFileName to resolve Google Drive picker error 2024-12-16 10:58:47 -05:00
Taylor Wilsdon (aider) 886fb3f426 fix: Prevent constant reassignment in Google Drive file picker 2024-12-16 10:57:58 -05:00
Taylor Wilsdon (aider) f919f63d33 fix: Resolve constant reassignment warning in Google Drive picker filename handling 2024-12-16 10:57:13 -05:00
Taylor Wilsdon (aider) eae86f04c5 feat: Add Google Sheets support to file picker with .xlsx export 2024-12-16 10:54:12 -05:00
Taylor Wilsdon (aider) 0563239782 refactor: Remove verbose logging from file upload handlers 2024-12-16 10:47:18 -05:00
Taylor Wilsdon (aider) 7699db0666 refactor: Remove debug logs and streamline Google Drive picker code 2024-12-16 10:47:00 -05:00
Taylor Wilsdon (aider) 1cc4eb241a feat: Improve Google Drive file upload handling in chat context 2024-12-16 10:40:08 -05:00
Taylor Wilsdon (aider) ec26296dc3 fix: Improve Google Drive file download error handling and export formats 2024-12-16 10:32:50 -05:00
Taylor Wilsdon (aider) cc9b7a1f1a fix: Update Google Drive file download URL generation to handle different file types 2024-12-16 10:32:01 -05:00
Taylor Wilsdon (aider) ae589bf604 fix: Make Google Drive picker callback async to resolve await usage 2024-12-16 10:30:45 -05:00
Taylor Wilsdon (aider) 77490e3392 feat: Implement file download with blob in Google Drive picker 2024-12-16 10:29:35 -05:00
MadsLang 6f1065b56a Merge branch 'dev' of github.com:open-webui/open-webui 2024-12-16 10:00:24 +01:00
Timothy Jaeryang Baek d5152e43d5 refac 2024-12-15 23:52:25 -08:00
Timothy Jaeryang Baek f341971eae fix 2024-12-15 23:41:17 -08:00
Timothy Jaeryang Baek 35cdd43a31 fix: unicode file name 2024-12-15 23:08:51 -08:00
Timothy Jaeryang Baek 4a7c1d8d55 Merge pull request #7875 from MooreDerek/Fix-File-Upload-Logging
Chore: Tika file upload - only log file contents in debug
2024-12-15 22:47:29 -08:00
Timothy Jaeryang Baek ddfed87b15 fix 2024-12-15 22:44:47 -08:00
Gabriel Ecegi 46f2f0fbdb Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2024-12-16 07:34:06 +01:00
MooreDerek 4905c180a5 Only log file contents in debug 2024-12-16 15:58:26 +13:00
Taylor Wilsdon (aider) 1feaee8eca feat: Update Google Drive download URL format for better compatibility 2024-12-15 20:29:12 -05:00
Taylor Wilsdon (aider) 1dce50df12 refactor: Update Google Drive file upload logging with dynamic token 2024-12-15 20:09:44 -05:00
Taylor Wilsdon (aider) d1ca6922d9 fix: Replace hardcoded bearer token with dynamic token variable 2024-12-15 20:09:35 -05:00
Taylor Wilsdon (aider) 0e60ba4723 feat: Improve Google Drive file upload error handling and validation 2024-12-15 20:08:52 -05:00
Timothy Jaeryang Baek ff8e94e41f Merge pull request #7811 from kostich/main
i18n: Update Serbian translation
2024-12-15 17:08:30 -08:00
Timothy Jaeryang Baek 1d1c4bc85d Merge pull request #7553 from OhMyMndy/codemirror-languages
feat: add HCL highlighting
2024-12-15 17:06:22 -08:00
Timothy Jaeryang Baek bd88aa2af9 Merge pull request #7828 from juananpe/fixdownloadcitations
fix: use WEBUI_API_BASE_URL for file download links in Citations
2024-12-15 17:05:03 -08:00
Timothy Jaeryang Baek dd8f13e097 Merge pull request #7866 from HUD4K/cs-CZ-translation
i18n Czech and Slovak translation Added Slovak translation, improved Czech translation
2024-12-15 17:04:33 -08:00
Timothy Jaeryang Baek 495ecc531b Merge pull request #7850 from i0ntempest/new-python
Chore: Allow installing with python 3.12
2024-12-15 17:04:00 -08:00
Timothy Jaeryang Baek 72ab29013d Merge pull request #7772 from oyve/dev
i18n: Updates to Norwegian language
2024-12-15 17:03:41 -08:00
Timothy Jaeryang Baek 2d368e89a1 Merge pull request #7741 from sanch7/offline_mode_fix
[Fix] Turn off auto update in offline mode
2024-12-15 17:03:26 -08:00
Timothy Jaeryang Baek 3eea90b025 Merge pull request #7745 from open-webui/refac
general refac
2024-12-15 17:02:24 -08:00
Taylor Wilsdon (aider) e802004dc3 fix: Improve Google Drive file upload handling in Chat component 2024-12-15 19:58:49 -05:00
Taylor Wilsdon (aider) 4718239353 fix: Add comprehensive logging and error handling in Google Drive picker callback 2024-12-15 19:55:36 -05:00
Taylor Wilsdon (aider) a865420cb1 feat: Add detailed logging for file download process to diagnose download issues 2024-12-15 19:54:13 -05:00
Taylor Wilsdon (aider) 42af98ae28 feat: Add local file download for debugging Google Drive file upload 2024-12-15 19:52:39 -05:00
Taylor Wilsdon (aider) f4f8334153 fix: Use correct OAuth token and headers in Google Drive file upload 2024-12-15 19:50:51 -05:00
Taylor Wilsdon (aider) 1542cb486d fix: Improve Google Drive file upload handling and error logging 2024-12-15 19:49:26 -05:00
Taylor Wilsdon (aider) 434241149b feat: Add comprehensive logging for Google Drive file upload process 2024-12-15 19:13:29 -05:00
Taylor Wilsdon (aider) 9b939e99f2 refactor: Update Google Drive file upload to match local file upload flow 2024-12-15 19:12:33 -05:00
Taylor Wilsdon (aider) 9faa5856f5 fix: Update Google Drive Picker to show files and improve file upload process 2024-12-15 19:10:41 -05:00
Taylor Wilsdon (aider) b57f7251a5 feat: Improve Google Drive file upload handling with better logging and error management 2024-12-15 19:06:38 -05:00
Taylor Wilsdon (aider) b9499b4392 fix: Resolve Google Drive Picker 404 error and improve configuration 2024-12-15 19:04:44 -05:00
Taylor Wilsdon (aider) 29efee8ede feat: Improve Google Drive file upload with correct headers 2024-12-15 18:57:59 -05:00
Taylor Wilsdon (aider) 7d55f9bc2e fix: Adjust Google Drive file upload headers in processWeb call 2024-12-15 18:54:05 -05:00
Taylor Wilsdon (aider) 7dace30587 fix: Update Google Drive file upload to use authorization headers 2024-12-15 18:52:24 -05:00
Taylor Wilsdon (aider) 4adcd2b64a feat: Add comprehensive logging to Google Drive picker integration 2024-12-15 18:51:21 -05:00
Taylor Wilsdon (aider) b458383b82 feat: Add logging for file upload process in MessageInput component 2024-12-15 18:48:43 -05:00
Taylor Wilsdon (aider) 3ce4e36ab2 feat: Add comprehensive console logging for file upload process 2024-12-15 18:48:35 -05:00
Taylor Wilsdon (aider) 713bedf3b3 fix: Simplify Google Drive Picker API loading to resolve 404 error 2024-12-15 18:46:32 -05:00
Taylor Wilsdon (aider) aaacd28131 fix: Resolve Google Drive picker API loading and token handling 2024-12-15 18:45:40 -05:00
Taylor Wilsdon (aider) 3378f35296 fix: Import getAuthToken in MessageInput.svelte to resolve Google Drive upload error 2024-12-15 18:43:06 -05:00
Taylor Wilsdon (aider) 64c8bbc16a feat: Improve Google Drive file download handling 2024-12-15 18:42:26 -05:00
Taylor Wilsdon (aider) eef18d4440 fix: Properly structure Google Drive file upload data for dispatch 2024-12-15 18:39:23 -05:00
Taylor Wilsdon (aider) 7d31b111cc feat: Add folder selection and app ID to Google Drive picker 2024-12-15 18:33:40 -05:00
Taylor Wilsdon (aider) ba19ff8ace fix: Improve Google OAuth token retrieval with proper Promise handling 2024-12-15 18:31:58 -05:00
Taylor Wilsdon (aider) c3d631ca98 fix: Improve Google Drive API credentials validation and error handling 2024-12-15 16:55:04 -05:00
Taylor Wilsdon (aider) a0ba5974f6 feat: Add credential validation for Google Drive API initialization 2024-12-15 16:54:19 -05:00
Taylor Wilsdon (aider) f29dc2f865 fix: Add missing import for createPicker in MessageInput.svelte 2024-12-15 16:53:07 -05:00
Taylor Wilsdon (aider) 85508106a8 fix: Improve Google Drive picker initialization and error handling 2024-12-15 16:36:45 -05:00
Taylor Wilsdon (aider) eed7cfd2a2 refactor: Remove unused Google Drive picker imports from Chat.svelte 2024-12-15 16:34:26 -05:00
Taylor Wilsdon (aider) b2dc6fef9f fix: Improve Google Drive picker API loading and error handling 2024-12-15 16:33:15 -05:00
Taylor Wilsdon (aider) 1cd43b122b feat: Import createPicker function in InputMenu component 2024-12-15 16:31:58 -05:00
Taylor Wilsdon (aider) 7bc1876e37 fix: Resolve Google Drive picker promise with file data 2024-12-15 16:31:30 -05:00
Taylor Wilsdon (aider) 90e70608b9 feat: Add Google Drive upload option to InputMenu 2024-12-15 16:25:18 -05:00
Taylor Wilsdon (aider) f566c5940a feat: Add Google Drive picker button to MessageInput component 2024-12-15 16:08:32 -05:00
Taylor Wilsdon (aider) 61b1a8fdab feat: Add Google Drive file picker integration to chat interface 2024-12-15 16:07:43 -05:00
Michal Hudak 8c30c6282b added slovak translation file 2024-12-15 13:25:16 +01:00
Michal Hudak 62c6ebe55a Added Slovak langage, improved Czech language 2024-12-15 13:20:51 +01:00
i0ntempest c0f106836f Allow installing with python 3.12 2024-12-14 18:09:10 +08:00
Gabriel Ecegi 440894f8d3 Fix process/files/batch 2024-12-14 10:45:27 +01:00
Timothy Jaeryang Baek 6efca03a8f refac 2024-12-13 22:51:43 -08:00
Juanan Pereira 6f3ab5917d fix: use WEBUI_API_BASE_URL for file download links in Citations 2024-12-13 15:42:45 +01:00
Gabriel Ecegi f2e2b59c18 Add batching 2024-12-13 15:29:43 +01:00
Timothy Jaeryang Baek f9a05dd1e1 refac 2024-12-12 23:31:08 -08:00
Timothy Jaeryang Baek 9a081c8593 refac 2024-12-12 22:32:28 -08:00
Timothy Jaeryang Baek 1197c640c4 refac 2024-12-12 22:28:42 -08:00
Timothy Jaeryang Baek 8c38708827 wip 2024-12-12 20:26:28 -08:00
Timothy Jaeryang Baek d8a01cb911 wip 2024-12-12 20:24:36 -08:00
Timothy Jaeryang Baek 4311bb7b99 wip 2024-12-12 20:22:17 -08:00
Марко М. Костић (Marko M. Kostić) 6aaede510b Update Serbian translation 2024-12-12 14:36:39 +01:00
Timothy Jaeryang Baek 403262d764 fix 2024-12-11 20:40:20 -08:00
Timothy Jaeryang Baek 866c3dff11 fix 2024-12-11 20:39:55 -08:00
Timothy Jaeryang Baek d9ffcea764 wip 2024-12-11 20:26:24 -08:00
Timothy Jaeryang Baek eb9733e99f wip 2024-12-11 20:25:46 -08:00
Timothy Jaeryang Baek a07ff56c50 wip 2024-12-11 20:15:23 -08:00
Timothy Jaeryang Baek fe5519e0a2 wip 2024-12-11 19:52:46 -08:00
Timothy Jaeryang Baek 772f5ccd60 wip 2024-12-11 18:53:38 -08:00
Timothy Jaeryang Baek ccdf51588e wip 2024-12-11 18:46:29 -08:00
Timothy Jaeryang Baek 3bda1a8b88 wip 2024-12-11 18:36:59 -08:00
Timothy Jaeryang Baek 9e85ed861d wip: pipelines 2024-12-11 18:16:07 -08:00
Timothy Jaeryang Baek b3987ad41e wip 2024-12-11 18:08:55 -08:00
Timothy Jaeryang Baek 867c4bc0d0 wip: retrieval 2024-12-11 18:05:42 -08:00
Timothy Jaeryang Baek 3ec0a58cd7 wip 2024-12-11 17:50:48 -08:00
Timothy Jaeryang Baek bfdbb2df69 fix: rich text input issue 2024-12-11 14:07:25 -08:00
Timothy Jaeryang Baek 87d695caad Update audio.py 2024-12-11 04:47:35 -08:00
Timothy Jaeryang Baek df0cdd9f3c wip 2024-12-11 04:37:47 -08:00
oyve 2f2bd88dd1 Merge remote-tracking branch 'upstream/dev' into dev 2024-12-11 12:54:17 +01:00
Timothy Jaeryang Baek df48eac22b wip 2024-12-11 03:38:45 -08:00
Timothy Jaeryang Baek 4819199650 wip 2024-12-11 02:41:25 -08:00
MadsLang 332188535e add option to add database schema as env var 2024-12-10 15:18:26 +01:00
Timothy Jaeryang Baek d3d161f723 wip 2024-12-10 00:54:13 -08:00
Sanchit Hira edf6c6a18c turn off auto update in offline mode 2024-12-10 00:17:49 -08:00
Timothy Jaeryang Baek a495f68b58 fix: textarea styling 2024-12-10 00:01:19 -08:00
Timothy Jaeryang Baek f6bec8d9f3 general refac 2024-12-10 00:00:01 -08:00
Timothy Jaeryang Baek 1349c6049e fix: BYPASS_MODEL_ACCESS_CONTROL env var 2024-12-09 23:39:23 -08:00
Timothy Jaeryang Baek 2db837cab4 fix: query_embedding param 2024-12-09 23:33:43 -08:00
Timothy Jaeryang Baek 8de91df1ff refac: rm print tags 2024-12-09 23:30:57 -08:00
Timothy Jaeryang Baek 6b46b8bf62 refac: rm print 2024-12-09 23:30:43 -08:00
Timothy Jaeryang Baek 10747a6b04 fix: clear files when saving response message as new 2024-12-09 23:24:45 -08:00
Timothy Jaeryang Baek faa054d4b4 fix: comfyui cfg setting 2024-12-09 23:22:47 -08:00
Timothy Jaeryang Baek 9ddb16345f refac 2024-12-09 23:02:11 -08:00
Timothy Jaeryang Baek f264d82d13 Merge pull request #7551 from jonassvatos/patch-1
feat: Add OAUTH_ALLOWED_DOMAINS
2024-12-09 16:27:06 -08:00
Timothy Jaeryang Baek 8718067894 Merge pull request #7678 from ZaibanAli/feature/keycloak-terminate-sso-session
feat: implement OAuth logout functionality for keyclock to terminate sso session
2024-12-09 16:26:10 -08:00
Timothy Jaeryang Baek a3ca632921 refac: id_token -> oauth_id_token 2024-12-09 16:25:56 -08:00
Timothy Jaeryang Baek d4d6d1e7db Merge pull request #7694 from erics118/main
feat: add kagi search engine
2024-12-09 16:12:32 -08:00
Timothy Jaeryang Baek a4ed027498 Merge pull request #7696 from ishiland/main
feat: add ollama ps endpoint
2024-12-09 16:12:07 -08:00
Timothy Jaeryang Baek 56286a2157 Merge pull request #7697 from marcusziade/improve-finnish-translations
i18n: Improve Finnish translations
2024-12-09 16:11:25 -08:00
Timothy Jaeryang Baek 961c1efe38 Merge pull request #7728 from OriginalSimon/dev
18n: Update Ukrainian translation
2024-12-09 16:11:09 -08:00
Timothy Jaeryang Baek 43b791927e refac: rm print 2024-12-09 16:09:21 -08:00
Simon 7cbad465e5 Update translation.json 2024-12-09 21:42:50 +01:00
Timothy Jaeryang Baek 33099bf9e4 refac 2024-12-08 16:01:56 -08:00
Marcus Ziadé 1dadfa9f97 Update Finnish translations in translation.json file 2024-12-08 17:38:26 +02:00
Ian Shiland 9c554db37c add ollama ps endpoint 2024-12-08 07:49:32 -05:00
erics118 b825947745 feat: add kagi 2024-12-08 00:21:10 -05:00
Zaiban Ali 899424b371 feat: refactor signout functionality to use aiohttp for OpenID configuration retrieval 2024-12-08 04:57:57 +01:00
Timothy Jaeryang Baek 8dcee6b6ed refac: pdf 2024-12-07 14:28:17 -08:00
Timothy Jaeryang Baek 1439f6862d enh: ollama /v1/completion endpoint support 2024-12-07 13:46:46 -08:00
Zaiban Ali 48d604a525 feat: enable OAuth signup configuration for signout functionality 2024-12-07 15:21:05 +01:00
Zaiban Ali 9918ec6246 feat: update signout functionality to use OpenID configuration for logout URL and remove the logout variable from config 2024-12-07 15:13:13 +01:00
Zaiban Ali d5ce85f34a feat: implement OAuth logout functionality for keyclock to terminate sso session 2024-12-07 13:49:12 +01:00
Timothy Jaeryang Baek 29a2719595 Merge pull request #7562 from open-webui/dev
0.4.8
2024-12-07 00:42:50 -08:00
Timothy Jaeryang Baek 976676a482 chore: format 2024-12-07 00:34:52 -08:00
Timothy Jaeryang Baek 19ad8b4f26 doc: changelog 2024-12-07 00:29:23 -08:00
Timothy Jaeryang Baek f04767f1fe Merge pull request #7655 from aleixdorca/dev
i18n: Update catalan translation.json
2024-12-06 12:01:38 -08:00
Timothy Jaeryang Baek 36085f3036 refac 2024-12-06 11:55:25 -08:00
Aleix Dorca 4a46417275 Update catalan translation.json 2024-12-06 15:02:54 +01:00
Timothy Jaeryang Baek a68e717dcf Update CHANGELOG.md 2024-12-05 14:11:52 -08:00
Timothy Jaeryang Baek 346b7ddb14 refac: tailwind 2024-12-05 10:42:37 -08:00
Timothy Jaeryang Baek 31545439a0 Merge pull request #7590 from HUD4K/cs-CZ-translation
Cs cz translation
2024-12-05 10:41:55 -08:00
Timothy Jaeryang Baek 5401b24717 Merge pull request #7589 from AliveDedSec/main
Updated and expanded translation into Russian
2024-12-05 10:41:44 -08:00
Michal Hudak 152b1224a8 updated changelog 2024-12-04 09:55:34 +01:00
Michal Hudak ac5ea4ff25 Updated and improved cs-CZ translation 2024-12-04 09:30:08 +01:00
SVAROG 6e73b3d075 Update translation.json 2024-12-04 07:50:43 +03:00
SVAROG 054a718da0 Update translation.json 2024-12-04 07:43:46 +03:00
SVAROG a63326b550 Update translation.json 2024-12-04 07:37:10 +03:00
SVAROG 547d17c362 Update translation.json 2024-12-04 07:35:35 +03:00
SVAROG 10382998f1 Update translation.json 2024-12-04 07:24:14 +03:00
SVAROG c5f7ad2009 Update translation.json 2024-12-04 06:56:30 +03:00
SVAROG 6173636a11 Update translation.json 2024-12-04 06:26:55 +03:00
Timothy Jaeryang Baek 9b6076f726 Merge pull request #7549 from panda44312/dev
i18n: Update Traditional Chinese translation
2024-12-02 23:42:34 -08:00
Mandy Schoep 8fcb08c541 feat: add HCL highlighting 2024-12-02 11:08:02 +01:00
jonassvatos d42de65298 Add OAUTH_ALLOWED_DOMAINS for ability to restrict from which e-mail domains can users sign-up via OAuth 2024-12-02 10:23:05 +01:00
Panda abbf37f3d9 Update translation.json 2024-12-02 09:49:02 +01:00
Timothy Jaeryang Baek 5433340bb1 enh: banner md support 2024-12-01 23:58:22 -08:00
Timothy Jaeryang Baek 1dab0cfada refac 2024-12-01 23:35:24 -08:00
Timothy Jaeryang Baek 2714a1bb64 refac: styling 2024-12-01 23:29:21 -08:00
Timothy Jaeryang Baek 4053de5825 refac: styling 2024-12-01 23:16:00 -08:00
Timothy Jaeryang Baek 29573afb91 Merge pull request #7536 from marvinvr/main
style: Add proper favicon and iOS home screen support
2024-12-01 22:21:33 -08:00
Marvin von Rappard 39b7e54482 feat: properly format favicons and make home screen icons look better 2024-12-02 07:06:32 +01:00
Timothy Jaeryang Baek 7f77828e3f refac: styling 2024-12-01 21:50:21 -08:00
Timothy Jaeryang Baek 59c3a18118 enh: BYPASS_MODEL_ACCESS_CONTROL 2024-12-01 18:25:44 -08:00
Timothy Jaeryang Baek 460992613f refac: styling 2024-12-01 17:15:16 -08:00
Timothy Jaeryang Baek 0055f3dcb6 refac: rich text input 2024-12-01 14:49:10 -08:00
Timothy Jaeryang Baek 1c078bdb55 fix: api query collection 2024-12-01 13:36:36 -08:00
Timothy Jaeryang Baek 85d2b898c6 Merge pull request #7512 from panda44312/dev
i18n: Update Simplified Chinese Translation
2024-12-01 12:30:15 -08:00
Timothy Jaeryang Baek b903e3a896 Merge pull request #7507 from TiancongLx/dev
i18n: fix zh-TW
2024-12-01 12:30:05 -08:00
panda44312 aecb7ae398 Update translation.json 2024-12-01 15:43:53 +01:00
Tiancong Li 7f4a83ea0e i18n: fix zh-TW 2024-12-01 18:16:05 +08:00
Timothy Jaeryang Baek c4ea31357f Merge pull request #7475 from open-webui/dev
0.4.7
2024-12-01 00:42:48 -08:00
Timothy Jaeryang Baek 19bcda2362 refac: styling 2024-12-01 00:42:14 -08:00
Timothy Jaeryang Baek 39c2f70778 refac 2024-12-01 00:23:06 -08:00
Timothy Jaeryang Baek 368e11e2b2 doc: changelog 2024-12-01 00:19:44 -08:00
Timothy Jaeryang Baek 430a79e177 refac 2024-12-01 00:15:43 -08:00
Timothy Jaeryang Baek 9b25efc3bb refac 2024-11-30 23:50:05 -08:00
Timothy Jaeryang Baek 746fe9ea16 refac: autocomplete 2024-11-30 23:46:29 -08:00
Timothy Jaeryang Baek 2fac9b45cd chore: format 2024-11-30 23:36:30 -08:00
Timothy Jaeryang Baek 370f97b44e refac 2024-11-30 23:33:19 -08:00
Timothy Jaeryang Baek a26c5d9549 Merge pull request #7501 from open-webui/dependabot/pip/backend/dev/aiohttp-3.11.8
chore(deps): bump aiohttp from 3.10.8 to 3.11.8 in /backend
2024-11-30 22:58:10 -08:00
Timothy Jaeryang Baek 96cc8bf127 Merge pull request #7500 from open-webui/dependabot/pip/backend/dev/python-multipart-0.0.18
chore(deps): bump python-multipart from 0.0.17 to 0.0.18 in /backend
2024-11-30 22:58:03 -08:00
Timothy Jaeryang Baek 4bf9d071f0 Merge pull request #7499 from open-webui/dependabot/pip/backend/dev/pymilvus-2.5.0
chore(deps): bump pymilvus from 2.4.9 to 2.5.0 in /backend
2024-11-30 22:57:56 -08:00
Timothy Jaeryang Baek 1a74199656 Merge pull request #7498 from open-webui/dependabot/pip/backend/dev/sentence-transformers-3.3.1
chore(deps): bump sentence-transformers from 3.2.0 to 3.3.1 in /backend
2024-11-30 22:57:49 -08:00
Timothy Jaeryang Baek 4e19e66e7d Merge pull request #7497 from open-webui/dependabot/pip/backend/dev/alembic-1.14.0
chore(deps): bump alembic from 1.13.2 to 1.14.0 in /backend
2024-11-30 22:57:36 -08:00
Timothy Jaeryang Baek 27b1a35778 refac: styling 2024-11-30 22:32:40 -08:00
Timothy Jaeryang Baek ba0b3a984d refac 2024-11-30 22:29:53 -08:00
dependabot[bot] 2f84e6b877 chore(deps): bump aiohttp from 3.10.8 to 3.11.8 in /backend
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.8 to 3.11.8.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.8...v3.11.8)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 02:40:53 +00:00
dependabot[bot] f311c03a21 chore(deps): bump python-multipart from 0.0.17 to 0.0.18 in /backend
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.17 to 0.0.18.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.17...0.0.18)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 02:40:36 +00:00
dependabot[bot] ef3b6083ff chore(deps): bump pymilvus from 2.4.9 to 2.5.0 in /backend
Bumps [pymilvus](https://github.com/milvus-io/pymilvus) from 2.4.9 to 2.5.0.
- [Release notes](https://github.com/milvus-io/pymilvus/releases)
- [Commits](https://github.com/milvus-io/pymilvus/compare/v2.4.9...v2.5.0)

---
updated-dependencies:
- dependency-name: pymilvus
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 02:40:34 +00:00
dependabot[bot] d23fac2a5b chore(deps): bump sentence-transformers from 3.2.0 to 3.3.1 in /backend
Bumps [sentence-transformers](https://github.com/UKPLab/sentence-transformers) from 3.2.0 to 3.3.1.
- [Release notes](https://github.com/UKPLab/sentence-transformers/releases)
- [Commits](https://github.com/UKPLab/sentence-transformers/compare/v3.2.0...v3.3.1)

---
updated-dependencies:
- dependency-name: sentence-transformers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 02:40:29 +00:00
dependabot[bot] 8cb981c3f4 chore(deps): bump alembic from 1.13.2 to 1.14.0 in /backend
Bumps [alembic](https://github.com/sqlalchemy/alembic) from 1.13.2 to 1.14.0.
- [Release notes](https://github.com/sqlalchemy/alembic/releases)
- [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES)
- [Commits](https://github.com/sqlalchemy/alembic/commits)

---
updated-dependencies:
- dependency-name: alembic
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 02:40:25 +00:00
Timothy Jaeryang Baek 81a8ad2762 refac: autocomplete settings 2024-11-30 18:30:59 -08:00
Timothy Jaeryang Baekandhi-unc1e dbf6ec71fe enh: remove trailing slash from ollama
Co-Authored-By: hi-unc1e <67778054+hi-unc1e@users.noreply.github.com>
2024-11-30 18:13:10 -08:00
Timothy Jaeryang Baek 0b17ff6eef Merge pull request #7493 from diwakar-s-maurya/dev
feat: Feature to set HTTP header "Content-Security-Policy"
2024-11-30 18:11:20 -08:00
Timothy Jaeryang Baek 19663e539a enh: temporary chat shortcut 2024-11-30 18:07:49 -08:00
Timothy Jaeryang Baek c192475528 refac: autocompletion 2024-11-30 18:02:21 -08:00
Timothy Jaeryang Baek 9e436fe6b0 refac: styling 2024-11-30 16:01:26 -08:00
Timothy Jaeryang Baek 96b9f81ca7 refac: styling 2024-11-30 15:53:36 -08:00
Timothy Jaeryang Baek 62622893a5 refac: styling 2024-11-30 15:46:42 -08:00
Timothy Jaeryang Baek aed2caefe1 refac 2024-11-30 15:44:04 -08:00
Timothy Jaeryang Baek acb61d3c42 enh: rich text input preserve breaks 2024-11-30 15:05:08 -08:00
Timothy Jaeryang Baek d3778b0bda refac: styling 2024-11-30 14:16:39 -08:00
Timothy Jaeryang Baek fda26b4ad0 refac: rich text input 2024-11-30 14:15:08 -08:00
Timothy Jaeryang Baek 5b879a2121 refac: autocompletion behaviour 2024-11-30 13:10:47 -08:00
Timothy Jaeryang Baek 51e344f5b2 refac 2024-11-30 12:24:23 -08:00
Timothy Jaeryang Baek d0eb59ffdb refac: table styling 2024-11-30 12:22:07 -08:00
Diwakar 541ff6b41a Feature to set HTTP header "Content-Security-Policy"
Introduce CONTENT_SECURITY_POLICY environment variable to set HTTP header "Content-Security-Policy".

Content Security Policy (CSP) is a feature that helps to prevent or minimize the risk of certain types of security threats. It consists of a series of instructions from a website to a browser, which instruct the browser to place restrictions on the things that the code comprising the site is allowed to do.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
2024-11-30 21:31:54 +07:00
Timothy Jaeryang Baek 3792051604 enh: swipe to accept completion 2024-11-30 01:06:56 -08:00
Timothy Jaeryang Baek 684a7f0455 refac 2024-11-30 00:36:01 -08:00
Timothy Jaeryang Baek 1f53e0922e enh: autocompletion 2024-11-30 00:29:27 -08:00
Timothy Jaeryang Baek ba6dc71810 refac: model editor 2024-11-30 00:10:30 -08:00
Timothy Jaeryang Baek 33e54a9d3b refac 2024-11-29 13:24:37 -08:00
Timothy Jaeryang Baek 9f981db0b9 Merge pull request #7422 from alpha-pet/feat-youtube-transscript-proxy
feat: Optional proxy setting for downloading Youtube transscripts
2024-11-29 12:40:46 -08:00
Timothy Jaeryang Baek 3e1c42bdc9 Merge pull request #7482 from TiancongLx/dev
i18n: Completed zh-TW
2024-11-29 11:46:23 -08:00
Tiancong Li aba610ac29 i18n: Completed zh-TW
已盡力將大陸簡體中文翻譯映射到台灣正體中文,如有翻譯不當之處,還請諒解並提交修正。
2024-11-30 03:09:51 +08:00
Timothy Jaeryang Baek b4fb0d1da2 refac 2024-11-29 01:10:46 -08:00
Timothy Jaeryang Baek f547f1424c refac 2024-11-29 01:02:32 -08:00
Timothy Jaeryang Baek a07213b5be feat: autocompletion 2024-11-29 00:16:49 -08:00
Timothy Jaeryang Baek 0e8e9820d0 feat: autocomplete backend endpoint 2024-11-28 23:53:52 -08:00
Timothy Jaeryang Baek 28ce102a79 refac: modal 2024-11-28 23:49:24 -08:00
Timothy Jaeryang Baek c1fd1d3490 refac: auto completion 2024-11-28 23:26:09 -08:00
Timothy Jaeryang Baek fa5e1f7452 refac 2024-11-28 23:24:16 -08:00
Timothy Jaeryang Baek 95000c7b15 feat: ai autocompletion 2024-11-28 23:22:53 -08:00
Timothy Jaeryang Baek 8300fa85b0 Merge pull request #7469 from TiancongLx/dev
i18n: update zh-CN
2024-11-28 22:17:07 -08:00
Timothy Jaeryang Baek 94235397cf Merge pull request #7466 from Slayingripper/main
feat: Added el-GR translation
2024-11-28 22:16:53 -08:00
Timothy Jaeryang Baek 99e20bfe82 Merge pull request #7453 from JonesJugHead/update-french-translation
i18n: Complete French translation for missing keys
2024-11-28 22:16:39 -08:00
Timothy Jaeryang Baek 6440d8629e Merge pull request #7451 from aleixdorca/dev
Update catalan translation.json
2024-11-28 22:16:28 -08:00
Tiancong Li e5563ca435 i18n: update zh-CN 2024-11-29 11:44:00 +08:00
Timothy Jaeryang Baek 53fbb19fa0 fix: /embed endpoint 2024-11-28 17:56:02 -08:00
slayingripper 297b9470e8 updated languages.json 2024-11-29 00:27:20 +00:00
slayingripper 1346559227 Added Greek Translation 2024-11-28 14:17:54 +00:00
Gui ac1ee888be Update french translation.json 2024-11-28 11:04:23 +01:00
Aleix Dorca ff0a7f1cbb Update catalan translation.json 2024-11-28 08:53:13 +01:00
Timothy Jaeryang Baek ea883b2ed4 refac 2024-11-27 19:38:57 -08:00
Timothy Jaeryang Baek b85cfdc90f refac: textarea 2024-11-27 19:26:05 -08:00
Timothy Jaeryang Baek 17ed7351a4 refac 2024-11-27 19:24:20 -08:00
Timothy Jaeryang Baek 7be93d2a84 fix: tools export 2024-11-27 18:11:50 -08:00
Timothy Jaeryang Baek 5d724d0b84 Merge pull request #7420 from Xelaph/dev
**i18n** - Update Dutch translation.json
2024-11-27 14:32:45 -08:00
Timothy Jaeryang Baek dbd6ac8080 refac: textarea 2024-11-27 11:25:54 -08:00
Thomas Rehn 53296c1005 [feat] Allow use of proxy for downloading Youtube transscripts 2024-11-27 15:20:48 +01:00
Alex 26615ba995 Update translation.json
Updated some translations for better consistency and accuracy. Also translated some newly added sentences
2024-11-27 15:04:54 +01:00
oyve 665e9cd129 Merge remote-tracking branch 'upstream/dev' into dev 2024-11-27 14:52:20 +01:00
oyve d219b3bfd6 Add and merge latest translations 2024-11-27 13:30:05 +01:00
Timothy Jaeryang Baek c5ef53a09f refac: disable empty model id 2024-11-26 21:28:49 -08:00
Timothy Jaeryang Baek 0a26c41c7b Merge pull request #7399 from open-webui/dev
0.4.6
2024-11-26 20:24:33 -08:00
Timothy Jaeryang Baek da6535eeb4 refac: wording 2024-11-26 20:19:46 -08:00
Timothy Jaeryang Baek 2db35d5969 chore: format 2024-11-26 20:14:48 -08:00
Timothy Jaeryang Baek 582ce23bb5 doc: changelog 2024-11-26 20:12:01 -08:00
Timothy Jaeryang Baek f42cc90a00 doc: changelogs 2024-11-26 20:03:10 -08:00
Timothy Jaeryang Baek cbc7801b0e chore: format 2024-11-26 20:03:06 -08:00
Timothy Jaeryang Baek 22b5feb747 Merge pull request #7401 from walker-chen2024/main
bugfix - {{CURRENT_WEEKDAY}} is not working
2024-11-26 19:54:27 -08:00
Walker.Chen 4b536b5283 bugfix - {{CURRENT_WEEKDAY}} is not working
Signed-off-by: Walker.Chen <walker_chen@moremote.com>  https://uniwillai.net
2024-11-27 08:53:45 +08:00
Timothy Jaeryang Baek ede29e98b7 refac 2024-11-26 15:30:35 -08:00
Timothy Jaeryang Baek 789e1db260 refac: textarea 2024-11-26 14:14:26 -08:00
Timothy Jaeryang Baek 4383306770 refac 2024-11-26 14:00:49 -08:00
Timothy Jaeryang Baek 13796fe3b3 fix: legacy query generation support 2024-11-26 13:44:19 -08:00
Timothy Jaeryang Baek 63402c48a8 refac: query gen prompt 2024-11-26 10:23:29 -08:00
Timothy Jaeryang Baek 44efd4d372 refac 2024-11-26 10:17:17 -08:00
Timothy Jaeryang Baek a18292da84 Merge pull request #7381 from panda44312/dev
i18n - Update Simplified Chinese translation
2024-11-26 08:59:40 -08:00
Timothy Jaeryang Baek adba11ebeb Merge pull request #7382 from juananpe/dev
i18n: Add Basque (eu-ES, Euskara) translation
2024-11-26 08:59:30 -08:00
Timothy Jaeryang Baek 442f99e075 refac 2024-11-26 08:55:34 -08:00
Timothy Jaeryang Baek dc7221816f fix: models configure 2024-11-26 08:55:06 -08:00
Juanan Pereira bddc293d82 Add Basque (eu-ES, Euskara) translation 2024-11-26 14:18:59 +01:00
panda44312 3a2247b7a0 Update translation.json 更新翻译 2024-11-26 13:48:28 +01:00
oyve 47483c4402 Update to latest translations 2024-11-26 11:53:55 +01:00
Timothy Jaeryang Baek 4831c9e57e Merge pull request #7307 from open-webui/dev
0.4.5
2024-11-26 01:55:13 -08:00
Timothy Jaeryang Baek e3236622f3 chore: format 2024-11-26 01:53:06 -08:00
Timothy Jaeryang Baek 83f1fa7bb9 Merge pull request #7373 from open-webui/main
dev
2024-11-26 01:52:45 -08:00
Timothy Jaeryang Baek ba427bee3f Merge pull request #7369 from PieterBecking/fix/i18n-typo-groepen
fix(i18n): Correct capitalization typo in Dutch localization
2024-11-26 01:52:24 -08:00
Timothy Jaeryang Baek b9458817b1 doc: changelogs 2024-11-26 01:51:04 -08:00
Timothy Jaeryang Baek 38eb6abbfc chore: version bump 2024-11-26 01:43:28 -08:00
Timothy Jaeryang Baek b173f86690 fix: escape source id 2024-11-26 01:39:12 -08:00
Timothy Jaeryang Baek 9b8f9c689b refac 2024-11-26 01:22:09 -08:00
Timothy Jaeryang Baek e40212a662 refac 2024-11-26 01:14:32 -08:00
Timothy Jaeryang Baek a37cad2ecf chore: format 2024-11-26 01:05:50 -08:00
Timothy Jaeryang Baek 3b9e21ecf9 refac 2024-11-26 00:58:40 -08:00
Timothy Jaeryang Baek 5fac25a002 enh: reintroduce model order/default models 2024-11-26 00:55:58 -08:00
Pieter Becking 2b4e8f6cea fix(i18n): Correct capitalization typo in Dutch localization (GRoepen -> Groepen) 2024-11-26 09:42:13 +01:00
Timothy Jaeryang Baek 29fac5ecca refac: admin models settings 2024-11-25 22:57:54 -08:00
Timothy Jaeryang Baek f9e24968e3 fix: input issue 2024-11-25 22:43:34 -08:00
Timothy Jaeryang Baek c4f82309dc fix: min_p save issue 2024-11-25 16:11:49 -08:00
Timothy Jaeryang Baek da4676de2e Merge pull request #7326 from bnodnarb/fix/ollama-authentication
fix: Include Authorization header in /api/pull and /api/chat requests
2024-11-25 15:38:43 -08:00
Timothy Jaeryang Baek d870386d7d Update CODE_OF_CONDUCT.md 2024-11-24 23:48:02 -08:00
bnodnarb 8dc73e8744 Fix: Add authorization header with bearer token for remote Ollama server endpoints 2024-11-24 20:29:54 -10:00
Timothy Jaeryang Baek 840437e58f refac: o1 title generation issue 2024-11-24 19:07:51 -08:00
Timothy Jaeryang Baek bd28e1ed7d refac: rag prompt template 2024-11-24 18:49:56 -08:00
Timothy Jaeryang Baek 50c3be2136 refac 2024-11-24 18:11:48 -08:00
Timothy Jaeryang Baek 907cf61da7 refac: query generation 2024-11-24 18:03:58 -08:00
Timothy Jaeryang Baek a3a205abd1 fix: function list 2024-11-24 15:45:23 -08:00
Timothy Jaeryang Baek fac8c3259c refac: rich text input behaviour 2024-11-23 23:57:05 -08:00
Timothy Jaeryang Baek e67fdce727 enh: model editor reset image 2024-11-23 23:26:11 -08:00
Timothy Jaeryang Baek c465a37597 fix: textarea auto height issue 2024-11-23 23:10:12 -08:00
Timothy Jaeryang Baek f5bda4bc27 chore: pyproject bump 2024-11-23 23:00:04 -08:00
Timothy Jaeryang Baek 9ff580b8ca fix: textarea input new line issue 2024-11-23 22:58:09 -08:00
Timothy Jaeryang Baek d3acb5cbaa Merge pull request #7286 from houcheng/tts-aiofiles
Tts aiofiles
2024-11-23 22:37:05 -08:00
Timothy Jaeryang Baek 2a5506a9cd fix: textarea input height issue 2024-11-23 22:27:01 -08:00
Timothy Jaeryang Baek c567185cb1 refac: rich text input behaviour 2024-11-23 20:31:33 -08:00
Timothy Jaeryang Baek 5ed5e532a9 Merge pull request #7279 from Luceurre/fix/missing-tool-description
fix: add missing tool description
2024-11-23 10:39:47 -08:00
houcheng a83f89d430 fix: prevent TTS blocking using aiohttp and aiofiles 2024-11-24 00:28:14 +08:00
Pierre Glandon b2d3bfa3a8 feat: add description in Tool 2024-11-23 11:22:12 +01:00
Timothy Jaeryang Baek 8744a12abb Merge pull request #7274 from DmitriyAlergant-T1A/fix/logging_cleanup
Fix: logging cleanup
2024-11-22 20:16:47 -08:00
DmitriyAlergant-T1A 374d6cad18 Python Formatting (Failed CI - fixed) 2024-11-22 23:11:46 -05:00
DmitriyAlergant-T1A d24c21b40f Fix
Logging cleanup: removed some extraneous hard prints (including some that revealed message content!); improved debug logging a bit.

+ added chat_id to task metadata (helpful for logging/tracking in some pipe functions)
2024-11-22 23:05:45 -05:00
Timothy Jaeryang Baek db929b5d5e Merge pull request #7262 from open-webui/dev
0.4.4
2024-11-22 19:27:41 -08:00
Timothy Jaeryang Baek 47ae5221f7 doc: wording 2024-11-22 19:27:20 -08:00
Timothy Jaeryang Baek 79e988b281 doc: changelogs 2024-11-22 19:26:42 -08:00
Timothy Jaeryang Baek 9412f51c19 chore: version bump 2024-11-22 19:22:35 -08:00
Timothy Jaeryang Baek 320cf06333 Merge pull request #7266 from s1adem4n/update-german-translation
i18n: Add missing German translations and fix existing ones
2024-11-22 16:23:51 -08:00
Jonathan cede8a966f add missing translations and fix existing ones 2024-11-23 01:17:22 +01:00
Timothy Jaeryang Baek c561a4c42b Merge pull request #7263 from michaelpoluektov/fix/docstring-event-emitter
fix: docstring event emitter
2024-11-22 16:06:46 -08:00
Michael Poluektov b4e7957a00 docstring quickfix 2024-11-22 20:51:48 +00:00
Timothy Jaeryang Baek c4eacbfc0f refac: rm print statement 2024-11-22 12:39:08 -08:00
Timothy Jaeryang Baek 429fa2befa fix: query generation 2024-11-22 12:31:06 -08:00
Timothy Jaeryang Baek 3cfd4f8993 fix: controls not being shown in mobile 2024-11-22 11:21:53 -08:00
Timothy Jaeryang Baek 1c3bc99b86 refac: accept legacy 'citation' type 2024-11-22 10:49:30 -08:00
Timothy Jaeryang Baek 335337fc75 Merge pull request #7233 from iamcristi/patch-1
Fix: LDAP integration used None for image and that broke Authentication
2024-11-22 10:42:49 -08:00
Timothy Jaeryang Baek 1ea03cc156 Merge pull request #7228 from OriginalSimon/main
18n: Update Ukrainian translation
2024-11-22 10:42:37 -08:00
Timothy Jaeryang Baek 3923c4df65 Merge pull request #7225 from hilam/translate_pt_br
i18b: Translate missing pt-BR strings and enhancements
2024-11-22 10:42:21 -08:00
Timothy Jaeryang Baek 70ea85484c Merge pull request #7238 from aleixdorca/dev
i18n: Update Catalan translation.json
2024-11-22 10:41:46 -08:00
Timothy Jaeryang Baek 35d75e733d refac: file handling 2024-11-22 10:35:59 -08:00
Aleix Dorca 259881f0b6 Update Catalan translation.json 2024-11-22 17:41:35 +01:00
iamcristi b4cd685795 Update auths.py
changed Auths.insert_new_auth for LDAP accounts. Previously setting image to "None" was causing an error.
2024-11-22 17:23:49 +02:00
SimonOriginal 2d5e1a8c6f fix 2024-11-22 14:51:45 +01:00
SimonOriginal f07ba60f2a Update uk translation.json 2024-11-22 14:43:11 +01:00
Hildeberto e12cf77553 Update pt-BR translation.json 2024-11-22 09:35:25 -03:00
Timothy Jaeryang Baek c13bcfdfc9 Merge pull request #7202 from open-webui/dev
chore: version bump
2024-11-21 22:47:45 -08:00
Timothy Jaeryang Baek 9aac02824d chore: version bump 2024-11-21 22:47:29 -08:00
Timothy Jaeryang Baek edd224d542 Merge pull request #7180 from open-webui/dev
0.4.3
2024-11-21 22:46:34 -08:00
Timothy Jaeryang Baek 5c49740aa5 doc: changelog 2024-11-21 22:45:49 -08:00
Timothy Jaeryang Baek 20f31b5bc8 refac 2024-11-21 22:20:57 -08:00
Timothy Jaeryang Baek b23600b49d refac 2024-11-21 22:15:04 -08:00
Timothy Jaeryang Baek 7b9b0f23fe refac 2024-11-21 22:12:40 -08:00
Timothy Jaeryang Baek 2e7af7bdbf fix 2024-11-21 22:03:51 -08:00
Timothy Jaeryang Baek 12c8257c92 refac 2024-11-21 21:32:19 -08:00
Timothy Jaeryang Baek 9a2dd5b126 refac: optimisation 2024-11-21 21:04:35 -08:00
Timothy Jaeryang Baek 4b83a83576 fix: openai connection config 2024-11-21 20:49:40 -08:00
Timothy Jaeryang Baek e18a43aec8 fix: styling 2024-11-21 20:39:00 -08:00
Timothy Jaeryang Baek ea28747baa fix: knowledge base reset 2024-11-21 20:29:54 -08:00
Timothy Jaeryang Baek 3816e3c2ef refac: styling 2024-11-21 20:20:46 -08:00
Timothy Jaeryang Baek 9bc0de2c6a refac 2024-11-21 20:03:30 -08:00
Timothy Jaeryang Baek 81386e9b04 refac: citations -> sources 2024-11-21 19:46:09 -08:00
Timothy Jaeryang Baek 7062e637e8 refac: inline citations 2024-11-21 18:26:38 -08:00
Timothy Jaeryang Baek 714ed248fb refac: styling 2024-11-21 18:05:45 -08:00
Timothy Jaeryang Baek 7b675a1488 refac: styling 2024-11-21 18:02:33 -08:00
Timothy Jaeryang Baek 386c976e9a enh: inline citations 2024-11-21 17:58:29 -08:00
Timothy Jaeryang Baek 5be7cbfdf5 Merge pull request #7182 from michaelpoluektov/fix/tools-metadata
fix: Fix tools metadata
2024-11-21 16:32:08 -08:00
Timothy Jaeryang Baek 0217c044c9 Merge pull request #7195 from michaelpoluektov/remove-unused-router
refactor: Remove unused router
2024-11-21 16:30:22 -08:00
Michael Poluektov 26efc76d40 remove unused router 2024-11-22 00:15:11 +00:00
Michael Poluektov 8abf5d57c1 remove unused schemas file 2024-11-21 23:49:58 +00:00
Timothy Jaeryang Baek 948b65e43f refac 2024-11-21 12:16:50 -08:00
Michael Poluektov e1a85c99ab format 2024-11-21 17:52:19 +00:00
Michael Poluektov 6783c98539 Merge branch 'dev' of https://github.com/open-webui/open-webui into fix/tools-metadata 2024-11-21 17:46:44 +00:00
Michael Poluektov c03bfd141e fix optional args not present 2024-11-21 17:41:35 +00:00
Michael Poluektov 70838148e7 fix tools metadata 2024-11-21 17:19:56 +00:00
Timothy Jaeryang Baek d587206929 refac: add suffix field to ollama generate form 2024-11-21 08:12:19 -08:00
Timothy Jaeryang Baek 1c0327ed7f Merge pull request #7163 from igorbrai/main
feat: Add Mojeek as web search provider
2024-11-21 08:10:14 -08:00
Timothy Jaeryang Baek b0162dfee0 refac 2024-11-21 08:10:05 -08:00
Timothy Jaeryang Baek 1fcde2272b Merge pull request #7162 from morgan55555/dev
LDAP auth fixes: do not store LDAP password, use default user role on first auth, allow ldap only form.
2024-11-21 08:08:47 -08:00
Timothy Jaeryang Baek 48c03ef551 Merge pull request #7147 from aindriu80/main
i18n: Updated Irish translations
2024-11-21 08:06:33 -08:00
Igor Brai d16b09bee5 Merge branch 'open-webui:main' into main 2024-11-21 15:25:41 +02:00
alexey_rechkalov b9e637ee2b Now ENABLE_LOGIN_FORM=False disabling only email form.
LDAP form will be showed instead.
Also added "name" property to inputs for Chrome autocompletion.
2024-11-21 18:11:12 +05:00
alexey_rechkalov b1237cf389 Fixed security vulnerability: now LDAP password hashes are not stored, same as trusted header auth.
LDAP users role now getting DEFAULT_USER_ROLE, not "pending".
2024-11-21 18:09:29 +05:00
Michael Poluektov 3dfea834ca Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2024-11-21 13:02:39 +00:00
Aindriú Mac Giolla Eoin c03cae811d Updated Irish translations 2024-11-21 10:15:37 +00:00
Timothy Jaeryang Baek 6088acf36d refac: styling 2024-11-20 23:31:46 -08:00
Timothy Jaeryang Baek c5cd1e4403 refac: rich text input 2024-11-20 23:14:06 -08:00
Timothy Jaeryang Baek aca06f92e8 enh: rich text input 2024-11-20 22:56:26 -08:00
Timothy Jaeryang Baek e30c5e628c refac: rich text input 2024-11-20 22:46:51 -08:00
Timothy Jaeryang Baek 6f4bc9864c Merge pull request #7119 from open-webui/dev
doc
2024-11-20 12:24:35 -08:00
Timothy Jaeryang Baek 9b03b1a453 doc: readme 2024-11-20 12:24:07 -08:00
Timothy Jaeryang Baek 99c5cf1a00 doc: wording 2024-11-20 12:23:31 -08:00
Timothy Jaeryang Baek 639bea64d8 Merge pull request #7097 from open-webui/dev
0.4.2
2024-11-20 12:15:14 -08:00
Timothy Jaeryang Baek 02d02b0518 doc: changelog 2024-11-20 12:11:38 -08:00
oyve a06f57c0a5 Fill in blanks 2024-11-20 20:29:42 +01:00
oyve 7589e4f5e5 Merge remote-tracking branch 'upstream/dev' into dev 2024-11-20 20:20:53 +01:00
Timothy Jaeryang Baek bc57acb3a6 Merge pull request #7113 from Xelaph/patch-1
**i18n** Update Dutch translation.json
2024-11-20 10:03:04 -08:00
Timothy Jaeryang Baek 2b890cf747 fix: knowledge files issue 2024-11-20 10:02:14 -08:00
Timothy Jaeryang Baek 4156b62811 refac 2024-11-20 10:02:07 -08:00
Timothy Jaeryang Baek c0055afdb3 refac: youtube loader 2024-11-20 10:01:58 -08:00
Alex 882a070cc9 Update translation.json
Added all new translations and changed a lot to better represent Dutch language rules
2024-11-20 18:47:01 +01:00
Timothy Jaeryang Baek d68aa5c708 chore: requirements 2024-11-20 06:53:11 -08:00
Timothy Jaeryang Baek 2450953080 refac 2024-11-20 06:34:52 -08:00
Timothy Jaeryang Baek db1a71c753 fix: usage capability in model editor 2024-11-20 06:24:09 -08:00
Timothy Jaeryang Baek 822a43c53d fix: arena model access control 2024-11-20 06:21:08 -08:00
Timothy Jaeryang Baek d5c65e36c9 fix: prefix issue 2024-11-20 06:12:20 -08:00
Timothy Jaeryang Baek bd1dae2c66 Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2024-11-20 06:09:53 -08:00
Timothy Jaeryang Baek 0dd1d6de2a fix: import 2024-11-20 06:09:48 -08:00
Timothy Jaeryang Baek 505bee066e Merge pull request #7069 from KarlLee830/translate
i18n: Update Chinese translation
2024-11-20 06:07:25 -08:00
Timothy Jaeryang Baek 54cabc9776 Merge pull request #7072 from antpyykk-kone/feature/fix-pipeline-middleware-http-exception-handling
fix: handle uncaught HTTP exceptions in PipelineMiddleware
2024-11-20 06:07:15 -08:00
Antti Pyykkönen 4f6ae8239d fix: handle http exceptions 2024-11-20 09:25:50 +02:00
KarlLee830 3531cf827a i18n: Update Chinese translation 2024-11-20 12:39:22 +08:00
Timothy Jaeryang Baek 02e94c8264 Merge pull request #7057 from open-webui/dev
0.4.1
2024-11-19 20:17:05 -08:00
Timothy Jaeryang Baek 31f00bbc69 doc: changelog 2024-11-19 20:16:34 -08:00
Timothy Jaeryang Baek cb19dbf72b chore: format 2024-11-19 20:15:37 -08:00
Timothy Jaeryang Baek e54879aeb1 enh: detailed 1-10 rating 2024-11-19 20:12:22 -08:00
Timothy Jaeryang Baek 7966367107 refac: models api 2024-11-19 18:45:26 -08:00
Timothy Jaeryang BaekandAlex Morgan 7c5b845d16 refac: add citations to outlet/actions form
Co-Authored-By: Alex Morgan <alxmrg55@gmail.com>
2024-11-19 18:26:01 -08:00
Timothy Jaeryang Baek cbcd14cdbf doc: changelog 2024-11-19 18:22:45 -08:00
Timothy Jaeryang Baek 0e0a9b4b27 Merge pull request #7061 from zhoubinxin/dev
ci: fix huggingface deploy errors and track .jpg file types
2024-11-19 18:22:35 -08:00
Timothy Jaeryang Baek 70c6d3bf9f fix 2024-11-19 18:21:55 -08:00
Timothy Jaeryang Baek 206a4877c7 fix: api key creation 2024-11-19 18:17:38 -08:00
bx 2c2c2ea9e1 fix(workflow): fix huggingface deploy errors and track .jpg file types 2024-11-20 10:15:40 +08:00
Timothy Jaeryang Baek 7f7b1b18cd doc: changelog 2024-11-19 17:27:34 -08:00
Timothy Jaeryang Baek 00e41790bf enh: show tool description on hover 2024-11-19 17:10:43 -08:00
Timothy Jaeryang Baek 9d9a60afec refac 2024-11-19 16:50:45 -08:00
Timothy Jaeryang Baek eefb2926d8 Merge pull request #7056 from open-webui/dev
fix: deleted user handling
2024-11-19 16:48:30 -08:00
Timothy Jaeryang Baek 0c43c1edf6 fix: deleted user handling 2024-11-19 16:47:35 -08:00
Timothy Jaeryang Baek 3c33432092 Merge pull request #6522 from open-webui/dev
0.4
2024-11-19 14:28:03 -08:00
Timothy Jaeryang Baek 011b8ea3a8 doc: wording 2024-11-19 14:27:43 -08:00
Timothy Jaeryang Baek 321aa2a027 refac: styling 2024-11-19 14:26:53 -08:00
Timothy Jaeryang Baek dd5e500e01 enh: reintroduce update all ollama models feature 2024-11-19 14:23:19 -08:00
Timothy Jaeryang Baek e3b968de26 refac: styling 2024-11-19 14:18:32 -08:00
Timothy Jaeryang Baek 014d5b83d3 doc: wording 2024-11-19 14:13:16 -08:00
Timothy Jaeryang Baek 065517e8b7 chore: bump 2024-11-19 14:05:55 -08:00
Timothy Jaeryang Baek 83f0ab3e10 chore: requirements bump 2024-11-19 14:05:00 -08:00
Timothy Jaeryang Baek d8c5262161 fix: function community import 2024-11-19 14:00:58 -08:00
Timothy Jaeryang Baek 450f5292ef doc: wording 2024-11-19 13:53:10 -08:00
Timothy Jaeryang Baek abe349dab6 doc: changelog 2024-11-19 13:30:23 -08:00
Timothy Jaeryang Baek 8aa2d09cee chore: format 2024-11-19 12:22:58 -08:00
Timothy Jaeryang Baek 0cbb4572f6 Merge pull request #7041 from antpyykk-kone/feature/configure-private-api-key-usage
feat: Ability to configure the use of private API keys in an environment
2024-11-19 12:20:48 -08:00
Timothy Jaeryang Baek 7a585fbaf3 enh: option to disable api auth 2024-11-19 12:17:23 -08:00
Timothy Jaeryang Baek a2476eb1b5 refac: styling 2024-11-19 11:09:02 -08:00
Timothy Jaeryang Baek 81bb2750e0 enh: reset models 2024-11-19 11:03:36 -08:00
Timothy Jaeryang Baek d76e1319ff Merge pull request #7036 from DiegoRodriguez83/#7035
i18n: Brazilian portuguese translation (pt-BR)
2024-11-19 08:13:34 -08:00
Antti Pyykkönen 979e6e5a79 feat: support for configuring private api key use 2024-11-19 16:14:52 +02:00
Diego Rodriguez aa152bd758 i18n: Brazilian portuguese translation (pt-BR) 2024-11-19 08:55:50 -03:00
Timothy Jaeryang Baek 5c4124ebe5 refac 2024-11-19 03:18:40 -08:00
Timothy Jaeryang Baek 53103c3bd7 refac: styling 2024-11-19 03:04:49 -08:00
Timothy Jaeryang Baek 6aa837a8a2 refac: styling 2024-11-19 02:37:27 -08:00
Timothy Jaeryang Baek d2a462a3ad refac 2024-11-19 02:26:12 -08:00
Timothy Jaeryang Baek dbb67a12ca enh: retrieval query generation 2024-11-19 02:24:32 -08:00
Timothy Jaeryang Baek 09c6e4b92f enh: citations option in model editor 2024-11-19 01:12:47 -08:00
Timothy Jaeryang Baek da8f7cff2f refac 2024-11-18 22:49:38 -08:00
Timothy Jaeryang Baek 5ad64c7998 refac 2024-11-18 22:39:55 -08:00
Timothy Jaeryang Baek 67f7ac8bb5 refac 2024-11-18 22:27:42 -08:00
Timothy Jaeryang Baek 6b410ca56a fix: models workspace 2024-11-18 21:10:34 -08:00
Timothy Jaeryang Baek e2d20896b6 enh: model id tooltip in selector 2024-11-18 21:10:28 -08:00
Timothy Jaeryang Baek 6ba2c84c65 fix: styling 2024-11-18 21:00:53 -08:00
Timothy Jaeryang Baek 9ea1c45641 enh: make large text as file toggleable 2024-11-18 20:58:18 -08:00
Timothy Jaeryang BaekandTaylor Wilsdon 11e78eac91 enh: large pasted text as file
Co-Authored-By: Taylor Wilsdon <6508528+taylorwilsdon@users.noreply.github.com>
2024-11-18 20:50:12 -08:00
Timothy Jaeryang Baek 8bb3061101 Merge pull request #7025 from yeounhak/dev
fix: Enable RAG_WEB_SEARCH_CONCURRENT_REQUESTS
2024-11-18 20:34:27 -08:00
yeounhak 8c161c797b Enable RAG_WEB_SEARCH_CONCURRENT_REQUESTS with asynchronous optimization for improved performance 2024-11-19 01:14:26 +00:00
Timothy Jaeryang Baek e4e4110ec0 refac: config 2024-11-18 14:25:36 -08:00
Timothy Jaeryang Baek d8693c3c74 refac: styling 2024-11-18 14:25:24 -08:00
Timothy Jaeryang Baek 20321e5271 refac: ollama setting for rag 2024-11-18 14:19:56 -08:00
Timothy Jaeryang BaekandDmitriyAlergant-T1A e3485d2d88 enh: __metadata__ param for tools & functions
Co-Authored-By: DmitriyAlergant-T1A <93501479+dmitriyalergant-t1a@users.noreply.github.com>
2024-11-18 10:12:54 -08:00
Timothy Jaeryang BaekandKrishan Bhasin 7da29b6798 fix: rm print statement
Co-Authored-By: Krishan Bhasin <164889026+krishanbhasin-px@users.noreply.github.com>
2024-11-18 10:06:11 -08:00
Timothy Jaeryang Baek 02cafca584 refac 2024-11-18 09:00:51 -08:00
Timothy Jaeryang Baek a77d1aef91 refac: styling 2024-11-18 08:55:09 -08:00
Timothy Jaeryang Baek f37d847521 fix: arena access control 2024-11-18 07:40:37 -08:00
Timothy Jaeryang Baek 269151cd2c enh: arena model access control 2024-11-18 07:18:47 -08:00
Timothy Jaeryang Baek 1ab47a1ff9 refac 2024-11-18 07:06:22 -08:00
Timothy Jaeryang Baek 43f58098f8 refac 2024-11-18 07:05:11 -08:00
Timothy Jaeryang Baek 9525d4279c refac: admin model setting include ollama info 2024-11-18 07:04:21 -08:00
Timothy Jaeryang Baek db6858582f refac: sidebar component 2024-11-18 06:52:41 -08:00
Timothy Jaeryang Baek 8ad1aa3c2e chore: format 2024-11-18 06:39:27 -08:00
Timothy Jaeryang Baek ccdafa8718 refac: styling 2024-11-18 06:38:29 -08:00
Timothy Jaeryang Baek 13a84435e2 refac: styling 2024-11-18 06:34:25 -08:00
Timothy Jaeryang Baek f68e2b2edb refac: styling 2024-11-18 06:32:42 -08:00
Timothy Jaeryang Baek 169ca33b48 refac: styling 2024-11-18 06:24:44 -08:00
Timothy Jaeryang Baek 6dc5efeb19 refac: styling 2024-11-18 06:21:54 -08:00
Timothy Jaeryang Baek c50b678dce enh: tools user info 2024-11-18 06:19:34 -08:00
Timothy Jaeryang Baek 43ffd61aeb refac: model workspace styling 2024-11-18 06:02:14 -08:00
Timothy Jaeryang Baek 6c3e6710ef enh: knowledge author info 2024-11-18 05:51:01 -08:00
Timothy Jaeryang Baek a2a25fb571 enh: models display author name 2024-11-18 05:37:04 -08:00
Timothy Jaeryang Baek 03b606925e refac 2024-11-18 05:24:18 -08:00
Timothy Jaeryang Baek 8eaff8033a refac: arena model modal 2024-11-18 05:22:13 -08:00
Timothy Jaeryang Baek dc8c85c33d fix: shared chat not updating 2024-11-18 05:17:35 -08:00
Timothy Jaeryang Baek bca9c71ed6 refac: styling 2024-11-17 22:09:18 -08:00
Timothy Jaeryang Baek ecf21de28f fix: file drop 2024-11-17 22:06:58 -08:00
Timothy Jaeryang Baek 0faa39ace9 fix 2024-11-17 21:39:52 -08:00
Timothy Jaeryang Baek b0a19d0dda chore: duckduckgo-search bump 2024-11-17 19:20:12 -08:00
Timothy Jaeryang Baek 3faf9d2067 refac: model access control behaviour 2024-11-17 19:15:09 -08:00
Timothy Jaeryang Baek 85731f400c refac: access control 2024-11-17 17:40:31 -08:00
Timothy Jaeryang Baek 07a9b37737 fix: knowledge update issue 2024-11-17 17:37:26 -08:00
Timothy Jaeryang Baek dd8bc65d03 refac 2024-11-17 17:30:53 -08:00
Timothy Jaeryang Baek 0edd4c2263 refac: wording share -> access 2024-11-17 16:13:59 -08:00
Timothy Jaeryang Baek 6589f75b2d fix: ollama custom model 2024-11-17 16:01:47 -08:00
Timothy Jaeryang Baek 3fa23481c8 refac 2024-11-17 15:58:06 -08:00
Timothy Jaeryang Baek 70c9d6fb86 refac: user menu 2024-11-17 15:51:34 -08:00
Timothy Jaeryang Baek 7858be7fda refac: admin models setting toast 2024-11-17 15:50:18 -08:00
Timothy Jaeryang Baek 6906a0bd26 fix: access control 2024-11-17 14:03:51 -08:00
Timothy Jaeryang Baek 17c9a92767 Merge pull request #6996 from Peter-De-Ath/fix_get_groups_by_member_id-postgres-sqlite
fix get groups by member id postgres
2024-11-17 14:01:15 -08:00
Timothy Jaeryang Baek 9779bbfd8e fix: functions redirect 2024-11-17 14:00:37 -08:00
Øyvind 165ee3649b Polish text
Improve text coherence and ensure it aligns with Norwegian writing rules
2024-11-17 21:32:21 +01:00
Peter De-Ath 80e2d4d4ee fix: user ID filtering in GroupTable query 2024-11-17 19:53:51 +00:00
Øyvind 5fd511b90b Fill in latest blanks
First translation of new blanks after synching fork
2024-11-17 17:28:15 +01:00
Timothy Jaeryang Baek 37f19f68eb refac: user permissions validation 2024-11-17 03:04:31 -08:00
Timothy Jaeryang Baek fbdda55564 fix: styling 2024-11-17 02:58:24 -08:00
Timothy Jaeryang Baek 1d4c3a8c58 fix: access control behaviour 2024-11-17 02:51:57 -08:00
Timothy Jaeryang Baek 892f6ba42b fix: user workspace behaviour 2024-11-17 02:43:43 -08:00
Timothy Jaeryang Baek e65ec1c6cc fix: knowledge 2024-11-17 02:40:47 -08:00
Timothy J. Baek 4a34ca35f0 refac: access control 2024-11-17 01:46:51 -08:00
Timothy Jaeryang Baek a2dcbc41e5 chore: bump 2024-11-17 00:01:20 -08:00
Timothy Jaeryang Baek 0028285361 refac: fuzzy search threshold 2024-11-17 00:00:03 -08:00
Timothy Jaeryang Baek 465e16d282 refac 2024-11-16 23:58:23 -08:00
Timothy Jaeryang Baek c338f2cae1 chore: format 2024-11-16 23:46:12 -08:00
Timothy Jaeryang Baek c24bc60d35 Merge pull request #6989 from Peter-De-Ath/fix-action-button
fix action buttons
2024-11-16 23:44:26 -08:00
Timothy Jaeryang Baek ae2936c8a1 Merge pull request #6981 from aleixdorca/dev
i18n: Update catalan translation.json
2024-11-16 23:44:10 -08:00
Timothy Jaeryang Baek fda3af68ce Merge pull request #6966 from sakiphan/dev
i18n: Update translation.json for Turkish language
2024-11-16 23:43:14 -08:00
Timothy Jaeryang Baek 4e61ff8955 Merge pull request #6949 from oyve/dev
i18n: Update translation.json for Norwegian language
2024-11-16 23:42:36 -08:00
Timothy Jaeryang Baek 24e98bb9d7 Merge pull request #6954 from matthewhand/feature/qdrant-auth
feat: add API key support for Qdrant Cloud authentication
2024-11-16 23:42:16 -08:00
Timothy Jaeryang Baek 034674c19c Merge pull request #6931 from open-webui/groups
feat: user groups
2024-11-16 21:51:42 -08:00
Timothy Jaeryang Baek a47ebd468e refac: dropzone 2024-11-16 21:50:31 -08:00
Timothy Jaeryang Baek d4388a53f4 fix 2024-11-16 21:43:57 -08:00
Timothy Jaeryang Baek f5df0625e3 enh: file upload user permission 2024-11-16 21:41:34 -08:00
Timothy Jaeryang Baek cf2dcf1dc3 feat: user permissions 2024-11-16 21:31:57 -08:00
Timothy Jaeryang Baek 057c957f5d enh: access control 2024-11-16 21:26:10 -08:00
Timothy Jaeryang Baek 07e0712b87 refac: get permissions 2024-11-16 21:16:42 -08:00
Timothy Jaeryang Baek c0371f6525 enh: user permissions 2024-11-16 21:07:56 -08:00
Timothy Jaeryang Baek 79fbab7341 refac 2024-11-16 21:00:20 -08:00
Timothy Jaeryang Baek 19a23a5b7d refac: prompt editor styling 2024-11-16 20:53:14 -08:00
Timothy Jaeryang Baek e78657f07e refac: prompts frontend 2024-11-16 20:53:05 -08:00
Timothy Jaeryang Baek b81cd15ced refac: prompts 2024-11-16 20:52:57 -08:00
Timothy Jaeryang Baek 41bad9abcb refac: access control 2024-11-16 20:47:45 -08:00
Timothy Jaeryang Baek b41e456c4f enh: workspace loading indicator 2024-11-16 18:35:14 -08:00
Timothy Jaeryang Baek b562067e91 refac: tools 2024-11-16 18:31:13 -08:00
Timothy Jaeryang Baek 393ab5d457 refac: tools behaviour 2024-11-16 18:10:01 -08:00
Timothy Jaeryang Baek c35f8c9673 refac: knowledge access control 2024-11-16 18:00:57 -08:00
Timothy Jaeryang Baek 6ebf027613 refac: prompts access control 2024-11-16 18:00:49 -08:00
Timothy Jaeryang Baek 90d283c85e refac: tools access control 2024-11-16 17:57:19 -08:00
Timothy Jaeryang Baek 0a8f69285c refac: toolkit -> tools 2024-11-16 17:54:38 -08:00
Timothy Jaeryang Baek a1ce8422fd refac 2024-11-16 17:49:13 -08:00
Timothy Jaeryang Baek af0ba53715 refac: styling 2024-11-16 17:20:55 -08:00
Timothy Jaeryang Baek 060a2791ba refac: rm print statement 2024-11-16 17:18:18 -08:00
Timothy Jaeryang Baek c3aa09b95c refac 2024-11-16 17:17:18 -08:00
Timothy Jaeryang Baek 73fe77c2da enh: access control 2024-11-16 17:09:15 -08:00
Timothy Jaeryang Baek 227cca35e8 enh: knowledge access control 2024-11-16 16:51:55 -08:00
Timothy Jaeryang Baek 8da24d81a4 refac 2024-11-16 16:01:02 -08:00
Timothy Jaeryang Baek 6ac503413f refac: model tools behaviour 2024-11-16 15:54:07 -08:00
Timothy Jaeryang Baek 7fe10763c1 fix 2024-11-16 15:26:01 -08:00
Timothy Jaeryang Baek c8a3c42ea8 refac: filter out arena models from base models 2024-11-16 15:13:33 -08:00
Timothy Jaeryang Baek 345c9d12a9 refac: migration 2024-11-16 14:56:00 -08:00
Timothy Jaeryang Baek 243e187f0b refac 2024-11-16 14:52:07 -08:00
Peter De-Ath 6332e46e7b fix: update actionMessage to include message parameter 2024-11-16 22:17:55 +00:00
Timothy Jaeryang Baek facb4fdf6b refac 2024-11-16 04:43:10 -08:00
Timothy Jaeryang Baek 932de8f1e2 refac 2024-11-16 04:41:07 -08:00
Timothy Jaeryang Baek 931e03bd9e refac 2024-11-16 02:37:37 -08:00
Timothy Jaeryang Baek 646d926f70 enh: chat file upload permission 2024-11-16 02:31:04 -08:00
Timothy Jaeryang Baek f9412f72f1 refac: styling 2024-11-16 01:54:40 -08:00
Timothy Jaeryang Baek cd655b128f refac 2024-11-16 01:38:20 -08:00
Timothy Jaeryang Baek 240c91e79d wip: access control 2024-11-16 01:24:34 -08:00
Aleix Dorca 2980246cb6 Update catalan translation.json 2024-11-16 07:12:02 +01:00
Timothy Jaeryang Baek 4eb8b1450c refac 2024-11-15 22:09:06 -08:00
Timothy Jaeryang Baek d5f84d6234 refac: model preset handling behaviour 2024-11-15 22:04:33 -08:00
Timothy Jaeryang Baek 19c98b74fa refac: base models endpoint 2024-11-15 19:14:24 -08:00
Timothy Jaeryang Baek 7e78889e33 refac: styling 2024-11-15 18:56:13 -08:00
Timothy Jaeryang Baek 7f8c70b04a wip: admin models setting 2024-11-15 18:53:50 -08:00
Timothy Jaeryang Baek 9dae7d0572 refac: models 2024-11-15 18:21:41 -08:00
Timothy Jaeryang Baek 1c16920dba refac 2024-11-15 17:36:46 -08:00
Sakıp Han Dursun fc789b0cb8 Update translation.json 2024-11-15 15:05:03 +03:00
Timothy Jaeryang Baek 147bd0717d refac 2024-11-15 03:02:08 -08:00
Timothy Jaeryang Baek a0f1164af7 refac 2024-11-15 03:00:18 -08:00
Timothy Jaeryang Baek bf2087c67b refac 2024-11-15 02:06:02 -08:00
Timothy Jaeryang Baek d9dc04f1a1 refac: frontend 2024-11-15 02:05:43 -08:00
Timothy Jaeryang Baek 2ab5b2fd71 wip: access control backend 2024-11-15 01:29:07 -08:00
Timothy Jaeryang Baek b80ec76435 refac 2024-11-14 20:51:49 -08:00
Timothy Jaeryang Baek dff85c733d refac 2024-11-14 20:13:43 -08:00
Timothy Jaeryang Baek 150d0adea2 refac: access_control field 2024-11-14 18:57:25 -08:00
Timothy Jaeryang Baek dae764fa5a feat: groups integration 2024-11-14 18:37:42 -08:00
Timothy Jaeryang Baek 2f893fd373 refac 2024-11-14 18:37:29 -08:00
Timothy Jaeryang Baek 659f3dac44 feat: groups backend 2024-11-14 18:35:14 -08:00
Timothy Jaeryang Baek 716520275b feat: groups db migration 2024-11-14 18:33:16 -08:00
Timothy Jaeryang Baek 947444949a refac: move functions (plugin) to admin panel 2024-11-14 18:32:23 -08:00
Timothy Jaeryang Baek 0cf1969adc refac: rm unused file 2024-11-14 18:31:29 -08:00
Matthew Hand ca63ae649c Enable Qdrant authentication support 2024-11-15 07:06:46 +11:00
Øyvind fb582e44a2 Fix JSON
Update JSON typos
2024-11-14 13:35:32 +01:00
Øyvind 56b0092f43 Update translation.json
Update blanks and polish Norwegian translations
2024-11-14 13:29:01 +01:00
Timothy Jaeryang Baek 73cdf90527 refac: styling 2024-11-14 03:20:35 -08:00
Timothy Jaeryang Baek 85d7f1c6ed refac 2024-11-14 03:16:26 -08:00
Timothy Jaeryang Baek 0e8c0b452e wip: frontend 2024-11-14 02:20:34 -08:00
Timothy Jaeryang Baek aaba41339e Merge pull request #6938 from open-webui/dev
dev
2024-11-13 21:22:42 -08:00
Timothy Jaeryang Baek f5f2215348 enh: sort functions list by type 2024-11-13 21:22:13 -08:00
Timothy Jaeryang Baek ce9aef900c wip: frontend 2024-11-13 21:21:50 -08:00
Timothy Jaeryang Baek 9cdd66ca59 Merge pull request #6909 from sakiphan/dev
i18n- Update the translation of tr-TR
2024-11-13 11:26:31 -08:00
Timothy Jaeryang Baek 4174738b1c Merge pull request #6907 from clang88/patch-1
Update calculatePercentage CitationsModal.svelte (high percentage for high relevance)
2024-11-13 11:21:56 -08:00
Sakıp Han Dursun ee703dfc91 i18n- Update the translation of tr-TR 2024-11-13 17:16:16 +03:00
clang88 67cb3455ad Update CitationsModal.svelte 2024-11-13 14:54:39 +01:00
clang88 ad0b599940 Update calculatePercentage CitationsModal.svelte
Fixes #6904 : Percentage score is high when low relevance and vice-versa.
2024-11-13 14:35:08 +01:00
Timothy Jaeryang Baek baea26d9ca wip: user groups frontend 2024-11-13 03:09:46 -08:00
Timothy Jaeryang Baek 6caf838964 feat: user groups frontend 2024-11-13 02:00:00 -08:00
Timothy Jaeryang Baek 046cf19d27 Merge pull request #6899 from Menghuan1918/dev
i18n: Update the translation of zh-CN
2024-11-13 00:51:06 -08:00
Menghuan1918 baf4d5d7ba i18n: Finish the translation of zh-CN 2024-11-13 16:44:28 +08:00
Timothy Jaeryang Baek 46be83e921 chore: i18n 2024-11-13 00:35:18 -08:00
Timothy Jaeryang Baek 1e7a10842c refac: settings 2024-11-13 00:33:15 -08:00
Timothy Jaeryang Baek f160d278b2 refac: stylign 2024-11-12 23:21:31 -08:00
Timothy Jaeryang Baek 86942d207f refac: icons 2024-11-12 23:17:37 -08:00
Timothy Jaeryang Baek 36d8061b4d refac: evaluations 2024-11-12 23:14:25 -08:00
Timothy Jaeryang Baek 57550cbf56 refac: styling 2024-11-12 23:00:47 -08:00
Timothy Jaeryang Baek 94a0bf90ce refac 2024-11-12 22:50:11 -08:00
Timothy Jaeryang Baek d5435cb8b9 refac: styling 2024-11-12 22:43:18 -08:00
Timothy Jaeryang Baek 17925361dd refac: styling 2024-11-12 22:21:20 -08:00
Timothy Jaeryang Baek ec0680a89f refac: styling 2024-11-12 22:00:37 -08:00
Timothy Jaeryang Baek fae6731137 refac: settings styling 2024-11-12 21:57:41 -08:00
Timothy Jaeryang Baek c260274538 refac: admin users page 2024-11-12 21:51:42 -08:00
Timothy Jaeryang Baek 5a9d61266f refac 2024-11-12 21:09:13 -08:00
Timothy Jaeryang Baek faf3e81bf0 fix 2024-11-12 21:04:07 -08:00
Timothy Jaeryang Baek 81f497c6e3 refac: env var defaults 2024-11-12 20:44:14 -08:00
Timothy Jaeryang Baek 9f58d00727 refac: styling 2024-11-12 20:36:29 -08:00
Timothy Jaeryang Baek 8cfab0216e refac 2024-11-12 20:33:22 -08:00
Timothy Jaeryang Baek 1588477ca3 enh: tool usage indicator 2024-11-12 20:33:12 -08:00
Timothy Jaeryang Baek 760652c4cc refac 2024-11-12 20:26:33 -08:00
Timothy Jaeryang Baek 816b5977a7 Merge pull request #6893 from dannyl1u/enh/settings-search
feat: add more search keywords for settings search
2024-11-12 20:07:24 -08:00
dannyl1u 6bed45a456 enh: add more search keywords for settings search 2024-11-12 19:43:20 -08:00
Timothy Jaeryang Baek 90b40c82dd Merge pull request #6890 from michaelpoluektov/revert-6879-fix/render-html-in-citations
feat: DOMPurify to iframe to render HTML in citations
2024-11-12 16:15:05 -08:00
Timothy Jaeryang Baek 8248e0c216 refac 2024-11-12 16:08:18 -08:00
Michael Poluektov 63ee69a900 sandbox in iframe 2024-11-13 00:07:39 +00:00
Timothy Jaeryang Baek 3d923a15a2 refac 2024-11-12 16:04:03 -08:00
Timothy Jaeryang Baek f470f3fce2 refac 2024-11-12 15:53:16 -08:00
Timothy Jaeryang Baek ee05455155 refac 2024-11-12 15:46:44 -08:00
Timothy Jaeryang Baek 3a541460df refac 2024-11-12 15:32:49 -08:00
Timothy Jaeryang Baek f10d0df490 refac: lazy load prompts/tools/functions/tags 2024-11-12 15:31:11 -08:00
Michael Poluektov f3210ec7db bring html back 2024-11-12 23:17:22 +00:00
Michael Poluektov d0f13d7c07 Revert "fix/feat: add HTML rendering to citations back" 2024-11-12 23:09:18 +00:00
Timothy Jaeryang Baek fb464800e4 Merge pull request #6879 from michaelpoluektov/fix/render-html-in-citations
fix/feat: add HTML rendering to citations back
2024-11-12 14:00:49 -08:00
Timothy Jaeryang Baek b1d31d9b8e refac 2024-11-12 14:00:32 -08:00
Timothy Jaeryang Baek 0f704f1809 refac 2024-11-12 13:57:25 -08:00
Michael Poluektov 330a3535e6 fix: add HTML rendering to citations back 2024-11-12 16:42:17 +00:00
Timothy Jaeryang Baek 5c1b3693cf refac 2024-11-11 23:04:02 -08:00
Timothy Jaeryang Baek 08b5e7ef5b refac: ollama connections 2024-11-11 22:46:47 -08:00
Timothy Jaeryang Baek 99446c4b76 feat: ollama auth support 2024-11-11 22:33:18 -08:00
Timothy Jaeryang Baek 607a8b2109 refac: ollama connections 2024-11-11 22:25:08 -08:00
Timothy Jaeryang Baek f8f36f298a refac 2024-11-11 22:03:57 -08:00
Timothy Jaeryang Baek 3ba7b6f0e5 fix 2024-11-11 21:52:39 -08:00
Timothy Jaeryang Baek 1277579f71 refac 2024-11-11 21:24:30 -08:00
Timothy Jaeryang Baek 0809eb79b8 refac: openai connections 2024-11-11 21:18:51 -08:00
Timothy Jaeryang Baek b82e25cac8 refac: openai /models 2024-11-11 14:11:20 -08:00
Timothy Jaeryang Baek cdc2b4dd61 refac: styling 2024-11-11 13:56:33 -08:00
Timothy Jaeryang Baek 61f29a6531 Merge branch 'main' into dev 2024-11-11 13:45:13 -08:00
Timothy Jaeryang Baek 38a550092e refac: styling 2024-11-11 00:50:43 -08:00
Timothy Jaeryang Baek ad49ad8fa4 refac 2024-11-11 00:49:43 -08:00
Timothy Jaeryang Baek 3b4ee0f127 refac 2024-11-11 00:44:46 -08:00
Timothy Jaeryang Baek b2928975dc refac: styling 2024-11-10 21:01:28 -08:00
Timothy Jaeryang Baek af12f07973 refac 2024-11-10 19:58:49 -08:00
Timothy Jaeryang Baek b903ee835a refac: styling 2024-11-10 19:55:06 -08:00
Timothy Jaeryang Baek 655745ee0c refac: styling 2024-11-10 19:47:55 -08:00
Timothy Jaeryang Baek 3435de5af6 refac: citations 2024-11-10 19:24:53 -08:00
Timothy Jaeryang Baek 7bcb430008 enh: web search indicator 2024-11-10 19:11:06 -08:00
Timothy Jaeryang Baek 19fc83a12b refac: styling 2024-11-10 18:48:54 -08:00
Timothy Jaeryang Baek 317f5df34e refac: settings order 2024-11-10 18:44:52 -08:00
Timothy Jaeryang Baek 466e1fecb4 refac: styling 2024-11-10 18:42:52 -08:00
Timothy Jaeryang Baek 9a546c34bb refac: confirm dialog z index 2024-11-10 18:35:18 -08:00
Timothy Jaeryang Baek 8d1e6f331b refac: prompt editor styling 2024-11-10 18:33:21 -08:00
Timothy Jaeryang Baek 0cc6e20d65 refac: prompt editor 2024-11-10 18:20:46 -08:00
Timothy Jaeryang Baek c92091721b refac: sticky new chat selected models behaviour 2024-11-10 18:01:10 -08:00
Timothy Jaeryang Baek 36712c1597 refac: styling 2024-11-10 17:27:39 -08:00
Timothy Jaeryang Baek c173d275dc Merge pull request #6753 from silentoplayz/silentoplayz-unarchive-all
feat: Unarchive All Archived Chats Button with Confirmation
2024-11-10 16:39:20 -08:00
Timothy Jaeryang Baek f7b98e8c84 refac 2024-11-10 16:39:11 -08:00
Timothy Jaeryang Baek 6ed085b90b chore: format 2024-11-10 16:34:35 -08:00
Timothy Jaeryang Baek be22332fd6 Merge pull request #6841 from konmeo/patch-1
Fix DuckDuckGo's RateLimit
2024-11-10 16:27:15 -08:00
Timothy Jaeryang Baek 24f2152493 Merge pull request #6840 from Peter-De-Ath/fix-translation-uk-UA
Fix missing comma in Ukrainian translation.json
2024-11-10 16:26:55 -08:00
Peter De-Ath 94e432d599 update fomatting and i18n 2024-11-10 22:10:28 +00:00
konmeo e4d35a9478 Fix DuckDuckGo's RateLimit exception (#6624) 2024-11-10 14:05:40 -08:00
Peter De-Ath 638b350b5c Fix missing comma in Ukrainian translation.json 2024-11-10 22:02:03 +00:00
Timothy Jaeryang Baek ff9fdc2f88 refac 2024-11-09 23:57:19 -08:00
Timothy Jaeryang Baek 96c865404d refac: disable openapi.json 2024-11-09 18:01:23 -08:00
Timothy Jaeryang Baek 3ba9f2aae2 Merge pull request #6811 from OriginalSimon/dev
18n: Update Ukrainian translation
2024-11-09 13:58:29 -08:00
Simon 0a027aaa14 Update translation.json 2024-11-09 11:02:05 +01:00
Simon 20d671df39 Update translation.json 2024-11-09 10:59:45 +01:00
Timothy Jaeryang Baek 2fdbab6640 Merge pull request #6761 from diegmonti/feat/permissions-policy
feat: Add permissions-policy to security headers
2024-11-09 00:30:48 -08:00
Timothy J. Baek aa80df1431 refac: styling 2024-11-08 20:14:33 -08:00
Timothy J. Baek f258f44136 refac: styling 2024-11-07 01:30:51 -08:00
Timothy J. Baek cbf6004c76 refac: styling 2024-11-07 01:07:28 -08:00
Timothy J. Baek b1a941ee6f refac: styling 2024-11-07 01:00:30 -08:00
Timothy J. Baek 9ea9e8478a refac: styling 2024-11-07 00:53:39 -08:00
Timothy J. Baek f6fb522269 refac: model editor 2024-11-07 00:18:48 -08:00
Timothy J. Baek a4abd32e4a fix 2024-11-06 23:01:10 -08:00
Timothy J. Baek c9a59f5d51 refac: styling 2024-11-06 22:52:06 -08:00
Timothy J. Baek f8c2bedf53 fix: hybrid search 2024-11-06 22:51:36 -08:00
Timothy J. Baek 24b7716241 refac: workspace styling 2024-11-06 21:45:48 -08:00
Timothy J. Baek d961e8943e refac: styling 2024-11-06 21:13:37 -08:00
Timothy J. Baek 6dc429504a fix: continue message 2024-11-06 20:53:36 -08:00
Timothy Jaeryang Baek 580cf6a02c Merge pull request #6757 from KarlLee830/translate
i18n: Update Chinese translation
2024-11-06 13:54:27 -08:00
Diego Monti b1805380dc feat: Add permissions-policy to security headers 2024-11-06 18:16:22 +01:00
KarlLee830 d88b55e65e i18n: Update Chinese translation 2024-11-06 19:04:07 +08:00
Timothy J. Baek 02269a21a9 refac 2024-11-06 02:58:44 -08:00
Timothy J. Baek ccbf5a08f3 refac 2024-11-06 02:19:04 -08:00
Timothy J. Baek 056f24dc57 refac 2024-11-06 00:32:08 -08:00
silentoplayz f39a523ec0 Update ArchivedChatsModal.svelte
feat: Unarchive All Archived Chats button
2024-11-06 00:58:41 -05:00
Timothy J. Baek 4616b508b1 refac: token handling 2024-11-05 21:14:02 -08:00
Timothy J. Baek 60df959875 chore: format 2024-11-05 21:10:22 -08:00
Timothy J. Baek 926033ba52 chore: format 2024-11-05 21:10:14 -08:00
Timothy J. Baek df85b93b53 refac 2024-11-05 21:05:14 -08:00
Timothy Jaeryang Baek be079e7ea2 Merge pull request #6749 from dannyl1u/feat/settings-search
feat: search in settings
2024-11-05 20:56:35 -08:00
Timothy Jaeryang Baek 69311fec71 Merge pull request #6750 from Sebastriani/main
feat: Possibility to globaly disable Tags generation.
2024-11-05 20:53:10 -08:00
Timothy J. Baek ad462f0a11 refac: ldap settings 2024-11-05 20:52:02 -08:00
Timothy J. Baek 547682c674 refac 2024-11-05 20:47:23 -08:00
Timothy J. Baek 75b169e11d refac: ldap auth page 2024-11-05 20:32:09 -08:00
dannyl1u 9e6595705e feat: settings search - no results found 2024-11-05 20:06:37 -08:00
dannyl1u 2f921859ee lower debounce timer for settings search 2024-11-05 19:59:34 -08:00
Timothy J. Baek 2910cbe9a9 refac: disable ldap by default 2024-11-05 19:58:54 -08:00
dannyl1u 420053b709 run format 2024-11-05 19:16:22 -08:00
dannyl1u 2e645d3303 feat: search in settings 2024-11-05 18:50:58 -08:00
Sebastián D. Gauna e1114bfa4c feat: Possibility to globaly disable Tags generation. 2024-11-05 23:32:08 -03:00
Timothy J. Baek 040449be01 chore: format 2024-11-05 17:41:24 -08:00
Timothy Jaeryang Baek 2d943e784b Merge pull request #6745 from DiegoRodriguez83/#6744
i18n: Translations Brazilian Portuguese (pt-BR)
2024-11-05 17:27:49 -08:00
Diego Rodriguez 739c263e94 i18n: Translations Brazilian Portuguese (pt-BR) 2024-11-05 21:43:18 -03:00
Timothy J. Baek 28b541a692 refac 2024-11-05 15:15:32 -08:00
Timothy Jaeryang Baek 1ee7730fac Merge pull request #6645 from jk-f5/feat/pgvector
feat: Intial support for pgvector as backing vector database
2024-11-05 15:14:55 -08:00
Timothy Jaeryang BaekandCopilot Autofix powered by AI 1f36cad9ef Fix code scanning alert no. 129: LDAP query built from user-controlled sources
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2024-11-05 18:10:16 -05:00
Timothy J. Baekandziweiwang fe68a0776c refac
Co-Authored-By: ziweiwang <47988425+wilsonziweiwang@users.noreply.github.com>
2024-11-05 15:09:09 -08:00
Timothy Jaeryang Baek 2777620527 Merge pull request #6743 from morgan55555/dev
feat: LDAP User management
2024-11-05 15:05:50 -08:00
morgan55555 5d934d7d15 feat: LDAP User management
LDAP will be used as default if no other auth form is enabled.
LDAP now will work with ENABLE_LOGIN_FORM = false.
Fixed exception "User does not match the record."
Now LDAP login is case insensitive.
Integrated with onboarding feature.
2024-11-06 03:30:23 +05:00
Timothy J. Baek 2cc2694eba refac: styling 2024-11-05 14:05:13 -08:00
Timothy Jaeryang Baek 3e52e95b2c Merge pull request #6724 from silentoplayz/silentoplayz-tooltips
feat: Add tooltips to provide contextual information for each parameter
2024-11-05 13:59:51 -08:00
Timothy Jaeryang Baek b6bebd76f0 Merge pull request #6737 from aleixdorca/dev
i18n: Updated the catalan translation.json
2024-11-05 12:59:55 -08:00
silentoplayz cd6e05d43c Update AdvancedParams.svelte
fix
2024-11-05 13:10:51 -05:00
Aleix Dorca 665cdffedc Update catalan translation.json 2024-11-05 18:53:26 +01:00
silentoplayz 634be4a97a Update AdvancedParams.svelte
i18n.t
2024-11-05 12:51:40 -05:00
silentoplayz e5f9ef4515 Update AdvancedParams.svelte
Added missing tooltips
2024-11-05 12:27:00 -05:00
Timothy J. Baek eb56614b58 refac: wording 2024-11-05 00:18:35 -08:00
silentoplayz 8c1983cfda Update AdvancedParams.svelte
Added Advanced Parameters tooltips
2024-11-05 01:39:54 -05:00
Timothy J. Baek d4b60b1bac refac: styling 2024-11-04 19:52:12 -08:00
Timothy Jaeryang Baek ea1d512ee3 Merge pull request #6719 from DiegoRodriguez83/#6717
i18n: Added labels in 2 components + translation and adjustments for pt-BR
2024-11-04 19:36:25 -08:00
Timothy Jaeryang Baek c29b283f5d Merge branch 'dev' into #6717 2024-11-04 19:35:49 -08:00
Timothy J. Baek 3afc34928f refac: onboarding 2024-11-04 19:31:56 -08:00
Diego Rodriguez 573b63c06b CHANGELOG 2024-11-04 23:52:08 -03:00
Diego Rodriguez 7aeedda634 i18n: Implementing label [SearchInput] and [CreateCollection] | Translation and adjustments pt-BR 2024-11-04 23:37:53 -03:00
Jason Kidd 319ea8cb7f feat: Add ability to set URI for pgvector 2024-11-04 14:27:33 -08:00
Jason Kidd 701f40aedd feat: Initial support for pgvector 2024-11-04 14:26:41 -08:00
Timothy J. Baek 5d3da6dcc8 Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2024-11-04 14:25:41 -08:00
Timothy J. Baek 88ea53bd6a fix 2024-11-04 14:25:35 -08:00
Timothy Jaeryang Baek 6c1d0a8e39 Merge pull request #6598 from dtaivpp/main
feat: OpenSearch vector db support
2024-11-04 14:04:55 -08:00
Timothy J. Baek 7c0545fd39 chore: requirements 2024-11-04 14:02:55 -08:00
Timothy J. Baek 224b555de5 Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2024-11-04 14:01:26 -08:00
Timothy J. Baek 151b3cf8e7 chore: i18n 2024-11-04 14:01:19 -08:00
Timothy Jaeryang Baek 8234036001 Merge pull request #6701 from davizucon/dev
Small Fix: variable from ssl_verification to: web_loader_ssl_verification
2024-11-04 14:00:25 -08:00
David Tippett 705e3129b6 Updating config format. 2024-11-04 15:14:53 -05:00
David Tippett afca48028f Moving new config to under retreval 2024-11-04 15:10:14 -05:00
David Tippett 4baab4bce8 Merge branch 'open-webui:main' into main 2024-11-04 15:04:30 -05:00
David Tippett 16089ab947 Fix formatting in pyproject.toml dependencies list 2024-11-04 14:59:50 -05:00
Davi Sclifo Zucon a70e5a0f30 When UI "Bypass SSL verification for Websites"=True then ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION=False 2024-11-04 16:29:29 -03:00
Davi Sclifo Zucon 35a9140567 Added parameter to: app.state.config.ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION to get_web_loader(verify_ssl).
Invert variable value to send to UI , not ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION.
2024-11-04 16:21:26 -03:00
Davi Sclifo Zucon 5306b49be0 Small Fix variable ssl_verification -> web_loader_ssl_verification (following python entity)
When changed via the web interface in Admin's WebSearch, the bypass option is not being persisted.
This change adjusts it to the same name as the one related in the python entity.
2024-11-04 15:40:16 -03:00
Timothy J. Baek 0b47387081 refac: styling 2024-11-04 02:32:06 -08:00
Timothy J. Baek 630d1397ad refac: styling 2024-11-04 01:57:01 -08:00
Timothy J. Baek 1fd67d7e5d feat: native speecht5 support 2024-11-04 01:16:51 -08:00
Timothy J. Baek 835eeb6433 fix: playground styling 2024-11-03 23:05:41 -08:00
Timothy J. Baek 5c60081c1f refac: web search 2024-11-03 17:07:24 -08:00
Timothy J. BaekandMuhammad Afzaal 70498d7bbe enh: export table as csv
Co-Authored-By: Muhammad Afzaal <mafzaal@gmail.com>
2024-11-03 14:09:57 -08:00
Timothy J. Baek 5ae6d05a53 fix 2024-11-03 04:05:46 -08:00
Timothy J. Baek f1065115aa fix: youtube loader issue 2024-11-03 03:18:17 -08:00
Timothy J. Baek d3ac439000 refac: styling 2024-11-03 03:04:35 -08:00
Timothy J. Baek 194b924a96 feat: onboarding screen 2024-11-03 03:00:28 -08:00
Timothy J. Baek cfe255bb95 refac: styling 2024-11-03 02:31:12 -08:00
Timothy J. Baek dbf14afa32 refac: styling 2024-11-03 02:00:31 -08:00
Timothy J. Baek 330ad0131c refac 2024-11-03 01:39:03 -08:00
Timothy J. Baek 39bfc4c8e9 refac 2024-11-03 01:38:07 -08:00
Timothy J. Baek 4e7951d5fc fix: allow openai list message format 2024-11-03 01:34:45 -08:00
Timothy J. Baek 0925c6b33b refac: remove unused dependency 2024-11-03 01:26:16 -08:00
Timothy J. Baek 98cea8aaa4 refac: automatically disable new sign ups after first user 2024-11-03 01:25:41 -08:00
Timothy J. Baek 503019b28d fix: web stt issue 2024-11-03 01:21:58 -08:00
Timothy J. Baek 380e080f6d fix: do not crash on invalid embedding model 2024-11-03 01:08:04 -08:00
Timothy J. Baek 6027c13227 fix: s3 file path 2024-11-03 01:07:43 -08:00
Timothy J. Baek 0c6453078e refac: orientation 2024-11-03 01:59:53 -07:00
Timothy J. Baek 230e2f8f82 fix: remove tags gen print 2024-11-03 01:54:23 -07:00
Timothy J. Baek 8c5206018c fix: respect case sensitivity 2024-11-03 01:43:14 -07:00
Timothy Jaeryang Baek c315a7d9dd Merge pull request #6631 from open-webui/dependabot/pip/backend/dev/python-multipart-0.0.17
build(deps): bump python-multipart from 0.0.9 to 0.0.17 in /backend
2024-11-02 23:25:25 -07:00
Timothy Jaeryang Baek 01887098ac Merge pull request #6629 from open-webui/dependabot/pip/backend/dev/boto3-1.35.53
build(deps): bump boto3 from 1.35.0 to 1.35.53 in /backend
2024-11-02 23:25:09 -07:00
Timothy Jaeryang Baek e89e17b654 Merge pull request #6628 from open-webui/dependabot/pip/backend/dev/pymilvus-2.4.9
build(deps): bump pymilvus from 2.4.7 to 2.4.9 in /backend
2024-11-02 23:24:57 -07:00
Timothy Jaeryang Baek dead5cdd4e Merge pull request #6589 from DucNgn/dn_forward_user_info_in_headers
feat: Add option to forward user info as headers to OpenAI API
2024-11-02 17:24:04 -07:00
David Tippett ef7a9e2467 Update chromadb and pymilvus versions
Fixing botched merge change.
2024-11-01 21:47:05 -04:00
Timothy Jaeryang Baek c44036e2b8 Merge pull request #6646 from s1adem4n/fix-popover-text
fix: Truncate text in UserMenu so it doesn't break into multiple lines
2024-11-01 18:22:21 -07:00
Timothy Jaeryang Baek f23ae8f7a0 Merge pull request #6636 from aindriu80/main
i18n: Translated new strings into Irish, edited some existing strings
2024-11-01 18:17:49 -07:00
Timothy Jaeryang Baek 2bace37890 Merge pull request #6644 from s1adem4n/improve-german-translation
i18n: Improve German translation, add missing strings
2024-11-01 18:17:34 -07:00
Timothy Jaeryang Baek 692c3f992f Merge pull request #6635 from ahangarha/improve-persian-translation
i18n: Improve persian (fa-IR) translation
2024-11-01 18:17:22 -07:00
Timothy Jaeryang Baek 89f62baa08 Merge pull request #6633 from t0ny-d3v/dev
Dev: cs-CZ fix translations
2024-11-01 18:17:07 -07:00
Jonathan a8dfc0091c truncate text so it doesnt break and look weird 2024-11-02 00:32:12 +01:00
Jonathan 6e1b89b55a improve german translation 2024-11-01 23:18:17 +01:00
Mostafa Ahangarha b8304d13a9 Improve persian (fa-IR) translation 2024-11-01 22:06:28 +03:30
Aindriú Mac Giolla Eoin dad12067d8 Translated new strings into Irish, edited some existing strings 2024-11-01 17:25:49 +00:00
Duc Nguyen 06f44dc067 Minor comment 2024-11-01 11:24:10 -04:00
Duc Nguyen a34d202ae8 move the config to env.py 2024-11-01 11:23:18 -04:00
Jozef Papai 9579208b37 Update translation.json
Update some texts
2024-11-01 11:25:02 +02:00
Jozef Papai 31348aa162 Update translation.json
Fix some translatios
2024-11-01 11:17:48 +02:00
dependabot[bot] 705316aef3 build(deps): bump python-multipart from 0.0.9 to 0.0.17 in /backend
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.9 to 0.0.17.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.9...0.0.17)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 02:25:46 +00:00
dependabot[bot] 39f841ce34 build(deps): bump boto3 from 1.35.0 to 1.35.53 in /backend
Bumps [boto3](https://github.com/boto/boto3) from 1.35.0 to 1.35.53.
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.35.0...1.35.53)

---
updated-dependencies:
- dependency-name: boto3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 02:25:39 +00:00
dependabot[bot] b6372a4cb2 build(deps): bump pymilvus from 2.4.7 to 2.4.9 in /backend
Bumps [pymilvus](https://github.com/milvus-io/pymilvus) from 2.4.7 to 2.4.9.
- [Release notes](https://github.com/milvus-io/pymilvus/releases)
- [Commits](https://github.com/milvus-io/pymilvus/compare/v2.4.7...v2.4.9)

---
updated-dependencies:
- dependency-name: pymilvus
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 02:25:32 +00:00
Timothy Jaeryang Baek c3faed71ef Merge pull request #6611 from open-webui/main
dev
2024-10-30 21:08:48 -07:00
Timothy Jaeryang Baek 255109d341 Merge pull request #6604 from Peter-De-Ath/update-langchain-community
fix/enh: update langchain-community
2024-10-30 16:13:42 -07:00
Peter De-Ath 7c6fa64c05 fix/enh: update langchain-community 2024-10-30 22:46:06 +00:00
David Tippett 6aec971ddb Updating requirements.txt 2024-10-30 15:53:21 -04:00
David Tippett a39ddfd4f1 Adding OpenSearch python dependancy 2024-10-30 15:52:41 -04:00
David Tippett fb30b667e2 First pass at an OpenSearch connector 2024-10-30 15:51:56 -04:00
Timothy Jaeryang Baek 9d6cfe64ba Merge pull request #6585 from t0ny-d3v/dev
Rename cs_CZ to cs-CZ
2024-10-30 10:28:17 -07:00
Timothy J. Baek 7228b39064 Update README.md 2024-10-30 10:16:28 -07:00
Duc Nguyen 3f0b3ea90e feat: Add option to forward user info as headers to OpenAI API 2024-10-30 11:29:18 -04:00
Jozef Papai 91180864a7 Rename cs_CZ to cs-CZ
Fix dir name
2024-10-30 09:16:26 +02:00
Timothy Jaeryang Baek 785497a34a Merge pull request #6567 from open-webui/dependabot/pip/pip-1185b3d527
build(deps): bump the pip group across 2 directories with 1 update
2024-10-29 23:27:03 -07:00
Timothy Jaeryang Baek adfce28732 Merge pull request #6543 from execgit/main
fix: omit document contents in logging document embedding
2024-10-29 19:17:53 -07:00
Timothy Jaeryang Baek 4765dfd28c Merge pull request #6574 from mafzaal/ur-PK-translation_v2
i18n - Urdu PK translation
2024-10-29 17:10:38 -07:00
Muhammad Afzaal a2d72deaae Added Urdu Pakistan (ur-PK) translations 2024-10-29 18:13:56 -05:00
dependabot[bot] 3a713aea18 build(deps): bump the pip group across 2 directories with 1 update
Bumps the pip group with 1 update in the / directory: [langchain](https://github.com/langchain-ai/langchain).
Bumps the pip group with 1 update in the /backend directory: [langchain](https://github.com/langchain-ai/langchain).


Updates `langchain` from 0.2.15 to 0.3.0
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](https://github.com/langchain-ai/langchain/compare/langchain==0.2.15...langchain==0.3.0)

Updates `langchain` from 0.2.15 to 0.3.0
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](https://github.com/langchain-ai/langchain/compare/langchain==0.2.15...langchain==0.3.0)

---
updated-dependencies:
- dependency-name: langchain
  dependency-type: direct:production
  dependency-group: pip
- dependency-name: langchain
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29 20:23:44 +00:00
Timothy Jaeryang Baek 4cf5a165bc Merge pull request #6537 from t0ny-d3v/main
i18n Add new language - CZ, add missing translations to RO
2024-10-29 10:04:24 -07:00
Igor Brai b7d730e244 add mojeek as websearch option 2024-10-29 16:45:38 +02:00
execgit 03e9add96d retrieval.utils: omit logging file contents at level INFO 2024-10-29 14:33:37 +02:00
execgit bc7622c0fe Avoid logging file contents at level INFO
I had problems with document handling in rootless containers. Long documents caused the container to hang. Reducing the verbosity of logging from retrieval.main seemed to fix the issues I was experiencing.
2024-10-29 14:31:47 +02:00
Timothy Jaeryang Baek b36a1eef4a Merge pull request #6523 from open-webui/main
refac: feedback base_models
2024-10-28 15:21:07 -07:00
Timothy J. Baek 09935d191f refac: feedback base_models 2024-10-28 15:19:02 -07:00
Timothy Jaeryang Baek 489a69673f Merge pull request #6521 from open-webui/main
enh: include base model id in feedback metadata
2024-10-28 15:09:31 -07:00
Timothy Jaeryang Baek 46b2505fbd Merge pull request #6520 from turbra/main
fix: automatic1111 typo
2024-10-28 15:09:01 -07:00
Timothy J. Baek e03e22dd1f enh: include base model id in feedback metadata 2024-10-28 15:07:40 -07:00
turbra 572526c1bb Update config.py 2024-10-28 17:02:18 -04:00
Timothy J. Baek 8f2f4747e7 fix 2024-10-28 13:29:44 -07:00
Timothy Jaeryang Baek b32fbf7c58 Merge pull request #6504 from jeeteshchel/fork/dev
feat: enable bing support
2024-10-28 12:30:11 -07:00
Jeetesh Chellani f7d8a6ccba feat: enable bing support 2024-10-28 16:51:31 +02:00
Timothy Jaeryang Baek 90759bc89a Merge pull request #6495 from andrewbbaek/dev
Korean Translation Update
2024-10-28 05:52:28 -07:00
Timothy J. Baek 491cff8c63 refac: parse md files with TextLoader 2024-10-28 05:50:56 -07:00
Timothy J. Baek bcf88585de fix: pdf issue w/ markdown 2024-10-28 05:47:53 -07:00
Timothy J. Baek 25a2c6ee52 fix/refac: use user prompt for title gen fallback 2024-10-28 05:34:50 -07:00
Jozef Papai 046d8d04aa Update translation.json
added missing translations
2024-10-28 11:40:23 +02:00
Jozef Papai 4a4dce3a33 Update languages.json
Add czech
2024-10-28 11:16:11 +02:00
Jozef Papai 88c27dc1df Create translation.json
Czech translate file
2024-10-28 11:15:23 +02:00
Andrew Baek dd88882ad4 Update translation.json 2024-10-28 15:04:32 +09:00
Andrew Baek b92d530cf3 Merge branch 'dev' of https://github.com/andrewbbaek/open-webui into dev 2024-10-28 14:09:56 +09:00
Timothy Jaeryang Baek a64cc8f8e0 Merge pull request #6474 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-27 16:27:03 -07:00
Timothy Jaeryang Baek 9a81e34fe1 Merge pull request #6473 from HaldiH/patch-1
fix: generate endpoint form model
2024-10-27 16:26:51 -07:00
Timothy Jaeryang Baek 206a9cba93 Merge pull request #6470 from Xelaph/patch-1
i18n: Added and changed Dutch translations
2024-10-27 16:26:13 -07:00
Timothy Jaeryang Baek b4d116475b Merge pull request #6468 from diwakar-s-maurya/main
feat: support authentication for chromadb
2024-10-27 16:25:55 -07:00
KarlLee830 38ae5cc0d5 i18n: Update Chinese translation 2024-10-27 20:58:37 +08:00
Hugo Haldi b596b8f0cb Fix: generate endpoint form model
According to the [Ollama documentation] the parameter `context` should be an array of int, if specified.
2024-10-27 13:41:50 +01:00
Andrew Baek 9c299625d3 Update translation.json (ko-KR)
ko-KR
2024-10-27 20:42:14 +09:00
Alex 1eeac56ce2 Merge branch 'open-webui:main' into patch-1 2024-10-27 09:53:10 +01:00
Alex bc6104a6f9 Update translation.json
Added last translations and changed some into clearer or better language (in my opinion)
2024-10-27 09:46:43 +01:00
Alex fd9c3b0a5b Update translation.json
Added more translations
2024-10-27 09:27:05 +01:00
Diwakar Singh Maurya 3d0c32f366 feature to support authentication in chromadb 2024-10-27 14:01:00 +07:00
Timothy J. Baek e35be175fc fix 2024-10-26 22:05:19 -07:00
Timothy J. Baek effcbd6301 feat: airdrop chats between windows 2024-10-26 21:25:48 -07:00
Timothy J. Baek e6ca994c92 feat: option to disable what's new modal 2024-10-26 19:44:46 -07:00
Timothy Jaeryang Baek 21b8ca3459 Merge pull request #6465 from open-webui/dev
refac: migration
2024-10-26 19:01:32 -07:00
Timothy J. Baek 5537b2dc2c refac: migration 2024-10-26 19:01:01 -07:00
Alex 5542a9707c Update translation.json
Added what I could easily translate and changed some translations that were obviously wrong
2024-10-26 23:29:53 +02:00
Timothy Jaeryang Baek f1f068f458 Merge pull request #6460 from open-webui/dev
0.3.35
2024-10-26 13:17:35 -07:00
Timothy J. Baek 53e772df2f doc: changelog 2024-10-26 13:16:49 -07:00
Timothy J. Baek e36acd6217 enh: empty file handling behaviour 2024-10-26 13:05:54 -07:00
Timothy J. Baek 25a37baeec chore: format 2024-10-26 13:05:37 -07:00
Timothy Jaeryang Baek dab2308fe2 Merge pull request #6450 from superzazu/fr_fixes
i18n: update french translation fr-FR
2024-10-26 12:58:14 -07:00
Timothy J. Baek 15cfdc69a8 refac: chat input file handling 2024-10-26 12:56:37 -07:00
Timothy Jaeryang Baek 032abba88e Merge pull request #6458 from duroakos/dev
i18n: added hungarian translation hu-HU
2024-10-26 12:43:35 -07:00
Timothy J. Baek f03629de61 fix: merged response should be used in messages payload 2024-10-26 12:41:54 -07:00
Timothy J. Baek badbe4ea06 fix: tools not working 2024-10-26 12:21:05 -07:00
duroakos c162e7074e i18n: added hungarian translation hu-Hu 2024-10-26 21:14:08 +02:00
Nicolas Allemand f5c74837b1 i18n: update french translation fr-FR 2024-10-26 18:50:28 +02:00
Timothy Jaeryang Baek 565ea92693 Merge pull request #6434 from open-webui/main
dev
2024-10-26 01:50:40 -07:00
Timothy J. Baek d056923479 Update CHANGELOG.md 2024-10-26 01:45:30 -07:00
Timothy Jaeryang Baek 1cd7d83f50 Merge pull request #6433 from open-webui/dev
fix: knowledge issue
2024-10-26 01:19:38 -07:00
Timothy J. Baek f1c123c819 fix: knowledge issue 2024-10-26 01:19:17 -07:00
Timothy Jaeryang Baek f10c729e3d Merge pull request #6413 from open-webui/dev
0.3.34
2024-10-26 00:44:16 -07:00
Timothy J. Baek 488d7f10b3 doc: wording 2024-10-26 00:44:08 -07:00
Timothy J. Baek bbc7e2776d doc: changelog 2024-10-26 00:42:27 -07:00
Timothy J. Baek 07c9ace061 chore: version bump 2024-10-26 00:27:35 -07:00
Timothy J. Baek b6f548035c chore: format 2024-10-26 00:24:10 -07:00
Timothy Jaeryang Baek 554e181ccb Merge pull request #6432 from diwakar-s-maurya/main
fix: Prevent crash while setting Strict-Transport-Security security header
2024-10-26 00:23:15 -07:00
Timothy J. Baek 0cf8f58efe refac: voice input styling 2024-10-26 00:21:46 -07:00
Diwakar 0a7bc50279 Prevent crash while setting Strict-Transport-Security security header 2024-10-26 13:45:28 +07:00
Timothy J. Baek 1cd036e768 refac 2024-10-25 22:33:26 -07:00
Timothy J. Baek f2c78ac0fb refac 2024-10-25 22:23:21 -07:00
Timothy J. Baek 925a903e38 chore: format 2024-10-25 22:18:48 -07:00
Timothy J. Baek 47e4250f58 refac 2024-10-25 22:12:46 -07:00
Timothy J. Baek 21a28e3bf0 enh: more robust knowledge file info retrieval 2024-10-25 21:58:29 -07:00
Timothy J. Baek 5d2714bc92 fix: s3 file upload 2024-10-25 21:50:31 -07:00
Timothy J. Baek 076c54c486 refac 2024-10-25 21:47:47 -07:00
Timothy J. Baek 780591e991 refac 2024-10-25 21:46:14 -07:00
Timothy J. Baek 50dcad0f73 fix: tiktoken encoding model issue 2024-10-25 21:38:28 -07:00
Timothy J. Baek adede5480d enh: rich text input toggle option 2024-10-25 21:31:18 -07:00
Timothy J. Baek 8b61b39c75 enh: feedback exports 2024-10-25 21:17:47 -07:00
Timothy J. Baek 58d929fd65 enh: lazy load embedding model for leaderboard 2024-10-25 21:07:16 -07:00
Timothy Jaeryang Baek 04babeb45a Merge pull request #6424 from Peter-De-Ath/add-user-name-slash-prompt
feat: add user_name to slash prompt template
2024-10-25 18:20:27 -07:00
Peter De-Ath 5c3c00f9fb add user_name slash prompt template 2024-10-26 00:37:38 +01:00
Timothy Jaeryang Baek 3df1ee9954 Merge pull request #6423 from Peter-De-Ath/fix-chat-rename-firefox
fix: folder rename not save on enter - firefox
2024-10-25 15:21:09 -07:00
Peter De-Ath b0e83ccea0 Merge remote-tracking branch 'personal/fix-chat-rename-firefox' into dev 2024-10-25 23:14:14 +01:00
Peter De-Ath 40764d91cf fix: folders not renamed on enter key 2024-10-25 22:54:12 +01:00
Timothy J. Baek 37853d6a26 enh: more robust tool calling 2024-10-25 14:36:44 -07:00
Timothy J. Baek 0b38584e52 refac: rich text input paste behaviour 2024-10-25 11:51:49 -07:00
Timothy Jaeryang Baek af3456511b Merge pull request #6409 from MarcRevo/nl-translations-mb
i18n: Update Dutch Translation nl-NL
2024-10-25 11:15:13 -07:00
Timothy Jaeryang Baek 9b030f6ad6 Merge pull request #6392 from nodomain/patch-1
fix: boolean values don't need to be accessed by .value
2024-10-25 11:12:53 -07:00
Timothy Jaeryang Baek ad952b9394 Merge pull request #6399 from Natedorr/main
Update api/chat stream to default to true
2024-10-25 11:12:29 -07:00
MarcRevo a1469cae59 Add: i18n Dutch translations 2024-10-25 19:50:51 +02:00
MarcRevo bbc98259a5 Add: nl-NL Translations 2024-10-25 19:45:46 +02:00
MarcRevo 44433929e7 Modify and Add Dutch translations 2024-10-25 19:33:05 +02:00
Nate.Dorr b4acf689e3 update the GenerateChatCompletionForm stream to be defaulted to true.
This defaults the /api/chat/ endpoint to default to streaming being true
2024-10-25 08:00:37 -05:00
Fabian Fischer 23461332b9 fix: boolean values don't need to be accessed by .value 2024-10-25 09:44:03 +02:00
Timothy J. Baek 46a97e62c7 fix: tags custom prompt issue 2024-10-25 00:05:04 -07:00
Timothy J. Baek d905bda000 refac: template notes 2024-10-24 16:46:35 -07:00
Timothy Jaeryang Baek 144dc0ed2f Merge pull request #6383 from open-webui/dev
refac
2024-10-24 15:04:36 -07:00
Timothy J. Baek 1472f12f5e refac 2024-10-24 15:02:26 -07:00
Timothy Jaeryang Baek 68916f7ec4 Merge pull request #6382 from open-webui/dev
fix
2024-10-24 14:57:25 -07:00
Timothy J. Baek 4282b20495 fix 2024-10-24 14:53:14 -07:00
Timothy Jaeryang Baek 9b12b75df6 Merge pull request #6380 from open-webui/dev
fix: arena model exclude filter
2024-10-24 14:23:26 -07:00
Timothy J. Baek 856c00bc2f fix: arena model exclude filter 2024-10-24 14:22:04 -07:00
Timothy Jaeryang Baek 99dd7fb5a8 Merge pull request #6002 from open-webui/dev
0.3.33
2024-10-24 13:36:19 -07:00
Timothy J. Baek e9e49babf8 enh: remove token cookie on signout 2024-10-24 13:35:29 -07:00
Timothy J. Baek 6b620d93a9 refac 2024-10-24 03:13:35 -07:00
Timothy J. Baek c5d974606f refac 2024-10-24 03:10:17 -07:00
Timothy J. Baek 587dab23f0 fix 2024-10-24 02:35:17 -07:00
Timothy J. Baek a4f29e1e55 chore: format 2024-10-24 02:26:52 -07:00
Timothy J. Baek 205402e096 refac 2024-10-24 01:01:00 -07:00
Timothy J. Baek 42a58da487 refac 2024-10-24 00:56:24 -07:00
Timothy J. Baek d160d0351f refac 2024-10-24 00:48:34 -07:00
Timothy J. Baek 744139d2ce refac 2024-10-24 00:35:27 -07:00
Timothy J. Baek a28ef8acc5 refac 2024-10-24 00:34:44 -07:00
Timothy J. Baek 9c2d592c73 enh: include message_turn metadata 2024-10-24 00:23:31 -07:00
Timothy J. Baek 160e63e509 refac: feedback history share support 2024-10-24 00:00:49 -07:00
Timothy J. Baek 056950b4f9 enh: leaderboard notice 2024-10-23 23:07:44 -07:00
Timothy J. Baek d7151fe6fa refac: similarity operation 2024-10-23 22:38:58 -07:00
Timothy J. Baek cde33002c7 feat: topic leaderboard 2024-10-23 22:35:12 -07:00
Timothy J. Baek 0f4b6cdb67 refac 2024-10-23 20:49:18 -07:00
Timothy J. Baek d0662e2518 refac: do not use arena model for tasks 2024-10-23 20:33:08 -07:00
Timothy J. Baek ec37d801be refac: feedback optimisation 2024-10-23 20:27:32 -07:00
Timothy J. Baek b5d7e57d3c refac 2024-10-23 20:19:42 -07:00
Timothy J. Baek 076f9fd9c0 enh: auto tag feedback 2024-10-23 20:18:51 -07:00
Timothy J. Baekandsilentoplayz 73ab84efe6 fix: leaderboard
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2024-10-23 18:54:49 -07:00
Timothy J. Baek 0c6e9e3e86 refac: rating 2024-10-23 16:59:54 -07:00
Timothy J. Baek c1a054de4a fix 2024-10-23 15:35:40 -07:00
Timothy J. Baek 51265b4683 refac 2024-10-23 15:33:13 -07:00
Timothy J. Baek d4c42dcfa9 fix 2024-10-23 15:09:20 -07:00
Timothy J. Baek d85480b4d6 fix: bypass_filter for arena models 2024-10-23 15:05:43 -07:00
Timothy J. Baek ee2f8d3552 fix: folder migration 2024-10-23 14:58:28 -07:00
Timothy J. Baek 0e56ef20cb fix: selectedModels 2024-10-23 14:51:25 -07:00
Timothy J. Baek b16c4bc1df refac 2024-10-23 12:41:41 -07:00
Timothy J. Baek 68a47f6a9f enh: arena model filter 2024-10-23 12:40:47 -07:00
Timothy J. Baek affb0e5c37 refac 2024-10-23 12:33:00 -07:00
Timothy Jaeryang Baek 15c3bdf7af Merge pull request #6361 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-23 10:03:45 -07:00
KarlLee830 42914a162f i18n: Update Chinese translation 2024-10-23 21:46:28 +08:00
Timothy Jaeryang Baek 928a5e747c Merge pull request #6358 from OriginalSimon/dev
18n: Update Ukrainian translation
2024-10-23 05:04:48 -07:00
Simon a494ef8a99 Update translation.json 2024-10-23 13:50:56 +02:00
Timothy J. Baek 8d2089e5b8 refac: styling 2024-10-23 02:17:10 -07:00
Timothy J. Baek 4557f4d165 chore: version bump 2024-10-23 02:15:11 -07:00
Timothy J. Baek b9af35be4c refac 2024-10-23 01:48:26 -07:00
Timothy J. Baek a41a5cc0c8 refac 2024-10-23 01:27:32 -07:00
Timothy J. Baek 4a1bf6d6c4 refac 2024-10-23 01:23:49 -07:00
Timothy J. Baek 0d924a1cba enh: feedback delete support 2024-10-23 01:05:45 -07:00
Timothy J. Baek 01651ee0a6 enh: feedback history pagination 2024-10-23 00:51:27 -07:00
Timothy J. Baek 3531e009ce chore: format 2024-10-23 00:42:13 -07:00
Timothy Jaeryang Baek 6edbbde2eb Merge pull request #6348 from MadsLang/main
Adding Danish language
2024-10-23 00:39:31 -07:00
Timothy J. Baek 8514ed148a refac: show changelog behaviour 2024-10-23 00:38:59 -07:00
Timothy J. Baek 2897c25b99 refac 2024-10-22 23:55:36 -07:00
Timothy J. Baek 58261a7b83 refac: styling 2024-10-22 23:54:37 -07:00
Timothy Jaeryang Baek 40d5082b9f Merge pull request #6345 from open-webui/leaderboard
feat: leaderboard
2024-10-22 23:45:16 -07:00
Timothy J. Baek 6536c5b7f7 enh: leaderboard percentage 2024-10-22 23:44:13 -07:00
Timothy J. Baek 139136e700 refac: styling 2024-10-22 23:31:51 -07:00
Timothy J. Baek 5101b440a8 refac: styling 2024-10-22 23:28:41 -07:00
Timothy J. Baek 75980010a9 refac: styling 2024-10-22 23:27:07 -07:00
Timothy J. Baek f6893edcc2 feat: leaderboard rating 2024-10-22 23:24:49 -07:00
Timothy J. Baek ce85400817 refac: feedback 2024-10-22 22:55:34 -07:00
Timothy J. Baek bc95e62600 feat: leaderboard 2024-10-22 20:14:10 -07:00
Timothy J. Baek 4c691c0edb refac: rich text input behaviour 2024-10-22 18:34:07 -07:00
Timothy J. Baekandsilentoplayz 5499b5acc8 enh: arena models toggle tooltip
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2024-10-22 18:28:08 -07:00
Timothy J. Baek 0a765744b8 refac 2024-10-22 18:12:08 -07:00
Timothy J. Baek 00e9362c2c enh: arena model rate to reveal 2024-10-22 18:05:30 -07:00
Timothy J. Baek 6d52f913d2 enh: arena model send selected model id 2024-10-22 17:43:39 -07:00
Timothy J. Baek 2d99f275a3 refac: multi response scroll behaviour 2024-10-22 17:34:53 -07:00
Timothy Jaeryang Baek 170ec2f9d0 Merge pull request #6339 from Cyb4Black/fix-not-rely-on-id-token-for-user-info
fix: get userinfo from endpoint, not only from token
2024-10-22 13:36:30 -07:00
Willnow, Patrick 1b5ac834ef fix: get userinfo from endpoint, not only from token
as was suggested by @alvarolopez in #6262
2024-10-22 21:55:12 +02:00
Timothy Jaeryang Baek c57ef980fb Merge pull request #6337 from open-webui/dependabot/npm_and_yarn/npm_and_yarn-dd9e89fd33
build(deps): bump mermaid from 10.9.1 to 10.9.3 in the npm_and_yarn group across 1 directory
2024-10-22 12:30:31 -07:00
Timothy J. Baek 04b324996c fix 2024-10-22 12:05:48 -07:00
Timothy J. Baek b31d314638 refac 2024-10-22 12:04:45 -07:00
Timothy J. Baek 424062d75f fix: emoji generation 2024-10-22 11:23:38 -07:00
dependabot[bot] 00b2038efb build(deps): bump mermaid in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [mermaid](https://github.com/mermaid-js/mermaid).


Updates `mermaid` from 10.9.1 to 10.9.3
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/mermaid-js/mermaid/compare/v10.9.1...v10.9.3)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-22 18:23:33 +00:00
Timothy J. Baek 24e7ae8767 refac: multi response styling 2024-10-22 03:46:24 -07:00
Timothy J. Baek 8d38af8ddd refac 2024-10-22 03:44:54 -07:00
Timothy J. Baek a0692a434d refac 2024-10-22 03:40:03 -07:00
Timothy J. Baek a89d29db9c fix 2024-10-22 03:38:28 -07:00
Timothy Jaeryang Baek b759f488b4 Merge pull request #6324 from RocketRider/patch-2
feat: Allow URL in citations to be different from the displayed name
2024-10-22 03:27:49 -07:00
Timothy Jaeryang Baek 645657e307 Merge pull request #6327 from aleixdorca/dev
i18n: Update catalan translation.json
2024-10-22 03:27:23 -07:00
Timothy J. Baek 3c8944cb12 refac 2024-10-22 03:22:45 -07:00
Timothy J. Baek 9f285fb2fb feat: arena models 2024-10-22 03:16:48 -07:00
MadsLang 8497db9f43 added Danish language 2024-10-22 11:57:28 +02:00
Aleix Dorca ac09d59a3f Update translation.json 2024-10-22 11:17:06 +02:00
Timothy J. Baek ee16177924 refac: playground styling 2024-10-21 21:50:34 -07:00
Michael Möbius 9153525c84 use url if available as document link 2024-10-22 06:35:01 +02:00
Timothy J. Baek a7aa669038 refac: styling 2024-10-21 21:32:45 -07:00
Michael Möbius 41bd16acbe don't overwrite name, keep url separate 2024-10-22 06:32:08 +02:00
Timothy J. Baek ae44445464 refac: styling 2024-10-21 16:10:29 -07:00
Timothy J. Baek 09f7cdc272 fix 2024-10-21 15:43:15 -07:00
Timothy J. Baek b11c48ac16 refac: playground 2024-10-21 15:37:50 -07:00
Timothy J. Baek e0b7d95429 refac 2024-10-21 15:30:30 -07:00
Timothy J. Baek c03cccfd14 refac: playground 2024-10-21 15:24:59 -07:00
Timothy Jaeryang Baek 39e3afd55d Merge pull request #6309 from OriginalSimon/dev
18n: Update Ukrainian translation
2024-10-21 13:58:59 -07:00
Timothy J. Baek fc71f441c4 refac 2024-10-21 13:45:28 -07:00
Simon 117bdfcb70 Update translation.json 2024-10-21 15:02:14 +02:00
Timothy J. Baek 3dd10f2ca0 refac: playground 2024-10-21 05:09:28 -07:00
Timothy J. Baek e2d4a69750 refac: title generation 2024-10-21 04:24:17 -07:00
Timothy J. Baek 24885a2e38 refac 2024-10-21 04:14:49 -07:00
Timothy J. Baek b4e73c7f19 refac: convert_payload_openai_to_ollama 2024-10-21 04:10:28 -07:00
Timothy J. Baek f99facf383 fix: message input issue 2024-10-21 03:17:30 -07:00
Timothy J. Baek d105be9ca2 refac: styling 2024-10-21 02:02:33 -07:00
Timothy J. Baek e1baa9cc3f refac 2024-10-21 02:00:22 -07:00
Timothy J. Baek ec17bbc867 refac: styling 2024-10-21 01:57:19 -07:00
Timothy J. Baek f1b0d7eb41 refac: styling 2024-10-21 01:54:43 -07:00
Timothy J. Baek fc6dc43a19 refac: tagging behaviour 2024-10-21 01:30:22 -07:00
Timothy J. Baek 8d71323009 refac: model workspace styling 2024-10-21 00:50:08 -07:00
Timothy J. Baek ded22b3204 refac: do not check for empty keys 2024-10-21 00:40:01 -07:00
Timothy J. Baek e3b1b717be refac: styling 2024-10-21 00:35:51 -07:00
Timothy J. Baek 2bb82f258a refac: styling 2024-10-21 00:33:21 -07:00
Timothy J. Baek 6cb41a38a6 enh: option to disable update toast 2024-10-21 00:30:29 -07:00
Timothy J. Baek 47e377967e refac: styling 2024-10-21 00:05:27 -07:00
Timothy J. Baek f27c0f7dcf refac: styling 2024-10-20 23:53:36 -07:00
Timothy J. Baek cd8271eb95 fix 2024-10-20 23:48:28 -07:00
Timothy J. Baek e43e91edd3 refac 2024-10-20 23:45:15 -07:00
Timothy J. Baek 7984980619 feat: s3 support 2024-10-20 23:38:26 -07:00
Timothy J. Baekandssnnow cb86e09005 feat: s3 support (cherry-picked from #6117)
Co-Authored-By: ssnnow <ssnnow@gmail.com>
2024-10-20 22:53:45 -07:00
Timothy J. Baek 822024f44e refac: artifacts panel behaviour 2024-10-20 22:04:21 -07:00
Timothy J. Baek f02ef01e0c refac: wording 2024-10-20 21:43:19 -07:00
Timothy J. Baek d5c1c2f0a7 enh: faster whisper custom model support 2024-10-20 21:34:36 -07:00
Timothy J. Baek 145a7bbda5 refac: wording 2024-10-20 20:43:10 -07:00
Timothy Jaeryang Baek de1e29eed0 Merge pull request #6109 from JoeyShapiro/dev
fix: disallow empty files
2024-10-20 20:41:56 -07:00
Timothy J. Baek 438b277be0 refac: styling 2024-10-20 19:04:30 -07:00
Timothy J. Baek 2f5c65bd1f refac: styling 2024-10-20 18:54:08 -07:00
Timothy J. Baek 4b357a7b62 refac: styling 2024-10-20 18:49:30 -07:00
Timothy J. Baek 3f598ee5c9 chore: format 2024-10-20 18:42:34 -07:00
Timothy Jaeryang Baek c023afac8c Merge pull request #6238 from Cyb4Black/dev
feat: oauth based role management
2024-10-20 18:40:21 -07:00
Timothy J. Baek 9936583477 chore: format 2024-10-20 18:38:06 -07:00
Timothy Jaeryang Baek 768b7e139c Merge branch 'dev' into dev 2024-10-20 18:37:20 -07:00
Timothy J. Baek b529212a2d refac: styling 2024-10-20 18:35:19 -07:00
Timothy J. Baek b38ed4221a refac: styling 2024-10-20 18:31:24 -07:00
Timothy J. Baek 254c6ca709 refac: tools & functions styling 2024-10-20 18:24:50 -07:00
Timothy J. Baek e378f70f34 refac: tag restoration 2024-10-20 18:04:46 -07:00
Timothy J. Baek d23252b8a9 enh: restore tags from chat import 2024-10-20 18:02:41 -07:00
Timothy J. Baek 30eb43f5b8 fix 2024-10-20 17:50:30 -07:00
Timothy J. Baek 4d46bfe03b refac: file table migration 2024-10-20 17:45:37 -07:00
Timothy J. Baek c5787a2b55 refac: placeholder 2024-10-20 17:44:57 -07:00
Timothy J. Baek 67647c8747 refac 2024-10-20 14:45:47 -07:00
Patrick Willnow d14443a4ba Update Dockerfile
Removed as requested in PR
2024-10-20 14:44:31 +02:00
Timothy J. Baek da9a6c1078 refac: styling 2024-10-20 02:10:15 -07:00
Timothy J. Baek e8591b57b4 enh: allow file download from collection view 2024-10-20 01:58:27 -07:00
Timothy Jaeryang Baek 15cbb66e5e Merge pull request #6292 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-20 01:57:59 -07:00
Timothy J. Baek 05c18cd664 enh: voice input support for knowledge text content 2024-10-20 01:49:44 -07:00
Timothy J. Baek b9b670fcfb refac: styling 2024-10-20 01:24:31 -07:00
Timothy J. Baek a0b58e244e refac: styling 2024-10-20 01:22:20 -07:00
Timothy J. Baek 875e75b8c2 refac 2024-10-20 01:20:27 -07:00
KarlLee830 a850a60a23 i18n: Update Chinese translation 2024-10-20 16:14:15 +08:00
KarlLee830 8102bdbed1 i18n: Update Chinese translation 2024-10-20 16:12:27 +08:00
Timothy J. Baek 97b6fb4766 refac: styling 2024-10-20 00:56:01 -07:00
Timothy J. Baek 146a9d7f05 refac 2024-10-20 00:51:01 -07:00
Timothy J. Baek c5952d62ad refac 2024-10-20 00:47:43 -07:00
Timothy J. Baek a922f4b2e7 refac 2024-10-20 00:42:45 -07:00
Timothy J. Baek 03282da45c refac: collection styling 2024-10-20 00:36:43 -07:00
Timothy J. Baek e8c629a2e2 refac: styling 2024-10-19 23:17:47 -07:00
Timothy J. Baek e530914328 enh: custom tags generation prompt support 2024-10-19 21:27:10 -07:00
Timothy J. Baek 7476bcaa2b enh: filter by untagged chat 2024-10-19 21:16:59 -07:00
Timothy J. Baek 86999157de refac: disable 'none' tag 2024-10-19 21:04:56 -07:00
Timothy J. Baek 54b843c367 refac 2024-10-19 20:58:19 -07:00
Timothy J. Baek 8330fcdb5c refac 2024-10-19 20:47:30 -07:00
Timothy J. Baek d795940ced feat: chat auto tag 2024-10-19 20:34:17 -07:00
Timothy J. Baek 2db0f58dcb refac: user message edit 2024-10-19 18:42:26 -07:00
Timothy J. Baek 3069452210 refac 2024-10-19 17:55:57 -07:00
Timothy J. Baek 7ce51f2b4c refac 2024-10-19 17:49:28 -07:00
Timothy J. Baek 335b6b6c7a refac 2024-10-19 17:29:58 -07:00
Timothy J. Baek 953a8285f7 refac 2024-10-19 16:18:14 -07:00
Timothy J. Baek 73b33c3781 fix: rich text input width styling 2024-10-19 15:03:20 -07:00
Timothy J. Baek 60dd3230ae fix: rich input space behaviour 2024-10-19 14:56:30 -07:00
Timothy J. Baek 3436523b79 fix: input commands 2024-10-19 13:40:20 -07:00
Timothy J. Baek 211c41843c fix: sidebar search 2024-10-19 13:28:27 -07:00
Timothy J. Baek e252ca1dc4 refac: rich text input styling 2024-10-19 03:15:40 -07:00
Timothy J. Baek 6d25d23326 refac: styling 2024-10-19 03:04:12 -07:00
Timothy J. Baek 82edd0e3d9 refac: hide pipelines save button if not present 2024-10-19 02:53:50 -07:00
Timothy J. Baek f6e7af346e refac: unescape rich text input 2024-10-19 02:50:49 -07:00
Timothy J. Baek 7d322a7238 enh: folder export 2024-10-19 02:42:12 -07:00
Timothy J. Baek 3c1afa97af refac: styling 2024-10-19 02:23:10 -07:00
Timothy J. Baek 545f2a0fe2 enh: hide made by community 2024-10-19 02:12:34 -07:00
Timothy J. Baek e153108b51 refac 2024-10-19 01:45:17 -07:00
Timothy J. Baek 971e54d7b4 refac: selector styling 2024-10-19 01:44:45 -07:00
Timothy J. Baek c993cc5515 refac: styling 2024-10-19 01:42:07 -07:00
Timothy J. Baek fb84fc8e77 refac: selector styling 2024-10-19 01:34:03 -07:00
Timothy J. Baek ce917eba81 enh: model url search param 2024-10-19 01:30:49 -07:00
Timothy J. Baek 81f62d5bff refac 2024-10-19 01:07:30 -07:00
Timothy J. Baek 0556479cbe enh: ctrl+shift+delete chat delete support 2024-10-19 01:06:30 -07:00
Timothy J. Baek 99f70cac8b fix: model w/ custom name delete issue 2024-10-19 00:50:00 -07:00
Timothy J. Baek 94c4aa8ddb refac: styling 2024-10-19 00:48:16 -07:00
Timothy J. Baek ca6a624534 refac: styling 2024-10-19 00:45:29 -07:00
Timothy J. Baek 28d6425f87 refac: styling 2024-10-19 00:41:58 -07:00
Timothy J. Baek 6b43cc97d2 chore: format 2024-10-19 00:37:21 -07:00
Timothy J. Baek 6c0d3ce736 refac: tab text variable select 2024-10-19 00:23:59 -07:00
Timothy J. Baek 0107a70343 refac: styling 2024-10-18 23:54:41 -07:00
Timothy J. Baek f46b95300b feat: rich text input for chat 2024-10-18 23:54:35 -07:00
Timothy J. Baek 5e96922eba refac: styling 2024-10-18 22:56:04 -07:00
Timothy J. Baek a3728e6957 refac 2024-10-18 22:40:15 -07:00
Timothy J. Baek 353dc83542 enh: rich text input space behaviour 2024-10-18 22:16:18 -07:00
Timothy Jaeryang Baek 2fc8fa1869 Merge pull request #6274 from open-webui/main
dev
2024-10-18 21:33:54 -07:00
Timothy Jaeryang Baek c2d1a3164e Merge pull request #6261 from monotykamary/main
fix: default to False if stream is unavailable
2024-10-18 21:33:38 -07:00
Timothy J. Baek 79cb9383d9 refac 2024-10-18 21:30:55 -07:00
Timothy J. Baek 670441f548 feat: rich text input 2024-10-18 14:55:39 -07:00
Timothy J. Baek 988a5e2b8d refac: folder/pinned behaviour 2024-10-18 14:18:13 -07:00
Timothy J. Baek 8648a330f2 refac 2024-10-18 14:11:13 -07:00
Timothy J. Baek cad31f6f2b fix 2024-10-18 14:08:43 -07:00
Timothy Jaeryang Baek 8ce5c2eaf0 Merge pull request #6263 from aleixdorca/dev
i18n: Update catalan translation
2024-10-18 14:06:42 -07:00
Aleix Dorca 001788b6e4 Minor Update to translation.json 2024-10-18 12:35:38 +02:00
Aleix Dorca f0fbc586c8 Update catalan translation.json 2024-10-18 12:33:29 +02:00
Tom X Nguyen 11588af34c fix: default to False if stream is unavailable 2024-10-18 11:33:08 +07:00
Timothy J. Baek 2962aa9f06 fix 2024-10-17 20:29:31 -07:00
Timothy J. Baek f821de9470 enh: drag and drop import to folders 2024-10-17 20:13:28 -07:00
Timothy J. Baek 590dc0895f refac 2024-10-17 19:46:37 -07:00
Timothy J. Baek e6f4da2bfc refac 2024-10-17 19:45:18 -07:00
Timothy J. Baek c171e624eb enh: export chat from chat item 2024-10-17 19:30:20 -07:00
Timothy J. Baekandsilentoplayz b877bc0086 enh: folder delete confirmation
Co-Authored-By: silentoplayz <50341825+silentoplayz@users.noreply.github.com>
2024-10-17 19:19:26 -07:00
Timothy J. Baek 351c29917b refac 2024-10-17 19:09:01 -07:00
Timothy J. Baek 6e4820cad8 refac 2024-10-17 18:42:36 -07:00
Timothy J. Baek 7ffa3cb022 refac: folder deletion 2024-10-17 18:24:58 -07:00
Timothy J. Baek 42d048741c fix: disable file item click during upload 2024-10-17 18:15:59 -07:00
Timothy J. Baek dff9254e34 chore: format 2024-10-17 13:30:21 -07:00
Timothy Jaeryang Baek e6fea74b60 Merge pull request #5989 from jannikstdl/dev
enh: citations show relevance score - compact citation view
2024-10-17 13:26:20 -07:00
Timothy Jaeryang Baek c9c79852a5 Merge branch 'dev' into dev 2024-10-17 13:25:39 -07:00
Timothy J. Baek 186923210b refac: styling 2024-10-17 13:17:37 -07:00
Timothy J. Baek 6336d34b59 fix: web attachment issue 2024-10-17 13:08:10 -07:00
Timothy J. Baek f54ab7e551 fix 2024-10-17 00:55:53 -07:00
Timothy J. Baek 4dcbf1af07 enh: share rating to community 2024-10-17 00:51:46 -07:00
Timothy J. Baek 86adcf33b0 refac: styling 2024-10-17 00:33:53 -07:00
Timothy Jaeryang Baek 87d2738864 Merge pull request #6247 from open-webui/folders
feat: folders
2024-10-17 00:18:18 -07:00
Timothy J. Baek 3578c85e39 feat: folder menu 2024-10-17 00:17:50 -07:00
Timothy J. Baek b402061546 enh: open folder on drop 2024-10-16 23:50:06 -07:00
Timothy J. Baek d8b513023c feat: chat folder drag and drop support 2024-10-16 23:45:50 -07:00
Timothy J. Baek 36a541d6b0 enh: drag and drop folders 2024-10-16 23:06:53 -07:00
Timothy J. Baek d5bf32f240 enh: save isExpanded state 2024-10-16 22:58:28 -07:00
Timothy J. Baek e421be5759 refac: ui optimisation 2024-10-16 22:41:16 -07:00
Timothy J. Baek 29c39d44e1 fix: collapsible space toggle issue 2024-10-16 22:36:44 -07:00
Timothy J. Baek 7b97d7a718 enh: disable drag event listener if parent dragged 2024-10-16 22:04:21 -07:00
Timothy J. Baek 9df9f4a990 refac 2024-10-16 21:55:25 -07:00
Timothy J. Baek dea12360f4 refac: folder id -> uuid 2024-10-16 21:49:22 -07:00
Timothy J. Baek a942c30ca8 feat: folder ui 2024-10-16 21:05:03 -07:00
Timothy J. Baek ede71740d2 feat: folders table 2024-10-16 15:13:38 -07:00
Patrick Willnow 8e807bcf8a Merge branch 'open-webui:dev' into dev 2024-10-16 21:43:30 +02:00
Willnow, Patrick ea070e34f9 Remove pending from allowed roles 2024-10-16 21:41:47 +02:00
Timothy Jaeryang Baek de442792ca Merge pull request #6235 from tklk-forks/add-python-dep
chore: add googleapis-common-protos dep
2024-10-16 12:13:21 -07:00
Willnow, Patrick 9ad07ad0ce Add WEBUI_SESSION_COOKIE-settings missing from merge conflict 2024-10-16 20:30:35 +02:00
Willnow, Patrick b888ee17ff Merge branch 'main' into dev
# Conflicts:
#	backend/open_webui/main.py
2024-10-16 20:16:05 +02:00
techknowlogick e6802c7e98 chore: add googleapis-common-protos dep 2024-10-16 13:38:48 -04:00
Willnow, Patrick b1554be3f2 Fix imports 2024-10-16 16:58:03 +02:00
Willnow, Patrick 57d54160d3 Merge branch 'implement-oauth-role-management'
# Conflicts:
#	backend/open_webui/main.py
2024-10-16 16:54:43 +02:00
Willnow, Patrick 8eebd6bce1 Finish reorganizing oauth code 2024-10-16 16:32:57 +02:00
Timothy J. Baek c797c2e18b refac 2024-10-16 03:35:26 -07:00
Timothy J. Baek dedb26fd5c feat: folders db migration 2024-10-16 02:53:16 -07:00
Willnow, Patrick 08ff494754 WIP
- refactoring oauth functions to enable refresh functionality
2024-10-16 09:42:47 +02:00
Timothy J. Baek eef9045dcc chore: format 2024-10-15 09:22:03 -07:00
Timothy Jaeryang Baek 2f2af94d73 Merge pull request #6194 from OriginalSimon/dev
18n: Update Ukrainian translation
2024-10-15 09:17:41 -07:00
Simon 2af9727bd3 Merge branch 'open-webui:dev' into dev 2024-10-15 14:17:30 +02:00
Simon b5f46023d4 Update translation.json 2024-10-15 14:17:09 +02:00
Timothy J. Baek 0131afe667 refac: styling 2024-10-15 05:12:56 -07:00
Timothy J. Baek 69d0472898 refac: styling 2024-10-15 05:00:36 -07:00
Timothy J. Baek 86c961e342 fix 2024-10-15 03:30:02 -07:00
Timothy J. Baek bf0043881a refac 2024-10-15 03:11:03 -07:00
Timothy J. Baek 98ba3f8428 refac: styling 2024-10-15 03:02:56 -07:00
Timothy J. Baek 24f149f686 refac: pinned chat behaviour 2024-10-15 02:52:56 -07:00
Timothy J. Baek b4cd503a02 refac 2024-10-15 02:51:08 -07:00
Timothy J. Baek 97bb9d41a6 refac 2024-10-15 02:48:41 -07:00
Timothy J. Baek 2f4c04055c enh: drag and drop chat to pin 2024-10-15 02:12:39 -07:00
Timothy J. Baek b01f9e8ec3 refac: folder 2024-10-15 00:35:14 -07:00
Timothy J. Baek 73a251fc49 enh: drag ghost 2024-10-14 23:55:50 -07:00
Timothy J. Baek cf24a65caa fix: duplicate tags 2024-10-14 23:04:10 -07:00
Timothy J. Baek 9d2d53bfb5 fix 2024-10-14 22:59:17 -07:00
Timothy J. Baek 6703cacb99 fix: tag unarchive/archive issue 2024-10-14 22:57:11 -07:00
Timothy J. Baek d8a30bd6ae refac: sidebar tag add behaviour 2024-10-14 21:21:45 -07:00
Timothy J. Baek 4c7651c113 refac: pinned collapsible styling 2024-10-14 21:15:36 -07:00
Timothy J. Baek 2afc5f3339 refac 2024-10-14 21:10:04 -07:00
Timothy J. Baek 93dab86e8d refac: dragged overlay behaviour to only activate for files 2024-10-14 21:03:55 -07:00
Timothy J. Baek f8bb77324d refac: styling 2024-10-14 20:36:16 -07:00
Timothy J. Baek 29e8e2d938 refac: rating submit -> save 2024-10-14 20:35:06 -07:00
Timothy J. Baek 90b7754cd6 refac: collapsible pinned chat list 2024-10-14 19:33:32 -07:00
Timothy J. Baek bc75870289 fix: tag search 2024-10-14 19:02:08 -07:00
Timothy J. Baek effa77379e refac 2024-10-14 18:53:29 -07:00
Timothy J. Baek 8eb45acf10 refac 2024-10-14 18:47:41 -07:00
Timothy J. Baek 1db1ef7c26 refac: tag search 2024-10-14 17:31:52 -07:00
Timothy J. Baek 0b2c7046cd fix: archived chats 2024-10-14 15:29:43 -07:00
Timothy J. Baek 466eea1a4c fix: voice note mic not stopping issue 2024-10-14 14:53:01 -07:00
Timothy J. Baek f0179270e2 fix: tag migration 2024-10-14 13:45:09 -07:00
Timothy J. Baek 86bc3023b3 refac: styling 2024-10-14 12:52:20 -07:00
Timothy J. Baek 6f07afc79b refac: styling 2024-10-14 12:46:05 -07:00
Timothy Jaeryang Baek 7a0933a72f Merge pull request #6182 from aleixdorca/dev
i18n: Update catalan translation.json
2024-10-14 12:34:30 -07:00
Aleix Dorca c5921dea58 Update catalan translation.json 2024-10-14 11:38:33 +02:00
Jannik Streidl 79c834d0e4 fix: do not show relevances it you have mixed collections (cosine + l2) 2024-10-14 11:18:13 +02:00
Jannik Streidl 33c3dbd9fa fix 2024-10-14 10:37:54 +02:00
Jannik Streidl f0f4de59eb Merge branch 'upstream-dev' into dev 2024-10-14 09:50:40 +02:00
Timothy Jaeryang Baek 6233494ed1 Merge pull request #6179 from shirayu/fix_typos
fix: Fix typos
2024-10-14 00:29:59 -07:00
Timothy J. Baek dce91a8557 fix: custom model action button issue 2024-10-14 00:28:21 -07:00
Yuta Hayashibe 12516c8a45 fix: Fix typos 2024-10-14 16:22:07 +09:00
Timothy J. Baek 1294ba9d61 refac: styling 2024-10-13 23:53:53 -07:00
Timothy J. Baek ee079df8ed refac: code execution styling 2024-10-13 23:49:32 -07:00
Timothy J. Baek e0e249c1b9 refac: convention 2024-10-13 23:16:51 -07:00
Timothy J. Baek a4a5614de5 refac 2024-10-13 23:07:32 -07:00
Timothy J. Baek 55f14e37ea refac: code_execution.uuid -> id
convention
2024-10-13 23:04:04 -07:00
Timothy Jaeryang Baek adb1bfcaa8 Merge pull request #5955 from EtiennePerot/code-execution-message
feat: add code execution status to chat messages.
2024-10-13 22:58:59 -07:00
Timothy Jaeryang Baek 67885c71dc Merge pull request #6176 from luochen1990/feat-openai-model-list-timeout
add: OPENAI_MODEL_LIST_TIMEOUT
2024-10-13 22:56:59 -07:00
Timothy J. Baek ee8b8220f0 refac: OPENAI_MODEL_LIST_TIMEOUT -> AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST 2024-10-13 22:56:33 -07:00
LuoChen ebec6cd426 add: OPENAI_MODEL_LIST_TIMEOUT 2024-10-14 09:00:09 +08:00
Timothy J. Baek 6f3f5ff922 refac: styling 2024-10-13 04:36:27 -07:00
Timothy Jaeryang Baek 5c45643028 Merge pull request #6160 from shirayu/improve_translation_ja-JP
i18n: Update Japanese translation
2024-10-13 04:29:56 -07:00
Timothy J. Baek 586e005f0f enh: token text splitter support 2024-10-13 04:24:13 -07:00
Yuta Hayashibe 28892fe2d7 i18n: Update Japanese translation 2024-10-13 20:18:06 +09:00
Timothy J. Baek 8a0da6d376 enh: include file name to context 2024-10-13 03:58:51 -07:00
Timothy J. Baek 797afd0b72 fix: embedding metadata issue 2024-10-13 03:25:11 -07:00
Timothy J. Baek 92605fd59f refac 2024-10-13 03:16:18 -07:00
Timothy J. Baek 5ffd216fca refac 2024-10-13 03:02:02 -07:00
Timothy J. Baek dff3732fcd enh: tiktoken/token splitter support 2024-10-13 02:07:50 -07:00
Timothy J. Baek 8ae605ec4b fix: multi-user tags issue 2024-10-13 01:00:38 -07:00
Timothy J. Baek 5273dc4535 refac 2024-10-13 00:21:06 -07:00
Timothy J. Baek 112cbdccbb revert: pdf gen 2024-10-13 00:05:28 -07:00
Timothy J. Baek 5dc05eac67 chore: pyproject bump 2024-10-12 23:07:36 -07:00
Timothy Jaeryang Baek 9c1820f785 Merge pull request #6156 from noczero/add-pdf-generator
Feat: Enhance PDF Downloader to Export Chat
2024-10-12 22:46:50 -07:00
noczero c41261e72b feat: PDF generator to export chat 2024-10-13 11:20:09 +07:00
Timothy J. Baek bb97535cad refac: sentence transformers bump 2024-10-12 18:32:04 -07:00
Timothy J. Baek 333317a7ce refac: add embedding metadata 2024-10-12 18:30:21 -07:00
Etienne Perot 9fbff16a08 feat: add code execution status to chat messages.
This adds `code_executions` as an array of code execution statuses to
chat messages. The intent of this data is to be displayed in a similar
manner as citations: at the bottom of the message, with buttons that open
a modal for more info. However, code execution data doesn't fit well in
citation modals, because they fundamentally differ in their formatting.
Code execution status includes the code that was run (which benefits from
being syntax-highlighted), and the output and generated files. This
differs from citations which are just list of document names and links.

Additionally, code execution is a process, whereas citations are only
emitted once. This is why code execution data uses an ID-based approach,
where each code execution instance is identified by a unique ID and can
be updated by emitting a new `code_execution` message with the same ID.
This allows the code execution status to be updated as code runs.
2024-10-12 16:14:12 -07:00
Jannik Streidl f47c9c69e3 Merge branch 'upstream-dev' into dev 2024-10-12 15:18:59 +02:00
Jannik Streidl 0bebc898c8 finalizing fixes & additions 2024-10-12 15:18:56 +02:00
Jannik Streidl 9d4d96429f only show relevance pertentage score if distances are in cosinus silimarity range 2024-10-12 13:51:27 +02:00
Timothy J. Baek 5c48fce382 fix: async-timeout 2024-10-12 02:42:31 -07:00
Timothy J. Baek e576ddce67 enh: tooltip 2024-10-12 02:37:09 -07:00
Timothy J. Baek c5b670cccd refac: styling 2024-10-12 02:32:15 -07:00
Timothy J. Baek 5a96fcbeaf enh: enable selecting individual files from collection 2024-10-12 02:31:10 -07:00
Timothy J. Baek 0a08495fec refac: styling 2024-10-12 01:27:55 -07:00
Timothy J. Baek 5837dcbfd4 refac: chat controls resize behaviour 2024-10-12 01:10:10 -07:00
Timothy J. Baek 11d7aec61d fix 2024-10-11 16:21:56 -07:00
Timothy J. Baek 30d3d28b9f refac 2024-10-11 15:37:46 -07:00
Timothy J. Baek 1cad157071 fix 2024-10-11 15:29:58 -07:00
Timothy J. Baek 428fd202c5 fix: custom comfyui prompt issue 2024-10-11 13:11:17 -07:00
Timothy Jaeryang Baek db35ea0ae1 Merge pull request #6129 from open-webui/main
refac
2024-10-11 12:11:47 -07:00
Willnow, Patrick 1c5b6987e2 add missing env mapping 2024-10-11 14:08:11 +02:00
Timothy J. Baek 5867ebb1ee refac 2024-10-11 00:28:26 -07:00
Timothy Jaeryang Baek 11afce7895 Merge pull request #6112 from djismgaming/dev
**i18n** Spanish translation update
2024-10-11 00:14:23 -07:00
Timothy J. Baek 63d297756a enh: mermaid copy content button 2024-10-11 00:10:00 -07:00
Timothy J. Baek ba2df1c33a refac 2024-10-11 00:00:13 -07:00
Timothy J. Baek 9658c2559a refac 2024-10-10 23:43:08 -07:00
Timothy J. Baek acb5dcf30a refac: tags 2024-10-10 23:22:53 -07:00
Ismael 7f586f1c3d Added missing new lines on two other translations (non-Spanish) to fix some Format & Build Frontend action issues for them. 2024-10-10 22:25:56 -04:00
Ismael b2c492ce1f Spanish translation update
Updated the new keys added and some minor fixes based on text context.
2024-10-10 21:58:11 -04:00
Timothy Jaeryang Baek 4adc57fd34 Merge pull request #6104 from Peter-De-Ath/hotfix/ollama-embed
fix: ollama embed support list[str] or str on input
2024-10-10 15:10:39 -07:00
Peter De-Ath c748d33192 support list[str] | str as input 2024-10-10 22:41:57 +01:00
Willnow, Patrick edc15d0d7c rewrite oauth role management logic to allow any custom roles to be used for oauth role to open webui role mapping 2024-10-10 23:00:05 +02:00
JoeyShapiro df824db042 fix: disallow empty files 2024-10-10 15:33:27 -05:00
Timothy J. Baek e8babe62bc refac 2024-10-10 12:51:00 -07:00
Jannik Streidl 741230bcdb fix 2024-10-10 17:20:50 +02:00
Jannik Streidl 89c77f05a8 chromadb switch to cosine similarity 2024-10-10 16:46:14 +02:00
Timothy J. Baek ad31bd51fd refac 2024-10-09 12:36:52 -07:00
Timothy Jaeryang Baek 7e253df175 Merge pull request #6054 from jeeteshchel/bugfix/secure-cookie
fix: set token cookie secure and samesite per config
2024-10-09 12:15:19 -07:00
Timothy Jaeryang Baek d7a71f3b34 Merge pull request #6050 from RobinBially/main
feat: add qdrant vector db connector
2024-10-09 12:12:48 -07:00
Timothy Jaeryang Baek 36c9371227 Merge pull request #6062 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-09 12:11:15 -07:00
Timothy J. Baek c157004e07 refac 2024-10-09 12:05:16 -07:00
Timothy J. Baek 451f1bae15 refac: embeddings function 2024-10-09 11:41:35 -07:00
Robin Bially 34150fc3ed add NO_LIMIT var 2024-10-09 18:34:04 +02:00
Robin Bially 54dc94317c improvements 2024-10-09 18:29:14 +02:00
KarlLee830 ce5143c535 i18n: Update Chinese translation 2024-10-09 23:14:14 +08:00
Jeetesh Chellani a2e889c8bb fix: set oauth token secure and samesite per config 2024-10-09 14:50:48 +03:00
Robin Bially 2c59f2dcaf fix critical bug 2024-10-09 13:23:04 +02:00
Robin Bially b56f77ed47 improvements 2024-10-09 13:10:23 +02:00
Robin Bially b185524a8c Merge branch 'open-webui:main' into main 2024-10-09 12:52:13 +02:00
Robin Bially 878a570a2c add qdrant as vector db 2024-10-09 12:51:43 +02:00
Timothy J. Baek b38e2fab32 enh: drag and drop chat exports 2024-10-09 00:13:54 -07:00
Timothy J. Baek 3516eea189 refac 2024-10-08 23:57:36 -07:00
Timothy J. Baek a3f2b7045c refac: dropzone body -> chat-container 2024-10-08 23:55:38 -07:00
Timothy J. Baek 37fdb0ea2e refac: move search to backend 2024-10-08 23:37:37 -07:00
Timothy J. Baek e66619262a refac 2024-10-08 22:34:17 -07:00
Timothy J. Baek d7a00af576 refac: convert chat.chat to json data type 2024-10-08 22:02:48 -07:00
Timothy Jaeryang Baek a04f22d55f Merge pull request #6044 from open-webui/main
dev
2024-10-08 20:30:00 -07:00
Timothy J. Baek caeca9d300 refac: styling 2024-10-08 20:29:33 -07:00
Timothy J. Baek 0da0e12096 refac: file download 2024-10-08 20:16:17 -07:00
Timothy J. Baek d48f54f7b2 enh: show both model id and hash 2024-10-08 19:32:53 -07:00
Timothy J. Baek 3391a855f0 fix 2024-10-08 17:03:42 -07:00
Timothy J. Baek a4870f4c91 fix 2024-10-08 16:35:21 -07:00
Timothy J. BaekandThomas Nordentoft 7f37b9340d enh: artifacts, overview back button
Co-Authored-By: Thomas Nordentoft <60035638+nordwestt@users.noreply.github.com>
2024-10-08 15:35:35 -07:00
Timothy Jaeryang Baek 187ea38beb Merge pull request #6020 from PeterDaveHello/Update-locale-zh-TW
i18n: Update and improve zh-TW Traditional Chinese translation
2024-10-08 15:21:20 -07:00
Timothy J. Baek 07a556df55 refac: landing page styling 2024-10-08 13:45:34 -07:00
Timothy J. Baek 0feaf6f649 refac 2024-10-08 13:39:27 -07:00
Timothy J. Baek 595cf191fb chore: rm documents 2024-10-08 13:38:16 -07:00
Timothy J. Baek dcab991d44 fix: model dump issue 2024-10-08 11:05:57 -07:00
Timothy J. Baek 457360dae7 refac 2024-10-07 22:53:36 -07:00
Timothy J. Baek 9bd5567552 enh: 'execute' event type 2024-10-07 22:50:57 -07:00
Timothy Jaeryang Baek d2a1f4a93d Merge pull request #6005 from Kazu-zamasu/dev
Up to date ja-JP translation.
2024-10-07 22:46:27 -07:00
Kazumichi Aoki 69bf610b17 Up to date ja-JP translation. 2024-10-08 14:42:04 +09:00
Timothy Jaeryang Baek 89a29653b8 Merge pull request #6003 from saravanan30erd/dev
add offline_mode and disable version check
2024-10-07 22:18:07 -07:00
Timothy J. Baek 345090c769 chore: i18n 2024-10-07 22:14:37 -07:00
Saravanan Palanisamy 16dd352524 add offline_mode and disable version check 2024-10-08 09:13:49 +04:00
Timothy J. Baek 8c677ff7a1 chore: i18n 2024-10-07 22:13:45 -07:00
Timothy Jaeryang Baek 929e665c5e Merge pull request #5998 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-07 20:14:45 -07:00
Karl Lee 4d45083b5d i18n: Update Chinese translation 2024-10-08 10:39:45 +08:00
Karl Lee 3b88ba8812 i18n: Update Chinese translation 2024-10-08 10:36:39 +08:00
Timothy J. BaekandMoguiy 133ff406d7 i18n: french update
Co-Authored-By: Moguiy <101116631+moblangeois@users.noreply.github.com>
2024-10-07 18:33:14 -07:00
Timothy Jaeryang Baek d05c2f56ea Merge pull request #4715 from Peter-De-Ath/ollama-batch-embeddings
feat: support ollama batch processing embeddings
2024-10-07 18:32:08 -07:00
Timothy J. Baek 3c5b216612 fix 2024-10-07 18:26:03 -07:00
Timothy J. Baek f099b277c8 enh: youtube watch param support 2024-10-07 18:19:13 -07:00
Timothy J. Baek e7ae9a2107 refac 2024-10-07 17:39:06 -07:00
Peter De-Ath b242460874 formatting 2024-10-08 00:04:35 +01:00
Peter De-Ath 3fcdca2f28 backwards comp: use RAG_EMBEDDING_OPENAI_BATCH_SIZE 2024-10-08 00:04:35 +01:00
Peter De-Ath 885b9f1ece refactor: Update GenerateEmbeddingsForm to support batch processing
refactor: Update embedding batch size handling in RAG configuration

refactor: add query_doc query caching

refactor: update logging statements in generate_chat_completion function

change embedding_batch_size to Optional
2024-10-08 00:04:35 +01:00
Timothy J. Baek 09f34a7561 refac 2024-10-07 14:57:56 -07:00
Timothy J. Baek cf544b9e60 refac: styling 2024-10-07 14:51:41 -07:00
Timothy J. Baek 5a78f1d915 refac: collection styling 2024-10-07 14:49:26 -07:00
Timothy J. Baek 854024cdf8 refac: show chat menu in temp chat 2024-10-07 14:28:28 -07:00
Timothy Jaeryang Baek fe872aa3fc Merge pull request #5963 from aleixdorca/dev
i18n: Update catalan translation.json
2024-10-07 14:07:26 -07:00
Timothy J. Baek d9ccef8150 refac 2024-10-07 14:05:45 -07:00
Timothy J. Baek 958d882ff9 refac: knowledge file handling ui behaviour 2024-10-07 14:04:06 -07:00
Timothy J. Baek 48e7f47558 refac 2024-10-07 14:03:42 -07:00
Jannik Streidl 73c291193b fix: do not toggle collapsible if you click on a citation 2024-10-07 21:22:36 +02:00
Jannik Streidl 209948af6f styling 2024-10-07 21:15:10 +02:00
Jannik Streidl 9fc813cfa6 fix: only append if distances are available 2024-10-07 21:13:13 +02:00
Jannik Streidl b105efa05f enh: append citations with distance scores 2024-10-07 21:11:04 +02:00
Jannik Streidl 86caca495b enh: show source documents vector distance + cleaner source view 2024-10-07 21:04:06 +02:00
Peter Dave Hello 4eb47716e2 i18n: Update and improve zh-TW Traditional Chinese translation 2024-10-08 01:51:50 +08:00
Timothy Jaeryang Baek 3f892583c3 Merge pull request #5965 from open-webui/dev
fix: update info toast dismiss issue
2024-10-07 08:42:55 +02:00
Timothy J. Baek ed9fbe153b fix: update info toast dismiss issue 2024-10-06 23:41:50 -07:00
Aleix Dorca d255f5cf8d Update catalan translation.json 2024-10-07 08:20:36 +02:00
Timothy Jaeryang Baek ad7bc624c2 Merge pull request #5961 from open-webui/dev
refac: floating buttons
2024-10-07 07:55:39 +02:00
Timothy J. Baek 6e8e0454e4 refac: floating buttons 2024-10-06 22:55:10 -07:00
Timothy Jaeryang Baek 7cebcf064a Merge pull request #5958 from open-webui/dev
refac: floating buttons behaviour
2024-10-07 07:10:54 +02:00
Timothy J. Baek 1fc1bf5f0d refac: floating buttons behaviour 2024-10-06 22:09:58 -07:00
Timothy Jaeryang Baek bc29d5d3c3 Merge pull request #5956 from open-webui/dev
0.3.32
2024-10-07 07:06:48 +02:00
Timothy J. Baek fe18aebdd9 doc: changelog 2024-10-06 22:06:24 -07:00
Timothy J. Baek 57df49274c refac: tools url param handling 2024-10-06 22:00:23 -07:00
Timothy J. Baek 9193c9bd7d refac: update info url 2024-10-06 21:52:13 -07:00
Timothy J. Baek 656e75372c enh: workspace models, prompts, tools, functions count 2024-10-06 21:51:03 -07:00
Timothy J. Baek 6f9080dfe0 fix: call mode not working in landing page 2024-10-06 21:42:47 -07:00
Timothy J. Baek 86f822fd9a chore: pyproject bumps 2024-10-06 21:06:47 -07:00
Timothy Jaeryang Baek 8b3972c6df Merge pull request #5954 from open-webui/dev
refac: url param tool_ids -> tools/tool-ids
2024-10-07 05:43:56 +02:00
Timothy J. Baek 58ca5e42c2 refac: url param tool_ids -> tools/tool-ids 2024-10-06 20:41:56 -07:00
Timothy Jaeryang Baek cd62d89dd9 Merge pull request #5953 from open-webui/dev
enh: floating buttons styling
2024-10-07 05:31:44 +02:00
Timothy J. Baek 3686cf7365 enh: esc to close floating buttons 2024-10-06 20:29:30 -07:00
Timothy J. Baek aaa4350eb4 refac: floating buttons styling 2024-10-06 20:26:35 -07:00
Timothy Jaeryang Baek 2113c2f57f Merge pull request #5952 from open-webui/dev
fix: web, youtube attachment issue
2024-10-07 04:44:45 +02:00
Timothy J. Baek ee22ba9676 fix: web, youtube attachment issue 2024-10-06 19:44:02 -07:00
Timothy Jaeryang Baek 466974f344 Merge pull request #5950 from open-webui/dev
refac: styling
2024-10-07 04:09:51 +02:00
Timothy J. Baek 95616e92d7 refac: styling 2024-10-06 19:09:27 -07:00
Timothy Jaeryang Baek c8c41e07e9 Merge pull request #5744 from open-webui/dev
0.3.31
2024-10-07 03:50:06 +02:00
Timothy J. Baek d195b83c9e doc: changelog 2024-10-06 18:48:56 -07:00
Timothy J. Baek 0bff6d38ee doc: changelog 2024-10-06 18:35:04 -07:00
Timothy J. Baek b0bf6b5d31 doc: changelog 2024-10-06 18:29:57 -07:00
Timothy J. Baek 7abdf8e342 refac: wording 2024-10-06 18:28:41 -07:00
Timothy J. Baek cfb7357103 doc: changelog 2024-10-06 18:27:49 -07:00
Timothy J. Baek 05c15b017d fix: milvus 2024-10-06 17:58:09 -07:00
Timothy J. Baek c8e609c3d1 chore: format 2024-10-06 16:51:07 -07:00
Timothy J. Baek 4623fdfce2 refac: styling 2024-10-06 16:40:27 -07:00
Timothy J. Baek 1c1e6a7172 refac 2024-10-06 16:39:46 -07:00
Timothy J. Baek 297835628a refac 2024-10-06 16:32:44 -07:00
Timothy J. Baek 7b6723a955 refac: styling 2024-10-06 16:22:19 -07:00
Timothy J. Baek a40eb87c31 refac: styling 2024-10-06 16:17:38 -07:00
Timothy J. Baek 53954e4c05 feat: ask floating button 2024-10-06 16:14:12 -07:00
Timothy J. Baek 50b1a3471c refac 2024-10-06 15:30:16 -07:00
Timothy J. Baek dc6e68bd60 refac 2024-10-06 15:27:19 -07:00
Timothy J. Baek da1e88a427 enh: __task_body__ param 2024-10-06 14:56:49 -07:00
Timothy J. Baek d23f05fe0a refac 2024-10-06 14:52:12 -07:00
Timothy J. Baek 90effa925e fix 2024-10-06 13:14:35 -07:00
Timothy J. Baek 8a3c9b9a3e refac 2024-10-06 13:07:41 -07:00
Timothy J. Baek a7f543d737 refac 2024-10-06 13:00:53 -07:00
Timothy J. Baek 4b00036dbf refac: styling 2024-10-06 12:54:20 -07:00
Timothy J. Baek babfc97c90 enh: svg zoom pan 2024-10-06 12:51:29 -07:00
Timothy J. Baek 913620ff0c refac 2024-10-06 12:07:45 -07:00
Timothy J. Baek e6265897c8 refac: styling 2024-10-06 11:54:57 -07:00
Timothy J. Baek 91e1b548a9 refac: styling 2024-10-06 11:52:19 -07:00
Timothy J. Baek 8ad44cd690 enh: chat landing ui option 2024-10-06 11:45:13 -07:00
Timothy J. Baek 5f74cfaa51 enh: artifacts fullscreen 2024-10-06 11:26:02 -07:00
Timothy Jaeryang Baek 9ef3fb0bc7 Merge pull request #5940 from JEleniel/voice_i18n_sort
fix: sort the list of TTS voices and reformat the names
2024-10-06 20:12:47 +02:00
Timothy Jaeryang Baek 7d1890c7d1 Merge pull request #5938 from Nowheresly/fix5930
feat: db pool config #5935
2024-10-06 20:11:50 +02:00
JEleniel eb2aaea6cb fix, i18n - sort the list of TTS voices and reformat the names returned by the built in speech syntehsis 2024-10-06 12:56:30 -04:00
Sylvere Richard 9706b76b36 feat: db pool config #5935 2024-10-06 17:20:10 +02:00
Timothy J. Baek 059ac466e0 refac: styling 2024-10-06 02:49:16 -07:00
Timothy J. Baek 75780256d1 refac: styling 2024-10-06 02:04:41 -07:00
Timothy J. Baek b5efe15f73 refac 2024-10-06 01:58:33 -07:00
Timothy J. Baek be657f45e4 refac: styling 2024-10-06 01:50:06 -07:00
Timothy J. Baek f295e26f25 chore: bump 2024-10-06 01:39:22 -07:00
Timothy J. Baek 0591cd82d4 chore: format 2024-10-06 01:35:58 -07:00
Timothy J. Baek 70ca6527f6 enh: copy artifacts 2024-10-06 01:27:21 -07:00
Timothy J. Baek cdd024db81 refac: close artifacts if html codeblock is not found 2024-10-06 01:20:10 -07:00
Timothy J. Baek 3082d0de7a enh: apply edit to artifacts 2024-10-06 01:12:30 -07:00
Timothy J. Baek f5e10704c0 refac 2024-10-06 00:50:38 -07:00
Timothy J. Baek c90cd6019a refac 2024-10-06 00:46:43 -07:00
Timothy J. Baek c26d7ff463 refac 2024-10-06 00:42:24 -07:00
Timothy J. Baek b21af908a7 refac 2024-10-06 00:33:01 -07:00
Timothy J. Baek 097e90f1de refac 2024-10-06 00:30:50 -07:00
Timothy J. Baek ed47e24494 refac 2024-10-06 00:28:33 -07:00
Timothy J. Baek aeaf761ecd enh: automatic artifacts toggle 2024-10-06 00:14:05 -07:00
Timothy J. Baek 6d2eaaf602 refac 2024-10-06 00:09:37 -07:00
Timothy J. Baek 1815cfe99d refac 2024-10-06 00:03:58 -07:00
Timothy J. Baek 539e95a206 refac 2024-10-06 00:00:39 -07:00
Timothy J. BaekandAndrew Tait Gehrhardt de59ecf8a3 feat: artifacts
Co-Authored-By: Andrew Tait Gehrhardt <134739775+atgehrhardt@users.noreply.github.com>
2024-10-05 23:58:02 -07:00
Timothy J. Baek 2981212dfa refac 2024-10-05 23:55:44 -07:00
Timothy J. Baek 7ee07df26a refac 2024-10-05 22:23:06 -07:00
Timothy J. Baek 008febb6d7 refac: styling 2024-10-05 22:18:05 -07:00
Timothy J. Baek 6417ccef00 chore: format 2024-10-05 21:29:08 -07:00
Timothy J. Baek 198749aed1 refac: styling 2024-10-05 21:27:47 -07:00
Timothy J. Baek 46bd97c100 refac: styling 2024-10-05 21:25:04 -07:00
Timothy J. Baek 1086a0e662 refac: styling 2024-10-05 21:16:20 -07:00
Timothy J. Baek 9586749314 refac: styling 2024-10-05 21:14:35 -07:00
Timothy J. Baek 54552c3d13 refac 2024-10-05 21:02:37 -07:00
Timothy J. Baek ed337b94e1 refac: styling 2024-10-05 20:50:58 -07:00
Timothy J. Baek 0f287c8a09 enh: floating codeblock buttons 2024-10-05 20:48:55 -07:00
Timothy J. Baek dc2e75017d refac 2024-10-05 20:16:46 -07:00
Timothy J. Baek c3862bc387 refac: code rendering 2024-10-05 19:58:27 -07:00
Timothy J. Baek 6fdfa62845 refac 2024-10-05 19:53:19 -07:00
Timothy J. Baek e0fc3e89a7 refac: i18n 2024-10-05 19:42:04 -07:00
Timothy Jaeryang Baek ed5669410b Merge pull request #5927 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-06 04:38:24 +02:00
Timothy Jaeryang Baek 6d3d80b347 Merge pull request #5926 from Nowheresly/useNode22
Update to node 22
2024-10-06 04:37:42 +02:00
Karl Lee d84368a8f6 i18n: Update Chinese translation 2024-10-06 10:29:43 +08:00
Timothy J. Baek 5adf9ed445 refac 2024-10-05 19:03:39 -07:00
Timothy J. Baek 49e9275c5b refac: styling 2024-10-05 18:57:19 -07:00
Timothy J. Baek c746fd94cb refac 2024-10-05 18:43:17 -07:00
Timothy J. Baek 0bfe28711a enh: dark theme scrollbar 2024-10-05 18:28:40 -07:00
Timothy J. Baek c09e51c1bf fix: banner styling 2024-10-05 17:09:49 -07:00
Timothy J. Baek 3dd1d1bc4a fix 2024-10-05 17:05:26 -07:00
Timothy J. Baek a860e98ab9 refac: remember sidebar status 2024-10-05 17:00:56 -07:00
Timothy J. Baek ed1a2ab5e8 refac: explain button behaviour 2024-10-05 16:50:06 -07:00
Timothy J. Baek bbbd94f69c refac 2024-10-05 16:16:51 -07:00
Timothy J. Baek 2e067b0541 refac 2024-10-05 16:00:25 -07:00
Timothy J. Baek a0a79fbc5b refac: styling 2024-10-05 15:55:30 -07:00
Timothy J. Baek ecd6a135cd refac: styling 2024-10-05 15:47:51 -07:00
Timothy J. Baek 9c18cf204d refac 2024-10-05 15:10:55 -07:00
Timothy J. Baek a571ae4ec2 refac: only show resizer when controls is open 2024-10-05 14:54:15 -07:00
Timothy J. Baek 1558f64c48 refac: only show floating buttons when message.done 2024-10-05 14:51:28 -07:00
Timothy J. Baek 1739313c13 refac 2024-10-05 14:49:39 -07:00
Timothy J. Baek 1b8acc42b4 refac 2024-10-05 14:27:16 -07:00
Timothy J. Baek 1397bfa84c refac: navbar styling 2024-10-05 14:26:54 -07:00
Sylvere Richard c09af435ac WIP node 22
https://github.com/cypress-io/github-action/pull/1189
2024-10-05 22:39:24 +02:00
Timothy J. Baek f5004fd9d4 refac: styling 2024-10-05 13:26:52 -07:00
Timothy J. Baek fb58e842b7 refac: styling 2024-10-05 13:25:30 -07:00
Timothy Jaeryang Baek dcf8d9c7eb Merge pull request #5923 from Nowheresly/fixIntegTests
fix: fix cypress test on CI
2024-10-05 21:46:02 +02:00
Timothy Jaeryang Baek a61c54531c Merge pull request #5925 from Nowheresly/pythonActionUpd
Update to actions/setup-python@v5
2024-10-05 21:45:43 +02:00
Timothy J. Baek e184a65dea refac 2024-10-05 12:43:58 -07:00
Sylvere Richard fafeec3d86 Update to actions/setup-python@v5 2024-10-05 21:42:01 +02:00
Timothy J. Baek 55d0ecc879 refac 2024-10-05 12:41:18 -07:00
Timothy J. Baek 614f3d5f80 fix 2024-10-05 12:40:13 -07:00
Timothy J. Baek 46328333c7 refac 2024-10-05 12:38:44 -07:00
Sylvere Richard 582036fb3f fix: fix cypress test on CI 2024-10-05 21:38:20 +02:00
Timothy J. Baek 28602b12ea refac: dynamic lang support 2024-10-05 12:38:09 -07:00
Timothy J. Baek f5b6785e53 refac 2024-10-05 12:07:45 -07:00
Timothy J. Baek 81440460f2 feat: editable code block 2024-10-05 12:04:36 -07:00
Timothy Jaeryang Baek 82ac2e4edb Merge pull request #5920 from Nowheresly/baseImgDockerUpd
fix: ensure Dockerfile and github actions use the same nodejs version
2024-10-05 19:54:27 +02:00
Sylvere Richard fc44924256 fix: ensure Dockerfile and github actions use the same nodejs version 2024-10-05 19:48:56 +02:00
Timothy J. Baek 9ca2350a13 fix: call tts issue 2024-10-05 10:42:06 -07:00
Timothy J. Baek 12a6216477 refac: styling 2024-10-05 10:23:47 -07:00
Timothy J. Baek fb5fb27ebe fix 2024-10-05 10:20:11 -07:00
Timothy J. Baek cb0f759420 refac: knowledge collection uploading indicator 2024-10-05 10:18:43 -07:00
Timothy J. Baek 378223aedb refac: comments 2024-10-05 10:08:48 -07:00
Timothy J. Baek 61b147441c refac 2024-10-05 10:05:12 -07:00
Timothy J. Baek 1f9b5b6456 refac: retain metadata for collection 2024-10-05 09:58:46 -07:00
Timothy Jaeryang Baek 4ca870bf6d Merge pull request #5919 from Nowheresly/dockerwarn
refac: remove docker warnings during image build
2024-10-05 18:33:11 +02:00
Sylvere Richard 52a3ab5333 refac: remove docker warnings during image build 2024-10-05 12:30:47 +02:00
Timothy J. Baek ff22e2156d refac: styling 2024-10-05 03:29:55 -07:00
Timothy J. Baek e0c775f6e3 refac 2024-10-05 03:24:00 -07:00
Timothy J. Baek 7036166535 refac 2024-10-05 03:22:17 -07:00
Timothy J. Baek 2e231982a3 refac 2024-10-05 03:21:22 -07:00
Timothy J. Baek fe7e7abf15 refac 2024-10-05 03:19:55 -07:00
Timothy J. Baek 3e7a163660 refac: styling 2024-10-05 03:15:39 -07:00
Timothy J. Baek 0319e63999 enh: new landing page 2024-10-05 03:07:56 -07:00
Timothy J. Baek 0bd88090bb refac: DOCS_DIR deprecated 2024-10-05 01:45:22 -07:00
Timothy J. Baek ed3e1397ca refac 2024-10-05 01:40:10 -07:00
Timothy J. Baek 0ad35ffad9 feat: text select quick actions 2024-10-05 01:37:39 -07:00
Timothy J. Baek 1f488a0072 enh: sync confirm 2024-10-04 19:38:24 -07:00
Timothy J. Baek 493745a70b refac 2024-10-04 19:32:33 -07:00
Timothy J. Baek c400f40663 enh: knowledge search in model editor 2024-10-04 19:24:36 -07:00
Timothy J. Baek bc6113f4ba refac 2024-10-04 19:10:52 -07:00
Timothy J. Baek b6703be859 chore: format 2024-10-04 19:00:48 -07:00
Timothy Jaeryang Baek 62f30ce098 Merge pull request #5917 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-05 03:59:17 +02:00
Timothy J. Baek 9f812e7022 enh: support non chrome browsers 2024-10-04 18:54:40 -07:00
Timothy J. Baek a909aa1c20 enh: sync directory 2024-10-04 18:44:57 -07:00
Timothy J. Baek e3889522d6 refac 2024-10-04 18:28:48 -07:00
Timothy J. Baek 79c005a041 refac: deprecate docs_dir 2024-10-04 18:22:55 -07:00
Timothy J. Baek a6c797d4c2 refac: process docs dir 2024-10-04 17:22:00 -07:00
Karl Lee 0e50c8bb31 i18n: Update Chinese translation 2024-10-05 08:12:14 +08:00
Timothy J. Baek 9ad5ffb8c1 chore: endpoint naming 2024-10-04 17:03:56 -07:00
Timothy J. Baek f052010d8e refac 2024-10-04 16:58:45 -07:00
Timothy J. Baek ee6e41b144 refac: legacy support 2024-10-04 16:56:20 -07:00
Timothy J. Baek 2e267b420a fix: model knowledge 2024-10-04 16:53:25 -07:00
Timothy J. Baek 0c618b8145 refac: legacy detection 2024-10-04 16:43:41 -07:00
Timothy J. Baek 8f41db2f2e refac: styling 2024-10-04 16:43:25 -07:00
Timothy J. Baek a53537ccde fix: disable empty fields 2024-10-04 16:18:44 -07:00
Timothy J. Baek 5017ca90ff refac 2024-10-04 16:16:16 -07:00
Timothy J. Baek f3ee07a8a2 enh: knowledge collection search 2024-10-04 12:35:06 -07:00
Timothy Jaeryang Baek 263cc71dd3 Merge pull request #5913 from calvarez8922/fr-translation
i18n: fix fr year translation on date
2024-10-04 21:02:39 +02:00
Timothy J. Baek 8f5e426a13 enh: important note 2024-10-04 11:26:06 -07:00
Timothy Jaeryang Baek 87700d02a7 Merge pull request #5911 from aleixdorca/dev
i18n: Updated Catalan Translation
2024-10-04 20:18:47 +02:00
Timothy J. Baek 8f22e911e0 fix: empty knowledge delete issue 2024-10-04 11:11:53 -07:00
Aleix Dorca 1647cbef21 Update catalan translation.json 2024-10-04 15:06:06 +02:00
Aleix Dorca 528ac51ba9 Update translation.json 2024-10-04 15:00:49 +02:00
Willnow, Patrick f751d22a20 Refinement 2024-10-04 13:26:49 +02:00
Timothy J. Baek 650ca95784 fix 2024-10-04 01:21:33 -07:00
Patrick Willnow 6ddd8c7241 fix logic 2024-10-04 10:14:20 +02:00
Timothy J. Baek d1b8af6220 chore: format 2024-10-04 01:04:04 -07:00
Timothy Jaeryang Baek 332ef045ee Merge pull request #5870 from KarlLee830/translate
i18n: Update Chinese translation
2024-10-04 10:01:56 +02:00
Timothy Jaeryang Baek 0876c9b5ef Merge pull request #5829 from jannikstdl/query-embedding-perf-fix
fix:  performance issues on large collections
2024-10-04 10:01:17 +02:00
Timothy Jaeryang Baek ebc7da6f82 Merge pull request #5861 from open-webui/projects
feat: knowledge/projects
2024-10-04 10:00:47 +02:00
Timothy J. Baek 1fe1c27220 refac: legacy support 2024-10-04 00:59:19 -07:00
Timothy J. Baek 8013c152d0 feat: edit file content support 2024-10-04 00:46:32 -07:00
Timothy J. Baek 630a78cead fix 2024-10-04 00:24:51 -07:00
Timothy J. Baek 17c772831d refac 2024-10-04 00:23:14 -07:00
Timothy J. Baek 6147f41589 refac: styling 2024-10-03 23:45:20 -07:00
Timothy J. Baek 5e70afc054 refac: styling 2024-10-03 23:43:41 -07:00
Timothy J. Baek 75fae69def refac: styling 2024-10-03 23:41:17 -07:00
Timothy J. Baek 90ef9f751a fix 2024-10-03 23:32:20 -07:00
Timothy J. Baek 544251a7fd feat: add text content 2024-10-03 23:24:44 -07:00
Timothy J. Baek 05970157f6 refac 2024-10-03 23:06:47 -07:00
Timothy J. Baek d834bd2a18 refac 2024-10-03 22:35:43 -07:00
Timothy J. Baek e9b68524e8 refac 2024-10-03 22:24:05 -07:00
Timothy J. Baek b291271df3 refac 2024-10-03 22:22:22 -07:00
Timothy J. Baek 9dd76b72b4 refac: styling 2024-10-03 21:34:53 -07:00
Timothy J. Baek 12977e07f3 feat: collection file content editor 2024-10-03 21:31:42 -07:00
Timothy J. Baek 29467a7057 fix 2024-10-03 21:12:35 -07:00
Timothy J. Baek b862dff185 refac 2024-10-03 21:10:33 -07:00
Timothy J. Baek 6747478f67 refac 2024-10-03 21:05:55 -07:00
Timothy J. Baek 124a17e826 refac 2024-10-03 20:58:56 -07:00
Timothy J. Baek 57360b7a61 refac 2024-10-03 20:51:21 -07:00
jose.c.alvarez.diaz 2d40efe9d6 bug: fix fr year translation 2024-10-03 20:27:30 -06:00
Willnow, Patrick 79b9c8a677 handling no claim received when nested expected 2024-10-04 00:05:36 +02:00
Willnow, Patrick 8e4776ada1 add handling nested claims... 2024-10-03 23:25:00 +02:00
Willnow, Patrick 5b2e1ca7cd add more logging 2024-10-03 23:06:05 +02:00
Willnow, Patrick 0a7373dae1 add pending as role fallback
add logging to determine correct handling of oauth roles
2024-10-03 22:56:52 +02:00
Willnow, Patrick c9d948f284 Remove copy pasta error of calling value on bool 2024-10-03 21:38:56 +02:00
Willnow, Patrick dc92178641 Fix missing key mapping 2024-10-03 20:55:32 +02:00
Timothy J. Baek 2fc07fd6a2 enh: vector db hash collision check 2024-10-03 06:53:21 -07:00
Timothy J. Baek 78413d0c2e enh: add/remove file from knowledge 2024-10-03 06:46:20 -07:00
Timothy J. Baek 1c01e52f7c refac: fileItem styling 2024-10-03 06:45:29 -07:00
Timothy J. Baek 15a3c6b171 refac 2024-10-03 06:45:15 -07:00
Timothy J. Baek d394f8b7be enh: add to vector db support 2024-10-03 06:44:17 -07:00
Timothy J. Baek 325ca98773 enh: vector db delete filter support 2024-10-03 06:43:50 -07:00
Patrick Willnow 9a691c0387 Add oauth role mapping
also add node env to allow local build to succeed
2024-10-03 11:12:14 +02:00
Timothy J. Baek 351b1dbf31 refac 2024-10-02 21:14:58 -07:00
Timothy J. Baek a2eadb30f5 refac 2024-10-02 20:42:10 -07:00
Timothy Jaeryang Baek 2e7e346e19 Merge pull request #5871 from tcgumus/dev
fix: Unsupported JSON schema type {type_}
2024-10-03 05:07:30 +02:00
Timothy Jaeryang Baek 7c145ce5d5 Merge pull request #5879 from cheahjs/feat/arbitrary-usage-info
feat: show the user the entirety of the usage response
2024-10-03 05:06:56 +02:00
Timothy Jaeryang Baek f19b61307d Merge pull request #5878 from cheahjs/feat/lazy-load-new-imports-for-mem
perf: lazy load big dependencies to reduce min memory usage
2024-10-03 00:15:03 +02:00
Jun Siang Cheah a8ec73d01e feat: show the user the entirety of the usage response 2024-10-02 23:14:08 +01:00
Jun Siang Cheah 318f61161e refac: lazy load big dependencies to reduce min memory usage 2024-10-02 22:18:42 +01:00
Timothy J. Baek 1a26e67611 refac: styling 2024-10-02 07:44:07 -07:00
Timothy J. Baek 6974cb248c refac 2024-10-02 07:37:01 -07:00
Timothy J. Baek dd5da10d2a feat: knowledge page 2024-10-02 07:35:43 -07:00
Timothy J. Baek 9c4b55c86a refac: knowledge fuzzy search 2024-10-02 06:21:16 -07:00
Timothy J. Baek 4aca1e86ad refac 2024-10-02 06:19:09 -07:00
Tuna Çağlar Gümüş b2f09e4623 Merge pull request #1 from tcgumus/dev-fix-unsupported-json-error
fix: Unsupported JSON schema type {type_}
2024-10-02 15:40:22 +03:00
t bdb2ce9448 fix: Unsupported JSON schema type {type_} 2024-10-02 15:34:48 +03:00
Karl Lee 973c08babd i18n: Update Chinese translation 2024-10-02 17:51:45 +08:00
Timothy J. Baek 7f51ef1838 refac 2024-10-01 23:21:33 -07:00
Timothy J. Baek 08969ecf89 refac: rename projects -> knowledge 2024-10-01 22:45:04 -07:00
Timothy J. Baek 3e012f0219 refac 2024-10-01 21:48:15 -07:00
Timothy J. Baek 5933d7a216 enh: sort by descending order 2024-10-01 21:35:18 -07:00
Timothy J. Baek 1b7d363d32 refac 2024-10-01 21:32:59 -07:00
Timothy J. Baek c2732a0990 refac 2024-10-01 17:46:56 -07:00
Timothy J. Baek c5eb0a9732 refac: documents -> projects 2024-10-01 17:35:35 -07:00
Timothy J. Baek bf57dd808e feat: project migration 2024-10-01 17:35:10 -07:00
Timothy Jaeryang Baek d353ea449a Merge pull request #5864 from sebdanielsson/remove-bun
build: Remove bun
2024-10-02 00:42:50 +02:00
Sebastian c85cdbde46 Delete bun.lockb 2024-10-02 00:00:46 +02:00
Timothy J. Baek fb083237cd refac 2024-10-01 14:00:19 -07:00
Timothy J. Baek a0fb4a9b84 refac 2024-10-01 13:13:39 -07:00
Timothy J. Baek 5c9dd25459 refac: files migration 2024-10-01 11:01:26 -07:00
Timothy J. Baek 0907c32e10 refac 2024-10-01 09:51:58 -07:00
Timothy J. Baek 4752df9bd8 refac 2024-10-01 09:40:08 -07:00
Timothy J. Baek 7b9b29253f Merge branch 'dev' of https://github.com/open-webui/open-webui into dev 2024-10-01 09:18:15 -07:00
Timothy Jaeryang Baek 126aff7a7d Merge pull request #5839 from open-webui/dependabot/pip/backend/dev/langchain-chroma-0.1.4
chore(deps): bump langchain-chroma from 0.1.2 to 0.1.4 in /backend
2024-10-01 17:58:14 +02:00
Timothy Jaeryang Baek 6ca1de3601 Merge pull request #5838 from open-webui/dependabot/pip/backend/dev/duckduckgo-search-approx-eq-6.2.13
chore(deps): update duckduckgo-search requirement from ~=6.2.11 to ~=6.2.13 in /backend
2024-10-01 17:57:59 +02:00
Timothy Jaeryang Baek fb8af637e1 Merge pull request #5837 from open-webui/dependabot/pip/backend/dev/aiohttp-3.10.8
chore(deps): bump aiohttp from 3.10.5 to 3.10.8 in /backend
2024-10-01 17:57:51 +02:00
Timothy Jaeryang Baek ab983887cc Merge pull request #5836 from open-webui/dependabot/pip/backend/dev/pandas-2.2.3
chore(deps): bump pandas from 2.2.2 to 2.2.3 in /backend
2024-10-01 17:57:40 +02:00
Timothy Jaeryang Baek 75c1f47500 Merge pull request #5835 from open-webui/dependabot/pip/backend/dev/pydantic-2.9.2
chore(deps): bump pydantic from 2.8.2 to 2.9.2 in /backend
2024-10-01 17:57:29 +02:00
Timothy Jaeryang Baek 3da981d9cd Merge pull request #5831 from aindriu80/main
Added Irish language support
2024-10-01 17:57:11 +02:00
Timothy Jaeryang Baek 8a0e30a901 Merge pull request #5830 from FINNSEEFLY/task/adjust-ru-localization
i18n: Update ru-RU localization
2024-10-01 17:56:46 +02:00
dependabot[bot] 736cbb961f chore(deps): bump langchain-chroma from 0.1.2 to 0.1.4 in /backend
Bumps [langchain-chroma](https://github.com/langchain-ai/langchain) from 0.1.2 to 0.1.4.
- [Release notes](https://github.com/langchain-ai/langchain/releases)
- [Commits](https://github.com/langchain-ai/langchain/compare/langchain-chroma==0.1.2...langchain-chroma==0.1.4)

---
updated-dependencies:
- dependency-name: langchain-chroma
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 02:22:25 +00:00
dependabot[bot] 8d8c2752dc chore(deps): update duckduckgo-search requirement in /backend
Updates the requirements on [duckduckgo-search](https://github.com/deedy5/duckduckgo_search) to permit the latest version.
- [Release notes](https://github.com/deedy5/duckduckgo_search/releases)
- [Commits](https://github.com/deedy5/duckduckgo_search/compare/v6.2.12...v6.2.13)

---
updated-dependencies:
- dependency-name: duckduckgo-search
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 02:22:21 +00:00
dependabot[bot] d78a7d431d chore(deps): bump aiohttp from 3.10.5 to 3.10.8 in /backend
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.5 to 3.10.8.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.5...v3.10.8)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 02:22:18 +00:00
dependabot[bot] 91ca5c424b chore(deps): bump pandas from 2.2.2 to 2.2.3 in /backend
Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v2.2.2...v2.2.3)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 02:22:08 +00:00
dependabot[bot] 7e1c55d2ed chore(deps): bump pydantic from 2.8.2 to 2.9.2 in /backend
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.8.2 to 2.9.2.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.2)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 02:22:04 +00:00
Aindriú Mac Giolla Eoin 3a2c241450 Added Irish language support 2024-09-30 17:47:01 +01:00
FINNSEEFLY 13b6b43cea Adjust ru-RU localization 2024-09-30 18:36:02 +03:00
Timothy J. Baek c7a0e45bea refac 2024-09-30 16:32:38 +02:00
Jannik Streidl 6bff5a4d09 fix: do not embed the query every single time 2024-09-30 16:18:02 +02:00
Timothy J. Baek 37e0d47082 refac 2024-09-30 13:13:19 +02:00
Timothy J. Baek e6b91036e1 refac 2024-09-30 13:12:41 +02:00
Timothy J. Baek 79a83adc89 refac 2024-09-30 13:03:47 +02:00
Timothy J. Baek ffd598c5d7 enh: summary tag support 2024-09-30 12:50:53 +02:00
Timothy Jaeryang Baek d255251e5f Merge pull request #5813 from res0Nanz/patch-1
feat: add `apple-touch-icon`
2024-09-30 12:17:06 +02:00
Eman Lear 49fe04a627 frontend: add apple-touch-icon
With `apple-touch-icon`, mobile devices of particular OS can properly show icon when bookmarking the web page as a home screen application.
2024-09-30 15:20:57 +08:00
Timothy J. Baek 21c919988d refac 2024-09-30 01:01:39 +02:00
Timothy J. Baek 1c4b6b9cd9 refac 2024-09-30 01:00:13 +02:00
Timothy J. Baek 3899405864 refac 2024-09-30 00:39:30 +02:00
Timothy J. Baek 209828c7c3 refac: styling 2024-09-30 00:37:31 +02:00
Timothy J. BaekandBeck Bekmyradov 7152af949b feat: compress audio
Co-Authored-By: Beck Bekmyradov <47065940+bekmuradov@users.noreply.github.com>
2024-09-30 00:30:12 +02:00
Timothy J. Baek 8206c47a47 refac 2024-09-29 23:20:37 +02:00
Timothy J. Baek f7aba20d79 refac 2024-09-29 23:11:22 +02:00
Timothy J. Baek 6afc686e17 refac 2024-09-29 23:08:55 +02:00
Timothy J. Baek 677c36c3aa refac 2024-09-29 22:55:53 +02:00
Timothy J. Baek 6d764ee55e feat: retrieval whole document mode 2024-09-29 22:52:27 +02:00
Timothy J. Baek 1d8b3b8c51 refac 2024-09-29 22:11:50 +02:00
Timothy J. Baek 92dd173b27 refac 2024-09-29 18:55:26 +02:00
Timothy J. Baek f2ec020b64 refac: styling 2024-09-29 18:41:27 +02:00
Timothy J. Baek d784d5c367 refac 2024-09-29 18:33:16 +02:00
Timothy J. Baek b3517c63e8 fix: multi model chat infinite loop issue 2024-09-29 18:29:50 +02:00
Timothy J. Baek 550075bba4 fix: action button not working 2024-09-29 18:24:44 +02:00
Timothy J. Baek c93a10388b refac 2024-09-28 19:51:28 +02:00
Timothy J. Baek 5a168ecc2a refac 2024-09-28 19:25:41 +02:00
Timothy J. Baek 276ce3374d refac 2024-09-28 19:17:21 +02:00
Timothy J. Baek e77c3ab043 refac 2024-09-28 19:16:52 +02:00
Timothy J. Baek d2e2e535dd refac 2024-09-28 10:55:52 +02:00
Timothy J. Baek 90ec458c4c enh: show extracted file content 2024-09-28 10:53:25 +02:00
Timothy Jaeryang Baek 9636913de0 Merge pull request #5777 from smonux/dev
Fix: sanitize function calling json
2024-09-28 10:07:52 +02:00
smonux e039b4ec54 Merge branch 'open-webui:dev' into dev 2024-09-28 06:01:26 +02:00
Timothy J. Baek 9d2ed3d2be refac 2024-09-28 02:56:56 +02:00
Timothy J. Baek b8b994a820 refac 2024-09-28 02:49:18 +02:00
Timothy J. Baek 00eb022450 refac 2024-09-28 02:38:59 +02:00
Timothy J. Baek 2428878f42 refac 2024-09-28 02:29:08 +02:00
Timothy J. Baek af57a2c153 refac 2024-09-28 02:23:09 +02:00
Timothy J. Baek 1b349016ff refac 2024-09-28 01:36:35 +02:00
Timothy J. Baek c1b4fbf5c2 refac 2024-09-28 01:35:52 +02:00
Timothy J. Baek a52e8cd537 refac 2024-09-28 01:35:31 +02:00
Timothy J. Baek 5b7cf88915 refac 2024-09-28 01:28:45 +02:00
Timothy J. Baek e1103305f5 refac: "rag" endpoints renamed to "retrieval" 2024-09-28 01:27:46 +02:00
Timothy Jaeryang Baek 6e9db3e3c8 Merge pull request #5773 from HaldiH/main
fix: Chat completion 401 when no Authorization header
2024-09-27 21:34:58 +02:00
Hugo Haldi eab30781e0 Chat completion 401 when no Authorization header
When we send a request to `/api/chat/completions` without the `Authorization` header, the server just crashes and creates a stack trace, returning "Internal Server Error" to the calling client. With this fix, the server sends a 401 to the client with the content `{"detail": "Not authenticated"}`.
2024-09-27 20:04:45 +02:00
Timothy Jaeryang Baek c30c876659 Merge pull request #5758 from kivvi3412/fix_o1_system_message
Fix: O1 does not support the system parameter
2024-09-27 19:44:16 +02:00
Timothy J. Baek 4ead3c5b80 chore: format 2024-09-27 19:43:40 +02:00
Timothy Jaeryang Baek f0f176b80f Merge pull request #5765 from aleixdorca/dev
Update catalan translation.json
2024-09-27 19:42:18 +02:00
kivvi 5b3ee30ca9 Merge remote-tracking branch 'origin/fix_o1_system_message' into fix_o1_system_message
# Conflicts:
#	backend/open_webui/apps/openai/main.py
2024-09-27 22:48:36 +08:00
kivvi e13614e11b Fix: O1 does not support the system parameter 2024-09-27 22:47:24 +08:00
Aleix Dorca 464b6a329e Update catalan translation.json 2024-09-27 16:11:52 +02:00
Timothy J. Baek 44d768ecf3 refac: do not wait for update check 2024-09-27 14:41:29 +02:00
Timothy J. Baek 0bd9d59c78 refac: update check timeout 2024-09-27 14:38:56 +02:00
kivvi be74a4c9c1 Fix: O1 does not support the system parameter 2024-09-27 20:18:13 +08:00
Timothy J. Baek 719f4da1dc fix: milvus collection creation issue 2024-09-26 22:59:09 +02:00
Timothy Jaeryang Baek fbc9634ffc Merge pull request #5742 from not-a-ethan/corrected-link
FIX: Migration link updated
2024-09-26 22:41:04 +02:00
Ethan 619c81472b Migration link updated 2024-09-26 16:27:49 -04:00
smonux d8f71e1d7f Some models produce almost correct json during function calling, but with additional data before of after it. This solves it. 2024-09-26 22:02:56 +02:00
Timothy J. Baek 1715446b13 fix: call mode persisting after width change issue 2024-09-26 21:45:19 +02:00
Timothy Jaeryang Baek 8204f06485 Merge pull request #5741 from open-webui/main
dev
2024-09-26 21:34:16 +02:00
Timothy J. Baek 4c92a0f571 chore: chromadb, pymilvus bump 2024-09-26 21:33:37 +02:00
Timothy J. Baek 1d225dd804 fix: chat pdf, txt export issue 2024-09-26 20:59:25 +02:00
Timothy J. BaekandAam Surganda 15bd5ebd7b Update README.md
Co-Authored-By: Aam Surganda <74174455+aamsur-933@users.noreply.github.com>
2024-09-26 15:57:43 +02:00
Timothy Jaeryang Baek 3af50f08bd Merge pull request #5728 from sp301415/dev
fix: Fix OpenAI batch embedding
2024-09-26 14:08:11 +02:00
Hwang In Tak 4fe1f2487d fix: Fix OpenAI batch embedding 2024-09-26 20:48:14 +09:00
Hwang In Tak a4bc0b2829 fix: Fix OpenAI batch embedding 2024-09-26 20:39:40 +09:00
Timothy Jaeryang Baek 7b8f923981 Merge pull request #5711 from open-webui/dev
0.3.30
2024-09-26 04:13:54 +02:00
Timothy J. Baek be41994d40 Update CHANGELOG.md 2024-09-26 04:12:19 +02:00
Timothy J. Baek 5361896411 doc: changelog 2024-09-26 04:11:13 +02:00
Timothy J. Baek c754c53906 refac 2024-09-26 04:05:28 +02:00
Timothy J. Baek 78d6647885 refac 2024-09-26 03:25:44 +02:00
Timothy J. Baek 4eeb669ac3 refac 2024-09-26 03:21:37 +02:00
Timothy J. Baek 26465f3e92 chore: bump 2024-09-26 03:14:06 +02:00
Timothy J. Baek 9d25207b83 refac 2024-09-26 03:13:38 +02:00
Timothy Jaeryang Baek cc19b8049a Merge pull request #5710 from kivvi3412/fix_o1_max_tokens
Fix: o1 input parameter must be max_completion_tokens
2024-09-26 03:03:15 +02:00
Timothy J. Baek 3a163b6392 fix: pip install database save issue 2024-09-26 03:02:08 +02:00
kivvi 405d0561df Fix: o1 input parameter must be max_completion_tokens 2024-09-26 08:49:59 +08:00
Timothy J. Baek ee33b4e2a3 fix: ollama /embed form_data 2024-09-25 22:34:02 +02:00
Timothy J. Baek 888479aaf0 refac: update toast dismiss behaviour 2024-09-25 20:47:04 +02:00
Timothy Jaeryang Baek 82cda6e522 Merge pull request #5699 from open-webui/dev
0.3.29
2024-09-25 15:46:39 +02:00
Timothy J. Baek 119a7f1933 doc: changelog 2024-09-25 15:45:36 +02:00
Timothy J. Baek 6c4445d545 fix: filter outlet issue 2024-09-25 13:44:06 +02:00
Timothy J. Baek 92b1acd6fb fix: RESET_CONFIG_ON_START not working 2024-09-25 01:06:11 +02:00
Timothy J. Baek 1767b64135 fix: 'call' url search param not working 2024-09-25 01:02:48 +02:00
Timothy Jaeryang Baek e030f261d1 Merge pull request #5675 from sp301415/dev
fix: Fix KaTeX Rendering (Followup)
2024-09-24 20:58:22 +02:00
Hwang In Tak d501ece247 fix: Fix KaTeX corner cases 2024-09-25 02:15:53 +09:00
Timothy Jaeryang Baek 534e4c90ca Merge pull request #5674 from open-webui/dev
0.3.28
2024-09-24 18:52:23 +02:00
Timothy J. Baek 40f2c3521b doc: changelog 2024-09-24 18:50:47 +02:00
Timothy J. Baek 07b1327708 fix 2024-09-24 18:32:14 +02:00
Timothy J. Baek 525095b3de fix: websearch not working issue
#5672
2024-09-24 18:25:21 +02:00
Timothy Jaeryang Baek f84513e856 Merge pull request #5673 from open-webui/dev
refac: readme
2024-09-24 18:19:09 +02:00
Timothy J. Baek bf423b8577 refac: readme 2024-09-24 18:18:32 +02:00
Timothy Jaeryang Baek ba20c71963 Merge pull request #5661 from open-webui/dev
0.3.27
2024-09-24 18:13:08 +02:00
Timothy J. Baek 7bbc57f225 doc: changelog 2024-09-24 18:12:47 +02:00
Timothy J. Baek e703e172e2 chore: format 2024-09-24 18:10:14 +02:00
Timothy Jaeryang Baek 3ff52fd1ad Merge pull request #5655 from sp301415/dev
fix: Fix KaTeX Rendering
2024-09-24 17:44:08 +02:00
Timothy J. Baek e19406cdd7 fix 2024-09-24 17:43:43 +02:00
Hwang In Tak 30e65b33f6 fix: Add comments 2024-09-25 00:41:08 +09:00
Hwang In Tak 3f1255b39e fix: Change inline and block delimiters 2024-09-25 00:10:49 +09:00
Timothy J. Baek 71743b25fe chore: format 2024-09-24 16:42:42 +02:00
Timothy Jaeryang Baek c7e93b32c5 Merge pull request #5660 from open-webui/pypi-release
fix: open-webui serve
2024-09-24 16:36:37 +02:00
Timothy J. Baek 3cee507687 fix: dev2 2024-09-24 16:19:24 +02:00
Timothy J. Baek ff651ddc36 fix: dev1 2024-09-24 16:07:49 +02:00
Timothy Jaeryang Baek c0738cef26 Merge pull request #5659 from open-webui/dev
0.3.26
2024-09-24 15:41:42 +02:00
Timothy J. Baek a44e9a8dda refac 2024-09-24 15:41:23 +02:00
Timothy J. Baek 38b9a63fa5 refac 2024-09-24 15:40:37 +02:00
Timothy J. Baek 2d60e42258 doc: changelog 2024-09-24 15:40:01 +02:00
Timothy Jaeryang Baek 60ac69eb27 Merge pull request #5656 from OriginalSimon/dev
i18n: Update Ukrainian translation
2024-09-24 15:33:15 +02:00
Timothy J. Baek 504d910557 fix: no running event loop issue 2024-09-24 15:31:55 +02:00
Hwang In Tak e48d66f918 fix: Remove unnecessary logging 2024-09-24 22:11:05 +09:00
Hwang In Tak 0bfbace9aa fix: Simplify regex 2024-09-24 22:00:01 +09:00
Simon f382a78e31 Update translation.json 2024-09-24 13:47:51 +02:00
Hwang In Tak 377cc427b6 fix: Remove unnecessary logging 2024-09-24 20:40:50 +09:00
Hwang In Tak 214546399a fix: fix katex rendering 2024-09-24 16:58:15 +09:00
4624 changed files with 262229 additions and 46918 deletions
+2 -1
View File
@@ -16,4 +16,5 @@ _old
uploads
.ipynb_checkpoints
**/*.db
_test
_test
backend/data/*
+9
View File
@@ -7,6 +7,15 @@ OPENAI_API_KEY=''
# AUTOMATIC1111_BASE_URL="http://localhost:7860"
# For production, you should only need one host as
# fastapi serves the svelte-kit built frontend and backend from the same host and port.
# To test with CORS locally, you can set something like
# CORS_ALLOW_ORIGIN='http://localhost:5173;http://localhost:8080'
CORS_ALLOW_ORIGIN='*'
# For production you should set this to match the proxy configuration (127.0.0.1)
FORWARDED_ALLOW_IPS='*'
# DO NOT TRACK
SCARF_NO_ANALYTICS=true
DO_NOT_TRACK=true
+49 -1
View File
@@ -1 +1,49 @@
*.sh text eol=lf
# TypeScript
*.ts text eol=lf
*.tsx text eol=lf
# JavaScript
*.js text eol=lf
*.jsx text eol=lf
*.mjs text eol=lf
*.cjs text eol=lf
# Svelte
*.svelte text eol=lf
# HTML/CSS
*.html text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.less text eol=lf
# Config files and JSON
*.json text eol=lf
*.jsonc text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.toml text eol=lf
# Shell scripts
*.sh text eol=lf
# Markdown & docs
*.md text eol=lf
*.mdx text eol=lf
*.txt text eol=lf
# Git-related
.gitattributes text eol=lf
.gitignore text eol=lf
# Prettier and other dotfiles
.prettierrc text eol=lf
.prettierignore text eol=lf
.eslintrc text eol=lf
.eslintignore text eol=lf
.stylelintrc text eol=lf
.editorconfig text eol=lf
# Misc
*.env text eol=lf
*.lock text eol=lf
-66
View File
@@ -1,66 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
# Bug Report
## Installation Method
[Describe the method you used to install the project, e.g., git clone, Docker, pip, etc.]
## Environment
- **Open WebUI Version:** [e.g., v0.3.11]
- **Ollama (if applicable):** [e.g., v0.2.0, v0.1.32-rc1]
- **Operating System:** [e.g., Windows 10, macOS Big Sur, Ubuntu 20.04]
- **Browser (if applicable):** [e.g., Chrome 100.0, Firefox 98.0]
**Confirmation:**
- [ ] I have read and followed all the instructions provided in the README.md.
- [ ] I am on the latest version of both Open WebUI and Ollama.
- [ ] I have included the browser console logs.
- [ ] I have included the Docker container logs.
- [ ] I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below.
## Expected Behavior:
[Describe what you expected to happen.]
## Actual Behavior:
[Describe what actually happened.]
## Description
**Bug Summary:**
[Provide a brief but clear summary of the bug]
## Reproduction Details
**Steps to Reproduce:**
[Outline the steps to reproduce the bug. Be as detailed as possible.]
## Logs and Screenshots
**Browser Console Logs:**
[Include relevant browser console logs, if applicable]
**Docker Container Logs:**
[Include relevant Docker container logs, if applicable]
**Screenshots/Screen Recordings (if applicable):**
[Attach any relevant screenshots to help illustrate the issue]
## Additional Information
[Include any additional details that may help in understanding and reproducing the issue. This could include specific configurations, error messages, or anything else relevant to the bug.]
## Note
If the bug report is incomplete or does not follow the provided instructions, it may not be addressed. Please ensure that you have followed the steps outlined in the README.md and troubleshooting.md documents, and provide all necessary information for us to reproduce and address the issue. Thank you!
+167
View File
@@ -0,0 +1,167 @@
name: Bug Report
description: Create a detailed bug report to help us improve Open WebUI.
title: 'issue: '
labels: ['bug', 'triage']
assignees: []
body:
- type: markdown
attributes:
value: |
# Bug Report
## Important Notes
- **Before submitting a bug report**: Please check the [Issues](https://github.com/open-webui/open-webui/issues) or [Discussions](https://github.com/open-webui/open-webui/discussions) sections to see if a similar issue has already been reported. If unsure, start a discussion first, as this helps us efficiently focus on improving the project.
- **Respectful collaboration**: Open WebUI is a volunteer-driven project with a single maintainer and contributors who also have full-time jobs. Please be constructive and respectful in your communication.
- **Contributing**: If you encounter an issue, consider submitting a pull request or forking the project. We prioritize preventing contributor burnout to maintain Open WebUI's quality.
- **Bug Reproducibility**: If a bug cannot be reproduced using a `:main` or `:dev` Docker setup or with `pip install` on Python 3.11, community assistance may be required. In such cases, we will move it to the "[Issues](https://github.com/open-webui/open-webui/discussions/categories/issues)" Discussions section. Your help is appreciated!
- type: checkboxes
id: issue-check
attributes:
label: Check Existing Issues
description: Confirm that you’ve checked for existing reports before submitting a new one.
options:
- label: I have searched the existing issues and discussions.
required: true
- label: I am using the latest version of Open WebUI.
required: true
- type: dropdown
id: installation-method
attributes:
label: Installation Method
description: How did you install Open WebUI?
options:
- Git Clone
- Pip Install
- Docker
- Other
validations:
required: true
- type: input
id: open-webui-version
attributes:
label: Open WebUI Version
description: Specify the version (e.g., v0.3.11)
validations:
required: true
- type: input
id: ollama-version
attributes:
label: Ollama Version (if applicable)
description: Specify the version (e.g., v0.2.0, or v0.1.32-rc1)
validations:
required: false
- type: input
id: operating-system
attributes:
label: Operating System
description: Specify the OS (e.g., Windows 10, macOS Sonoma, Ubuntu 22.04)
validations:
required: true
- type: input
id: browser
attributes:
label: Browser (if applicable)
description: Specify the browser/version (e.g., Chrome 100.0, Firefox 98.0)
validations:
required: false
- type: checkboxes
id: confirmation
attributes:
label: Confirmation
description: Ensure the following prerequisites have been met.
options:
- label: I have read and followed all instructions in `README.md`.
required: true
- label: I am using the latest version of **both** Open WebUI and Ollama.
required: true
- label: I have included the browser console logs.
required: true
- label: I have included the Docker container logs.
required: true
- label: I have **provided every relevant configuration, setting, and environment variable used in my setup.**
required: true
- label: I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
required: true
- label: |
I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps:
- Start with the initial platform/version/OS and dependencies used,
- Specify exact install/launch/configure commands,
- List URLs visited, user input (incl. example values/emails/passwords if needed),
- Describe all options and toggles enabled or changed,
- Include any files or environmental changes,
- Identify the expected and actual result at each stage,
- Ensure any reasonably skilled user can follow and hit the same issue.
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: Describe what should have happened.
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual Behavior
description: Describe what actually happened.
validations:
required: true
- type: textarea
id: reproduction-steps
attributes:
label: Steps to Reproduce
description: |
Please provide a **very detailed, step-by-step guide** to reproduce the issue. Your instructions should be so clear and precise that anyone can follow them without guesswork. Include every relevant detail—settings, configuration options, exact commands used, values entered, and any prerequisites or environment variables.
**If full reproduction steps and all relevant settings are not provided, your issue may not be addressed.**
placeholder: |
Example (include every detail):
1. Start with a clean Ubuntu 22.04 install.
2. Install Docker v24.0.5 and start the service.
3. Clone the Open WebUI repo (git clone ...).
4. Use the Docker Compose file without modifications.
5. Open browser Chrome 115.0 in incognito mode.
6. Go to http://localhost:8080 and log in with user "test@example.com".
7. Set the language to "English" and theme to "Dark".
8. Attempt to connect to Ollama at "http://localhost:11434".
9. Observe that the error message "Connection refused" appears at the top right.
Please list each step carefully and include all relevant configuration, settings, and options.
validations:
required: true
- type: textarea
id: logs-screenshots
attributes:
label: Logs & Screenshots
description: Include relevant logs, errors, or screenshots to help diagnose the issue.
placeholder: 'Attach logs from the browser console, Docker logs, or error messages.'
validations:
required: true
- type: textarea
id: additional-info
attributes:
label: Additional Information
description: Provide any extra details that may assist in understanding the issue.
validations:
required: false
- type: markdown
attributes:
value: |
## Note
If the bug report is incomplete or does not follow instructions, it may not be addressed. Ensure that you've followed all the **README.md** and **troubleshooting.md** guidelines, and provide all necessary information for us to reproduce the issue.
Thank you for contributing to Open WebUI!
+1
View File
@@ -0,0 +1 @@
blank_issues_enabled: false
-19
View File
@@ -1,19 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
@@ -0,0 +1,64 @@
name: Feature Request
description: Suggest an idea for this project
title: 'feat: '
labels: ['triage']
body:
- type: markdown
attributes:
value: |
## Important Notes
### Before submitting
Please check the [Issues](https://github.com/open-webui/open-webui/issues) or [Discussions](https://github.com/open-webui/open-webui/discussions) to see if a similar request has been posted.
It's likely we're already tracking it! If you’re unsure, start a discussion post first.
This will help us efficiently focus on improving the project.
### Collaborate respectfully
We value a **constructive attitude**, so please be mindful of your communication. If negativity is part of your approach, our capacity to engage may be limited. We're here to help if you're **open to learning** and **communicating positively**.
Remember:
- Open WebUI is a **volunteer-driven project**
- It's managed by a **single maintainer**
- It's supported by contributors who also have **full-time jobs**
We appreciate your time and ask that you **respect ours**.
### Contributing
If you encounter an issue, we highly encourage you to submit a pull request or fork the project. We actively work to prevent contributor burnout to maintain the quality and continuity of Open WebUI.
### Bug reproducibility
If a bug cannot be reproduced with a `:main` or `:dev` Docker setup, or a `pip install` with Python 3.11, it may require additional help from the community. In such cases, we will move it to the "[issues](https://github.com/open-webui/open-webui/discussions/categories/issues)" Discussions section due to our limited resources. We encourage the community to assist with these issues. Remember, it’s not that the issue doesn’t exist; we need your help!
- type: checkboxes
id: existing-issue
attributes:
label: Check Existing Issues
description: Please confirm that you've checked for existing similar requests
options:
- label: I have searched the existing issues and discussions.
required: true
- type: textarea
id: problem-description
attributes:
label: Problem Description
description: Is your feature request related to a problem? Please provide a clear and concise description of what the problem is.
placeholder: "Ex. I'm always frustrated when..."
validations:
required: true
- type: textarea
id: solution-description
attributes:
label: Desired Solution you'd like
description: Clearly describe what you want to happen.
validations:
required: true
- type: textarea
id: alternatives-considered
attributes:
label: Alternatives Considered
description: A clear and concise description of any alternative solutions or features you've considered.
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Add any other context or screenshots about the feature request here.
+14
View File
@@ -1,12 +1,26 @@
version: 2
updates:
- package-ecosystem: uv
directory: '/'
schedule:
interval: monthly
target-branch: 'dev'
- package-ecosystem: pip
directory: '/backend'
schedule:
interval: monthly
target-branch: 'dev'
- package-ecosystem: npm
directory: '/'
schedule:
interval: monthly
target-branch: 'dev'
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
# Check for updates to GitHub Actions every week
interval: monthly
target-branch: 'dev'
+7 -3
View File
@@ -9,9 +9,9 @@
- [ ] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description.
- [ ] **Documentation:** Have you updated relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs), or other documentation sources?
- [ ] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation?
- [ ] **Testing:** Have you written and run sufficient tests for validating the changes?
- [ ] **Testing:** Have you written and run sufficient tests to validate the changes?
- [ ] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
- [ ] **Prefix:** To cleary categorize this pull request, prefix the pull request title, using one of the following:
- [ ] **Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following:
- **BREAKING CHANGE**: Significant changes that may affect compatibility
- **build**: Changes that affect the build system or external dependencies
- **ci**: Changes to our continuous integration processes or workflows
@@ -22,7 +22,7 @@
- **i18n**: Internationalization or localization changes
- **perf**: Performance improvement
- **refactor**: Code restructuring for better maintainability, readability, or scalability
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.)
- **style**: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
- **test**: Adding missing tests or correcting existing tests
- **WIP**: Work in progress, a temporary label for incomplete or ongoing work
@@ -70,3 +70,7 @@
### Screenshots or Videos
- [Attach any relevant screenshots or videos demonstrating the changes]
### Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms.
+25
View File
@@ -0,0 +1,25 @@
# Codespell configuration is within pyproject.toml
---
name: Codespell
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
codespell:
name: Check for spelling errors
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Annotate locations with typos
uses: codespell-project/codespell-problem-matcher@v1
- name: Codespell
uses: codespell-project/actions-codespell@v2
@@ -28,6 +28,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Remove git history
run: rm -rf .git
@@ -52,7 +54,9 @@ jobs:
- name: Set up Git and push to Space
run: |
git init --initial-branch=main
git lfs install
git lfs track "*.ttf"
git lfs track "*.jpg"
rm demo.gif
git add .
git commit -m "GitHub deploy: ${{ github.sha }}"
+178 -13
View File
@@ -14,16 +14,18 @@ env:
jobs:
build-main-image:
runs-on: ubuntu-latest
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
# GitHub Packages requires the entire repository name to be in lowercase
@@ -111,16 +113,18 @@ jobs:
retention-days: 1
build-cuda-image:
runs-on: ubuntu-latest
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
# GitHub Packages requires the entire repository name to be in lowercase
@@ -210,17 +214,122 @@ jobs:
if-no-files-found: error
retention-days: 1
build-ollama-image:
runs-on: ubuntu-latest
build-cuda126-image:
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
# GitHub Packages requires the entire repository name to be in lowercase
# although the repository owner has a lowercase username, this prevents some people from running actions after forking
- name: Set repository and image name to lowercase
run: |
echo "IMAGE_NAME=${IMAGE_NAME,,}" >>${GITHUB_ENV}
echo "FULL_IMAGE_NAME=ghcr.io/${IMAGE_NAME,,}" >>${GITHUB_ENV}
env:
IMAGE_NAME: '${{ github.repository }}'
- name: Prepare
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for Docker images (cuda126 tag)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=sha,prefix=git-
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,enable=${{ github.ref == 'refs/heads/main' }},prefix=,suffix=,value=cuda126
flavor: |
latest=${{ github.ref == 'refs/heads/main' }}
suffix=-cuda126,onlatest=true
- name: Extract metadata for Docker cache
id: cache-meta
uses: docker/metadata-action@v5
with:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
${{ github.ref_type == 'tag' && 'type=raw,value=main' || '' }}
flavor: |
prefix=cache-cuda126-${{ matrix.platform }}-
latest=false
- name: Build Docker image (cuda126)
uses: docker/build-push-action@v5
id: build
with:
context: .
push: true
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
build-args: |
BUILD_HASH=${{ github.sha }}
USE_CUDA=true
USE_CUDA_VER=cu126
- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-cuda126-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
build-ollama-image:
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
include:
- platform: linux/amd64
runner: ubuntu-latest
- platform: linux/arm64
runner: ubuntu-24.04-arm
steps:
# GitHub Packages requires the entire repository name to be in lowercase
@@ -420,6 +529,62 @@ jobs:
run: |
docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }}
merge-cuda126-images:
runs-on: ubuntu-latest
needs: [build-cuda126-image]
steps:
# GitHub Packages requires the entire repository name to be in lowercase
# although the repository owner has a lowercase username, this prevents some people from running actions after forking
- name: Set repository and image name to lowercase
run: |
echo "IMAGE_NAME=${IMAGE_NAME,,}" >>${GITHUB_ENV}
echo "FULL_IMAGE_NAME=ghcr.io/${IMAGE_NAME,,}" >>${GITHUB_ENV}
env:
IMAGE_NAME: '${{ github.repository }}'
- name: Download digests
uses: actions/download-artifact@v4
with:
pattern: digests-cuda126-*
path: /tmp/digests
merge-multiple: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for Docker images (default latest tag)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.FULL_IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=sha,prefix=git-
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,enable=${{ github.ref == 'refs/heads/main' }},prefix=,suffix=,value=cuda126
flavor: |
latest=${{ github.ref == 'refs/heads/main' }}
suffix=-cuda126,onlatest=true
- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.FULL_IMAGE_NAME }}@sha256:%s ' *)
- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }}
merge-ollama-images:
runs-on: ubuntu-latest
needs: [build-ollama-image]
+13 -3
View File
@@ -5,10 +5,18 @@ on:
branches:
- main
- dev
paths:
- 'backend/**'
- 'pyproject.toml'
- 'uv.lock'
pull_request:
branches:
- main
- dev
paths:
- 'backend/**'
- 'pyproject.toml'
- 'uv.lock'
jobs:
build:
@@ -17,15 +25,17 @@ jobs:
strategy:
matrix:
python-version: [3.11]
python-version:
- 3.11.x
- 3.12.x
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
python-version: '${{ matrix.python-version }}'
- name: Install dependencies
run: |
+10 -2
View File
@@ -5,10 +5,18 @@ on:
branches:
- main
- dev
paths-ignore:
- 'backend/**'
- 'pyproject.toml'
- 'uv.lock'
pull_request:
branches:
- main
- dev
paths-ignore:
- 'backend/**'
- 'pyproject.toml'
- 'uv.lock'
jobs:
build:
@@ -21,7 +29,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # Or specify any other version you want to use
node-version: '22'
- name: Install Dependencies
run: npm install
@@ -48,7 +56,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: '22'
- name: Install Dependencies
run: npm ci
@@ -52,6 +52,8 @@ jobs:
- name: Cypress run
uses: cypress-io/github-action@v6
env:
LIBGL_ALWAYS_SOFTWARE: 1
with:
browser: chrome
wait-on: 'http://localhost:3000'
@@ -85,7 +87,7 @@ jobs:
# - uses: actions/checkout@v4
# - name: Set up Python
# uses: actions/setup-python@v4
# uses: actions/setup-python@v5
# with:
# python-version: ${{ matrix.python-version }}
@@ -182,6 +184,9 @@ jobs:
WEBUI_SECRET_KEY: secret-key
GLOBAL_LOG_LEVEL: debug
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres
DATABASE_POOL_SIZE: 10
DATABASE_POOL_MAX_OVERFLOW: 10
DATABASE_POOL_TIMEOUT: 30
run: |
cd backend
uvicorn open_webui.main:app --port "8081" --forwarded-allow-ips '*' &
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Use Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
- name: Use Bun
uses: oven-sh/setup-bun@v1
- name: Install dependencies
+5 -1
View File
@@ -17,9 +17,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Git
run: sudo apt-get update && sudo apt-get install -y git
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
- uses: actions/setup-python@v5
with:
python-version: 3.11
+2 -1
View File
@@ -5,5 +5,6 @@
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"pluginSearchDirs": ["."],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }],
"endOfLine": "lf"
}
+1187
View File
File diff suppressed because it is too large Load Diff
+60 -38
View File
@@ -2,76 +2,98 @@
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
As members, contributors, and leaders of this community, we pledge to make participation in our project a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
We are committed to creating and maintaining an open, respectful, and professional environment where positive contributions and meaningful discussions can flourish. By participating in this project, you agree to uphold these values and align your behavior to the standards outlined in this Code of Conduct.
## Why These Standards Are Important
Projects rely on a community of volunteers dedicating their time, expertise, and effort toward a shared goal. These projects are inherently collaborative but also fragile, as the success of the project depends on the goodwill, energy, and productivity of those involved.
Maintaining a positive and respectful environment is essential to safeguarding the integrity of this project and protecting contributors' efforts. Behavior that disrupts this atmosphere—whether through hostility, entitlement, or unprofessional conduct—can severely harm the morale and productivity of the community. **Strict enforcement of these standards ensures a safe and supportive space for meaningful collaboration.**
This is a community where **respect and professionalism are mandatory.** Violations of these standards will result in **zero tolerance** and immediate enforcement to prevent disruption and ensure the well-being of all participants.
## Our Standards
Examples of behavior that contribute to a positive environment for our community include:
Examples of behavior that contribute to a positive and professional community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community
- **Respecting others.** Be considerate, listen actively, and engage with empathy toward others' viewpoints and experiences.
- **Constructive feedback.** Provide actionable, thoughtful, and respectful feedback that helps improve the project and encourages collaboration. Avoid unproductive negativity or hypercriticism.
- **Recognizing volunteer contributions.** Appreciate that contributors dedicate their free time and resources selflessly. Approach them with gratitude and patience.
- **Focusing on shared goals.** Collaborate in ways that prioritize the health, success, and sustainability of the community over individual agendas.
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- **Spamming of any kind**
- Aggressive sales tactics targeting our community members are strictly prohibited. You can mention your product if it's relevant to the discussion, but under no circumstances should you push it forcefully
- Other conduct which could reasonably be considered inappropriate in a professional setting
- The use of discriminatory, demeaning, or sexualized language or behavior.
- Personal attacks, derogatory comments, trolling, or inflammatory political or ideological arguments.
- Harassment, intimidation, or any behavior intended to create a hostile, uncomfortable, or unsafe environment.
- Publishing others' private information (e.g., physical or email addresses) without explicit permission.
- **Entitlement, demand, or aggression toward contributors.** Volunteers are under no obligation to provide immediate or personalized support. Rude or dismissive behavior will not be tolerated.
- **Unproductive or destructive behavior.** This includes venting frustration as hostility ("tantrums"), hypercriticism, attention-seeking negativity, or anything that distracts from the project's goals.
- **Spamming and promotional exploitation.** Sharing irrelevant product promotions or self-promotion in the community is not allowed unless it directly contributes value to the discussion.
### Feedback and Community Engagement
- **Constructive feedback is encouraged, but hostile or entitled behavior will result in immediate action.** If you disagree with elements of the project, we encourage you to offer meaningful improvements or fork the project if necessary. Healthy discussions and technical disagreements are welcome only when handled with professionalism.
- **Respect contributors' time and efforts.** No one is entitled to personalized or on-demand assistance. This is a community built on collaboration and shared effort; demanding or demeaning behavior undermines that trust and will not be allowed.
### Zero Tolerance: No Warnings, Immediate Action
This community operates under a **zero-tolerance policy.** Any behavior deemed unacceptable under this Code of Conduct will result in **immediate enforcement, without prior warning.**
We employ this approach to ensure that unproductive or disruptive behavior does not escalate further or cause unnecessary harm to other contributors. The standards are clear, and violations of any kind—whether mild or severe—will be addressed decisively to protect the community.
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders are responsible for upholding and enforcing these standards. They are empowered to take **immediate and appropriate action** to address any behaviors they deem unacceptable under this Code of Conduct. These actions are taken with the goal of protecting the community and preserving its safe, positive, and productive environment.
## Scope
This Code of Conduct applies within all community spaces and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
This Code of Conduct applies to all community spaces, including forums, repositories, social media accounts, and in-person events. It also applies when an individual represents the community in public settings, such as conferences or official communications.
## Enforcement
Additionally, any behavior outside of these defined spaces that negatively impacts the community or its members may fall within the scope of this Code of Conduct.
Instances of abusive, harassing, spamming, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at hello@openwebui.com. All complaints will be reviewed and investigated promptly and fairly.
## Reporting Violations
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
Instances of unacceptable behavior can be reported to the leadership team at **hello@openwebui.com**. Reports will be handled promptly, confidentially, and with consideration for the safety and well-being of the reporter.
All community leaders are required to uphold confidentiality and impartiality when addressing reports of violations.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
### Ban
### 1. Temporary Ban
**Community Impact**: Community leaders will issue a ban to any participant whose behavior is deemed unacceptable according to this Code of Conduct. Bans are enforced immediately and without prior notice.
**Community Impact**: Any violation of community standards, including but not limited to inappropriate language, unprofessional behavior, harassment, or spamming.
A ban may be temporary or permanent, depending on the severity of the violation. This includes—but is not limited to—behavior such as:
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
- Harassment or abusive behavior toward contributors.
- Persistent negativity or hostility that disrupts the collaborative environment.
- Disrespectful, demanding, or aggressive interactions with others.
- Attempts to cause harm or sabotage the community.
### 2. Permanent Ban
**Consequence**: A banned individual is immediately removed from access to all community spaces, communication channels, and events. Community leaders reserve the right to enforce either a time-limited suspension or a permanent ban based on the specific circumstances of the violation.
**Community Impact**: Repeated or severe violations of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
This approach ensures that disruptive behaviors are addressed swiftly and decisively in order to maintain the integrity and productivity of the community.
**Consequence**: A permanent ban from any sort of public interaction within the community.
## Why Zero Tolerance Is Necessary
Projects thrive on collaboration, goodwill, and mutual respect. Toxic behaviors—such as entitlement, hostility, or persistent negativity—threaten not just individual contributors but the health of the project as a whole. Allowing such behaviors to persist robs contributors of their time, energy, and enthusiasm for the work they do.
By enforcing a zero-tolerance policy, we ensure that the community remains a safe, welcoming space for all participants. These measures are not about harshness—they are about protecting contributors and fostering a productive environment where innovation can thrive.
Our expectations are clear, and our enforcement reflects our commitment to this project's long-term success.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
+7
View File
@@ -0,0 +1,7 @@
# Open WebUI Contributor License Agreement
By submitting my contributions to Open WebUI, I grant Open WebUI full freedom to use my work in any way they choose, under any terms they like, both now and in the future. This approach helps ensure the project remains unified, flexible, and easy to maintain, while empowering Open WebUI to respond quickly to the needs of its users and the wider community.
Taking part in this process means my work can be seamlessly integrated and combined with others, ensuring longevity and adaptability for everyone who benefits from the Open WebUI project. This collaborative approach strengthens the project’s future and helps guarantee that improvements can always be shared and distributed in the most effective way possible.
**_To the fullest extent permitted by law, my contributions are provided on an “as is” basis, with no warranties or guarantees of any kind, and I disclaim any liability for any issues or damages arising from their use or incorporation into the project, regardless of the type of legal claim._**
-64
View File
@@ -1,64 +0,0 @@
# Run with
# caddy run --envfile ./example.env --config ./Caddyfile.localhost
#
# This is configured for
# - Automatic HTTPS (even for localhost)
# - Reverse Proxying to Ollama API Base URL (http://localhost:11434/api)
# - CORS
# - HTTP Basic Auth API Tokens (uncomment basicauth section)
# CORS Preflight (OPTIONS) + Request (GET, POST, PATCH, PUT, DELETE)
(cors-api) {
@match-cors-api-preflight method OPTIONS
handle @match-cors-api-preflight {
header {
Access-Control-Allow-Origin "{http.request.header.origin}"
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers "Origin, Accept, Authorization, Content-Type, X-Requested-With"
Access-Control-Allow-Credentials "true"
Access-Control-Max-Age "3600"
defer
}
respond "" 204
}
@match-cors-api-request {
not {
header Origin "{http.request.scheme}://{http.request.host}"
}
header Origin "{http.request.header.origin}"
}
handle @match-cors-api-request {
header {
Access-Control-Allow-Origin "{http.request.header.origin}"
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers "Origin, Accept, Authorization, Content-Type, X-Requested-With"
Access-Control-Allow-Credentials "true"
Access-Control-Max-Age "3600"
defer
}
}
}
# replace localhost with example.com or whatever
localhost {
## HTTP Basic Auth
## (uncomment to enable)
# basicauth {
# # see .example.env for how to generate tokens
# {env.OLLAMA_API_ID} {env.OLLAMA_API_TOKEN_DIGEST}
# }
handle /api/* {
# Comment to disable CORS
import cors-api
reverse_proxy localhost:11434
}
# Same-Origin Static Web Server
file_server {
root ./build/
}
}
+20 -7
View File
@@ -1,27 +1,34 @@
# syntax=docker/dockerfile:1
# Initialize device type args
# use build args in the docker build commmand with --build-arg="BUILDARG=true"
# use build args in the docker build command with --build-arg="BUILDARG=true"
ARG USE_CUDA=false
ARG USE_OLLAMA=false
# Tested with cu117 for CUDA 11 and cu121 for CUDA 12 (default)
ARG USE_CUDA_VER=cu121
ARG USE_CUDA_VER=cu128
# any sentence transformer model; models to use can be found at https://huggingface.co/models?library=sentence-transformers
# Leaderboard: https://huggingface.co/spaces/mteb/leaderboard
# for better performance and multilangauge support use "intfloat/multilingual-e5-large" (~2.5GB) or "intfloat/multilingual-e5-base" (~1.5GB)
# 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.
ARG USE_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
ARG USE_RERANKING_MODEL=""
# Tiktoken encoding name; models to use can be found at https://huggingface.co/models?library=tiktoken
ARG USE_TIKTOKEN_ENCODING_NAME="cl100k_base"
ARG BUILD_HASH=dev-build
# Override at your own risk - non-root configurations are untested
ARG UID=0
ARG GID=0
######## WebUI frontend ########
FROM --platform=$BUILDPLATFORM node:21-alpine3.19 as build
FROM --platform=$BUILDPLATFORM node:22-alpine3.20 AS build
ARG BUILD_HASH
WORKDIR /app
# to store git revision in build
RUN apk add --no-cache git
COPY package.json package-lock.json ./
RUN npm ci
@@ -30,7 +37,7 @@ ENV APP_BUILD_HASH=${BUILD_HASH}
RUN npm run build
######## WebUI backend ########
FROM python:3.11-slim-bookworm as base
FROM python:3.11-slim-bookworm AS base
# Use args
ARG USE_CUDA
@@ -72,6 +79,10 @@ ENV RAG_EMBEDDING_MODEL="$USE_EMBEDDING_MODEL_DOCKER" \
RAG_RERANKING_MODEL="$USE_RERANKING_MODEL_DOCKER" \
SENTENCE_TRANSFORMERS_HOME="/app/backend/data/cache/embedding/models"
## Tiktoken model settings ##
ENV TIKTOKEN_ENCODING_NAME="cl100k_base" \
TIKTOKEN_CACHE_DIR="/app/backend/data/cache/tiktoken"
## Hugging Face download cache ##
ENV HF_HOME="/app/backend/data/cache/embedding/models"
@@ -82,7 +93,7 @@ ENV HF_HOME="/app/backend/data/cache/embedding/models"
WORKDIR /app/backend
ENV HOME /root
ENV HOME=/root
# Create user and group if not root
RUN if [ $UID -ne 0 ]; then \
if [ $GID -ne 0 ]; then \
@@ -124,18 +135,20 @@ RUN if [ "$USE_OLLAMA" = "true" ]; then \
# install python dependencies
COPY --chown=$UID:$GID ./backend/requirements.txt ./requirements.txt
RUN pip3 install uv && \
RUN pip3 install --no-cache-dir uv && \
if [ "$USE_CUDA" = "true" ]; then \
# If you use CUDA the whisper and embedding model will be downloaded on first use
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/$USE_CUDA_DOCKER_VER --no-cache-dir && \
uv pip install --system -r requirements.txt --no-cache-dir && \
python -c "import os; from sentence_transformers import SentenceTransformer; SentenceTransformer(os.environ['RAG_EMBEDDING_MODEL'], device='cpu')" && \
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'])"; \
python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \
else \
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir && \
uv pip install --system -r requirements.txt --no-cache-dir && \
python -c "import os; from sentence_transformers import SentenceTransformer; SentenceTransformer(os.environ['RAG_EMBEDDING_MODEL'], device='cpu')" && \
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'])"; \
python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \
fi; \
chown -R $UID:$GID /app/backend/data/
@@ -161,6 +174,6 @@ USER $UID:$GID
ARG BUILD_HASH
ENV WEBUI_BUILD_VERSION=${BUILD_HASH}
ENV DOCKER true
ENV DOCKER=true
CMD [ "bash", "start.sh"]
+29 -17
View File
@@ -1,21 +1,33 @@
MIT License
Copyright (c) 2023-2025 Timothy Jaeryang Baek (Open WebUI)
All rights reserved.
Copyright (c) 2023 Timothy Jaeryang Baek
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
4. Notwithstanding any other provision of this License, and as a material condition of the rights granted herein, licensees are strictly prohibited from altering, removing, obscuring, or replacing any "Open WebUI" branding, including but not limited to the name, logo, or any visual, textual, or symbolic identifiers that distinguish the software and its interfaces, in any deployment or distribution, regardless of the number of users, except as explicitly set forth in Clauses 5 and 6 below.
5. The branding restriction enumerated in Clause 4 shall not apply in the following limited circumstances: (i) deployments or distributions where the total number of end users (defined as individual natural persons with direct access to the application) does not exceed fifty (50) within any rolling thirty (30) day period; (ii) cases in which the licensee is an official contributor to the codebase—with a substantive code change successfully merged into the main branch of the official codebase maintained by the copyright holder—who has obtained specific prior written permission for branding adjustment from the copyright holder; or (iii) where the licensee has obtained a duly executed enterprise license expressly permitting such modification. For all other cases, any removal or alteration of the "Open WebUI" branding shall constitute a material breach of license.
6. All code, modifications, or derivative works incorporated into this project prior to the incorporation of this branding clause remain licensed under the BSD 3-Clause License, and prior contributors retain all BSD-3 rights therein; if any such contributor requests the removal of their BSD-3-licensed code, the copyright holder will do so, and any replacement code will be licensed under the project's primary license then in effect. By contributing after this clause's adoption, you agree to the project's Contributor License Agreement (CLA) and to these updated terms for all new contributions.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+80 -25
View File
@@ -1,4 +1,4 @@
# Open WebUI (Formerly Ollama WebUI) 👋
# Open WebUI 👋
![GitHub stars](https://img.shields.io/github/stars/open-webui/open-webui?style=social)
![GitHub forks](https://img.shields.io/github/forks/open-webui/open-webui?style=social)
@@ -7,21 +7,29 @@
![GitHub language count](https://img.shields.io/github/languages/count/open-webui/open-webui)
![GitHub top language](https://img.shields.io/github/languages/top/open-webui/open-webui)
![GitHub last commit](https://img.shields.io/github/last-commit/open-webui/open-webui?color=red)
![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Follama-webui%2Follama-wbui&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)
[![Discord](https://img.shields.io/badge/Discord-Open_WebUI-blue?logo=discord&logoColor=white)](https://discord.gg/5rJgQTnV4s)
[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/tjbck)
Open WebUI is an [extensible](https://github.com/open-webui/pipelines), feature-rich, and user-friendly self-hosted WebUI designed to operate entirely offline. It supports various LLM runners, including Ollama and OpenAI-compatible APIs. For more information, be sure to check out our [Open WebUI Documentation](https://docs.openwebui.com/).
**Open WebUI is an [extensible](https://docs.openwebui.com/features/plugin/), feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline.** It supports various LLM runners like **Ollama** and **OpenAI-compatible APIs**, with **built-in inference engine** for RAG, making it a **powerful AI deployment solution**.
Passionate about open-source AI? [Join our team →](https://careers.openwebui.com/)
![Open WebUI Demo](./demo.gif)
> [!TIP]
> **Looking for an [Enterprise Plan](https://docs.openwebui.com/enterprise)?** – **[Speak with Our Sales Team Today!](mailto:sales@openwebui.com)**
>
> Get **enhanced capabilities**, including **custom theming and branding**, **Service Level Agreement (SLA) support**, **Long-Term Support (LTS) versions**, and **more!**
For more information, be sure to check out our [Open WebUI Documentation](https://docs.openwebui.com/).
## Key Features of Open WebUI ⭐
- 🚀 **Effortless Setup**: Install seamlessly using Docker or Kubernetes (kubectl, kustomize or helm) for a hassle-free experience with support for both `:ollama` and `:cuda` tagged images.
- 🤝 **Ollama/OpenAI API Integration**: Effortlessly integrate OpenAI-compatible APIs for versatile conversations alongside Ollama models. Customize the OpenAI API URL to link with **LMStudio, GroqCloud, Mistral, OpenRouter, and more**.
- 🧩 **Pipelines, Open WebUI Plugin Support**: Seamlessly integrate custom logic and Python libraries into Open WebUI using [Pipelines Plugin Framework](https://github.com/open-webui/pipelines). Launch your Pipelines instance, set the OpenAI URL to the Pipelines URL, and explore endless possibilities. [Examples](https://github.com/open-webui/pipelines/tree/main/examples) include **Function Calling**, User **Rate Limiting** to control access, **Usage Monitoring** with tools like Langfuse, **Live Translation with LibreTranslate** for multilingual support, **Toxic Message Filtering** and much more.
- 🛡️ **Granular Permissions and User Groups**: By allowing administrators to create detailed user roles and permissions, we ensure a secure user environment. This granularity not only enhances security but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users.
- 📱 **Responsive Design**: Enjoy a seamless experience across Desktop PC, Laptop, and Mobile devices.
@@ -37,7 +45,7 @@ Open WebUI is an [extensible](https://github.com/open-webui/pipelines), feature-
- 📚 **Local RAG Integration**: Dive into the future of chat interactions with groundbreaking Retrieval Augmented Generation (RAG) support. This feature seamlessly integrates document interactions into your chat experience. You can load documents directly into the chat or add files to your document library, effortlessly accessing them using the `#` command before a query.
- 🔍 **Web Search for RAG**: Perform web searches using providers like `SearXNG`, `Google PSE`, `Brave Search`, `serpstack`, `serper`, `Serply`, `DuckDuckGo`, `TavilySearch` and `SearchApi` and inject the results directly into your chat experience.
- 🔍 **Web Search for RAG**: Perform web searches using providers like `SearXNG`, `Google PSE`, `Brave Search`, `serpstack`, `serper`, `Serply`, `DuckDuckGo`, `TavilySearch`, `SearchApi` and `Bing` and inject the results directly into your chat experience.
- 🌐 **Web Browsing Capability**: Seamlessly integrate websites into your chat experience using the `#` command followed by a URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions.
@@ -49,21 +57,70 @@ Open WebUI is an [extensible](https://github.com/open-webui/pipelines), feature-
- 🌐🌍 **Multilingual Support**: Experience Open WebUI in your preferred language with our internationalization (i18n) support. Join us in expanding our supported languages! We're actively seeking contributors!
- 🧩 **Pipelines, Open WebUI Plugin Support**: Seamlessly integrate custom logic and Python libraries into Open WebUI using [Pipelines Plugin Framework](https://github.com/open-webui/pipelines). Launch your Pipelines instance, set the OpenAI URL to the Pipelines URL, and explore endless possibilities. [Examples](https://github.com/open-webui/pipelines/tree/main/examples) include **Function Calling**, User **Rate Limiting** to control access, **Usage Monitoring** with tools like Langfuse, **Live Translation with LibreTranslate** for multilingual support, **Toxic Message Filtering** and much more.
- 🌟 **Continuous Updates**: We are committed to improving Open WebUI with regular updates, fixes, and new features.
Want to learn more about Open WebUI's features? Check out our [Open WebUI documentation](https://docs.openwebui.com/features) for a comprehensive overview!
## 🔗 Also Check Out Open WebUI Community!
## Sponsors 🙌
Don't forget to explore our sibling project, [Open WebUI Community](https://openwebui.com/), where you can discover, download, and explore customized Modelfiles. Open WebUI Community offers a wide range of exciting possibilities for enhancing your chat interactions with Open WebUI! 🚀
#### Emerald
<table>
<tr>
<td>
<a href="https://n8n.io/" target="_blank">
<img src="https://docs.openwebui.com/sponsors/logos/n8n.png" alt="n8n" style="width: 8rem; height: 8rem; border-radius: .75rem;" />
</a>
</td>
<td>
<a href="https://n8n.io/">n8n</a> • Does your interface have a backend yet?<br>Try <a href="https://n8n.io/">n8n</a>
</td>
</tr>
<tr>
<td>
<a href="https://tailscale.com/blog/self-host-a-local-ai-stack/?utm_source=OpenWebUI&utm_medium=paid-ad-placement&utm_campaign=OpenWebUI-Docs" target="_blank">
<img src="https://docs.openwebui.com/sponsors/logos/tailscale.png" alt="Tailscale" style="width: 8rem; height: 8rem; border-radius: .75rem;" />
</a>
</td>
<td>
<a href="https://tailscale.com/blog/self-host-a-local-ai-stack/?utm_source=OpenWebUI&utm_medium=paid-ad-placement&utm_campaign=OpenWebUI-Docs">Tailscale</a> • Connect self-hosted AI to any device with Tailscale
</td>
</tr>
</table>
---
We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you!
## How to Install 🚀
> [!NOTE]
> Please note that for certain Docker environments, additional configurations might be needed. If you encounter any connection issues, our detailed guide on [Open WebUI Documentation](https://docs.openwebui.com/) is ready to assist you.
### Installation via Python pip 🐍
Open WebUI can be installed using pip, the Python package installer. Before proceeding, ensure you're using **Python 3.11** to avoid compatibility issues.
1. **Install Open WebUI**:
Open your terminal and run the following command to install Open WebUI:
```bash
pip install open-webui
```
2. **Running Open WebUI**:
After installation, you can start Open WebUI by executing:
```bash
open-webui serve
```
This will start the Open WebUI server, which you can access at [http://localhost:8080](http://localhost:8080)
### Quick Start with Docker 🐳
> [!NOTE]
> Please note that for certain Docker environments, additional configurations might be needed. If you encounter any connection issues, our detailed guide on [Open WebUI Documentation](https://docs.openwebui.com/) is ready to assist you.
> [!WARNING]
> When using Docker to install Open WebUI, make sure to include the `-v open-webui:/app/backend/data` in your Docker command. This step is crucial as it ensures your database is properly mounted and prevents any loss of data.
@@ -86,7 +143,7 @@ Don't forget to explore our sibling project, [Open WebUI Community](https://open
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
```
- **To run Open WebUI with Nvidia GPU support**, use this command:
- **To run Open WebUI with Nvidia GPU support**, use this command:
```bash
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
@@ -126,6 +183,8 @@ After installation, you can access Open WebUI at [http://localhost:3000](http://
We offer various installation alternatives, including non-Docker native installation methods, Docker Compose, Kustomize, and Helm. Visit our [Open WebUI Documentation](https://docs.openwebui.com/getting-started/) or join our [Discord community](https://discord.gg/5rJgQTnV4s) for comprehensive guidance.
Look at the [Local Development Guide](https://docs.openwebui.com/getting-started/advanced-topics/development) for instructions on setting up a local development environment.
### Troubleshooting
Encountering connection issues? Our [Open WebUI Documentation](https://docs.openwebui.com/troubleshooting/) has got you covered. For further assistance and to join our vibrant community, visit the [Open WebUI Discord](https://discord.gg/5rJgQTnV4s).
@@ -150,7 +209,7 @@ docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/wa
In the last part of the command, replace `open-webui` with your container name if it is different.
Check our Migration Guide available in our [Open WebUI Documentation](https://docs.openwebui.com/migration/).
Check our Updating Guide available in our [Open WebUI Documentation](https://docs.openwebui.com/getting-started/updating).
### Using the Dev Branch 🌙
@@ -163,25 +222,21 @@ If you want to try out the latest bleeding-edge features and are okay with occas
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui --add-host=host.docker.internal:host-gateway --restart always ghcr.io/open-webui/open-webui:dev
```
### Offline Mode
If you are running Open WebUI in an offline environment, you can set the `HF_HUB_OFFLINE` environment variable to `1` to prevent attempts to download models from the internet.
```bash
export HF_HUB_OFFLINE=1
```
## What's Next? 🌟
Discover upcoming features on our roadmap in the [Open WebUI Documentation](https://docs.openwebui.com/roadmap/).
## Supporters ✨
A big shoutout to our amazing supporters who's helping to make this project possible! 🙏
### Platinum Sponsors 🤍
- We're looking for Sponsors!
### Acknowledgments
Special thanks to [Prof. Lawrence Kim](https://www.lhkim.com/) and [Prof. Nick Vincent](https://www.nickmvincent.com/) for their invaluable support and guidance in shaping this project into a research endeavor. Grateful for your mentorship throughout the journey! 🙌
## License 📜
This project is licensed under the [MIT License](LICENSE) - see the [LICENSE](LICENSE) file for details. 📄
This project is licensed under the [Open WebUI License](LICENSE), a revised BSD-3-Clause license. You receive all the same rights as the classic BSD-3 license: you can use, modify, and distribute the software, including in proprietary and commercial products, with minimal restrictions. The only additional requirement is to preserve the "Open WebUI" branding, as detailed in the LICENSE file. For full terms, see the [LICENSE](LICENSE) document. 📄
## Support 💬
@@ -200,4 +255,4 @@ If you have any questions, suggestions, or need assistance, please open an issue
---
Created by [Timothy J. Baek](https://github.com/tjbck) - Let's make Open WebUI even more amazing together! 💪
Created by [Timothy Jaeryang Baek](https://github.com/tjbck) - Let's make Open WebUI even more amazing together! 💪
+1 -1
View File
@@ -18,7 +18,7 @@ If you're experiencing connection issues, it’s often due to the WebUI docker c
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
```
### Error on Slow Reponses for Ollama
### Error on Slow Responses for Ollama
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.
+29 -2
View File
@@ -5,12 +5,31 @@ from pathlib import Path
import typer
import uvicorn
from typing import Optional
from typing_extensions import Annotated
app = typer.Typer()
KEY_FILE = Path.cwd() / ".webui_secret_key"
def version_callback(value: bool):
if value:
from open_webui.env import VERSION
typer.echo(f"Open WebUI version: {VERSION}")
raise typer.Exit()
@app.command()
def main(
version: Annotated[
Optional[bool], typer.Option("--version", callback=version_callback)
] = None,
):
pass
@app.command()
def serve(
host: str = "0.0.0.0",
@@ -52,9 +71,17 @@ def serve(
)
os.environ["USE_CUDA_DOCKER"] = "false"
os.environ["LD_LIBRARY_PATH"] = ":".join(LD_LIBRARY_PATH)
import open_webui.main # we need set environment variables before importing main
uvicorn.run(open_webui.main.app, host=host, port=port, forwarded_allow_ips="*")
import open_webui.main # we need set environment variables before importing main
from open_webui.env import UVICORN_WORKERS # Import the workers setting
uvicorn.run(
"open_webui.main:app",
host=host,
port=port,
forwarded_allow_ips="*",
workers=UVICORN_WORKERS,
)
@app.command()
-583
View File
@@ -1,583 +0,0 @@
import hashlib
import json
import logging
import os
import uuid
from functools import lru_cache
from pathlib import Path
import requests
from open_webui.config import (
AUDIO_STT_ENGINE,
AUDIO_STT_MODEL,
AUDIO_STT_OPENAI_API_BASE_URL,
AUDIO_STT_OPENAI_API_KEY,
AUDIO_TTS_API_KEY,
AUDIO_TTS_ENGINE,
AUDIO_TTS_MODEL,
AUDIO_TTS_OPENAI_API_BASE_URL,
AUDIO_TTS_OPENAI_API_KEY,
AUDIO_TTS_SPLIT_ON,
AUDIO_TTS_VOICE,
AUDIO_TTS_AZURE_SPEECH_REGION,
AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT,
CACHE_DIR,
CORS_ALLOW_ORIGIN,
WHISPER_MODEL,
WHISPER_MODEL_AUTO_UPDATE,
WHISPER_MODEL_DIR,
AppConfig,
)
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS, DEVICE_TYPE
from fastapi import Depends, FastAPI, File, HTTPException, Request, UploadFile, status
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from pydantic import BaseModel
from open_webui.utils.utils import get_admin_user, get_current_user, get_verified_user
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["AUDIO"])
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=CORS_ALLOW_ORIGIN,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.state.config = AppConfig()
app.state.config.STT_OPENAI_API_BASE_URL = AUDIO_STT_OPENAI_API_BASE_URL
app.state.config.STT_OPENAI_API_KEY = AUDIO_STT_OPENAI_API_KEY
app.state.config.STT_ENGINE = AUDIO_STT_ENGINE
app.state.config.STT_MODEL = AUDIO_STT_MODEL
app.state.config.TTS_OPENAI_API_BASE_URL = AUDIO_TTS_OPENAI_API_BASE_URL
app.state.config.TTS_OPENAI_API_KEY = AUDIO_TTS_OPENAI_API_KEY
app.state.config.TTS_ENGINE = AUDIO_TTS_ENGINE
app.state.config.TTS_MODEL = AUDIO_TTS_MODEL
app.state.config.TTS_VOICE = AUDIO_TTS_VOICE
app.state.config.TTS_API_KEY = AUDIO_TTS_API_KEY
app.state.config.TTS_SPLIT_ON = AUDIO_TTS_SPLIT_ON
app.state.config.TTS_AZURE_SPEECH_REGION = AUDIO_TTS_AZURE_SPEECH_REGION
app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT = AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT
# setting device type for whisper model
whisper_device_type = DEVICE_TYPE if DEVICE_TYPE and DEVICE_TYPE == "cuda" else "cpu"
log.info(f"whisper_device_type: {whisper_device_type}")
SPEECH_CACHE_DIR = Path(CACHE_DIR).joinpath("./audio/speech/")
SPEECH_CACHE_DIR.mkdir(parents=True, exist_ok=True)
class TTSConfigForm(BaseModel):
OPENAI_API_BASE_URL: str
OPENAI_API_KEY: str
API_KEY: str
ENGINE: str
MODEL: str
VOICE: str
SPLIT_ON: str
AZURE_SPEECH_REGION: str
AZURE_SPEECH_OUTPUT_FORMAT: str
class STTConfigForm(BaseModel):
OPENAI_API_BASE_URL: str
OPENAI_API_KEY: str
ENGINE: str
MODEL: str
class AudioConfigUpdateForm(BaseModel):
tts: TTSConfigForm
stt: STTConfigForm
from pydub import AudioSegment
from pydub.utils import mediainfo
def is_mp4_audio(file_path):
"""Check if the given file is an MP4 audio file."""
if not os.path.isfile(file_path):
print(f"File not found: {file_path}")
return False
info = mediainfo(file_path)
if (
info.get("codec_name") == "aac"
and info.get("codec_type") == "audio"
and info.get("codec_tag_string") == "mp4a"
):
return True
return False
def convert_mp4_to_wav(file_path, output_path):
"""Convert MP4 audio file to WAV format."""
audio = AudioSegment.from_file(file_path, format="mp4")
audio.export(output_path, format="wav")
print(f"Converted {file_path} to {output_path}")
@app.get("/config")
async def get_audio_config(user=Depends(get_admin_user)):
return {
"tts": {
"OPENAI_API_BASE_URL": app.state.config.TTS_OPENAI_API_BASE_URL,
"OPENAI_API_KEY": app.state.config.TTS_OPENAI_API_KEY,
"API_KEY": app.state.config.TTS_API_KEY,
"ENGINE": app.state.config.TTS_ENGINE,
"MODEL": app.state.config.TTS_MODEL,
"VOICE": app.state.config.TTS_VOICE,
"SPLIT_ON": app.state.config.TTS_SPLIT_ON,
"AZURE_SPEECH_REGION": app.state.config.TTS_AZURE_SPEECH_REGION,
"AZURE_SPEECH_OUTPUT_FORMAT": app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT,
},
"stt": {
"OPENAI_API_BASE_URL": app.state.config.STT_OPENAI_API_BASE_URL,
"OPENAI_API_KEY": app.state.config.STT_OPENAI_API_KEY,
"ENGINE": app.state.config.STT_ENGINE,
"MODEL": app.state.config.STT_MODEL,
},
}
@app.post("/config/update")
async def update_audio_config(
form_data: AudioConfigUpdateForm, user=Depends(get_admin_user)
):
app.state.config.TTS_OPENAI_API_BASE_URL = form_data.tts.OPENAI_API_BASE_URL
app.state.config.TTS_OPENAI_API_KEY = form_data.tts.OPENAI_API_KEY
app.state.config.TTS_API_KEY = form_data.tts.API_KEY
app.state.config.TTS_ENGINE = form_data.tts.ENGINE
app.state.config.TTS_MODEL = form_data.tts.MODEL
app.state.config.TTS_VOICE = form_data.tts.VOICE
app.state.config.TTS_SPLIT_ON = form_data.tts.SPLIT_ON
app.state.config.TTS_AZURE_SPEECH_REGION = form_data.tts.AZURE_SPEECH_REGION
app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT = (
form_data.tts.AZURE_SPEECH_OUTPUT_FORMAT
)
app.state.config.STT_OPENAI_API_BASE_URL = form_data.stt.OPENAI_API_BASE_URL
app.state.config.STT_OPENAI_API_KEY = form_data.stt.OPENAI_API_KEY
app.state.config.STT_ENGINE = form_data.stt.ENGINE
app.state.config.STT_MODEL = form_data.stt.MODEL
return {
"tts": {
"OPENAI_API_BASE_URL": app.state.config.TTS_OPENAI_API_BASE_URL,
"OPENAI_API_KEY": app.state.config.TTS_OPENAI_API_KEY,
"API_KEY": app.state.config.TTS_API_KEY,
"ENGINE": app.state.config.TTS_ENGINE,
"MODEL": app.state.config.TTS_MODEL,
"VOICE": app.state.config.TTS_VOICE,
"SPLIT_ON": app.state.config.TTS_SPLIT_ON,
"AZURE_SPEECH_REGION": app.state.config.TTS_AZURE_SPEECH_REGION,
"AZURE_SPEECH_OUTPUT_FORMAT": app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT,
},
"stt": {
"OPENAI_API_BASE_URL": app.state.config.STT_OPENAI_API_BASE_URL,
"OPENAI_API_KEY": app.state.config.STT_OPENAI_API_KEY,
"ENGINE": app.state.config.STT_ENGINE,
"MODEL": app.state.config.STT_MODEL,
},
}
@app.post("/speech")
async def speech(request: Request, user=Depends(get_verified_user)):
body = await request.body()
name = hashlib.sha256(body).hexdigest()
file_path = SPEECH_CACHE_DIR.joinpath(f"{name}.mp3")
file_body_path = SPEECH_CACHE_DIR.joinpath(f"{name}.json")
# Check if the file already exists in the cache
if file_path.is_file():
return FileResponse(file_path)
if app.state.config.TTS_ENGINE == "openai":
headers = {}
headers["Authorization"] = f"Bearer {app.state.config.TTS_OPENAI_API_KEY}"
headers["Content-Type"] = "application/json"
try:
body = body.decode("utf-8")
body = json.loads(body)
body["model"] = app.state.config.TTS_MODEL
body = json.dumps(body).encode("utf-8")
except Exception:
pass
r = None
try:
r = requests.post(
url=f"{app.state.config.TTS_OPENAI_API_BASE_URL}/audio/speech",
data=body,
headers=headers,
stream=True,
)
r.raise_for_status()
# Save the streaming content to a file
with open(file_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
with open(file_body_path, "w") as f:
json.dump(json.loads(body.decode("utf-8")), f)
# Return the saved file
return FileResponse(file_path)
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
if "error" in res:
error_detail = f"External: {res['error']['message']}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r != None else 500,
detail=error_detail,
)
elif app.state.config.TTS_ENGINE == "elevenlabs":
payload = None
try:
payload = json.loads(body.decode("utf-8"))
except Exception as e:
log.exception(e)
raise HTTPException(status_code=400, detail="Invalid JSON payload")
voice_id = payload.get("voice", "")
if voice_id not in get_available_voices():
raise HTTPException(
status_code=400,
detail="Invalid voice id",
)
url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
headers = {
"Accept": "audio/mpeg",
"Content-Type": "application/json",
"xi-api-key": app.state.config.TTS_API_KEY,
}
data = {
"text": payload["input"],
"model_id": app.state.config.TTS_MODEL,
"voice_settings": {"stability": 0.5, "similarity_boost": 0.5},
}
try:
r = requests.post(url, json=data, headers=headers)
r.raise_for_status()
# Save the streaming content to a file
with open(file_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
with open(file_body_path, "w") as f:
json.dump(json.loads(body.decode("utf-8")), f)
# Return the saved file
return FileResponse(file_path)
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
if "error" in res:
error_detail = f"External: {res['error']['message']}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r != None else 500,
detail=error_detail,
)
elif app.state.config.TTS_ENGINE == "azure":
payload = None
try:
payload = json.loads(body.decode("utf-8"))
except Exception as e:
log.exception(e)
raise HTTPException(status_code=400, detail="Invalid JSON payload")
region = app.state.config.TTS_AZURE_SPEECH_REGION
language = app.state.config.TTS_VOICE
locale = "-".join(app.state.config.TTS_VOICE.split("-")[:1])
output_format = app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT
url = f"https://{region}.tts.speech.microsoft.com/cognitiveservices/v1"
headers = {
"Ocp-Apim-Subscription-Key": app.state.config.TTS_API_KEY,
"Content-Type": "application/ssml+xml",
"X-Microsoft-OutputFormat": output_format,
}
data = f"""<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="{locale}">
<voice name="{language}">{payload["input"]}</voice>
</speak>"""
response = requests.post(url, headers=headers, data=data)
if response.status_code == 200:
with open(file_path, "wb") as f:
f.write(response.content)
return FileResponse(file_path)
else:
log.error(f"Error synthesizing speech - {response.reason}")
raise HTTPException(
status_code=500, detail=f"Error synthesizing speech - {response.reason}"
)
@app.post("/transcriptions")
def transcribe(
file: UploadFile = File(...),
user=Depends(get_current_user),
):
log.info(f"file.content_type: {file.content_type}")
if file.content_type not in ["audio/mpeg", "audio/wav", "audio/ogg", "audio/x-m4a"]:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.FILE_NOT_SUPPORTED,
)
try:
ext = file.filename.split(".")[-1]
id = uuid.uuid4()
filename = f"{id}.{ext}"
file_dir = f"{CACHE_DIR}/audio/transcriptions"
os.makedirs(file_dir, exist_ok=True)
file_path = f"{file_dir}/{filename}"
print(filename)
contents = file.file.read()
with open(file_path, "wb") as f:
f.write(contents)
f.close()
if app.state.config.STT_ENGINE == "":
from faster_whisper import WhisperModel
whisper_kwargs = {
"model_size_or_path": WHISPER_MODEL,
"device": whisper_device_type,
"compute_type": "int8",
"download_root": WHISPER_MODEL_DIR,
"local_files_only": not WHISPER_MODEL_AUTO_UPDATE,
}
log.debug(f"whisper_kwargs: {whisper_kwargs}")
try:
model = WhisperModel(**whisper_kwargs)
except Exception:
log.warning(
"WhisperModel initialization failed, attempting download with local_files_only=False"
)
whisper_kwargs["local_files_only"] = False
model = WhisperModel(**whisper_kwargs)
segments, info = model.transcribe(file_path, beam_size=5)
log.info(
"Detected language '%s' with probability %f"
% (info.language, info.language_probability)
)
transcript = "".join([segment.text for segment in list(segments)])
data = {"text": transcript.strip()}
# save the transcript to a json file
transcript_file = f"{file_dir}/{id}.json"
with open(transcript_file, "w") as f:
json.dump(data, f)
print(data)
return data
elif app.state.config.STT_ENGINE == "openai":
if is_mp4_audio(file_path):
print("is_mp4_audio")
os.rename(file_path, file_path.replace(".wav", ".mp4"))
# Convert MP4 audio file to WAV format
convert_mp4_to_wav(file_path.replace(".wav", ".mp4"), file_path)
headers = {"Authorization": f"Bearer {app.state.config.STT_OPENAI_API_KEY}"}
files = {"file": (filename, open(file_path, "rb"))}
data = {"model": app.state.config.STT_MODEL}
print(files, data)
r = None
try:
r = requests.post(
url=f"{app.state.config.STT_OPENAI_API_BASE_URL}/audio/transcriptions",
headers=headers,
files=files,
data=data,
)
r.raise_for_status()
data = r.json()
# save the transcript to a json file
transcript_file = f"{file_dir}/{id}.json"
with open(transcript_file, "w") as f:
json.dump(data, f)
print(data)
return data
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
if "error" in res:
error_detail = f"External: {res['error']['message']}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r != None else 500,
detail=error_detail,
)
except Exception as e:
log.exception(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(e),
)
def get_available_models() -> list[dict]:
if app.state.config.TTS_ENGINE == "openai":
return [{"id": "tts-1"}, {"id": "tts-1-hd"}]
elif app.state.config.TTS_ENGINE == "elevenlabs":
headers = {
"xi-api-key": app.state.config.TTS_API_KEY,
"Content-Type": "application/json",
}
try:
response = requests.get(
"https://api.elevenlabs.io/v1/models", headers=headers, timeout=5
)
response.raise_for_status()
models = response.json()
return [
{"name": model["name"], "id": model["model_id"]} for model in models
]
except requests.RequestException as e:
log.error(f"Error fetching voices: {str(e)}")
return []
@app.get("/models")
async def get_models(user=Depends(get_verified_user)):
return {"models": get_available_models()}
def get_available_voices() -> dict:
"""Returns {voice_id: voice_name} dict"""
ret = {}
if app.state.config.TTS_ENGINE == "openai":
ret = {
"alloy": "alloy",
"echo": "echo",
"fable": "fable",
"onyx": "onyx",
"nova": "nova",
"shimmer": "shimmer",
}
elif app.state.config.TTS_ENGINE == "elevenlabs":
try:
ret = get_elevenlabs_voices()
except Exception:
# Avoided @lru_cache with exception
pass
elif app.state.config.TTS_ENGINE == "azure":
try:
region = app.state.config.TTS_AZURE_SPEECH_REGION
url = f"https://{region}.tts.speech.microsoft.com/cognitiveservices/voices/list"
headers = {"Ocp-Apim-Subscription-Key": app.state.config.TTS_API_KEY}
response = requests.get(url, headers=headers)
response.raise_for_status()
voices = response.json()
for voice in voices:
ret[voice["ShortName"]] = (
f"{voice['DisplayName']} ({voice['ShortName']})"
)
except requests.RequestException as e:
log.error(f"Error fetching voices: {str(e)}")
return ret
@lru_cache
def get_elevenlabs_voices() -> dict:
"""
Note, set the following in your .env file to use Elevenlabs:
AUDIO_TTS_ENGINE=elevenlabs
AUDIO_TTS_API_KEY=sk_... # Your Elevenlabs API key
AUDIO_TTS_VOICE=EXAVITQu4vr4xnSDxMaL # From https://api.elevenlabs.io/v1/voices
AUDIO_TTS_MODEL=eleven_multilingual_v2
"""
headers = {
"xi-api-key": app.state.config.TTS_API_KEY,
"Content-Type": "application/json",
}
try:
# TODO: Add retries
response = requests.get("https://api.elevenlabs.io/v1/voices", headers=headers)
response.raise_for_status()
voices_data = response.json()
voices = {}
for voice in voices_data.get("voices", []):
voices[voice["voice_id"]] = voice["name"]
except requests.RequestException as e:
# Avoid @lru_cache with exception
log.error(f"Error fetching voices: {str(e)}")
raise RuntimeError(f"Error fetching voices: {str(e)}")
return voices
@app.get("/voices")
async def get_voices(user=Depends(get_verified_user)):
return {"voices": [{"id": k, "name": v} for k, v in get_available_voices().items()]}
-597
View File
@@ -1,597 +0,0 @@
import asyncio
import base64
import json
import logging
import mimetypes
import re
import uuid
from pathlib import Path
from typing import Optional
import requests
from open_webui.apps.images.utils.comfyui import (
ComfyUIGenerateImageForm,
ComfyUIWorkflow,
comfyui_generate_image,
)
from open_webui.config import (
AUTOMATIC1111_API_AUTH,
AUTOMATIC1111_BASE_URL,
AUTOMATIC1111_CFG_SCALE,
AUTOMATIC1111_SAMPLER,
AUTOMATIC1111_SCHEDULER,
CACHE_DIR,
COMFYUI_BASE_URL,
COMFYUI_WORKFLOW,
COMFYUI_WORKFLOW_NODES,
CORS_ALLOW_ORIGIN,
ENABLE_IMAGE_GENERATION,
IMAGE_GENERATION_ENGINE,
IMAGE_GENERATION_MODEL,
IMAGE_SIZE,
IMAGE_STEPS,
IMAGES_OPENAI_API_BASE_URL,
IMAGES_OPENAI_API_KEY,
AppConfig,
)
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS
from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from open_webui.utils.utils import get_admin_user, get_verified_user
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["IMAGES"])
IMAGE_CACHE_DIR = Path(CACHE_DIR).joinpath("./image/generations/")
IMAGE_CACHE_DIR.mkdir(parents=True, exist_ok=True)
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=CORS_ALLOW_ORIGIN,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.state.config = AppConfig()
app.state.config.ENGINE = IMAGE_GENERATION_ENGINE
app.state.config.ENABLED = ENABLE_IMAGE_GENERATION
app.state.config.OPENAI_API_BASE_URL = IMAGES_OPENAI_API_BASE_URL
app.state.config.OPENAI_API_KEY = IMAGES_OPENAI_API_KEY
app.state.config.MODEL = IMAGE_GENERATION_MODEL
app.state.config.AUTOMATIC1111_BASE_URL = AUTOMATIC1111_BASE_URL
app.state.config.AUTOMATIC1111_API_AUTH = AUTOMATIC1111_API_AUTH
app.state.config.AUTOMATIC1111_CFG_SCALE = AUTOMATIC1111_CFG_SCALE
app.state.config.AUTOMATIC1111_SAMPLER = AUTOMATIC1111_SAMPLER
app.state.config.AUTOMATIC1111_SCHEDULER = AUTOMATIC1111_SCHEDULER
app.state.config.COMFYUI_BASE_URL = COMFYUI_BASE_URL
app.state.config.COMFYUI_WORKFLOW = COMFYUI_WORKFLOW
app.state.config.COMFYUI_WORKFLOW_NODES = COMFYUI_WORKFLOW_NODES
app.state.config.IMAGE_SIZE = IMAGE_SIZE
app.state.config.IMAGE_STEPS = IMAGE_STEPS
@app.get("/config")
async def get_config(request: Request, user=Depends(get_admin_user)):
return {
"enabled": app.state.config.ENABLED,
"engine": app.state.config.ENGINE,
"openai": {
"OPENAI_API_BASE_URL": app.state.config.OPENAI_API_BASE_URL,
"OPENAI_API_KEY": app.state.config.OPENAI_API_KEY,
},
"automatic1111": {
"AUTOMATIC1111_BASE_URL": app.state.config.AUTOMATIC1111_BASE_URL,
"AUTOMATIC1111_API_AUTH": app.state.config.AUTOMATIC1111_API_AUTH,
"AUTOMATIC1111_CFG_SCALE": app.state.config.AUTOMATIC1111_CFG_SCALE,
"AUTOMATIC1111_SAMPLER": app.state.config.AUTOMATIC1111_SAMPLER,
"AUTOMATIC1111_SCHEDULER": app.state.config.AUTOMATIC1111_SCHEDULER,
},
"comfyui": {
"COMFYUI_BASE_URL": app.state.config.COMFYUI_BASE_URL,
"COMFYUI_WORKFLOW": app.state.config.COMFYUI_WORKFLOW,
"COMFYUI_WORKFLOW_NODES": app.state.config.COMFYUI_WORKFLOW_NODES,
},
}
class OpenAIConfigForm(BaseModel):
OPENAI_API_BASE_URL: str
OPENAI_API_KEY: str
class Automatic1111ConfigForm(BaseModel):
AUTOMATIC1111_BASE_URL: str
AUTOMATIC1111_API_AUTH: str
AUTOMATIC1111_CFG_SCALE: Optional[str]
AUTOMATIC1111_SAMPLER: Optional[str]
AUTOMATIC1111_SCHEDULER: Optional[str]
class ComfyUIConfigForm(BaseModel):
COMFYUI_BASE_URL: str
COMFYUI_WORKFLOW: str
COMFYUI_WORKFLOW_NODES: list[dict]
class ConfigForm(BaseModel):
enabled: bool
engine: str
openai: OpenAIConfigForm
automatic1111: Automatic1111ConfigForm
comfyui: ComfyUIConfigForm
@app.post("/config/update")
async def update_config(form_data: ConfigForm, user=Depends(get_admin_user)):
app.state.config.ENGINE = form_data.engine
app.state.config.ENABLED = form_data.enabled
app.state.config.OPENAI_API_BASE_URL = form_data.openai.OPENAI_API_BASE_URL
app.state.config.OPENAI_API_KEY = form_data.openai.OPENAI_API_KEY
app.state.config.AUTOMATIC1111_BASE_URL = (
form_data.automatic1111.AUTOMATIC1111_BASE_URL
)
app.state.config.AUTOMATIC1111_API_AUTH = (
form_data.automatic1111.AUTOMATIC1111_API_AUTH
)
app.state.config.AUTOMATIC1111_CFG_SCALE = (
float(form_data.automatic1111.AUTOMATIC1111_CFG_SCALE)
if form_data.automatic1111.AUTOMATIC1111_CFG_SCALE
else None
)
app.state.config.AUTOMATIC1111_SAMPLER = (
form_data.automatic1111.AUTOMATIC1111_SAMPLER
if form_data.automatic1111.AUTOMATIC1111_SAMPLER
else None
)
app.state.config.AUTOMATIC1111_SCHEDULER = (
form_data.automatic1111.AUTOMATIC1111_SCHEDULER
if form_data.automatic1111.AUTOMATIC1111_SCHEDULER
else None
)
app.state.config.COMFYUI_BASE_URL = form_data.comfyui.COMFYUI_BASE_URL.strip("/")
app.state.config.COMFYUI_WORKFLOW = form_data.comfyui.COMFYUI_WORKFLOW
app.state.config.COMFYUI_WORKFLOW_NODES = form_data.comfyui.COMFYUI_WORKFLOW_NODES
return {
"enabled": app.state.config.ENABLED,
"engine": app.state.config.ENGINE,
"openai": {
"OPENAI_API_BASE_URL": app.state.config.OPENAI_API_BASE_URL,
"OPENAI_API_KEY": app.state.config.OPENAI_API_KEY,
},
"automatic1111": {
"AUTOMATIC1111_BASE_URL": app.state.config.AUTOMATIC1111_BASE_URL,
"AUTOMATIC1111_API_AUTH": app.state.config.AUTOMATIC1111_API_AUTH,
"AUTOMATIC1111_CFG_SCALE": app.state.config.AUTOMATIC1111_CFG_SCALE,
"AUTOMATIC1111_SAMPLER": app.state.config.AUTOMATIC1111_SAMPLER,
"AUTOMATIC1111_SCHEDULER": app.state.config.AUTOMATIC1111_SCHEDULER,
},
"comfyui": {
"COMFYUI_BASE_URL": app.state.config.COMFYUI_BASE_URL,
"COMFYUI_WORKFLOW": app.state.config.COMFYUI_WORKFLOW,
"COMFYUI_WORKFLOW_NODES": app.state.config.COMFYUI_WORKFLOW_NODES,
},
}
def get_automatic1111_api_auth():
if app.state.config.AUTOMATIC1111_API_AUTH is None:
return ""
else:
auth1111_byte_string = app.state.config.AUTOMATIC1111_API_AUTH.encode("utf-8")
auth1111_base64_encoded_bytes = base64.b64encode(auth1111_byte_string)
auth1111_base64_encoded_string = auth1111_base64_encoded_bytes.decode("utf-8")
return f"Basic {auth1111_base64_encoded_string}"
@app.get("/config/url/verify")
async def verify_url(user=Depends(get_admin_user)):
if app.state.config.ENGINE == "automatic1111":
try:
r = requests.get(
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
headers={"authorization": get_automatic1111_api_auth()},
)
r.raise_for_status()
return True
except Exception:
app.state.config.ENABLED = False
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.INVALID_URL)
elif app.state.config.ENGINE == "comfyui":
try:
r = requests.get(url=f"{app.state.config.COMFYUI_BASE_URL}/object_info")
r.raise_for_status()
return True
except Exception:
app.state.config.ENABLED = False
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.INVALID_URL)
else:
return True
def set_image_model(model: str):
log.info(f"Setting image model to {model}")
app.state.config.MODEL = model
if app.state.config.ENGINE in ["", "automatic1111"]:
api_auth = get_automatic1111_api_auth()
r = requests.get(
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
headers={"authorization": api_auth},
)
options = r.json()
if model != options["sd_model_checkpoint"]:
options["sd_model_checkpoint"] = model
r = requests.post(
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
json=options,
headers={"authorization": api_auth},
)
return app.state.config.MODEL
def get_image_model():
if app.state.config.ENGINE == "openai":
return app.state.config.MODEL if app.state.config.MODEL else "dall-e-2"
elif app.state.config.ENGINE == "comfyui":
return app.state.config.MODEL if app.state.config.MODEL else ""
elif app.state.config.ENGINE == "automatic1111" or app.state.config.ENGINE == "":
try:
r = requests.get(
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
headers={"authorization": get_automatic1111_api_auth()},
)
options = r.json()
return options["sd_model_checkpoint"]
except Exception as e:
app.state.config.ENABLED = False
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(e))
class ImageConfigForm(BaseModel):
MODEL: str
IMAGE_SIZE: str
IMAGE_STEPS: int
@app.get("/image/config")
async def get_image_config(user=Depends(get_admin_user)):
return {
"MODEL": app.state.config.MODEL,
"IMAGE_SIZE": app.state.config.IMAGE_SIZE,
"IMAGE_STEPS": app.state.config.IMAGE_STEPS,
}
@app.post("/image/config/update")
async def update_image_config(form_data: ImageConfigForm, user=Depends(get_admin_user)):
set_image_model(form_data.MODEL)
pattern = r"^\d+x\d+$"
if re.match(pattern, form_data.IMAGE_SIZE):
app.state.config.IMAGE_SIZE = form_data.IMAGE_SIZE
else:
raise HTTPException(
status_code=400,
detail=ERROR_MESSAGES.INCORRECT_FORMAT(" (e.g., 512x512)."),
)
if form_data.IMAGE_STEPS >= 0:
app.state.config.IMAGE_STEPS = form_data.IMAGE_STEPS
else:
raise HTTPException(
status_code=400,
detail=ERROR_MESSAGES.INCORRECT_FORMAT(" (e.g., 50)."),
)
return {
"MODEL": app.state.config.MODEL,
"IMAGE_SIZE": app.state.config.IMAGE_SIZE,
"IMAGE_STEPS": app.state.config.IMAGE_STEPS,
}
@app.get("/models")
def get_models(user=Depends(get_verified_user)):
try:
if app.state.config.ENGINE == "openai":
return [
{"id": "dall-e-2", "name": "DALL·E 2"},
{"id": "dall-e-3", "name": "DALL·E 3"},
]
elif app.state.config.ENGINE == "comfyui":
# TODO - get models from comfyui
r = requests.get(url=f"{app.state.config.COMFYUI_BASE_URL}/object_info")
info = r.json()
workflow = json.loads(app.state.config.COMFYUI_WORKFLOW)
model_node_id = None
for node in app.state.config.COMFYUI_WORKFLOW_NODES:
if node["type"] == "model":
if node["node_ids"]:
model_node_id = node["node_ids"][0]
break
if model_node_id:
model_list_key = None
print(workflow[model_node_id]["class_type"])
for key in info[workflow[model_node_id]["class_type"]]["input"][
"required"
]:
if "_name" in key:
model_list_key = key
break
if model_list_key:
return list(
map(
lambda model: {"id": model, "name": model},
info[workflow[model_node_id]["class_type"]]["input"][
"required"
][model_list_key][0],
)
)
else:
return list(
map(
lambda model: {"id": model, "name": model},
info["CheckpointLoaderSimple"]["input"]["required"][
"ckpt_name"
][0],
)
)
elif (
app.state.config.ENGINE == "automatic1111" or app.state.config.ENGINE == ""
):
r = requests.get(
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/sd-models",
headers={"authorization": get_automatic1111_api_auth()},
)
models = r.json()
return list(
map(
lambda model: {"id": model["title"], "name": model["model_name"]},
models,
)
)
except Exception as e:
app.state.config.ENABLED = False
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(e))
class GenerateImageForm(BaseModel):
model: Optional[str] = None
prompt: str
size: Optional[str] = None
n: int = 1
negative_prompt: Optional[str] = None
def save_b64_image(b64_str):
try:
image_id = str(uuid.uuid4())
if "," in b64_str:
header, encoded = b64_str.split(",", 1)
mime_type = header.split(";")[0]
img_data = base64.b64decode(encoded)
image_format = mimetypes.guess_extension(mime_type)
image_filename = f"{image_id}{image_format}"
file_path = IMAGE_CACHE_DIR / f"{image_filename}"
with open(file_path, "wb") as f:
f.write(img_data)
return image_filename
else:
image_filename = f"{image_id}.png"
file_path = IMAGE_CACHE_DIR.joinpath(image_filename)
img_data = base64.b64decode(b64_str)
# Write the image data to a file
with open(file_path, "wb") as f:
f.write(img_data)
return image_filename
except Exception as e:
log.exception(f"Error saving image: {e}")
return None
def save_url_image(url):
image_id = str(uuid.uuid4())
try:
r = requests.get(url)
r.raise_for_status()
if r.headers["content-type"].split("/")[0] == "image":
mime_type = r.headers["content-type"]
image_format = mimetypes.guess_extension(mime_type)
if not image_format:
raise ValueError("Could not determine image type from MIME type")
image_filename = f"{image_id}{image_format}"
file_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}")
with open(file_path, "wb") as image_file:
for chunk in r.iter_content(chunk_size=8192):
image_file.write(chunk)
return image_filename
else:
log.error("Url does not point to an image.")
return None
except Exception as e:
log.exception(f"Error saving image: {e}")
return None
@app.post("/generations")
async def image_generations(
form_data: GenerateImageForm,
user=Depends(get_verified_user),
):
width, height = tuple(map(int, app.state.config.IMAGE_SIZE.split("x")))
r = None
try:
if app.state.config.ENGINE == "openai":
headers = {}
headers["Authorization"] = f"Bearer {app.state.config.OPENAI_API_KEY}"
headers["Content-Type"] = "application/json"
data = {
"model": (
app.state.config.MODEL
if app.state.config.MODEL != ""
else "dall-e-2"
),
"prompt": form_data.prompt,
"n": form_data.n,
"size": (
form_data.size if form_data.size else app.state.config.IMAGE_SIZE
),
"response_format": "b64_json",
}
# Use asyncio.to_thread for the requests.post call
r = await asyncio.to_thread(
requests.post,
url=f"{app.state.config.OPENAI_API_BASE_URL}/images/generations",
json=data,
headers=headers,
)
r.raise_for_status()
res = r.json()
images = []
for image in res["data"]:
image_filename = save_b64_image(image["b64_json"])
images.append({"url": f"/cache/image/generations/{image_filename}"})
file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
with open(file_body_path, "w") as f:
json.dump(data, f)
return images
elif app.state.config.ENGINE == "comfyui":
data = {
"prompt": form_data.prompt,
"width": width,
"height": height,
"n": form_data.n,
}
if app.state.config.IMAGE_STEPS is not None:
data["steps"] = app.state.config.IMAGE_STEPS
if form_data.negative_prompt is not None:
data["negative_prompt"] = form_data.negative_prompt
form_data = ComfyUIGenerateImageForm(
**{
"workflow": ComfyUIWorkflow(
**{
"workflow": app.state.config.COMFYUI_WORKFLOW,
"nodes": app.state.config.COMFYUI_WORKFLOW_NODES,
}
),
**data,
}
)
res = await comfyui_generate_image(
app.state.config.MODEL,
form_data,
user.id,
app.state.config.COMFYUI_BASE_URL,
)
log.debug(f"res: {res}")
images = []
for image in res["data"]:
image_filename = save_url_image(image["url"])
images.append({"url": f"/cache/image/generations/{image_filename}"})
file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
with open(file_body_path, "w") as f:
json.dump(form_data.model_dump(exclude_none=True), f)
log.debug(f"images: {images}")
return images
elif (
app.state.config.ENGINE == "automatic1111" or app.state.config.ENGINE == ""
):
if form_data.model:
set_image_model(form_data.model)
data = {
"prompt": form_data.prompt,
"batch_size": form_data.n,
"width": width,
"height": height,
}
if app.state.config.IMAGE_STEPS is not None:
data["steps"] = app.state.config.IMAGE_STEPS
if form_data.negative_prompt is not None:
data["negative_prompt"] = form_data.negative_prompt
if app.state.config.AUTOMATIC1111_CFG_SCALE:
data["cfg_scale"] = app.state.config.AUTOMATIC1111_CFG_SCALE
if app.state.config.AUTOMATIC1111_SAMPLER:
data["sampler_name"] = app.state.config.AUTOMATIC1111_SAMPLER
if app.state.config.AUTOMATIC1111_SCHEDULER:
data["scheduler"] = app.state.config.AUTOMATIC1111_SCHEDULER
# Use asyncio.to_thread for the requests.post call
r = await asyncio.to_thread(
requests.post,
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/txt2img",
json=data,
headers={"authorization": get_automatic1111_api_auth()},
)
res = r.json()
log.debug(f"res: {res}")
images = []
for image in res["images"]:
image_filename = save_b64_image(image)
images.append({"url": f"/cache/image/generations/{image_filename}"})
file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
with open(file_body_path, "w") as f:
json.dump({**data, "info": res["info"]}, f)
return images
except Exception as e:
error = e
if r != None:
data = r.json()
if "error" in data:
error = data["error"]["message"]
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(error))
File diff suppressed because it is too large Load Diff
-546
View File
@@ -1,546 +0,0 @@
import asyncio
import hashlib
import json
import logging
from pathlib import Path
from typing import Literal, Optional, overload
import aiohttp
import requests
from open_webui.apps.webui.models.models import Models
from open_webui.config import (
AIOHTTP_CLIENT_TIMEOUT,
CACHE_DIR,
CORS_ALLOW_ORIGIN,
ENABLE_MODEL_FILTER,
ENABLE_OPENAI_API,
MODEL_FILTER_LIST,
OPENAI_API_BASE_URLS,
OPENAI_API_KEYS,
AppConfig,
)
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS
from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse, StreamingResponse
from pydantic import BaseModel
from starlette.background import BackgroundTask
from open_webui.utils.payload import (
apply_model_params_to_body_openai,
apply_model_system_prompt_to_body,
)
from open_webui.utils.utils import get_admin_user, get_verified_user
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["OPENAI"])
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=CORS_ALLOW_ORIGIN,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.state.config = AppConfig()
app.state.config.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER
app.state.config.MODEL_FILTER_LIST = MODEL_FILTER_LIST
app.state.config.ENABLE_OPENAI_API = ENABLE_OPENAI_API
app.state.config.OPENAI_API_BASE_URLS = OPENAI_API_BASE_URLS
app.state.config.OPENAI_API_KEYS = OPENAI_API_KEYS
app.state.MODELS = {}
@app.middleware("http")
async def check_url(request: Request, call_next):
if len(app.state.MODELS) == 0:
await get_all_models()
response = await call_next(request)
return response
@app.get("/config")
async def get_config(user=Depends(get_admin_user)):
return {"ENABLE_OPENAI_API": app.state.config.ENABLE_OPENAI_API}
class OpenAIConfigForm(BaseModel):
enable_openai_api: Optional[bool] = None
@app.post("/config/update")
async def update_config(form_data: OpenAIConfigForm, user=Depends(get_admin_user)):
app.state.config.ENABLE_OPENAI_API = form_data.enable_openai_api
return {"ENABLE_OPENAI_API": app.state.config.ENABLE_OPENAI_API}
class UrlsUpdateForm(BaseModel):
urls: list[str]
class KeysUpdateForm(BaseModel):
keys: list[str]
@app.get("/urls")
async def get_openai_urls(user=Depends(get_admin_user)):
return {"OPENAI_API_BASE_URLS": app.state.config.OPENAI_API_BASE_URLS}
@app.post("/urls/update")
async def update_openai_urls(form_data: UrlsUpdateForm, user=Depends(get_admin_user)):
await get_all_models()
app.state.config.OPENAI_API_BASE_URLS = form_data.urls
return {"OPENAI_API_BASE_URLS": app.state.config.OPENAI_API_BASE_URLS}
@app.get("/keys")
async def get_openai_keys(user=Depends(get_admin_user)):
return {"OPENAI_API_KEYS": app.state.config.OPENAI_API_KEYS}
@app.post("/keys/update")
async def update_openai_key(form_data: KeysUpdateForm, user=Depends(get_admin_user)):
app.state.config.OPENAI_API_KEYS = form_data.keys
return {"OPENAI_API_KEYS": app.state.config.OPENAI_API_KEYS}
@app.post("/audio/speech")
async def speech(request: Request, user=Depends(get_verified_user)):
idx = None
try:
idx = app.state.config.OPENAI_API_BASE_URLS.index("https://api.openai.com/v1")
body = await request.body()
name = hashlib.sha256(body).hexdigest()
SPEECH_CACHE_DIR = Path(CACHE_DIR).joinpath("./audio/speech/")
SPEECH_CACHE_DIR.mkdir(parents=True, exist_ok=True)
file_path = SPEECH_CACHE_DIR.joinpath(f"{name}.mp3")
file_body_path = SPEECH_CACHE_DIR.joinpath(f"{name}.json")
# Check if the file already exists in the cache
if file_path.is_file():
return FileResponse(file_path)
headers = {}
headers["Authorization"] = f"Bearer {app.state.config.OPENAI_API_KEYS[idx]}"
headers["Content-Type"] = "application/json"
if "openrouter.ai" in app.state.config.OPENAI_API_BASE_URLS[idx]:
headers["HTTP-Referer"] = "https://openwebui.com/"
headers["X-Title"] = "Open WebUI"
r = None
try:
r = requests.post(
url=f"{app.state.config.OPENAI_API_BASE_URLS[idx]}/audio/speech",
data=body,
headers=headers,
stream=True,
)
r.raise_for_status()
# Save the streaming content to a file
with open(file_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
with open(file_body_path, "w") as f:
json.dump(json.loads(body.decode("utf-8")), f)
# Return the saved file
return FileResponse(file_path)
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
if "error" in res:
error_detail = f"External: {res['error']}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r else 500, detail=error_detail
)
except ValueError:
raise HTTPException(status_code=401, detail=ERROR_MESSAGES.OPENAI_NOT_FOUND)
async def fetch_url(url, key):
timeout = aiohttp.ClientTimeout(total=5)
try:
headers = {"Authorization": f"Bearer {key}"}
async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
async with session.get(url, headers=headers) as response:
return await response.json()
except Exception as e:
# Handle connection error here
log.error(f"Connection error: {e}")
return None
async def cleanup_response(
response: Optional[aiohttp.ClientResponse],
session: Optional[aiohttp.ClientSession],
):
if response:
response.close()
if session:
await session.close()
def merge_models_lists(model_lists):
log.debug(f"merge_models_lists {model_lists}")
merged_list = []
for idx, models in enumerate(model_lists):
if models is not None and "error" not in models:
merged_list.extend(
[
{
**model,
"name": model.get("name", model["id"]),
"owned_by": "openai",
"openai": model,
"urlIdx": idx,
}
for model in models
if "api.openai.com"
not in app.state.config.OPENAI_API_BASE_URLS[idx]
or not any(
name in model["id"]
for name in [
"babbage",
"dall-e",
"davinci",
"embedding",
"tts",
"whisper",
]
)
]
)
return merged_list
def is_openai_api_disabled():
api_keys = app.state.config.OPENAI_API_KEYS
no_keys = len(api_keys) == 1 and api_keys[0] == ""
return no_keys or not app.state.config.ENABLE_OPENAI_API
async def get_all_models_raw() -> list:
if is_openai_api_disabled():
return []
# Check if API KEYS length is same than API URLS length
num_urls = len(app.state.config.OPENAI_API_BASE_URLS)
num_keys = len(app.state.config.OPENAI_API_KEYS)
if num_keys != num_urls:
# if there are more keys than urls, remove the extra keys
if num_keys > num_urls:
new_keys = app.state.config.OPENAI_API_KEYS[:num_urls]
app.state.config.OPENAI_API_KEYS = new_keys
# if there are more urls than keys, add empty keys
else:
app.state.config.OPENAI_API_KEYS += [""] * (num_urls - num_keys)
tasks = [
fetch_url(f"{url}/models", app.state.config.OPENAI_API_KEYS[idx])
for idx, url in enumerate(app.state.config.OPENAI_API_BASE_URLS)
]
responses = await asyncio.gather(*tasks)
log.debug(f"get_all_models:responses() {responses}")
return responses
@overload
async def get_all_models(raw: Literal[True]) -> list: ...
@overload
async def get_all_models(raw: Literal[False] = False) -> dict[str, list]: ...
async def get_all_models(raw=False) -> dict[str, list] | list:
log.info("get_all_models()")
if is_openai_api_disabled():
return [] if raw else {"data": []}
responses = await get_all_models_raw()
if raw:
return responses
def extract_data(response):
if response and "data" in response:
return response["data"]
if isinstance(response, list):
return response
return None
models = {"data": merge_models_lists(map(extract_data, responses))}
log.debug(f"models: {models}")
app.state.MODELS = {model["id"]: model for model in models["data"]}
return models
@app.get("/models")
@app.get("/models/{url_idx}")
async def get_models(url_idx: Optional[int] = None, user=Depends(get_verified_user)):
if url_idx is None:
models = await get_all_models()
if app.state.config.ENABLE_MODEL_FILTER:
if user.role == "user":
models["data"] = list(
filter(
lambda model: model["id"] in app.state.config.MODEL_FILTER_LIST,
models["data"],
)
)
return models
return models
else:
url = app.state.config.OPENAI_API_BASE_URLS[url_idx]
key = app.state.config.OPENAI_API_KEYS[url_idx]
headers = {}
headers["Authorization"] = f"Bearer {key}"
headers["Content-Type"] = "application/json"
r = None
try:
r = requests.request(method="GET", url=f"{url}/models", headers=headers)
r.raise_for_status()
response_data = r.json()
if "api.openai.com" in url:
# Filter the response data
response_data["data"] = [
model
for model in response_data["data"]
if not any(
name in model["id"]
for name in [
"babbage",
"dall-e",
"davinci",
"embedding",
"tts",
"whisper",
]
)
]
return response_data
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
if "error" in res:
error_detail = f"External: {res['error']}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r else 500,
detail=error_detail,
)
@app.post("/chat/completions")
@app.post("/chat/completions/{url_idx}")
async def generate_chat_completion(
form_data: dict,
url_idx: Optional[int] = None,
user=Depends(get_verified_user),
):
idx = 0
payload = {**form_data}
if "metadata" in payload:
del payload["metadata"]
model_id = form_data.get("model")
model_info = Models.get_model_by_id(model_id)
if model_info:
if model_info.base_model_id:
payload["model"] = model_info.base_model_id
params = model_info.params.model_dump()
payload = apply_model_params_to_body_openai(params, payload)
payload = apply_model_system_prompt_to_body(params, payload, user)
model = app.state.MODELS[payload.get("model")]
idx = model["urlIdx"]
if "pipeline" in model and model.get("pipeline"):
payload["user"] = {
"name": user.name,
"id": user.id,
"email": user.email,
"role": user.role,
}
url = app.state.config.OPENAI_API_BASE_URLS[idx]
key = app.state.config.OPENAI_API_KEYS[idx]
# Change max_completion_tokens to max_tokens (Backward compatible)
if "api.openai.com" not in url and not payload["model"].lower().startswith("o1-"):
if "max_completion_tokens" in payload:
# Remove "max_completion_tokens" from the payload
payload["max_tokens"] = payload["max_completion_tokens"]
del payload["max_completion_tokens"]
else:
if "max_tokens" in payload and "max_completion_tokens" in payload:
del payload["max_tokens"]
# Convert the modified body back to JSON
payload = json.dumps(payload)
log.debug(payload)
headers = {}
headers["Authorization"] = f"Bearer {key}"
headers["Content-Type"] = "application/json"
if "openrouter.ai" in app.state.config.OPENAI_API_BASE_URLS[idx]:
headers["HTTP-Referer"] = "https://openwebui.com/"
headers["X-Title"] = "Open WebUI"
r = None
session = None
streaming = False
response = None
try:
session = aiohttp.ClientSession(
trust_env=True, timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT)
)
r = await session.request(
method="POST",
url=f"{url}/chat/completions",
data=payload,
headers=headers,
)
# Check if response is SSE
if "text/event-stream" in r.headers.get("Content-Type", ""):
streaming = True
return StreamingResponse(
r.content,
status_code=r.status,
headers=dict(r.headers),
background=BackgroundTask(
cleanup_response, response=r, session=session
),
)
else:
try:
response = await r.json()
except Exception as e:
log.error(e)
response = await r.text()
r.raise_for_status()
return response
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if isinstance(response, dict):
if "error" in response:
error_detail = f"{response['error']['message'] if 'message' in response['error'] else response['error']}"
elif isinstance(response, str):
error_detail = response
raise HTTPException(status_code=r.status if r else 500, detail=error_detail)
finally:
if not streaming and session:
if r:
r.close()
await session.close()
@app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE"])
async def proxy(path: str, request: Request, user=Depends(get_verified_user)):
idx = 0
body = await request.body()
url = app.state.config.OPENAI_API_BASE_URLS[idx]
key = app.state.config.OPENAI_API_KEYS[idx]
target_url = f"{url}/{path}"
headers = {}
headers["Authorization"] = f"Bearer {key}"
headers["Content-Type"] = "application/json"
r = None
session = None
streaming = False
try:
session = aiohttp.ClientSession(trust_env=True)
r = await session.request(
method=request.method,
url=target_url,
data=body,
headers=headers,
)
r.raise_for_status()
# Check if response is SSE
if "text/event-stream" in r.headers.get("Content-Type", ""):
streaming = True
return StreamingResponse(
r.content,
status_code=r.status,
headers=dict(r.headers),
background=BackgroundTask(
cleanup_response, response=r, session=session
),
)
else:
response_data = await r.json()
return response_data
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = await r.json()
print(res)
if "error" in res:
error_detail = f"External: {res['error']['message'] if 'message' in res['error'] else res['error']}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(status_code=r.status if r else 500, detail=error_detail)
finally:
if not streaming and session:
if r:
r.close()
await session.close()
File diff suppressed because it is too large Load Diff
@@ -1,50 +0,0 @@
import logging
from typing import Optional
from open_webui.apps.rag.search.main import SearchResult, get_filtered_results
from duckduckgo_search import DDGS
from open_webui.env import SRC_LOG_LEVELS
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])
def search_duckduckgo(
query: str, count: int, filter_list: Optional[list[str]] = None
) -> list[SearchResult]:
"""
Search using DuckDuckGo's Search API and return the results as a list of SearchResult objects.
Args:
query (str): The query to search for
count (int): The number of results to return
Returns:
list[SearchResult]: A list of search results
"""
# Use the DDGS context manager to create a DDGS object
with DDGS() as ddgs:
# Use the ddgs.text() method to perform the search
ddgs_gen = ddgs.text(
query, safesearch="moderate", max_results=count, backend="api"
)
# Check if there are search results
if ddgs_gen:
# Convert the search results into a list
search_results = [r for r in ddgs_gen]
# Create an empty list to store the SearchResult objects
results = []
# Iterate over each search result
for result in search_results:
# Create a SearchResult object and append it to the results list
results.append(
SearchResult(
link=result["href"],
title=result.get("title"),
snippet=result.get("body"),
)
)
if filter_list:
results = get_filtered_results(results, filter_list)
# Return the list of search results
return results
@@ -1,50 +0,0 @@
import logging
from typing import Optional
import requests
from open_webui.apps.rag.search.main import SearchResult, get_filtered_results
from open_webui.env import SRC_LOG_LEVELS
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])
def search_google_pse(
api_key: str,
search_engine_id: str,
query: str,
count: int,
filter_list: Optional[list[str]] = None,
) -> list[SearchResult]:
"""Search using Google's Programmable Search Engine API and return the results as a list of SearchResult objects.
Args:
api_key (str): A Programmable Search Engine API key
search_engine_id (str): A Programmable Search Engine ID
query (str): The query to search for
"""
url = "https://www.googleapis.com/customsearch/v1"
headers = {"Content-Type": "application/json"}
params = {
"cx": search_engine_id,
"q": query,
"key": api_key,
"num": count,
}
response = requests.request("GET", url, headers=headers, params=params)
response.raise_for_status()
json_response = response.json()
results = json_response.get("items", [])
if filter_list:
results = get_filtered_results(results, filter_list)
return [
SearchResult(
link=result["link"],
title=result.get("title"),
snippet=result.get("snippet"),
)
for result in results
]
-526
View File
@@ -1,526 +0,0 @@
import logging
import os
import uuid
from typing import Optional, Union
import requests
from huggingface_hub import snapshot_download
from langchain.retrievers import ContextualCompressionRetriever, EnsembleRetriever
from langchain_community.retrievers import BM25Retriever
from langchain_core.documents import Document
from open_webui.apps.ollama.main import (
GenerateEmbeddingsForm,
generate_ollama_embeddings,
)
from open_webui.apps.rag.vector.connector import VECTOR_DB_CLIENT
from open_webui.utils.misc import get_last_user_message
from open_webui.env import SRC_LOG_LEVELS
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])
from typing import Any
from langchain_core.callbacks import CallbackManagerForRetrieverRun
from langchain_core.retrievers import BaseRetriever
class VectorSearchRetriever(BaseRetriever):
collection_name: Any
embedding_function: Any
top_k: int
def _get_relevant_documents(
self,
query: str,
*,
run_manager: CallbackManagerForRetrieverRun,
) -> list[Document]:
result = VECTOR_DB_CLIENT.search(
collection_name=self.collection_name,
vectors=[self.embedding_function(query)],
limit=self.top_k,
)
ids = result.ids[0]
metadatas = result.metadatas[0]
documents = result.documents[0]
results = []
for idx in range(len(ids)):
results.append(
Document(
metadata=metadatas[idx],
page_content=documents[idx],
)
)
return results
def query_doc(
collection_name: str,
query: str,
embedding_function,
k: int,
):
try:
result = VECTOR_DB_CLIENT.search(
collection_name=collection_name,
vectors=[embedding_function(query)],
limit=k,
)
print("result", result)
log.info(f"query_doc:result {result}")
return result
except Exception as e:
print(e)
raise e
def query_doc_with_hybrid_search(
collection_name: str,
query: str,
embedding_function,
k: int,
reranking_function,
r: float,
) -> dict:
try:
result = VECTOR_DB_CLIENT.get(collection_name=collection_name)
bm25_retriever = BM25Retriever.from_texts(
texts=result.documents[0],
metadatas=result.metadatas[0],
)
bm25_retriever.k = k
vector_search_retriever = VectorSearchRetriever(
collection_name=collection_name,
embedding_function=embedding_function,
top_k=k,
)
ensemble_retriever = EnsembleRetriever(
retrievers=[bm25_retriever, vector_search_retriever], weights=[0.5, 0.5]
)
compressor = RerankCompressor(
embedding_function=embedding_function,
top_n=k,
reranking_function=reranking_function,
r_score=r,
)
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=ensemble_retriever
)
result = compression_retriever.invoke(query)
result = {
"distances": [[d.metadata.get("score") for d in result]],
"documents": [[d.page_content for d in result]],
"metadatas": [[d.metadata for d in result]],
}
log.info(f"query_doc_with_hybrid_search:result {result}")
return result
except Exception as e:
raise e
def merge_and_sort_query_results(
query_results: list[dict], k: int, reverse: bool = False
) -> list[dict]:
# Initialize lists to store combined data
combined_distances = []
combined_documents = []
combined_metadatas = []
for data in query_results:
combined_distances.extend(data["distances"][0])
combined_documents.extend(data["documents"][0])
combined_metadatas.extend(data["metadatas"][0])
# Create a list of tuples (distance, document, metadata)
combined = list(zip(combined_distances, combined_documents, combined_metadatas))
# Sort the list based on distances
combined.sort(key=lambda x: x[0], reverse=reverse)
# We don't have anything :-(
if not combined:
sorted_distances = []
sorted_documents = []
sorted_metadatas = []
else:
# Unzip the sorted list
sorted_distances, sorted_documents, sorted_metadatas = zip(*combined)
# Slicing the lists to include only k elements
sorted_distances = list(sorted_distances)[:k]
sorted_documents = list(sorted_documents)[:k]
sorted_metadatas = list(sorted_metadatas)[:k]
# Create the output dictionary
result = {
"distances": [sorted_distances],
"documents": [sorted_documents],
"metadatas": [sorted_metadatas],
}
return result
def query_collection(
collection_names: list[str],
query: str,
embedding_function,
k: int,
) -> dict:
results = []
for collection_name in collection_names:
if collection_name:
try:
result = query_doc(
collection_name=collection_name,
query=query,
k=k,
embedding_function=embedding_function,
)
results.append(result.model_dump())
except Exception as e:
log.exception(f"Error when querying the collection: {e}")
else:
pass
return merge_and_sort_query_results(results, k=k)
def query_collection_with_hybrid_search(
collection_names: list[str],
query: str,
embedding_function,
k: int,
reranking_function,
r: float,
) -> dict:
results = []
error = False
for collection_name in collection_names:
try:
result = query_doc_with_hybrid_search(
collection_name=collection_name,
query=query,
embedding_function=embedding_function,
k=k,
reranking_function=reranking_function,
r=r,
)
results.append(result)
except Exception as e:
log.exception(
"Error when querying the collection with " f"hybrid_search: {e}"
)
error = True
if error:
raise Exception(
"Hybrid search failed for all collections. Using Non hybrid search as fallback."
)
return merge_and_sort_query_results(results, k=k, reverse=True)
def rag_template(template: str, context: str, query: str):
count = template.count("[context]")
assert "[context]" in template, "RAG template does not contain '[context]'"
if "<context>" in context and "</context>" in context:
log.debug(
"WARNING: Potential prompt injection attack: the RAG "
"context contains '<context>' and '</context>'. This might be "
"nothing, or the user might be trying to hack something."
)
if "[query]" in context:
query_placeholder = f"[query-{str(uuid.uuid4())}]"
template = template.replace("[query]", query_placeholder)
template = template.replace("[context]", context)
template = template.replace(query_placeholder, query)
else:
template = template.replace("[context]", context)
template = template.replace("[query]", query)
return template
def get_embedding_function(
embedding_engine,
embedding_model,
embedding_function,
openai_key,
openai_url,
batch_size,
):
if embedding_engine == "":
return lambda query: embedding_function.encode(query).tolist()
elif embedding_engine in ["ollama", "openai"]:
if embedding_engine == "ollama":
func = lambda query: generate_ollama_embeddings(
GenerateEmbeddingsForm(
**{
"model": embedding_model,
"prompt": query,
}
)
)
elif embedding_engine == "openai":
func = lambda query: generate_openai_embeddings(
model=embedding_model,
text=query,
key=openai_key,
url=openai_url,
)
def generate_multiple(query, f):
if isinstance(query, list):
if embedding_engine == "openai":
embeddings = []
for i in range(0, len(query), batch_size):
embeddings.extend(f(query[i : i + batch_size]))
return embeddings
else:
return [f(q) for q in query]
else:
return f(query)
return lambda query: generate_multiple(query, func)
def get_rag_context(
files,
messages,
embedding_function,
k,
reranking_function,
r,
hybrid_search,
):
log.debug(f"files: {files} {messages} {embedding_function} {reranking_function}")
query = get_last_user_message(messages)
extracted_collections = []
relevant_contexts = []
for file in files:
context = None
collection_names = (
file["collection_names"]
if file["type"] == "collection"
else [file["collection_name"]] if file["collection_name"] else []
)
collection_names = set(collection_names).difference(extracted_collections)
if not collection_names:
log.debug(f"skipping {file} as it has already been extracted")
continue
try:
context = None
if file["type"] == "text":
context = file["content"]
else:
if hybrid_search:
try:
context = query_collection_with_hybrid_search(
collection_names=collection_names,
query=query,
embedding_function=embedding_function,
k=k,
reranking_function=reranking_function,
r=r,
)
except Exception as e:
log.debug(
"Error when using hybrid search, using"
" non hybrid search as fallback."
)
if (not hybrid_search) or (context is None):
context = query_collection(
collection_names=collection_names,
query=query,
embedding_function=embedding_function,
k=k,
)
except Exception as e:
log.exception(e)
if context:
relevant_contexts.append({**context, "source": file})
extracted_collections.extend(collection_names)
contexts = []
citations = []
for context in relevant_contexts:
try:
if "documents" in context:
contexts.append(
"\n\n".join(
[text for text in context["documents"][0] if text is not None]
)
)
if "metadatas" in context:
citations.append(
{
"source": context["source"],
"document": context["documents"][0],
"metadata": context["metadatas"][0],
}
)
except Exception as e:
log.exception(e)
return contexts, citations
def get_model_path(model: str, update_model: bool = False):
# Construct huggingface_hub kwargs with local_files_only to return the snapshot path
cache_dir = os.getenv("SENTENCE_TRANSFORMERS_HOME")
local_files_only = not update_model
snapshot_kwargs = {
"cache_dir": cache_dir,
"local_files_only": local_files_only,
}
log.debug(f"model: {model}")
log.debug(f"snapshot_kwargs: {snapshot_kwargs}")
# Inspiration from upstream sentence_transformers
if (
os.path.exists(model)
or ("\\" in model or model.count("/") > 1)
and local_files_only
):
# If fully qualified path exists, return input, else set repo_id
return model
elif "/" not in model:
# Set valid repo_id for model short-name
model = "sentence-transformers" + "/" + model
snapshot_kwargs["repo_id"] = model
# Attempt to query the huggingface_hub library to determine the local path and/or to update
try:
model_repo_path = snapshot_download(**snapshot_kwargs)
log.debug(f"model_repo_path: {model_repo_path}")
return model_repo_path
except Exception as e:
log.exception(f"Cannot determine model snapshot path: {e}")
return model
def generate_openai_embeddings(
model: str,
text: Union[str, list[str]],
key: str,
url: str = "https://api.openai.com/v1",
):
if isinstance(text, list):
embeddings = generate_openai_batch_embeddings(model, text, key, url)
else:
embeddings = generate_openai_batch_embeddings(model, [text], key, url)
return embeddings[0] if isinstance(text, str) else embeddings
def generate_openai_batch_embeddings(
model: str, texts: list[str], key: str, url: str = "https://api.openai.com/v1"
) -> Optional[list[list[float]]]:
try:
r = requests.post(
f"{url}/embeddings",
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {key}",
},
json={"input": texts, "model": model},
)
r.raise_for_status()
data = r.json()
if "data" in data:
return [elem["embedding"] for elem in data["data"]]
else:
raise "Something went wrong :/"
except Exception as e:
print(e)
return None
import operator
from typing import Optional, Sequence
from langchain_core.callbacks import Callbacks
from langchain_core.documents import BaseDocumentCompressor, Document
class RerankCompressor(BaseDocumentCompressor):
embedding_function: Any
top_n: int
reranking_function: Any
r_score: float
class Config:
extra = "forbid"
arbitrary_types_allowed = True
def compress_documents(
self,
documents: Sequence[Document],
query: str,
callbacks: Optional[Callbacks] = None,
) -> Sequence[Document]:
reranking = self.reranking_function is not None
if reranking:
scores = self.reranking_function.predict(
[(query, doc.page_content) for doc in documents]
)
else:
from sentence_transformers import util
query_embedding = self.embedding_function(query)
document_embedding = self.embedding_function(
[doc.page_content for doc in documents]
)
scores = util.cos_sim(query_embedding, document_embedding)[0]
docs_with_scores = list(zip(documents, scores.tolist()))
if self.r_score:
docs_with_scores = [
(d, s) for d, s in docs_with_scores if s >= self.r_score
]
result = sorted(docs_with_scores, key=operator.itemgetter(1), reverse=True)
final_results = []
for doc, doc_score in result[: self.top_n]:
metadata = doc.metadata
metadata["score"] = doc_score
doc = Document(
page_content=doc.page_content,
metadata=metadata,
)
final_results.append(doc)
return final_results
@@ -1,10 +0,0 @@
from open_webui.apps.rag.vector.dbs.chroma import ChromaClient
from open_webui.apps.rag.vector.dbs.milvus import MilvusClient
from open_webui.config import VECTOR_DB
if VECTOR_DB == "milvus":
VECTOR_DB_CLIENT = MilvusClient()
else:
VECTOR_DB_CLIENT = ChromaClient()
@@ -1,122 +0,0 @@
import chromadb
from chromadb import Settings
from chromadb.utils.batch_utils import create_batches
from typing import Optional
from open_webui.apps.rag.vector.main import VectorItem, SearchResult, GetResult
from open_webui.config import (
CHROMA_DATA_PATH,
CHROMA_HTTP_HOST,
CHROMA_HTTP_PORT,
CHROMA_HTTP_HEADERS,
CHROMA_HTTP_SSL,
CHROMA_TENANT,
CHROMA_DATABASE,
)
class ChromaClient:
def __init__(self):
if CHROMA_HTTP_HOST != "":
self.client = chromadb.HttpClient(
host=CHROMA_HTTP_HOST,
port=CHROMA_HTTP_PORT,
headers=CHROMA_HTTP_HEADERS,
ssl=CHROMA_HTTP_SSL,
tenant=CHROMA_TENANT,
database=CHROMA_DATABASE,
settings=Settings(allow_reset=True, anonymized_telemetry=False),
)
else:
self.client = chromadb.PersistentClient(
path=CHROMA_DATA_PATH,
settings=Settings(allow_reset=True, anonymized_telemetry=False),
tenant=CHROMA_TENANT,
database=CHROMA_DATABASE,
)
def has_collection(self, collection_name: str) -> bool:
# Check if the collection exists based on the collection name.
collections = self.client.list_collections()
return collection_name in [collection.name for collection in collections]
def delete_collection(self, collection_name: str):
# Delete the collection based on the collection name.
return self.client.delete_collection(name=collection_name)
def search(
self, collection_name: str, vectors: list[list[float | int]], limit: int
) -> Optional[SearchResult]:
# Search for the nearest neighbor items based on the vectors and return 'limit' number of results.
collection = self.client.get_collection(name=collection_name)
if collection:
result = collection.query(
query_embeddings=vectors,
n_results=limit,
)
return SearchResult(
**{
"ids": result["ids"],
"distances": result["distances"],
"documents": result["documents"],
"metadatas": result["metadatas"],
}
)
return None
def get(self, collection_name: str) -> Optional[GetResult]:
# Get all the items in the collection.
collection = self.client.get_collection(name=collection_name)
if collection:
result = collection.get()
return GetResult(
**{
"ids": [result["ids"]],
"documents": [result["documents"]],
"metadatas": [result["metadatas"]],
}
)
return None
def insert(self, collection_name: str, items: list[VectorItem]):
# Insert the items into the collection, if the collection does not exist, it will be created.
collection = self.client.get_or_create_collection(name=collection_name)
ids = [item["id"] for item in items]
documents = [item["text"] for item in items]
embeddings = [item["vector"] for item in items]
metadatas = [item["metadata"] for item in items]
for batch in create_batches(
api=self.client,
documents=documents,
embeddings=embeddings,
ids=ids,
metadatas=metadatas,
):
collection.add(*batch)
def upsert(self, collection_name: str, items: list[VectorItem]):
# Update the items in the collection, if the items are not present, insert them. If the collection does not exist, it will be created.
collection = self.client.get_or_create_collection(name=collection_name)
ids = [item["id"] for item in items]
documents = [item["text"] for item in items]
embeddings = [item["vector"] for item in items]
metadatas = [item["metadata"] for item in items]
collection.upsert(
ids=ids, documents=documents, embeddings=embeddings, metadatas=metadatas
)
def delete(self, collection_name: str, ids: list[str]):
# Delete the items from the collection based on the ids.
collection = self.client.get_collection(name=collection_name)
if collection:
collection.delete(ids=ids)
def reset(self):
# Resets the database. This will delete all collections and item entries.
return self.client.reset()
@@ -1,205 +0,0 @@
from pymilvus import MilvusClient as Client
from pymilvus import FieldSchema, DataType
import json
from typing import Optional
from open_webui.apps.rag.vector.main import VectorItem, SearchResult, GetResult
from open_webui.config import (
MILVUS_URI,
)
class MilvusClient:
def __init__(self):
self.collection_prefix = "open_webui"
self.client = Client(uri=MILVUS_URI)
def _result_to_get_result(self, result) -> GetResult:
print(result)
ids = []
documents = []
metadatas = []
for match in result:
_ids = []
_documents = []
_metadatas = []
for item in match:
_ids.append(item.get("id"))
_documents.append(item.get("data", {}).get("text"))
_metadatas.append(item.get("metadata"))
ids.append(_ids)
documents.append(_documents)
metadatas.append(_metadatas)
return GetResult(
**{
"ids": ids,
"documents": documents,
"metadatas": metadatas,
}
)
def _result_to_search_result(self, result) -> SearchResult:
print(result)
ids = []
distances = []
documents = []
metadatas = []
for match in result:
_ids = []
_distances = []
_documents = []
_metadatas = []
for item in match:
_ids.append(item.get("id"))
_distances.append(item.get("distance"))
_documents.append(item.get("entity", {}).get("data", {}).get("text"))
_metadatas.append(item.get("entity", {}).get("metadata"))
ids.append(_ids)
distances.append(_distances)
documents.append(_documents)
metadatas.append(_metadatas)
return SearchResult(
**{
"ids": ids,
"distances": distances,
"documents": documents,
"metadatas": metadatas,
}
)
def _create_collection(self, collection_name: str, dimension: int):
schema = self.client.create_schema(
auto_id=False,
enable_dynamic_field=True,
)
schema.add_field(
field_name="id",
datatype=DataType.VARCHAR,
is_primary=True,
max_length=65535,
)
schema.add_field(
field_name="vector",
datatype=DataType.FLOAT_VECTOR,
dim=dimension,
description="vector",
)
schema.add_field(field_name="data", datatype=DataType.JSON, description="data")
schema.add_field(
field_name="metadata", datatype=DataType.JSON, description="metadata"
)
index_params = self.client.prepare_index_params()
index_params.add_index(
field_name="vector", index_type="HNSW", metric_type="COSINE", params={}
)
self.client.create_collection(
collection_name=f"{self.collection_prefix}_{collection_name}",
schema=schema,
index_params=index_params,
)
def has_collection(self, collection_name: str) -> bool:
# Check if the collection exists based on the collection name.
return self.client.has_collection(
collection_name=f"{self.collection_prefix}_{collection_name}"
)
def delete_collection(self, collection_name: str):
# Delete the collection based on the collection name.
return self.client.drop_collection(
collection_name=f"{self.collection_prefix}_{collection_name}"
)
def search(
self, collection_name: str, vectors: list[list[float | int]], limit: int
) -> Optional[SearchResult]:
# Search for the nearest neighbor items based on the vectors and return 'limit' number of results.
result = self.client.search(
collection_name=f"{self.collection_prefix}_{collection_name}",
data=vectors,
limit=limit,
output_fields=["data", "metadata"],
)
return self._result_to_search_result(result)
def get(self, collection_name: str) -> Optional[GetResult]:
# Get all the items in the collection.
result = self.client.query(
collection_name=f"{self.collection_prefix}_{collection_name}",
filter='id != ""',
)
return self._result_to_get_result([result])
def insert(self, collection_name: str, items: list[VectorItem]):
# Insert the items into the collection, if the collection does not exist, it will be created.
if not self.client.has_collection(
collection_name=f"{self.collection_prefix}_{collection_name}"
):
self._create_collection(
collection_name=collection_name, dimension=len(items[0]["vector"])
)
return self.client.insert(
collection_name=f"{self.collection_prefix}_{collection_name}",
data=[
{
"id": item["id"],
"vector": item["vector"],
"data": {"text": item["text"]},
"metadata": item["metadata"],
}
for item in items
],
)
def upsert(self, collection_name: str, items: list[VectorItem]):
# Update the items in the collection, if the items are not present, insert them. If the collection does not exist, it will be created.
if not self.client.has_collection(
collection_name=f"{self.collection_prefix}_{collection_name}"
):
self._create_collection(
collection_name=collection_name, dimension=len(items[0]["vector"])
)
return self.client.upsert(
collection_name=f"{self.collection_prefix}_{collection_name}",
data=[
{
"id": item["id"],
"vector": item["vector"],
"data": {"text": item["text"]},
"metadata": item["metadata"],
}
for item in items
],
)
def delete(self, collection_name: str, ids: list[str]):
# Delete the items from the collection based on the ids.
return self.client.delete(
collection_name=f"{self.collection_prefix}_{collection_name}",
ids=ids,
)
def reset(self):
# Resets the database. This will delete all collections and item entries.
collection_names = self.client.list_collections()
for collection_name in collection_names:
if collection_name.startswith(self.collection_prefix):
self.client.drop_collection(collection_name=collection_name)
@@ -1,19 +0,0 @@
from pydantic import BaseModel
from typing import Optional, List, Any
class VectorItem(BaseModel):
id: str
text: str
vector: List[float | int]
metadata: Any
class GetResult(BaseModel):
ids: Optional[List[List[str]]]
documents: Optional[List[List[str]]]
metadatas: Optional[List[List[Any]]]
class SearchResult(GetResult):
distances: Optional[List[List[float | int]]]
-219
View File
@@ -1,219 +0,0 @@
import asyncio
import socketio
import logging
import sys
import time
from open_webui.apps.webui.models.users import Users
from open_webui.env import (
ENABLE_WEBSOCKET_SUPPORT,
WEBSOCKET_MANAGER,
WEBSOCKET_REDIS_URL,
)
from open_webui.utils.utils import decode_token
from open_webui.apps.socket.utils import RedisDict
from open_webui.env import (
GLOBAL_LOG_LEVEL,
SRC_LOG_LEVELS,
)
logging.basicConfig(stream=sys.stdout, level=GLOBAL_LOG_LEVEL)
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["SOCKET"])
if WEBSOCKET_MANAGER == "redis":
mgr = socketio.AsyncRedisManager(WEBSOCKET_REDIS_URL)
sio = socketio.AsyncServer(
cors_allowed_origins=[],
async_mode="asgi",
transports=(
["polling", "websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]
),
allow_upgrades=ENABLE_WEBSOCKET_SUPPORT,
always_connect=True,
client_manager=mgr,
)
else:
sio = socketio.AsyncServer(
cors_allowed_origins=[],
async_mode="asgi",
transports=(
["polling", "websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]
),
allow_upgrades=ENABLE_WEBSOCKET_SUPPORT,
always_connect=True,
)
app = socketio.ASGIApp(sio, socketio_path="/ws/socket.io")
# Dictionary to maintain the user pool
if WEBSOCKET_MANAGER == "redis":
SESSION_POOL = RedisDict("open-webui:session_pool", redis_url=WEBSOCKET_REDIS_URL)
USER_POOL = RedisDict("open-webui:user_pool", redis_url=WEBSOCKET_REDIS_URL)
USAGE_POOL = RedisDict("open-webui:usage_pool", redis_url=WEBSOCKET_REDIS_URL)
else:
SESSION_POOL = {}
USER_POOL = {}
USAGE_POOL = {}
# Timeout duration in seconds
TIMEOUT_DURATION = 3
async def periodic_usage_pool_cleanup():
while True:
now = int(time.time())
for model_id, connections in list(USAGE_POOL.items()):
# Creating a list of sids to remove if they have timed out
expired_sids = [
sid
for sid, details in connections.items()
if now - details["updated_at"] > TIMEOUT_DURATION
]
for sid in expired_sids:
del connections[sid]
if not connections:
log.debug(f"Cleaning up model {model_id} from usage pool")
del USAGE_POOL[model_id]
else:
USAGE_POOL[model_id] = connections
# Emit updated usage information after cleaning
await sio.emit("usage", {"models": get_models_in_use()})
await asyncio.sleep(TIMEOUT_DURATION)
# Start the cleanup task when your app starts
asyncio.create_task(periodic_usage_pool_cleanup())
def get_models_in_use():
# List models that are currently in use
models_in_use = list(USAGE_POOL.keys())
return models_in_use
@sio.on("usage")
async def usage(sid, data):
model_id = data["model"]
# Record the timestamp for the last update
current_time = int(time.time())
# Store the new usage data and task
USAGE_POOL[model_id] = {
**(USAGE_POOL[model_id] if model_id in USAGE_POOL else {}),
sid: {"updated_at": current_time},
}
# Broadcast the usage data to all clients
await sio.emit("usage", {"models": get_models_in_use()})
@sio.event
async def connect(sid, environ, auth):
user = None
if auth and "token" in auth:
data = decode_token(auth["token"])
if data is not None and "id" in data:
user = Users.get_user_by_id(data["id"])
if user:
SESSION_POOL[sid] = user.id
if user.id in USER_POOL:
USER_POOL[user.id].append(sid)
else:
USER_POOL[user.id] = [sid]
# print(f"user {user.name}({user.id}) connected with session ID {sid}")
await sio.emit("user-count", {"count": len(USER_POOL.items())})
await sio.emit("usage", {"models": get_models_in_use()})
@sio.on("user-join")
async def user_join(sid, data):
# print("user-join", sid, data)
auth = data["auth"] if "auth" in data else None
if not auth or "token" not in auth:
return
data = decode_token(auth["token"])
if data is None or "id" not in data:
return
user = Users.get_user_by_id(data["id"])
if not user:
return
SESSION_POOL[sid] = user.id
if user.id in USER_POOL:
USER_POOL[user.id].append(sid)
else:
USER_POOL[user.id] = [sid]
# print(f"user {user.name}({user.id}) connected with session ID {sid}")
await sio.emit("user-count", {"count": len(USER_POOL.items())})
@sio.on("user-count")
async def user_count(sid):
await sio.emit("user-count", {"count": len(USER_POOL.items())})
@sio.event
async def disconnect(sid):
if sid in SESSION_POOL:
user_id = SESSION_POOL[sid]
del SESSION_POOL[sid]
USER_POOL[user_id] = [_sid for _sid in USER_POOL[user_id] if _sid != sid]
if len(USER_POOL[user_id]) == 0:
del USER_POOL[user_id]
await sio.emit("user-count", {"count": len(USER_POOL)})
else:
pass
# print(f"Unknown session ID {sid} disconnected")
def get_event_emitter(request_info):
async def __event_emitter__(event_data):
await sio.emit(
"chat-events",
{
"chat_id": request_info["chat_id"],
"message_id": request_info["message_id"],
"data": event_data,
},
to=request_info["session_id"],
)
return __event_emitter__
def get_event_call(request_info):
async def __event_call__(event_data):
response = await sio.call(
"chat-events",
{
"chat_id": request_info["chat_id"],
"message_id": request_info["message_id"],
"data": event_data,
},
to=request_info["session_id"],
)
return response
return __event_call__
-59
View File
@@ -1,59 +0,0 @@
import json
import redis
class RedisDict:
def __init__(self, name, redis_url):
self.name = name
self.redis = redis.Redis.from_url(redis_url, decode_responses=True)
def __setitem__(self, key, value):
serialized_value = json.dumps(value)
self.redis.hset(self.name, key, serialized_value)
def __getitem__(self, key):
value = self.redis.hget(self.name, key)
if value is None:
raise KeyError(key)
return json.loads(value)
def __delitem__(self, key):
result = self.redis.hdel(self.name, key)
if result == 0:
raise KeyError(key)
def __contains__(self, key):
return self.redis.hexists(self.name, key)
def __len__(self):
return self.redis.hlen(self.name)
def keys(self):
return self.redis.hkeys(self.name)
def values(self):
return [json.loads(v) for v in self.redis.hvals(self.name)]
def items(self):
return [(k, json.loads(v)) for k, v in self.redis.hgetall(self.name).items()]
def get(self, key, default=None):
try:
return self[key]
except KeyError:
return default
def clear(self):
self.redis.delete(self.name)
def update(self, other=None, **kwargs):
if other is not None:
for k, v in other.items() if hasattr(other, "items") else other:
self[k] = v
for k, v in kwargs.items():
self[k] = v
def setdefault(self, key, default=None):
if key not in self:
self[key] = default
return self[key]
-390
View File
@@ -1,390 +0,0 @@
import inspect
import json
import logging
from typing import AsyncGenerator, Generator, Iterator
from open_webui.apps.socket.main import get_event_call, get_event_emitter
from open_webui.apps.webui.models.functions import Functions
from open_webui.apps.webui.models.models import Models
from open_webui.apps.webui.routers import (
auths,
chats,
configs,
documents,
files,
functions,
memories,
models,
prompts,
tools,
users,
utils,
)
from open_webui.apps.webui.utils import load_function_module_by_id
from open_webui.config import (
ADMIN_EMAIL,
CORS_ALLOW_ORIGIN,
DEFAULT_MODELS,
DEFAULT_PROMPT_SUGGESTIONS,
DEFAULT_USER_ROLE,
ENABLE_COMMUNITY_SHARING,
ENABLE_LOGIN_FORM,
ENABLE_MESSAGE_RATING,
ENABLE_SIGNUP,
JWT_EXPIRES_IN,
OAUTH_EMAIL_CLAIM,
OAUTH_PICTURE_CLAIM,
OAUTH_USERNAME_CLAIM,
SHOW_ADMIN_DETAILS,
USER_PERMISSIONS,
WEBHOOK_URL,
WEBUI_AUTH,
WEBUI_BANNERS,
AppConfig,
)
from open_webui.env import (
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
WEBUI_AUTH_TRUSTED_NAME_HEADER,
)
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse
from pydantic import BaseModel
from open_webui.utils.misc import (
openai_chat_chunk_message_template,
openai_chat_completion_message_template,
)
from open_webui.utils.payload import (
apply_model_params_to_body_openai,
apply_model_system_prompt_to_body,
)
from open_webui.utils.tools import get_tools
app = FastAPI()
log = logging.getLogger(__name__)
app.state.config = AppConfig()
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
app.state.config.ENABLE_LOGIN_FORM = ENABLE_LOGIN_FORM
app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER
app.state.AUTH_TRUSTED_NAME_HEADER = WEBUI_AUTH_TRUSTED_NAME_HEADER
app.state.config.SHOW_ADMIN_DETAILS = SHOW_ADMIN_DETAILS
app.state.config.ADMIN_EMAIL = ADMIN_EMAIL
app.state.config.DEFAULT_MODELS = DEFAULT_MODELS
app.state.config.DEFAULT_PROMPT_SUGGESTIONS = DEFAULT_PROMPT_SUGGESTIONS
app.state.config.DEFAULT_USER_ROLE = DEFAULT_USER_ROLE
app.state.config.USER_PERMISSIONS = USER_PERMISSIONS
app.state.config.WEBHOOK_URL = WEBHOOK_URL
app.state.config.BANNERS = WEBUI_BANNERS
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
app.state.config.ENABLE_MESSAGE_RATING = ENABLE_MESSAGE_RATING
app.state.config.OAUTH_USERNAME_CLAIM = OAUTH_USERNAME_CLAIM
app.state.config.OAUTH_PICTURE_CLAIM = OAUTH_PICTURE_CLAIM
app.state.config.OAUTH_EMAIL_CLAIM = OAUTH_EMAIL_CLAIM
app.state.MODELS = {}
app.state.TOOLS = {}
app.state.FUNCTIONS = {}
app.add_middleware(
CORSMiddleware,
allow_origins=CORS_ALLOW_ORIGIN,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(configs.router, prefix="/configs", tags=["configs"])
app.include_router(auths.router, prefix="/auths", tags=["auths"])
app.include_router(users.router, prefix="/users", tags=["users"])
app.include_router(chats.router, prefix="/chats", tags=["chats"])
app.include_router(documents.router, prefix="/documents", tags=["documents"])
app.include_router(models.router, prefix="/models", tags=["models"])
app.include_router(prompts.router, prefix="/prompts", tags=["prompts"])
app.include_router(memories.router, prefix="/memories", tags=["memories"])
app.include_router(files.router, prefix="/files", tags=["files"])
app.include_router(tools.router, prefix="/tools", tags=["tools"])
app.include_router(functions.router, prefix="/functions", tags=["functions"])
app.include_router(utils.router, prefix="/utils", tags=["utils"])
@app.get("/")
async def get_status():
return {
"status": True,
"auth": WEBUI_AUTH,
"default_models": app.state.config.DEFAULT_MODELS,
"default_prompt_suggestions": app.state.config.DEFAULT_PROMPT_SUGGESTIONS,
}
def get_function_module(pipe_id: str):
# Check if function is already loaded
if pipe_id not in app.state.FUNCTIONS:
function_module, _, _ = load_function_module_by_id(pipe_id)
app.state.FUNCTIONS[pipe_id] = function_module
else:
function_module = app.state.FUNCTIONS[pipe_id]
if hasattr(function_module, "valves") and hasattr(function_module, "Valves"):
valves = Functions.get_function_valves_by_id(pipe_id)
function_module.valves = function_module.Valves(**(valves if valves else {}))
return function_module
async def get_pipe_models():
pipes = Functions.get_functions_by_type("pipe", active_only=True)
pipe_models = []
for pipe in pipes:
function_module = get_function_module(pipe.id)
# Check if function is a manifold
if hasattr(function_module, "pipes"):
sub_pipes = []
# Check if pipes is a function or a list
try:
if callable(function_module.pipes):
sub_pipes = function_module.pipes()
else:
sub_pipes = function_module.pipes
except Exception as e:
log.exception(e)
sub_pipes = []
print(sub_pipes)
for p in sub_pipes:
sub_pipe_id = f'{pipe.id}.{p["id"]}'
sub_pipe_name = p["name"]
if hasattr(function_module, "name"):
sub_pipe_name = f"{function_module.name}{sub_pipe_name}"
pipe_flag = {"type": pipe.type}
pipe_models.append(
{
"id": sub_pipe_id,
"name": sub_pipe_name,
"object": "model",
"created": pipe.created_at,
"owned_by": "openai",
"pipe": pipe_flag,
}
)
else:
pipe_flag = {"type": "pipe"}
pipe_models.append(
{
"id": pipe.id,
"name": pipe.name,
"object": "model",
"created": pipe.created_at,
"owned_by": "openai",
"pipe": pipe_flag,
}
)
return pipe_models
async def execute_pipe(pipe, params):
if inspect.iscoroutinefunction(pipe):
return await pipe(**params)
else:
return pipe(**params)
async def get_message_content(res: str | Generator | AsyncGenerator) -> str:
if isinstance(res, str):
return res
if isinstance(res, Generator):
return "".join(map(str, res))
if isinstance(res, AsyncGenerator):
return "".join([str(stream) async for stream in res])
def process_line(form_data: dict, line):
if isinstance(line, BaseModel):
line = line.model_dump_json()
line = f"data: {line}"
if isinstance(line, dict):
line = f"data: {json.dumps(line)}"
try:
line = line.decode("utf-8")
except Exception:
pass
if line.startswith("data:"):
return f"{line}\n\n"
else:
line = openai_chat_chunk_message_template(form_data["model"], line)
return f"data: {json.dumps(line)}\n\n"
def get_pipe_id(form_data: dict) -> str:
pipe_id = form_data["model"]
if "." in pipe_id:
pipe_id, _ = pipe_id.split(".", 1)
print(pipe_id)
return pipe_id
def get_function_params(function_module, form_data, user, extra_params=None):
if extra_params is None:
extra_params = {}
pipe_id = get_pipe_id(form_data)
# Get the signature of the function
sig = inspect.signature(function_module.pipe)
params = {"body": form_data} | {
k: v for k, v in extra_params.items() if k in sig.parameters
}
if "__user__" in params and hasattr(function_module, "UserValves"):
user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id)
try:
params["__user__"]["valves"] = function_module.UserValves(**user_valves)
except Exception as e:
log.exception(e)
params["__user__"]["valves"] = function_module.UserValves()
return params
async def generate_function_chat_completion(form_data, user):
model_id = form_data.get("model")
model_info = Models.get_model_by_id(model_id)
metadata = form_data.pop("metadata", {})
files = metadata.get("files", [])
tool_ids = metadata.get("tool_ids", [])
# Check if tool_ids is None
if tool_ids is None:
tool_ids = []
__event_emitter__ = None
__event_call__ = None
__task__ = None
if metadata:
if all(k in metadata for k in ("session_id", "chat_id", "message_id")):
__event_emitter__ = get_event_emitter(metadata)
__event_call__ = get_event_call(metadata)
__task__ = metadata.get("task", None)
extra_params = {
"__event_emitter__": __event_emitter__,
"__event_call__": __event_call__,
"__task__": __task__,
"__files__": files,
"__user__": {
"id": user.id,
"email": user.email,
"name": user.name,
"role": user.role,
},
}
extra_params["__tools__"] = get_tools(
app,
tool_ids,
user,
{
**extra_params,
"__model__": app.state.MODELS[form_data["model"]],
"__messages__": form_data["messages"],
"__files__": files,
},
)
if model_info:
if model_info.base_model_id:
form_data["model"] = model_info.base_model_id
params = model_info.params.model_dump()
form_data = apply_model_params_to_body_openai(params, form_data)
form_data = apply_model_system_prompt_to_body(params, form_data, user)
pipe_id = get_pipe_id(form_data)
function_module = get_function_module(pipe_id)
pipe = function_module.pipe
params = get_function_params(function_module, form_data, user, extra_params)
if form_data["stream"]:
async def stream_content():
try:
res = await execute_pipe(pipe, params)
# Directly return if the response is a StreamingResponse
if isinstance(res, StreamingResponse):
async for data in res.body_iterator:
yield data
return
if isinstance(res, dict):
yield f"data: {json.dumps(res)}\n\n"
return
except Exception as e:
print(f"Error: {e}")
yield f"data: {json.dumps({'error': {'detail':str(e)}})}\n\n"
return
if isinstance(res, str):
message = openai_chat_chunk_message_template(form_data["model"], res)
yield f"data: {json.dumps(message)}\n\n"
if isinstance(res, Iterator):
for line in res:
yield process_line(form_data, line)
if isinstance(res, AsyncGenerator):
async for line in res:
yield process_line(form_data, line)
if isinstance(res, str) or isinstance(res, Generator):
finish_message = openai_chat_chunk_message_template(
form_data["model"], ""
)
finish_message["choices"][0]["finish_reason"] = "stop"
yield f"data: {json.dumps(finish_message)}\n\n"
yield "data: [DONE]"
return StreamingResponse(stream_content(), media_type="text/event-stream")
else:
try:
res = await execute_pipe(pipe, params)
except Exception as e:
print(f"Error: {e}")
return {"error": {"detail": str(e)}}
if isinstance(res, StreamingResponse) or isinstance(res, dict):
return res
if isinstance(res, BaseModel):
return res.model_dump()
message = await get_message_content(res)
return openai_chat_completion_message_template(form_data["model"], message)
@@ -1,386 +0,0 @@
import json
import time
import uuid
from typing import Optional
from open_webui.apps.webui.internal.db import Base, get_db
from pydantic import BaseModel, ConfigDict
from sqlalchemy import BigInteger, Boolean, Column, String, Text
####################
# Chat DB Schema
####################
class Chat(Base):
__tablename__ = "chat"
id = Column(String, primary_key=True)
user_id = Column(String)
title = Column(Text)
chat = Column(Text) # Save Chat JSON as Text
created_at = Column(BigInteger)
updated_at = Column(BigInteger)
share_id = Column(Text, unique=True, nullable=True)
archived = Column(Boolean, default=False)
class ChatModel(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: str
user_id: str
title: str
chat: str
created_at: int # timestamp in epoch
updated_at: int # timestamp in epoch
share_id: Optional[str] = None
archived: bool = False
####################
# Forms
####################
class ChatForm(BaseModel):
chat: dict
class ChatTitleForm(BaseModel):
title: str
class ChatResponse(BaseModel):
id: str
user_id: str
title: str
chat: dict
updated_at: int # timestamp in epoch
created_at: int # timestamp in epoch
share_id: Optional[str] = None # id of the chat to be shared
archived: bool
class ChatTitleIdResponse(BaseModel):
id: str
title: str
updated_at: int
created_at: int
class ChatTable:
def insert_new_chat(self, user_id: str, form_data: ChatForm) -> Optional[ChatModel]:
with get_db() as db:
id = str(uuid.uuid4())
chat = ChatModel(
**{
"id": id,
"user_id": user_id,
"title": (
form_data.chat["title"]
if "title" in form_data.chat
else "New Chat"
),
"chat": json.dumps(form_data.chat),
"created_at": int(time.time()),
"updated_at": int(time.time()),
}
)
result = Chat(**chat.model_dump())
db.add(result)
db.commit()
db.refresh(result)
return ChatModel.model_validate(result) if result else None
def update_chat_by_id(self, id: str, chat: dict) -> Optional[ChatModel]:
try:
with get_db() as db:
chat_obj = db.get(Chat, id)
chat_obj.chat = json.dumps(chat)
chat_obj.title = chat["title"] if "title" in chat else "New Chat"
chat_obj.updated_at = int(time.time())
db.commit()
db.refresh(chat_obj)
return ChatModel.model_validate(chat_obj)
except Exception:
return None
def insert_shared_chat_by_chat_id(self, chat_id: str) -> Optional[ChatModel]:
with get_db() as db:
# Get the existing chat to share
chat = db.get(Chat, chat_id)
# Check if the chat is already shared
if chat.share_id:
return self.get_chat_by_id_and_user_id(chat.share_id, "shared")
# Create a new chat with the same data, but with a new ID
shared_chat = ChatModel(
**{
"id": str(uuid.uuid4()),
"user_id": f"shared-{chat_id}",
"title": chat.title,
"chat": chat.chat,
"created_at": chat.created_at,
"updated_at": int(time.time()),
}
)
shared_result = Chat(**shared_chat.model_dump())
db.add(shared_result)
db.commit()
db.refresh(shared_result)
# Update the original chat with the share_id
result = (
db.query(Chat)
.filter_by(id=chat_id)
.update({"share_id": shared_chat.id})
)
db.commit()
return shared_chat if (shared_result and result) else None
def update_shared_chat_by_chat_id(self, chat_id: str) -> Optional[ChatModel]:
try:
with get_db() as db:
print("update_shared_chat_by_id")
chat = db.get(Chat, chat_id)
print(chat)
chat.title = chat.title
chat.chat = chat.chat
db.commit()
db.refresh(chat)
return self.get_chat_by_id(chat.share_id)
except Exception:
return None
def delete_shared_chat_by_chat_id(self, chat_id: str) -> bool:
try:
with get_db() as db:
db.query(Chat).filter_by(user_id=f"shared-{chat_id}").delete()
db.commit()
return True
except Exception:
return False
def update_chat_share_id_by_id(
self, id: str, share_id: Optional[str]
) -> Optional[ChatModel]:
try:
with get_db() as db:
chat = db.get(Chat, id)
chat.share_id = share_id
db.commit()
db.refresh(chat)
return ChatModel.model_validate(chat)
except Exception:
return None
def toggle_chat_archive_by_id(self, id: str) -> Optional[ChatModel]:
try:
with get_db() as db:
chat = db.get(Chat, id)
chat.archived = not chat.archived
db.commit()
db.refresh(chat)
return ChatModel.model_validate(chat)
except Exception:
return None
def archive_all_chats_by_user_id(self, user_id: str) -> bool:
try:
with get_db() as db:
db.query(Chat).filter_by(user_id=user_id).update({"archived": True})
db.commit()
return True
except Exception:
return False
def get_archived_chat_list_by_user_id(
self, user_id: str, skip: int = 0, limit: int = 50
) -> list[ChatModel]:
with get_db() as db:
all_chats = (
db.query(Chat)
.filter_by(user_id=user_id, archived=True)
.order_by(Chat.updated_at.desc())
# .limit(limit).offset(skip)
.all()
)
return [ChatModel.model_validate(chat) for chat in all_chats]
def get_chat_list_by_user_id(
self,
user_id: str,
include_archived: bool = False,
skip: int = 0,
limit: int = 50,
) -> list[ChatModel]:
with get_db() as db:
query = db.query(Chat).filter_by(user_id=user_id)
if not include_archived:
query = query.filter_by(archived=False)
all_chats = (
query.order_by(Chat.updated_at.desc())
# .limit(limit).offset(skip)
.all()
)
return [ChatModel.model_validate(chat) for chat in all_chats]
def get_chat_title_id_list_by_user_id(
self,
user_id: str,
include_archived: bool = False,
skip: Optional[int] = None,
limit: Optional[int] = None,
) -> list[ChatTitleIdResponse]:
with get_db() as db:
query = db.query(Chat).filter_by(user_id=user_id)
if not include_archived:
query = query.filter_by(archived=False)
query = query.order_by(Chat.updated_at.desc()).with_entities(
Chat.id, Chat.title, Chat.updated_at, Chat.created_at
)
if limit:
query = query.limit(limit)
if skip:
query = query.offset(skip)
all_chats = query.all()
# result has to be destrctured from sqlalchemy `row` and mapped to a dict since the `ChatModel`is not the returned dataclass.
return [
ChatTitleIdResponse.model_validate(
{
"id": chat[0],
"title": chat[1],
"updated_at": chat[2],
"created_at": chat[3],
}
)
for chat in all_chats
]
def get_chat_list_by_chat_ids(
self, chat_ids: list[str], skip: int = 0, limit: int = 50
) -> list[ChatModel]:
with get_db() as db:
all_chats = (
db.query(Chat)
.filter(Chat.id.in_(chat_ids))
.filter_by(archived=False)
.order_by(Chat.updated_at.desc())
.all()
)
return [ChatModel.model_validate(chat) for chat in all_chats]
def get_chat_by_id(self, id: str) -> Optional[ChatModel]:
try:
with get_db() as db:
chat = db.get(Chat, id)
return ChatModel.model_validate(chat)
except Exception:
return None
def get_chat_by_share_id(self, id: str) -> Optional[ChatModel]:
try:
with get_db() as db:
chat = db.query(Chat).filter_by(share_id=id).first()
if chat:
return self.get_chat_by_id(id)
else:
return None
except Exception:
return None
def get_chat_by_id_and_user_id(self, id: str, user_id: str) -> Optional[ChatModel]:
try:
with get_db() as db:
chat = db.query(Chat).filter_by(id=id, user_id=user_id).first()
return ChatModel.model_validate(chat)
except Exception:
return None
def get_chats(self, skip: int = 0, limit: int = 50) -> list[ChatModel]:
with get_db() as db:
all_chats = (
db.query(Chat)
# .limit(limit).offset(skip)
.order_by(Chat.updated_at.desc())
)
return [ChatModel.model_validate(chat) for chat in all_chats]
def get_chats_by_user_id(self, user_id: str) -> list[ChatModel]:
with get_db() as db:
all_chats = (
db.query(Chat)
.filter_by(user_id=user_id)
.order_by(Chat.updated_at.desc())
)
return [ChatModel.model_validate(chat) for chat in all_chats]
def get_archived_chats_by_user_id(self, user_id: str) -> list[ChatModel]:
with get_db() as db:
all_chats = (
db.query(Chat)
.filter_by(user_id=user_id, archived=True)
.order_by(Chat.updated_at.desc())
)
return [ChatModel.model_validate(chat) for chat in all_chats]
def delete_chat_by_id(self, id: str) -> bool:
try:
with get_db() as db:
db.query(Chat).filter_by(id=id).delete()
db.commit()
return True and self.delete_shared_chat_by_chat_id(id)
except Exception:
return False
def delete_chat_by_id_and_user_id(self, id: str, user_id: str) -> bool:
try:
with get_db() as db:
db.query(Chat).filter_by(id=id, user_id=user_id).delete()
db.commit()
return True and self.delete_shared_chat_by_chat_id(id)
except Exception:
return False
def delete_chats_by_user_id(self, user_id: str) -> bool:
try:
with get_db() as db:
self.delete_shared_chats_by_user_id(user_id)
db.query(Chat).filter_by(user_id=user_id).delete()
db.commit()
return True
except Exception:
return False
def delete_shared_chats_by_user_id(self, user_id: str) -> bool:
try:
with get_db() as db:
chats_by_user = db.query(Chat).filter_by(user_id=user_id).all()
shared_chat_ids = [f"shared-{chat.id}" for chat in chats_by_user]
db.query(Chat).filter(Chat.user_id.in_(shared_chat_ids)).delete()
db.commit()
return True
except Exception:
return False
Chats = ChatTable()
@@ -1,157 +0,0 @@
import json
import logging
import time
from typing import Optional
from open_webui.apps.webui.internal.db import Base, get_db
from open_webui.env import SRC_LOG_LEVELS
from pydantic import BaseModel, ConfigDict
from sqlalchemy import BigInteger, Column, String, Text
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"])
####################
# Documents DB Schema
####################
class Document(Base):
__tablename__ = "document"
collection_name = Column(String, primary_key=True)
name = Column(String, unique=True)
title = Column(Text)
filename = Column(Text)
content = Column(Text, nullable=True)
user_id = Column(String)
timestamp = Column(BigInteger)
class DocumentModel(BaseModel):
model_config = ConfigDict(from_attributes=True)
collection_name: str
name: str
title: str
filename: str
content: Optional[str] = None
user_id: str
timestamp: int # timestamp in epoch
####################
# Forms
####################
class DocumentResponse(BaseModel):
collection_name: str
name: str
title: str
filename: str
content: Optional[dict] = None
user_id: str
timestamp: int # timestamp in epoch
class DocumentUpdateForm(BaseModel):
name: str
title: str
class DocumentForm(DocumentUpdateForm):
collection_name: str
filename: str
content: Optional[str] = None
class DocumentsTable:
def insert_new_doc(
self, user_id: str, form_data: DocumentForm
) -> Optional[DocumentModel]:
with get_db() as db:
document = DocumentModel(
**{
**form_data.model_dump(),
"user_id": user_id,
"timestamp": int(time.time()),
}
)
try:
result = Document(**document.model_dump())
db.add(result)
db.commit()
db.refresh(result)
if result:
return DocumentModel.model_validate(result)
else:
return None
except Exception:
return None
def get_doc_by_name(self, name: str) -> Optional[DocumentModel]:
try:
with get_db() as db:
document = db.query(Document).filter_by(name=name).first()
return DocumentModel.model_validate(document) if document else None
except Exception:
return None
def get_docs(self) -> list[DocumentModel]:
with get_db() as db:
return [
DocumentModel.model_validate(doc) for doc in db.query(Document).all()
]
def update_doc_by_name(
self, name: str, form_data: DocumentUpdateForm
) -> Optional[DocumentModel]:
try:
with get_db() as db:
db.query(Document).filter_by(name=name).update(
{
"title": form_data.title,
"name": form_data.name,
"timestamp": int(time.time()),
}
)
db.commit()
return self.get_doc_by_name(form_data.name)
except Exception as e:
log.exception(e)
return None
def update_doc_content_by_name(
self, name: str, updated: dict
) -> Optional[DocumentModel]:
try:
doc = self.get_doc_by_name(name)
doc_content = json.loads(doc.content if doc.content else "{}")
doc_content = {**doc_content, **updated}
with get_db() as db:
db.query(Document).filter_by(name=name).update(
{
"content": json.dumps(doc_content),
"timestamp": int(time.time()),
}
)
db.commit()
return self.get_doc_by_name(name)
except Exception as e:
log.exception(e)
return None
def delete_doc_by_name(self, name: str) -> bool:
try:
with get_db() as db:
db.query(Document).filter_by(name=name).delete()
db.commit()
return True
except Exception:
return False
Documents = DocumentsTable()
@@ -1,121 +0,0 @@
import logging
import time
from typing import Optional
from open_webui.apps.webui.internal.db import Base, JSONField, get_db
from open_webui.env import SRC_LOG_LEVELS
from pydantic import BaseModel, ConfigDict
from sqlalchemy import BigInteger, Column, String, Text
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"])
####################
# Files DB Schema
####################
class File(Base):
__tablename__ = "file"
id = Column(String, primary_key=True)
user_id = Column(String)
filename = Column(Text)
meta = Column(JSONField)
created_at = Column(BigInteger)
class FileModel(BaseModel):
id: str
user_id: str
filename: str
meta: dict
created_at: int # timestamp in epoch
model_config = ConfigDict(from_attributes=True)
####################
# Forms
####################
class FileModelResponse(BaseModel):
id: str
user_id: str
filename: str
meta: dict
created_at: int # timestamp in epoch
class FileForm(BaseModel):
id: str
filename: str
meta: dict = {}
class FilesTable:
def insert_new_file(self, user_id: str, form_data: FileForm) -> Optional[FileModel]:
with get_db() as db:
file = FileModel(
**{
**form_data.model_dump(),
"user_id": user_id,
"created_at": int(time.time()),
}
)
try:
result = File(**file.model_dump())
db.add(result)
db.commit()
db.refresh(result)
if result:
return FileModel.model_validate(result)
else:
return None
except Exception as e:
print(f"Error creating tool: {e}")
return None
def get_file_by_id(self, id: str) -> Optional[FileModel]:
with get_db() as db:
try:
file = db.get(File, id)
return FileModel.model_validate(file)
except Exception:
return None
def get_files(self) -> list[FileModel]:
with get_db() as db:
return [FileModel.model_validate(file) for file in db.query(File).all()]
def get_files_by_user_id(self, user_id: str) -> list[FileModel]:
with get_db() as db:
return [
FileModel.model_validate(file)
for file in db.query(File).filter_by(user_id=user_id).all()
]
def delete_file_by_id(self, id: str) -> bool:
with get_db() as db:
try:
db.query(File).filter_by(id=id).delete()
db.commit()
return True
except Exception:
return False
def delete_all_files(self) -> bool:
with get_db() as db:
try:
db.query(File).delete()
db.commit()
return True
except Exception:
return False
Files = FilesTable()
@@ -1,262 +0,0 @@
import logging
import time
import uuid
from typing import Optional
from open_webui.apps.webui.internal.db import Base, get_db
from open_webui.env import SRC_LOG_LEVELS
from pydantic import BaseModel, ConfigDict
from sqlalchemy import BigInteger, Column, String, Text
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"])
####################
# Tag DB Schema
####################
class Tag(Base):
__tablename__ = "tag"
id = Column(String, primary_key=True)
name = Column(String)
user_id = Column(String)
data = Column(Text, nullable=True)
class ChatIdTag(Base):
__tablename__ = "chatidtag"
id = Column(String, primary_key=True)
tag_name = Column(String)
chat_id = Column(String)
user_id = Column(String)
timestamp = Column(BigInteger)
class TagModel(BaseModel):
id: str
name: str
user_id: str
data: Optional[str] = None
model_config = ConfigDict(from_attributes=True)
class ChatIdTagModel(BaseModel):
id: str
tag_name: str
chat_id: str
user_id: str
timestamp: int
model_config = ConfigDict(from_attributes=True)
####################
# Forms
####################
class ChatIdTagForm(BaseModel):
tag_name: str
chat_id: str
class TagChatIdsResponse(BaseModel):
chat_ids: list[str]
class ChatTagsResponse(BaseModel):
tags: list[str]
class TagTable:
def insert_new_tag(self, name: str, user_id: str) -> Optional[TagModel]:
with get_db() as db:
id = str(uuid.uuid4())
tag = TagModel(**{"id": id, "user_id": user_id, "name": name})
try:
result = Tag(**tag.model_dump())
db.add(result)
db.commit()
db.refresh(result)
if result:
return TagModel.model_validate(result)
else:
return None
except Exception:
return None
def get_tag_by_name_and_user_id(
self, name: str, user_id: str
) -> Optional[TagModel]:
try:
with get_db() as db:
tag = db.query(Tag).filter_by(name=name, user_id=user_id).first()
return TagModel.model_validate(tag)
except Exception:
return None
def add_tag_to_chat(
self, user_id: str, form_data: ChatIdTagForm
) -> Optional[ChatIdTagModel]:
tag = self.get_tag_by_name_and_user_id(form_data.tag_name, user_id)
if tag is None:
tag = self.insert_new_tag(form_data.tag_name, user_id)
id = str(uuid.uuid4())
chatIdTag = ChatIdTagModel(
**{
"id": id,
"user_id": user_id,
"chat_id": form_data.chat_id,
"tag_name": tag.name,
"timestamp": int(time.time()),
}
)
try:
with get_db() as db:
result = ChatIdTag(**chatIdTag.model_dump())
db.add(result)
db.commit()
db.refresh(result)
if result:
return ChatIdTagModel.model_validate(result)
else:
return None
except Exception:
return None
def get_tags_by_user_id(self, user_id: str) -> list[TagModel]:
with get_db() as db:
tag_names = [
chat_id_tag.tag_name
for chat_id_tag in (
db.query(ChatIdTag)
.filter_by(user_id=user_id)
.order_by(ChatIdTag.timestamp.desc())
.all()
)
]
return [
TagModel.model_validate(tag)
for tag in (
db.query(Tag)
.filter_by(user_id=user_id)
.filter(Tag.name.in_(tag_names))
.all()
)
]
def get_tags_by_chat_id_and_user_id(
self, chat_id: str, user_id: str
) -> list[TagModel]:
with get_db() as db:
tag_names = [
chat_id_tag.tag_name
for chat_id_tag in (
db.query(ChatIdTag)
.filter_by(user_id=user_id, chat_id=chat_id)
.order_by(ChatIdTag.timestamp.desc())
.all()
)
]
return [
TagModel.model_validate(tag)
for tag in (
db.query(Tag)
.filter_by(user_id=user_id)
.filter(Tag.name.in_(tag_names))
.all()
)
]
def get_chat_ids_by_tag_name_and_user_id(
self, tag_name: str, user_id: str
) -> list[ChatIdTagModel]:
with get_db() as db:
return [
ChatIdTagModel.model_validate(chat_id_tag)
for chat_id_tag in (
db.query(ChatIdTag)
.filter_by(user_id=user_id, tag_name=tag_name)
.order_by(ChatIdTag.timestamp.desc())
.all()
)
]
def count_chat_ids_by_tag_name_and_user_id(
self, tag_name: str, user_id: str
) -> int:
with get_db() as db:
return (
db.query(ChatIdTag)
.filter_by(tag_name=tag_name, user_id=user_id)
.count()
)
def delete_tag_by_tag_name_and_user_id(self, tag_name: str, user_id: str) -> bool:
try:
with get_db() as db:
res = (
db.query(ChatIdTag)
.filter_by(tag_name=tag_name, user_id=user_id)
.delete()
)
log.debug(f"res: {res}")
db.commit()
tag_count = self.count_chat_ids_by_tag_name_and_user_id(
tag_name, user_id
)
if tag_count == 0:
# Remove tag item from Tag col as well
db.query(Tag).filter_by(name=tag_name, user_id=user_id).delete()
db.commit()
return True
except Exception as e:
log.error(f"delete_tag: {e}")
return False
def delete_tag_by_tag_name_and_chat_id_and_user_id(
self, tag_name: str, chat_id: str, user_id: str
) -> bool:
try:
with get_db() as db:
res = (
db.query(ChatIdTag)
.filter_by(tag_name=tag_name, chat_id=chat_id, user_id=user_id)
.delete()
)
log.debug(f"res: {res}")
db.commit()
tag_count = self.count_chat_ids_by_tag_name_and_user_id(
tag_name, user_id
)
if tag_count == 0:
# Remove tag item from Tag col as well
db.query(Tag).filter_by(name=tag_name, user_id=user_id).delete()
db.commit()
return True
except Exception as e:
log.error(f"delete_tag: {e}")
return False
def delete_tags_by_chat_id_and_user_id(self, chat_id: str, user_id: str) -> bool:
tags = self.get_tags_by_chat_id_and_user_id(chat_id, user_id)
for tag in tags:
self.delete_tag_by_tag_name_and_chat_id_and_user_id(
tag.tag_name, chat_id, user_id
)
return True
Tags = TagTable()
@@ -1,432 +0,0 @@
import re
import uuid
from open_webui.apps.webui.models.auths import (
AddUserForm,
ApiKey,
Auths,
SigninForm,
SigninResponse,
SignupForm,
UpdatePasswordForm,
UpdateProfileForm,
UserResponse,
)
from open_webui.apps.webui.models.users import Users
from open_webui.config import WEBUI_AUTH
from open_webui.constants import ERROR_MESSAGES, WEBHOOK_MESSAGES
from open_webui.env import (
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
WEBUI_AUTH_TRUSTED_NAME_HEADER,
)
from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi.responses import Response
from pydantic import BaseModel
from open_webui.utils.misc import parse_duration, validate_email_format
from open_webui.utils.utils import (
create_api_key,
create_token,
get_admin_user,
get_current_user,
get_password_hash,
)
from open_webui.utils.webhook import post_webhook
router = APIRouter()
############################
# GetSessionUser
############################
@router.get("/", response_model=UserResponse)
async def get_session_user(
request: Request, response: Response, user=Depends(get_current_user)
):
token = create_token(
data={"id": user.id},
expires_delta=parse_duration(request.app.state.config.JWT_EXPIRES_IN),
)
# Set the cookie token
response.set_cookie(
key="token",
value=token,
httponly=True, # Ensures the cookie is not accessible via JavaScript
)
return {
"id": user.id,
"email": user.email,
"name": user.name,
"role": user.role,
"profile_image_url": user.profile_image_url,
}
############################
# Update Profile
############################
@router.post("/update/profile", response_model=UserResponse)
async def update_profile(
form_data: UpdateProfileForm, session_user=Depends(get_current_user)
):
if session_user:
user = Users.update_user_by_id(
session_user.id,
{"profile_image_url": form_data.profile_image_url, "name": form_data.name},
)
if user:
return user
else:
raise HTTPException(400, detail=ERROR_MESSAGES.DEFAULT())
else:
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
############################
# Update Password
############################
@router.post("/update/password", response_model=bool)
async def update_password(
form_data: UpdatePasswordForm, session_user=Depends(get_current_user)
):
if WEBUI_AUTH_TRUSTED_EMAIL_HEADER:
raise HTTPException(400, detail=ERROR_MESSAGES.ACTION_PROHIBITED)
if session_user:
user = Auths.authenticate_user(session_user.email, form_data.password)
if user:
hashed = get_password_hash(form_data.new_password)
return Auths.update_user_password_by_id(user.id, hashed)
else:
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_PASSWORD)
else:
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
############################
# SignIn
############################
@router.post("/signin", response_model=SigninResponse)
async def signin(request: Request, response: Response, form_data: SigninForm):
if WEBUI_AUTH_TRUSTED_EMAIL_HEADER:
if WEBUI_AUTH_TRUSTED_EMAIL_HEADER not in request.headers:
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_TRUSTED_HEADER)
trusted_email = request.headers[WEBUI_AUTH_TRUSTED_EMAIL_HEADER].lower()
trusted_name = trusted_email
if WEBUI_AUTH_TRUSTED_NAME_HEADER:
trusted_name = request.headers.get(
WEBUI_AUTH_TRUSTED_NAME_HEADER, trusted_email
)
if not Users.get_user_by_email(trusted_email.lower()):
await signup(
request,
response,
SignupForm(
email=trusted_email, password=str(uuid.uuid4()), name=trusted_name
),
)
user = Auths.authenticate_user_by_trusted_header(trusted_email)
elif WEBUI_AUTH == False:
admin_email = "admin@localhost"
admin_password = "admin"
if Users.get_user_by_email(admin_email.lower()):
user = Auths.authenticate_user(admin_email.lower(), admin_password)
else:
if Users.get_num_users() != 0:
raise HTTPException(400, detail=ERROR_MESSAGES.EXISTING_USERS)
await signup(
request,
response,
SignupForm(email=admin_email, password=admin_password, name="User"),
)
user = Auths.authenticate_user(admin_email.lower(), admin_password)
else:
user = Auths.authenticate_user(form_data.email.lower(), form_data.password)
if user:
token = create_token(
data={"id": user.id},
expires_delta=parse_duration(request.app.state.config.JWT_EXPIRES_IN),
)
# Set the cookie token
response.set_cookie(
key="token",
value=token,
httponly=True, # Ensures the cookie is not accessible via JavaScript
)
return {
"token": token,
"token_type": "Bearer",
"id": user.id,
"email": user.email,
"name": user.name,
"role": user.role,
"profile_image_url": user.profile_image_url,
}
else:
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
############################
# SignUp
############################
@router.post("/signup", response_model=SigninResponse)
async def signup(request: Request, response: Response, form_data: SignupForm):
if WEBUI_AUTH:
if (
not request.app.state.config.ENABLE_SIGNUP
or not request.app.state.config.ENABLE_LOGIN_FORM
):
raise HTTPException(
status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.ACCESS_PROHIBITED
)
else:
if Users.get_num_users() != 0:
raise HTTPException(
status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.ACCESS_PROHIBITED
)
if not validate_email_format(form_data.email.lower()):
raise HTTPException(
status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.INVALID_EMAIL_FORMAT
)
if Users.get_user_by_email(form_data.email.lower()):
raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_TAKEN)
try:
role = (
"admin"
if Users.get_num_users() == 0
else request.app.state.config.DEFAULT_USER_ROLE
)
hashed = get_password_hash(form_data.password)
user = Auths.insert_new_auth(
form_data.email.lower(),
hashed,
form_data.name,
form_data.profile_image_url,
role,
)
if user:
token = create_token(
data={"id": user.id},
expires_delta=parse_duration(request.app.state.config.JWT_EXPIRES_IN),
)
# Set the cookie token
response.set_cookie(
key="token",
value=token,
httponly=True, # Ensures the cookie is not accessible via JavaScript
)
if request.app.state.config.WEBHOOK_URL:
post_webhook(
request.app.state.config.WEBHOOK_URL,
WEBHOOK_MESSAGES.USER_SIGNUP(user.name),
{
"action": "signup",
"message": WEBHOOK_MESSAGES.USER_SIGNUP(user.name),
"user": user.model_dump_json(exclude_none=True),
},
)
return {
"token": token,
"token_type": "Bearer",
"id": user.id,
"email": user.email,
"name": user.name,
"role": user.role,
"profile_image_url": user.profile_image_url,
}
else:
raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
except Exception as err:
raise HTTPException(500, detail=ERROR_MESSAGES.DEFAULT(err))
############################
# AddUser
############################
@router.post("/add", response_model=SigninResponse)
async def add_user(form_data: AddUserForm, user=Depends(get_admin_user)):
if not validate_email_format(form_data.email.lower()):
raise HTTPException(
status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.INVALID_EMAIL_FORMAT
)
if Users.get_user_by_email(form_data.email.lower()):
raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_TAKEN)
try:
print(form_data)
hashed = get_password_hash(form_data.password)
user = Auths.insert_new_auth(
form_data.email.lower(),
hashed,
form_data.name,
form_data.profile_image_url,
form_data.role,
)
if user:
token = create_token(data={"id": user.id})
return {
"token": token,
"token_type": "Bearer",
"id": user.id,
"email": user.email,
"name": user.name,
"role": user.role,
"profile_image_url": user.profile_image_url,
}
else:
raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
except Exception as err:
raise HTTPException(500, detail=ERROR_MESSAGES.DEFAULT(err))
############################
# GetAdminDetails
############################
@router.get("/admin/details")
async def get_admin_details(request: Request, user=Depends(get_current_user)):
if request.app.state.config.SHOW_ADMIN_DETAILS:
admin_email = request.app.state.config.ADMIN_EMAIL
admin_name = None
print(admin_email, admin_name)
if admin_email:
admin = Users.get_user_by_email(admin_email)
if admin:
admin_name = admin.name
else:
admin = Users.get_first_user()
if admin:
admin_email = admin.email
admin_name = admin.name
return {
"name": admin_name,
"email": admin_email,
}
else:
raise HTTPException(400, detail=ERROR_MESSAGES.ACTION_PROHIBITED)
############################
# ToggleSignUp
############################
@router.get("/admin/config")
async def get_admin_config(request: Request, user=Depends(get_admin_user)):
return {
"SHOW_ADMIN_DETAILS": request.app.state.config.SHOW_ADMIN_DETAILS,
"ENABLE_SIGNUP": request.app.state.config.ENABLE_SIGNUP,
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
"ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING,
"ENABLE_MESSAGE_RATING": request.app.state.config.ENABLE_MESSAGE_RATING,
}
class AdminConfig(BaseModel):
SHOW_ADMIN_DETAILS: bool
ENABLE_SIGNUP: bool
DEFAULT_USER_ROLE: str
JWT_EXPIRES_IN: str
ENABLE_COMMUNITY_SHARING: bool
ENABLE_MESSAGE_RATING: bool
@router.post("/admin/config")
async def update_admin_config(
request: Request, form_data: AdminConfig, user=Depends(get_admin_user)
):
request.app.state.config.SHOW_ADMIN_DETAILS = form_data.SHOW_ADMIN_DETAILS
request.app.state.config.ENABLE_SIGNUP = form_data.ENABLE_SIGNUP
if form_data.DEFAULT_USER_ROLE in ["pending", "user", "admin"]:
request.app.state.config.DEFAULT_USER_ROLE = form_data.DEFAULT_USER_ROLE
pattern = r"^(-1|0|(-?\d+(\.\d+)?)(ms|s|m|h|d|w))$"
# Check if the input string matches the pattern
if re.match(pattern, form_data.JWT_EXPIRES_IN):
request.app.state.config.JWT_EXPIRES_IN = form_data.JWT_EXPIRES_IN
request.app.state.config.ENABLE_COMMUNITY_SHARING = (
form_data.ENABLE_COMMUNITY_SHARING
)
request.app.state.config.ENABLE_MESSAGE_RATING = form_data.ENABLE_MESSAGE_RATING
return {
"SHOW_ADMIN_DETAILS": request.app.state.config.SHOW_ADMIN_DETAILS,
"ENABLE_SIGNUP": request.app.state.config.ENABLE_SIGNUP,
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
"ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING,
"ENABLE_MESSAGE_RATING": request.app.state.config.ENABLE_MESSAGE_RATING,
}
############################
# API Key
############################
# create api key
@router.post("/api_key", response_model=ApiKey)
async def create_api_key_(user=Depends(get_current_user)):
api_key = create_api_key()
success = Users.update_user_api_key_by_id(user.id, api_key)
if success:
return {
"api_key": api_key,
}
else:
raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_API_KEY_ERROR)
# delete api key
@router.delete("/api_key", response_model=bool)
async def delete_api_key(user=Depends(get_current_user)):
success = Users.update_user_api_key_by_id(user.id, None)
return success
# get api key
@router.get("/api_key", response_model=ApiKey)
async def get_api_key(user=Depends(get_current_user)):
api_key = Users.get_user_api_key_by_id(user.id)
if api_key:
return {
"api_key": api_key,
}
else:
raise HTTPException(404, detail=ERROR_MESSAGES.API_KEY_NOT_FOUND)
@@ -1,481 +0,0 @@
import json
import logging
from typing import Optional
from open_webui.apps.webui.models.chats import (
ChatForm,
ChatResponse,
Chats,
ChatTitleIdResponse,
)
from open_webui.apps.webui.models.tags import (
ChatIdTagForm,
ChatIdTagModel,
TagModel,
Tags,
)
from open_webui.config import ENABLE_ADMIN_CHAT_ACCESS, ENABLE_ADMIN_EXPORT
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS
from fastapi import APIRouter, Depends, HTTPException, Request, status
from pydantic import BaseModel
from open_webui.utils.utils import get_admin_user, get_verified_user
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"])
router = APIRouter()
############################
# GetChatList
############################
@router.get("/", response_model=list[ChatTitleIdResponse])
@router.get("/list", response_model=list[ChatTitleIdResponse])
async def get_session_user_chat_list(
user=Depends(get_verified_user), page: Optional[int] = None
):
if page is not None:
limit = 60
skip = (page - 1) * limit
return Chats.get_chat_title_id_list_by_user_id(user.id, skip=skip, limit=limit)
else:
return Chats.get_chat_title_id_list_by_user_id(user.id)
############################
# DeleteAllChats
############################
@router.delete("/", response_model=bool)
async def delete_all_user_chats(request: Request, user=Depends(get_verified_user)):
if (
user.role == "user"
and not request.app.state.config.USER_PERMISSIONS["chat"]["deletion"]
):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
result = Chats.delete_chats_by_user_id(user.id)
return result
############################
# GetUserChatList
############################
@router.get("/list/user/{user_id}", response_model=list[ChatTitleIdResponse])
async def get_user_chat_list_by_user_id(
user_id: str,
user=Depends(get_admin_user),
skip: int = 0,
limit: int = 50,
):
if not ENABLE_ADMIN_CHAT_ACCESS:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
return Chats.get_chat_list_by_user_id(
user_id, include_archived=True, skip=skip, limit=limit
)
############################
# CreateNewChat
############################
@router.post("/new", response_model=Optional[ChatResponse])
async def create_new_chat(form_data: ChatForm, user=Depends(get_verified_user)):
try:
chat = Chats.insert_new_chat(user.id, form_data)
return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
except Exception as e:
log.exception(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# GetChats
############################
@router.get("/all", response_model=list[ChatResponse])
async def get_user_chats(user=Depends(get_verified_user)):
return [
ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
for chat in Chats.get_chats_by_user_id(user.id)
]
############################
# GetArchivedChats
############################
@router.get("/all/archived", response_model=list[ChatResponse])
async def get_user_archived_chats(user=Depends(get_verified_user)):
return [
ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
for chat in Chats.get_archived_chats_by_user_id(user.id)
]
############################
# GetAllChatsInDB
############################
@router.get("/all/db", response_model=list[ChatResponse])
async def get_all_user_chats_in_db(user=Depends(get_admin_user)):
if not ENABLE_ADMIN_EXPORT:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
return [
ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
for chat in Chats.get_chats()
]
############################
# GetArchivedChats
############################
@router.get("/archived", response_model=list[ChatTitleIdResponse])
async def get_archived_session_user_chat_list(
user=Depends(get_verified_user), skip: int = 0, limit: int = 50
):
return Chats.get_archived_chat_list_by_user_id(user.id, skip, limit)
############################
# ArchiveAllChats
############################
@router.post("/archive/all", response_model=bool)
async def archive_all_chats(user=Depends(get_verified_user)):
return Chats.archive_all_chats_by_user_id(user.id)
############################
# GetSharedChatById
############################
@router.get("/share/{share_id}", response_model=Optional[ChatResponse])
async def get_shared_chat_by_id(share_id: str, user=Depends(get_verified_user)):
if user.role == "pending":
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
)
if user.role == "user" or (user.role == "admin" and not ENABLE_ADMIN_CHAT_ACCESS):
chat = Chats.get_chat_by_share_id(share_id)
elif user.role == "admin" and ENABLE_ADMIN_CHAT_ACCESS:
chat = Chats.get_chat_by_id(share_id)
if chat:
return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
)
############################
# GetChatsByTags
############################
class TagNameForm(BaseModel):
name: str
skip: Optional[int] = 0
limit: Optional[int] = 50
@router.post("/tags", response_model=list[ChatTitleIdResponse])
async def get_user_chat_list_by_tag_name(
form_data: TagNameForm, user=Depends(get_verified_user)
):
chat_ids = [
chat_id_tag.chat_id
for chat_id_tag in Tags.get_chat_ids_by_tag_name_and_user_id(
form_data.name, user.id
)
]
chats = Chats.get_chat_list_by_chat_ids(chat_ids, form_data.skip, form_data.limit)
if len(chats) == 0:
Tags.delete_tag_by_tag_name_and_user_id(form_data.name, user.id)
return chats
############################
# GetAllTags
############################
@router.get("/tags/all", response_model=list[TagModel])
async def get_all_tags(user=Depends(get_verified_user)):
try:
tags = Tags.get_tags_by_user_id(user.id)
return tags
except Exception as e:
log.exception(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# GetChatById
############################
@router.get("/{id}", response_model=Optional[ChatResponse])
async def get_chat_by_id(id: str, user=Depends(get_verified_user)):
chat = Chats.get_chat_by_id_and_user_id(id, user.id)
if chat:
return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
)
############################
# UpdateChatById
############################
@router.post("/{id}", response_model=Optional[ChatResponse])
async def update_chat_by_id(
id: str, form_data: ChatForm, user=Depends(get_verified_user)
):
chat = Chats.get_chat_by_id_and_user_id(id, user.id)
if chat:
updated_chat = {**json.loads(chat.chat), **form_data.chat}
chat = Chats.update_chat_by_id(id, updated_chat)
return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
############################
# DeleteChatById
############################
@router.delete("/{id}", response_model=bool)
async def delete_chat_by_id(request: Request, id: str, user=Depends(get_verified_user)):
if user.role == "admin":
result = Chats.delete_chat_by_id(id)
return result
else:
if not request.app.state.config.USER_PERMISSIONS["chat"]["deletion"]:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
result = Chats.delete_chat_by_id_and_user_id(id, user.id)
return result
############################
# CloneChat
############################
@router.get("/{id}/clone", response_model=Optional[ChatResponse])
async def clone_chat_by_id(id: str, user=Depends(get_verified_user)):
chat = Chats.get_chat_by_id_and_user_id(id, user.id)
if chat:
chat_body = json.loads(chat.chat)
updated_chat = {
**chat_body,
"originalChatId": chat.id,
"branchPointMessageId": chat_body["history"]["currentId"],
"title": f"Clone of {chat.title}",
}
chat = Chats.insert_new_chat(user.id, ChatForm(**{"chat": updated_chat}))
return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# ArchiveChat
############################
@router.get("/{id}/archive", response_model=Optional[ChatResponse])
async def archive_chat_by_id(id: str, user=Depends(get_verified_user)):
chat = Chats.get_chat_by_id_and_user_id(id, user.id)
if chat:
chat = Chats.toggle_chat_archive_by_id(id)
return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# ShareChatById
############################
@router.post("/{id}/share", response_model=Optional[ChatResponse])
async def share_chat_by_id(id: str, user=Depends(get_verified_user)):
chat = Chats.get_chat_by_id_and_user_id(id, user.id)
if chat:
if chat.share_id:
shared_chat = Chats.update_shared_chat_by_chat_id(chat.id)
return ChatResponse(
**{**shared_chat.model_dump(), "chat": json.loads(shared_chat.chat)}
)
shared_chat = Chats.insert_shared_chat_by_chat_id(chat.id)
if not shared_chat:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=ERROR_MESSAGES.DEFAULT(),
)
return ChatResponse(
**{**shared_chat.model_dump(), "chat": json.loads(shared_chat.chat)}
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
############################
# DeletedSharedChatById
############################
@router.delete("/{id}/share", response_model=Optional[bool])
async def delete_shared_chat_by_id(id: str, user=Depends(get_verified_user)):
chat = Chats.get_chat_by_id_and_user_id(id, user.id)
if chat:
if not chat.share_id:
return False
result = Chats.delete_shared_chat_by_chat_id(id)
update_result = Chats.update_chat_share_id_by_id(id, None)
return result and update_result != None
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
############################
# GetChatTagsById
############################
@router.get("/{id}/tags", response_model=list[TagModel])
async def get_chat_tags_by_id(id: str, user=Depends(get_verified_user)):
tags = Tags.get_tags_by_chat_id_and_user_id(id, user.id)
if tags != None:
return tags
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
)
############################
# AddChatTagById
############################
@router.post("/{id}/tags", response_model=Optional[ChatIdTagModel])
async def add_chat_tag_by_id(
id: str, form_data: ChatIdTagForm, user=Depends(get_verified_user)
):
tags = Tags.get_tags_by_chat_id_and_user_id(id, user.id)
if form_data.tag_name not in tags:
tag = Tags.add_tag_to_chat(user.id, form_data)
if tag:
return tag
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# DeleteChatTagById
############################
@router.delete("/{id}/tags", response_model=Optional[bool])
async def delete_chat_tag_by_id(
id: str, form_data: ChatIdTagForm, user=Depends(get_verified_user)
):
result = Tags.delete_tag_by_tag_name_and_chat_id_and_user_id(
form_data.tag_name, id, user.id
)
if result:
return result
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
)
############################
# DeleteAllChatTagsById
############################
@router.delete("/{id}/tags/all", response_model=Optional[bool])
async def delete_all_chat_tags_by_id(id: str, user=Depends(get_verified_user)):
result = Tags.delete_tags_by_chat_id_and_user_id(id, user.id)
if result:
return result
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
)
@@ -1,99 +0,0 @@
from open_webui.config import BannerModel
from fastapi import APIRouter, Depends, Request
from pydantic import BaseModel
from open_webui.utils.utils import get_admin_user, get_verified_user
from open_webui.config import get_config, save_config
router = APIRouter()
############################
# ImportConfig
############################
class ImportConfigForm(BaseModel):
config: dict
@router.post("/import", response_model=dict)
async def import_config(form_data: ImportConfigForm, user=Depends(get_admin_user)):
save_config(form_data.config)
return get_config()
############################
# ExportConfig
############################
@router.get("/export", response_model=dict)
async def export_config(user=Depends(get_admin_user)):
return get_config()
class SetDefaultModelsForm(BaseModel):
models: str
class PromptSuggestion(BaseModel):
title: list[str]
content: str
class SetDefaultSuggestionsForm(BaseModel):
suggestions: list[PromptSuggestion]
############################
# SetDefaultModels
############################
@router.post("/default/models", response_model=str)
async def set_global_default_models(
request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user)
):
request.app.state.config.DEFAULT_MODELS = form_data.models
return request.app.state.config.DEFAULT_MODELS
@router.post("/default/suggestions", response_model=list[PromptSuggestion])
async def set_global_default_suggestions(
request: Request,
form_data: SetDefaultSuggestionsForm,
user=Depends(get_admin_user),
):
data = form_data.model_dump()
request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"]
return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS
############################
# SetBanners
############################
class SetBannersForm(BaseModel):
banners: list[BannerModel]
@router.post("/banners", response_model=list[BannerModel])
async def set_banners(
request: Request,
form_data: SetBannersForm,
user=Depends(get_admin_user),
):
data = form_data.model_dump()
request.app.state.config.BANNERS = data["banners"]
return request.app.state.config.BANNERS
@router.get("/banners", response_model=list[BannerModel])
async def get_banners(
request: Request,
user=Depends(get_verified_user),
):
return request.app.state.config.BANNERS
@@ -1,155 +0,0 @@
import json
from typing import Optional
from open_webui.apps.webui.models.documents import (
DocumentForm,
DocumentResponse,
Documents,
DocumentUpdateForm,
)
from open_webui.constants import ERROR_MESSAGES
from fastapi import APIRouter, Depends, HTTPException, status
from pydantic import BaseModel
from open_webui.utils.utils import get_admin_user, get_verified_user
router = APIRouter()
############################
# GetDocuments
############################
@router.get("/", response_model=list[DocumentResponse])
async def get_documents(user=Depends(get_verified_user)):
docs = [
DocumentResponse(
**{
**doc.model_dump(),
"content": json.loads(doc.content if doc.content else "{}"),
}
)
for doc in Documents.get_docs()
]
return docs
############################
# CreateNewDoc
############################
@router.post("/create", response_model=Optional[DocumentResponse])
async def create_new_doc(form_data: DocumentForm, user=Depends(get_admin_user)):
doc = Documents.get_doc_by_name(form_data.name)
if doc is None:
doc = Documents.insert_new_doc(user.id, form_data)
if doc:
return DocumentResponse(
**{
**doc.model_dump(),
"content": json.loads(doc.content if doc.content else "{}"),
}
)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.FILE_EXISTS,
)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.NAME_TAG_TAKEN,
)
############################
# GetDocByName
############################
@router.get("/doc", response_model=Optional[DocumentResponse])
async def get_doc_by_name(name: str, user=Depends(get_verified_user)):
doc = Documents.get_doc_by_name(name)
if doc:
return DocumentResponse(
**{
**doc.model_dump(),
"content": json.loads(doc.content if doc.content else "{}"),
}
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# TagDocByName
############################
class TagItem(BaseModel):
name: str
class TagDocumentForm(BaseModel):
name: str
tags: list[dict]
@router.post("/doc/tags", response_model=Optional[DocumentResponse])
async def tag_doc_by_name(form_data: TagDocumentForm, user=Depends(get_verified_user)):
doc = Documents.update_doc_content_by_name(form_data.name, {"tags": form_data.tags})
if doc:
return DocumentResponse(
**{
**doc.model_dump(),
"content": json.loads(doc.content if doc.content else "{}"),
}
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# UpdateDocByName
############################
@router.post("/doc/update", response_model=Optional[DocumentResponse])
async def update_doc_by_name(
name: str,
form_data: DocumentUpdateForm,
user=Depends(get_admin_user),
):
doc = Documents.update_doc_by_name(name, form_data)
if doc:
return DocumentResponse(
**{
**doc.model_dump(),
"content": json.loads(doc.content if doc.content else "{}"),
}
)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.NAME_TAG_TAKEN,
)
############################
# DeleteDocByName
############################
@router.delete("/doc/delete", response_model=bool)
async def delete_doc_by_name(name: str, user=Depends(get_admin_user)):
result = Documents.delete_doc_by_name(name)
return result
@@ -1,218 +0,0 @@
import logging
import os
import shutil
import uuid
from pathlib import Path
from typing import Optional
from open_webui.apps.webui.models.files import FileForm, FileModel, Files
from open_webui.config import UPLOAD_DIR
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS
from fastapi import APIRouter, Depends, File, HTTPException, UploadFile, status
from fastapi.responses import FileResponse
from open_webui.utils.utils import get_admin_user, get_verified_user
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"])
router = APIRouter()
############################
# Upload File
############################
@router.post("/")
def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)):
log.info(f"file.content_type: {file.content_type}")
try:
unsanitized_filename = file.filename
filename = os.path.basename(unsanitized_filename)
# replace filename with uuid
id = str(uuid.uuid4())
name = filename
filename = f"{id}_{filename}"
file_path = f"{UPLOAD_DIR}/{filename}"
contents = file.file.read()
with open(file_path, "wb") as f:
f.write(contents)
f.close()
file = Files.insert_new_file(
user.id,
FileForm(
**{
"id": id,
"filename": filename,
"meta": {
"name": name,
"content_type": file.content_type,
"size": len(contents),
"path": file_path,
},
}
),
)
if file:
return file
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT("Error uploading file"),
)
except Exception as e:
log.exception(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(e),
)
############################
# List Files
############################
@router.get("/", response_model=list[FileModel])
async def list_files(user=Depends(get_verified_user)):
if user.role == "admin":
files = Files.get_files()
else:
files = Files.get_files_by_user_id(user.id)
return files
############################
# Delete All Files
############################
@router.delete("/all")
async def delete_all_files(user=Depends(get_admin_user)):
result = Files.delete_all_files()
if result:
folder = f"{UPLOAD_DIR}"
try:
# Check if the directory exists
if os.path.exists(folder):
# Iterate over all the files and directories in the specified directory
for filename in os.listdir(folder):
file_path = os.path.join(folder, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path) # Remove the file or link
elif os.path.isdir(file_path):
shutil.rmtree(file_path) # Remove the directory
except Exception as e:
print(f"Failed to delete {file_path}. Reason: {e}")
else:
print(f"The directory {folder} does not exist")
except Exception as e:
print(f"Failed to process the directory {folder}. Reason: {e}")
return {"message": "All files deleted successfully"}
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT("Error deleting files"),
)
############################
# Get File By Id
############################
@router.get("/{id}", response_model=Optional[FileModel])
async def get_file_by_id(id: str, user=Depends(get_verified_user)):
file = Files.get_file_by_id(id)
if file and (file.user_id == user.id or user.role == "admin"):
return file
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# Get File Content By Id
############################
@router.get("/{id}/content", response_model=Optional[FileModel])
async def get_file_content_by_id(id: str, user=Depends(get_verified_user)):
file = Files.get_file_by_id(id)
if file and (file.user_id == user.id or user.role == "admin"):
file_path = Path(file.meta["path"])
# Check if the file already exists in the cache
if file_path.is_file():
print(f"file_path: {file_path}")
return FileResponse(file_path)
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
@router.get("/{id}/content/{file_name}", response_model=Optional[FileModel])
async def get_file_content_by_id(id: str, user=Depends(get_verified_user)):
file = Files.get_file_by_id(id)
if file and (file.user_id == user.id or user.role == "admin"):
file_path = Path(file.meta["path"])
# Check if the file already exists in the cache
if file_path.is_file():
print(f"file_path: {file_path}")
return FileResponse(file_path)
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# Delete File By Id
############################
@router.delete("/{id}")
async def delete_file_by_id(id: str, user=Depends(get_verified_user)):
file = Files.get_file_by_id(id)
if file and (file.user_id == user.id or user.role == "admin"):
result = Files.delete_file_by_id(id)
if result:
return {"message": "File deleted successfully"}
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT("Error deleting file"),
)
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
@@ -1,104 +0,0 @@
from typing import Optional
from open_webui.apps.webui.models.models import (
ModelForm,
ModelModel,
ModelResponse,
Models,
)
from open_webui.constants import ERROR_MESSAGES
from fastapi import APIRouter, Depends, HTTPException, Request, status
from open_webui.utils.utils import get_admin_user, get_verified_user
router = APIRouter()
###########################
# getModels
###########################
@router.get("/", response_model=list[ModelResponse])
async def get_models(id: Optional[str] = None, user=Depends(get_verified_user)):
if id:
model = Models.get_model_by_id(id)
if model:
return [model]
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
else:
return Models.get_all_models()
############################
# AddNewModel
############################
@router.post("/add", response_model=Optional[ModelModel])
async def add_new_model(
request: Request,
form_data: ModelForm,
user=Depends(get_admin_user),
):
if form_data.id in request.app.state.MODELS:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.MODEL_ID_TAKEN,
)
else:
model = Models.insert_new_model(form_data, user.id)
if model:
return model
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.DEFAULT(),
)
############################
# UpdateModelById
############################
@router.post("/update", response_model=Optional[ModelModel])
async def update_model_by_id(
request: Request,
id: str,
form_data: ModelForm,
user=Depends(get_admin_user),
):
model = Models.get_model_by_id(id)
if model:
model = Models.update_model_by_id(id, form_data)
return model
else:
if form_data.id in request.app.state.MODELS:
model = Models.insert_new_model(form_data, user.id)
if model:
return model
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.DEFAULT(),
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.DEFAULT(),
)
############################
# DeleteModelById
############################
@router.delete("/delete", response_model=bool)
async def delete_model_by_id(id: str, user=Depends(get_admin_user)):
result = Models.delete_model_by_id(id)
return result
@@ -1,90 +0,0 @@
from typing import Optional
from open_webui.apps.webui.models.prompts import PromptForm, PromptModel, Prompts
from open_webui.constants import ERROR_MESSAGES
from fastapi import APIRouter, Depends, HTTPException, status
from open_webui.utils.utils import get_admin_user, get_verified_user
router = APIRouter()
############################
# GetPrompts
############################
@router.get("/", response_model=list[PromptModel])
async def get_prompts(user=Depends(get_verified_user)):
return Prompts.get_prompts()
############################
# CreateNewPrompt
############################
@router.post("/create", response_model=Optional[PromptModel])
async def create_new_prompt(form_data: PromptForm, user=Depends(get_admin_user)):
prompt = Prompts.get_prompt_by_command(form_data.command)
if prompt is None:
prompt = Prompts.insert_new_prompt(user.id, form_data)
if prompt:
return prompt
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(),
)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.COMMAND_TAKEN,
)
############################
# GetPromptByCommand
############################
@router.get("/command/{command}", response_model=Optional[PromptModel])
async def get_prompt_by_command(command: str, user=Depends(get_verified_user)):
prompt = Prompts.get_prompt_by_command(f"/{command}")
if prompt:
return prompt
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# UpdatePromptByCommand
############################
@router.post("/command/{command}/update", response_model=Optional[PromptModel])
async def update_prompt_by_command(
command: str,
form_data: PromptForm,
user=Depends(get_admin_user),
):
prompt = Prompts.update_prompt_by_command(f"/{command}", form_data)
if prompt:
return prompt
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
############################
# DeletePromptByCommand
############################
@router.delete("/command/{command}/delete", response_model=bool)
async def delete_prompt_by_command(command: str, user=Depends(get_admin_user)):
result = Prompts.delete_prompt_by_command(f"/{command}")
return result
@@ -1,361 +0,0 @@
import os
from pathlib import Path
from typing import Optional
from open_webui.apps.webui.models.tools import ToolForm, ToolModel, ToolResponse, Tools
from open_webui.apps.webui.utils import load_toolkit_module_by_id, replace_imports
from open_webui.config import CACHE_DIR, DATA_DIR
from open_webui.constants import ERROR_MESSAGES
from fastapi import APIRouter, Depends, HTTPException, Request, status
from open_webui.utils.tools import get_tools_specs
from open_webui.utils.utils import get_admin_user, get_verified_user
TOOLS_DIR = f"{DATA_DIR}/tools"
os.makedirs(TOOLS_DIR, exist_ok=True)
router = APIRouter()
############################
# GetToolkits
############################
@router.get("/", response_model=list[ToolResponse])
async def get_toolkits(user=Depends(get_verified_user)):
toolkits = [toolkit for toolkit in Tools.get_tools()]
return toolkits
############################
# ExportToolKits
############################
@router.get("/export", response_model=list[ToolModel])
async def get_toolkits(user=Depends(get_admin_user)):
toolkits = [toolkit for toolkit in Tools.get_tools()]
return toolkits
############################
# CreateNewToolKit
############################
@router.post("/create", response_model=Optional[ToolResponse])
async def create_new_toolkit(
request: Request,
form_data: ToolForm,
user=Depends(get_admin_user),
):
if not form_data.id.isidentifier():
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Only alphanumeric characters and underscores are allowed in the id",
)
form_data.id = form_data.id.lower()
toolkit = Tools.get_tool_by_id(form_data.id)
if toolkit is None:
try:
form_data.content = replace_imports(form_data.content)
toolkit_module, frontmatter = load_toolkit_module_by_id(
form_data.id, content=form_data.content
)
form_data.meta.manifest = frontmatter
TOOLS = request.app.state.TOOLS
TOOLS[form_data.id] = toolkit_module
specs = get_tools_specs(TOOLS[form_data.id])
toolkit = Tools.insert_new_tool(user.id, form_data, specs)
tool_cache_dir = Path(CACHE_DIR) / "tools" / form_data.id
tool_cache_dir.mkdir(parents=True, exist_ok=True)
if toolkit:
return toolkit
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT("Error creating toolkit"),
)
except Exception as e:
print(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(str(e)),
)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.ID_TAKEN,
)
############################
# GetToolkitById
############################
@router.get("/id/{id}", response_model=Optional[ToolModel])
async def get_toolkit_by_id(id: str, user=Depends(get_admin_user)):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
return toolkit
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# UpdateToolkitById
############################
@router.post("/id/{id}/update", response_model=Optional[ToolModel])
async def update_toolkit_by_id(
request: Request,
id: str,
form_data: ToolForm,
user=Depends(get_admin_user),
):
try:
form_data.content = replace_imports(form_data.content)
toolkit_module, frontmatter = load_toolkit_module_by_id(
id, content=form_data.content
)
form_data.meta.manifest = frontmatter
TOOLS = request.app.state.TOOLS
TOOLS[id] = toolkit_module
specs = get_tools_specs(TOOLS[id])
updated = {
**form_data.model_dump(exclude={"id"}),
"specs": specs,
}
print(updated)
toolkit = Tools.update_tool_by_id(id, updated)
if toolkit:
return toolkit
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT("Error updating toolkit"),
)
except Exception as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(str(e)),
)
############################
# DeleteToolkitById
############################
@router.delete("/id/{id}/delete", response_model=bool)
async def delete_toolkit_by_id(request: Request, id: str, user=Depends(get_admin_user)):
result = Tools.delete_tool_by_id(id)
if result:
TOOLS = request.app.state.TOOLS
if id in TOOLS:
del TOOLS[id]
return result
############################
# GetToolValves
############################
@router.get("/id/{id}/valves", response_model=Optional[dict])
async def get_toolkit_valves_by_id(id: str, user=Depends(get_admin_user)):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
try:
valves = Tools.get_tool_valves_by_id(id)
return valves
except Exception as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(str(e)),
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# GetToolValvesSpec
############################
@router.get("/id/{id}/valves/spec", response_model=Optional[dict])
async def get_toolkit_valves_spec_by_id(
request: Request, id: str, user=Depends(get_admin_user)
):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
if id in request.app.state.TOOLS:
toolkit_module = request.app.state.TOOLS[id]
else:
toolkit_module, _ = load_toolkit_module_by_id(id)
request.app.state.TOOLS[id] = toolkit_module
if hasattr(toolkit_module, "Valves"):
Valves = toolkit_module.Valves
return Valves.schema()
return None
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# UpdateToolValves
############################
@router.post("/id/{id}/valves/update", response_model=Optional[dict])
async def update_toolkit_valves_by_id(
request: Request, id: str, form_data: dict, user=Depends(get_admin_user)
):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
if id in request.app.state.TOOLS:
toolkit_module = request.app.state.TOOLS[id]
else:
toolkit_module, _ = load_toolkit_module_by_id(id)
request.app.state.TOOLS[id] = toolkit_module
if hasattr(toolkit_module, "Valves"):
Valves = toolkit_module.Valves
try:
form_data = {k: v for k, v in form_data.items() if v is not None}
valves = Valves(**form_data)
Tools.update_tool_valves_by_id(id, valves.model_dump())
return valves.model_dump()
except Exception as e:
print(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(str(e)),
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# ToolUserValves
############################
@router.get("/id/{id}/valves/user", response_model=Optional[dict])
async def get_toolkit_user_valves_by_id(id: str, user=Depends(get_verified_user)):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
try:
user_valves = Tools.get_user_valves_by_id_and_user_id(id, user.id)
return user_valves
except Exception as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(str(e)),
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
@router.get("/id/{id}/valves/user/spec", response_model=Optional[dict])
async def get_toolkit_user_valves_spec_by_id(
request: Request, id: str, user=Depends(get_verified_user)
):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
if id in request.app.state.TOOLS:
toolkit_module = request.app.state.TOOLS[id]
else:
toolkit_module, _ = load_toolkit_module_by_id(id)
request.app.state.TOOLS[id] = toolkit_module
if hasattr(toolkit_module, "UserValves"):
UserValves = toolkit_module.UserValves
return UserValves.schema()
return None
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
@router.post("/id/{id}/valves/user/update", response_model=Optional[dict])
async def update_toolkit_user_valves_by_id(
request: Request, id: str, form_data: dict, user=Depends(get_verified_user)
):
toolkit = Tools.get_tool_by_id(id)
if toolkit:
if id in request.app.state.TOOLS:
toolkit_module = request.app.state.TOOLS[id]
else:
toolkit_module, _ = load_toolkit_module_by_id(id)
request.app.state.TOOLS[id] = toolkit_module
if hasattr(toolkit_module, "UserValves"):
UserValves = toolkit_module.UserValves
try:
form_data = {k: v for k, v in form_data.items() if v is not None}
user_valves = UserValves(**form_data)
Tools.update_user_valves_by_id_and_user_id(
id, user.id, user_valves.model_dump()
)
return user_valves.model_dump()
except Exception as e:
print(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(str(e)),
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.NOT_FOUND,
)
@@ -1,258 +0,0 @@
import logging
from typing import Optional
from open_webui.apps.webui.models.auths import Auths
from open_webui.apps.webui.models.chats import Chats
from open_webui.apps.webui.models.users import (
UserModel,
UserRoleUpdateForm,
Users,
UserSettings,
UserUpdateForm,
)
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS
from fastapi import APIRouter, Depends, HTTPException, Request, status
from pydantic import BaseModel
from open_webui.utils.utils import get_admin_user, get_password_hash, get_verified_user
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MODELS"])
router = APIRouter()
############################
# GetUsers
############################
@router.get("/", response_model=list[UserModel])
async def get_users(skip: int = 0, limit: int = 50, user=Depends(get_admin_user)):
return Users.get_users(skip, limit)
############################
# User Permissions
############################
@router.get("/permissions/user")
async def get_user_permissions(request: Request, user=Depends(get_admin_user)):
return request.app.state.config.USER_PERMISSIONS
@router.post("/permissions/user")
async def update_user_permissions(
request: Request, form_data: dict, user=Depends(get_admin_user)
):
request.app.state.config.USER_PERMISSIONS = form_data
return request.app.state.config.USER_PERMISSIONS
############################
# UpdateUserRole
############################
@router.post("/update/role", response_model=Optional[UserModel])
async def update_user_role(form_data: UserRoleUpdateForm, user=Depends(get_admin_user)):
if user.id != form_data.id and form_data.id != Users.get_first_user().id:
return Users.update_user_role_by_id(form_data.id, form_data.role)
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=ERROR_MESSAGES.ACTION_PROHIBITED,
)
############################
# GetUserSettingsBySessionUser
############################
@router.get("/user/settings", response_model=Optional[UserSettings])
async def get_user_settings_by_session_user(user=Depends(get_verified_user)):
user = Users.get_user_by_id(user.id)
if user:
return user.settings
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
############################
# UpdateUserSettingsBySessionUser
############################
@router.post("/user/settings/update", response_model=UserSettings)
async def update_user_settings_by_session_user(
form_data: UserSettings, user=Depends(get_verified_user)
):
user = Users.update_user_by_id(user.id, {"settings": form_data.model_dump()})
if user:
return user.settings
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
############################
# GetUserInfoBySessionUser
############################
@router.get("/user/info", response_model=Optional[dict])
async def get_user_info_by_session_user(user=Depends(get_verified_user)):
user = Users.get_user_by_id(user.id)
if user:
return user.info
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
############################
# UpdateUserInfoBySessionUser
############################
@router.post("/user/info/update", response_model=Optional[dict])
async def update_user_info_by_session_user(
form_data: dict, user=Depends(get_verified_user)
):
user = Users.get_user_by_id(user.id)
if user:
if user.info is None:
user.info = {}
user = Users.update_user_by_id(user.id, {"info": {**user.info, **form_data}})
if user:
return user.info
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
############################
# GetUserById
############################
class UserResponse(BaseModel):
name: str
profile_image_url: str
@router.get("/{user_id}", response_model=UserResponse)
async def get_user_by_id(user_id: str, user=Depends(get_verified_user)):
# Check if user_id is a shared chat
# If it is, get the user_id from the chat
if user_id.startswith("shared-"):
chat_id = user_id.replace("shared-", "")
chat = Chats.get_chat_by_id(chat_id)
if chat:
user_id = chat.user_id
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
user = Users.get_user_by_id(user_id)
if user:
return UserResponse(name=user.name, profile_image_url=user.profile_image_url)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
############################
# UpdateUserById
############################
@router.post("/{user_id}/update", response_model=Optional[UserModel])
async def update_user_by_id(
user_id: str,
form_data: UserUpdateForm,
session_user=Depends(get_admin_user),
):
user = Users.get_user_by_id(user_id)
if user:
if form_data.email.lower() != user.email:
email_user = Users.get_user_by_email(form_data.email.lower())
if email_user:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.EMAIL_TAKEN,
)
if form_data.password:
hashed = get_password_hash(form_data.password)
log.debug(f"hashed: {hashed}")
Auths.update_user_password_by_id(user_id, hashed)
Auths.update_email_by_id(user_id, form_data.email.lower())
updated_user = Users.update_user_by_id(
user_id,
{
"name": form_data.name,
"email": form_data.email.lower(),
"profile_image_url": form_data.profile_image_url,
},
)
if updated_user:
return updated_user
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT(),
)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.USER_NOT_FOUND,
)
############################
# DeleteUserById
############################
@router.delete("/{user_id}", response_model=bool)
async def delete_user_by_id(user_id: str, user=Depends(get_admin_user)):
if user.id != user_id:
result = Auths.delete_auth_by_id(user_id)
if result:
return True
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=ERROR_MESSAGES.DELETE_USER_ERROR,
)
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=ERROR_MESSAGES.ACTION_PROHIBITED,
)
@@ -1,140 +0,0 @@
import site
from pathlib import Path
import black
import markdown
from open_webui.config import DATA_DIR, ENABLE_ADMIN_EXPORT
from open_webui.env import FONTS_DIR
from open_webui.constants import ERROR_MESSAGES
from fastapi import APIRouter, Depends, HTTPException, Response, status
from fpdf import FPDF
from pydantic import BaseModel
from starlette.responses import FileResponse
from open_webui.utils.misc import get_gravatar_url
from open_webui.utils.utils import get_admin_user
router = APIRouter()
@router.get("/gravatar")
async def get_gravatar(
email: str,
):
return get_gravatar_url(email)
class CodeFormatRequest(BaseModel):
code: str
@router.post("/code/format")
async def format_code(request: CodeFormatRequest):
try:
formatted_code = black.format_str(request.code, mode=black.Mode())
return {"code": formatted_code}
except black.NothingChanged:
return {"code": request.code}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
class MarkdownForm(BaseModel):
md: str
@router.post("/markdown")
async def get_html_from_markdown(
form_data: MarkdownForm,
):
return {"html": markdown.markdown(form_data.md)}
class ChatForm(BaseModel):
title: str
messages: list[dict]
@router.post("/pdf")
async def download_chat_as_pdf(
form_data: ChatForm,
):
global FONTS_DIR
pdf = FPDF()
pdf.add_page()
# When running using `pip install` the static directory is in the site packages.
if not FONTS_DIR.exists():
FONTS_DIR = Path(site.getsitepackages()[0]) / "static/fonts"
# When running using `pip install -e .` the static directory is in the site packages.
# This path only works if `open-webui serve` is run from the root of this project.
if not FONTS_DIR.exists():
FONTS_DIR = Path("./backend/static/fonts")
pdf.add_font("NotoSans", "", f"{FONTS_DIR}/NotoSans-Regular.ttf")
pdf.add_font("NotoSans", "b", f"{FONTS_DIR}/NotoSans-Bold.ttf")
pdf.add_font("NotoSans", "i", f"{FONTS_DIR}/NotoSans-Italic.ttf")
pdf.add_font("NotoSansKR", "", f"{FONTS_DIR}/NotoSansKR-Regular.ttf")
pdf.add_font("NotoSansJP", "", f"{FONTS_DIR}/NotoSansJP-Regular.ttf")
pdf.add_font("NotoSansSC", "", f"{FONTS_DIR}/NotoSansSC-Regular.ttf")
pdf.set_font("NotoSans", size=12)
pdf.set_fallback_fonts(["NotoSansKR", "NotoSansJP", "NotoSansSC"])
pdf.set_auto_page_break(auto=True, margin=15)
# Adjust the effective page width for multi_cell
effective_page_width = (
pdf.w - 2 * pdf.l_margin - 10
) # Subtracted an additional 10 for extra padding
# Add chat messages
for message in form_data.messages:
role = message["role"]
content = message["content"]
pdf.set_font("NotoSans", "B", size=14) # Bold for the role
pdf.multi_cell(effective_page_width, 10, f"{role.upper()}", 0, "L")
pdf.ln(1) # Extra space between messages
pdf.set_font("NotoSans", size=10) # Regular for content
pdf.multi_cell(effective_page_width, 6, content, 0, "L")
pdf.ln(1.5) # Extra space between messages
# Save the pdf with name .pdf
pdf_bytes = pdf.output()
return Response(
content=bytes(pdf_bytes),
media_type="application/pdf",
headers={"Content-Disposition": "attachment;filename=chat.pdf"},
)
@router.get("/db/download")
async def download_db(user=Depends(get_admin_user)):
if not ENABLE_ADMIN_EXPORT:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
from open_webui.apps.webui.internal.db import engine
if engine.name != "sqlite":
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DB_NOT_SQLITE,
)
return FileResponse(
engine.url.database,
media_type="application/octet-stream",
filename="webui.db",
)
@router.get("/litellm/config")
async def download_litellm_config_yaml(user=Depends(get_admin_user)):
return FileResponse(
f"{DATA_DIR}/litellm/config.yaml",
media_type="application/octet-stream",
filename="config.yaml",
)
-171
View File
@@ -1,171 +0,0 @@
import os
import re
import subprocess
import sys
from importlib import util
import types
import tempfile
from open_webui.apps.webui.models.functions import Functions
from open_webui.apps.webui.models.tools import Tools
from open_webui.config import FUNCTIONS_DIR, TOOLS_DIR
def extract_frontmatter(content):
"""
Extract frontmatter as a dictionary from the provided content string.
"""
frontmatter = {}
frontmatter_started = False
frontmatter_ended = False
frontmatter_pattern = re.compile(r"^\s*([a-z_]+):\s*(.*)\s*$", re.IGNORECASE)
try:
lines = content.splitlines()
if len(lines) < 1 or lines[0].strip() != '"""':
# The content doesn't start with triple quotes
return {}
frontmatter_started = True
for line in lines[1:]:
if '"""' in line:
if frontmatter_started:
frontmatter_ended = True
break
if frontmatter_started and not frontmatter_ended:
match = frontmatter_pattern.match(line)
if match:
key, value = match.groups()
frontmatter[key.strip()] = value.strip()
except Exception as e:
print(f"An error occurred: {e}")
return {}
return frontmatter
def replace_imports(content):
"""
Replace the import paths in the content.
"""
replacements = {
"from utils": "from open_webui.utils",
"from apps": "from open_webui.apps",
"from main": "from open_webui.main",
"from config": "from open_webui.config",
}
for old, new in replacements.items():
content = content.replace(old, new)
return content
def load_toolkit_module_by_id(toolkit_id, content=None):
if content is None:
tool = Tools.get_tool_by_id(toolkit_id)
if not tool:
raise Exception(f"Toolkit not found: {toolkit_id}")
content = tool.content
content = replace_imports(content)
Tools.update_tool_by_id(toolkit_id, {"content": content})
else:
frontmatter = extract_frontmatter(content)
# Install required packages found within the frontmatter
install_frontmatter_requirements(frontmatter.get("requirements", ""))
module_name = f"tool_{toolkit_id}"
module = types.ModuleType(module_name)
sys.modules[module_name] = module
# Create a temporary file and use it to define `__file__` so
# that it works as expected from the module's perspective.
temp_file = tempfile.NamedTemporaryFile(delete=False)
temp_file.close()
try:
with open(temp_file.name, "w", encoding="utf-8") as f:
f.write(content)
module.__dict__["__file__"] = temp_file.name
# Executing the modified content in the created module's namespace
exec(content, module.__dict__)
frontmatter = extract_frontmatter(content)
print(f"Loaded module: {module.__name__}")
# Create and return the object if the class 'Tools' is found in the module
if hasattr(module, "Tools"):
return module.Tools(), frontmatter
else:
raise Exception("No Tools class found in the module")
except Exception as e:
print(f"Error loading module: {toolkit_id}: {e}")
del sys.modules[module_name] # Clean up
raise e
finally:
os.unlink(temp_file.name)
def load_function_module_by_id(function_id, content=None):
if content is None:
function = Functions.get_function_by_id(function_id)
if not function:
raise Exception(f"Function not found: {function_id}")
content = function.content
content = replace_imports(content)
Functions.update_function_by_id(function_id, {"content": content})
else:
frontmatter = extract_frontmatter(content)
install_frontmatter_requirements(frontmatter.get("requirements", ""))
module_name = f"function_{function_id}"
module = types.ModuleType(module_name)
sys.modules[module_name] = module
# Create a temporary file and use it to define `__file__` so
# that it works as expected from the module's perspective.
temp_file = tempfile.NamedTemporaryFile(delete=False)
temp_file.close()
try:
with open(temp_file.name, "w", encoding="utf-8") as f:
f.write(content)
module.__dict__["__file__"] = temp_file.name
# Execute the modified content in the created module's namespace
exec(content, module.__dict__)
frontmatter = extract_frontmatter(content)
print(f"Loaded module: {module.__name__}")
# Create appropriate object based on available class type in the module
if hasattr(module, "Pipe"):
return module.Pipe(), "pipe", frontmatter
elif hasattr(module, "Filter"):
return module.Filter(), "filter", frontmatter
elif hasattr(module, "Action"):
return module.Action(), "action", frontmatter
else:
raise Exception("No Function class found in the module")
except Exception as e:
print(f"Error loading module: {function_id}: {e}")
del sys.modules[module_name] # Cleanup by removing the module in case of error
Functions.update_function_by_id(function_id, {"is_active": False})
raise e
finally:
os.unlink(temp_file.name)
def install_frontmatter_requirements(requirements):
if requirements:
req_list = [req.strip() for req in requirements.split(",")]
for req in req_list:
print(f"Installing requirement: {req}")
subprocess.check_call([sys.executable, "-m", "pip", "install", req])
else:
print("No requirements found in frontmatter.")
+1959 -225
View File
File diff suppressed because it is too large Load Diff
+21 -3
View File
@@ -20,7 +20,9 @@ class ERROR_MESSAGES(str, Enum):
def __str__(self) -> str:
return super().__str__()
DEFAULT = lambda err="": f"Something went wrong :/\n{err if err else ''}"
DEFAULT = (
lambda err="": f'{"Something went wrong :/" if err == "" else "[ERROR: " + str(err) + "]"}'
)
ENV_VAR_NOT_FOUND = "Required environment variable not found. Terminating now."
CREATE_USER_ERROR = "Oops! Something went wrong while creating your account. Please try again later. If the issue persists, contact support for assistance."
DELETE_USER_ERROR = "Oops! Something went wrong. We encountered an issue while trying to delete the user. Please give it another shot."
@@ -29,13 +31,14 @@ class ERROR_MESSAGES(str, Enum):
USERNAME_TAKEN = (
"Uh-oh! This username is already registered. Please choose another username."
)
PASSWORD_TOO_LONG = "Uh-oh! The password you entered is too long. Please make sure your password is less than 72 bytes long."
COMMAND_TAKEN = "Uh-oh! This command is already registered. Please choose another command string."
FILE_EXISTS = "Uh-oh! This file is already registered. Please choose another file."
ID_TAKEN = "Uh-oh! This id is already registered. Please choose another id string."
MODEL_ID_TAKEN = "Uh-oh! This model id is already registered. Please choose another model id string."
NAME_TAG_TAKEN = "Uh-oh! This name tag is already registered. Please choose another name tag string."
INVALID_TOKEN = (
"Your session has expired or the token is invalid. Please sign in again."
)
@@ -55,11 +58,12 @@ class ERROR_MESSAGES(str, Enum):
)
FILE_NOT_SENT = "FILE_NOT_SENT"
FILE_NOT_SUPPORTED = "Oops! It seems like the file format you're trying to upload is not supported. Please upload a file with a supported format (e.g., JPG, PNG, PDF, TXT) and try again."
FILE_NOT_SUPPORTED = "Oops! It seems like the file format you're trying to upload is not supported. Please upload a file with a supported format and try again."
NOT_FOUND = "We could not find what you're looking for :/"
USER_NOT_FOUND = "We could not find what you're looking for :/"
API_KEY_NOT_FOUND = "Oops! It looks like there's a hiccup. The API key is missing. Please make sure to provide a valid API key to access this feature."
API_KEY_NOT_ALLOWED = "Use of API key is not enabled in the environment."
MALICIOUS = "Unusual activities detected, please try again in a few minutes."
@@ -73,6 +77,7 @@ class ERROR_MESSAGES(str, Enum):
OPENAI_NOT_FOUND = lambda name="": "OpenAI API was not found"
OLLAMA_NOT_FOUND = "WebUI could not connect to Ollama"
CREATE_API_KEY_ERROR = "Oops! Something went wrong while creating your API key. Please try again later. If the issue persists, contact support for assistance."
API_KEY_CREATION_NOT_ALLOWED = "API key creation is not allowed in the environment."
EMPTY_CONTENT = "The content provided is empty. Please ensure that there is text or data present before proceeding."
@@ -90,6 +95,15 @@ class ERROR_MESSAGES(str, Enum):
"The Ollama API is disabled. Please enable it to use this feature."
)
FILE_TOO_LARGE = (
lambda size="": f"Oops! The file you're trying to upload is too large. Please upload a file that is less than {size}."
)
DUPLICATE_CONTENT = (
"Duplicate content detected. Please provide unique content to proceed."
)
FILE_NOT_PROCESSED = "Extracted content is not available for this file. Please ensure that the file is processed before proceeding."
class TASKS(str, Enum):
def __str__(self) -> str:
@@ -97,7 +111,11 @@ class TASKS(str, Enum):
DEFAULT = lambda task="": f"{task if task else 'generation'}"
TITLE_GENERATION = "title_generation"
FOLLOW_UP_GENERATION = "follow_up_generation"
TAGS_GENERATION = "tags_generation"
EMOJI_GENERATION = "emoji_generation"
QUERY_GENERATION = "query_generation"
IMAGE_PROMPT_GENERATION = "image_prompt_generation"
AUTOCOMPLETE_GENERATION = "autocomplete_generation"
FUNCTION_CALLING = "function_calling"
MOA_RESPONSE_GENERATION = "moa_response_generation"
+356 -30
View File
@@ -5,6 +5,7 @@ import os
import pkgutil
import sys
import shutil
from uuid import uuid4
from pathlib import Path
import markdown
@@ -53,15 +54,20 @@ if USE_CUDA.lower() == "true":
else:
DEVICE_TYPE = "cpu"
try:
import torch
if torch.backends.mps.is_available() and torch.backends.mps.is_built():
DEVICE_TYPE = "mps"
except Exception:
pass
####################################
# LOGGING
####################################
log_levels = ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"]
GLOBAL_LOG_LEVEL = os.environ.get("GLOBAL_LOG_LEVEL", "").upper()
if GLOBAL_LOG_LEVEL in log_levels:
if GLOBAL_LOG_LEVEL in logging.getLevelNamesMapping():
logging.basicConfig(stream=sys.stdout, level=GLOBAL_LOG_LEVEL, force=True)
else:
GLOBAL_LOG_LEVEL = "INFO"
@@ -71,6 +77,7 @@ log.info(f"GLOBAL_LOG_LEVEL: {GLOBAL_LOG_LEVEL}")
if "cuda_error" in locals():
log.exception(cuda_error)
del cuda_error
log_sources = [
"AUDIO",
@@ -85,6 +92,7 @@ log_sources = [
"RAG",
"WEBHOOK",
"SOCKET",
"OAUTH",
]
SRC_LOG_LEVELS = {}
@@ -92,21 +100,19 @@ SRC_LOG_LEVELS = {}
for source in log_sources:
log_env_var = source + "_LOG_LEVEL"
SRC_LOG_LEVELS[source] = os.environ.get(log_env_var, "").upper()
if SRC_LOG_LEVELS[source] not in log_levels:
if SRC_LOG_LEVELS[source] not in logging.getLevelNamesMapping():
SRC_LOG_LEVELS[source] = GLOBAL_LOG_LEVEL
log.info(f"{log_env_var}: {SRC_LOG_LEVELS[source]}")
log.setLevel(SRC_LOG_LEVELS["CONFIG"])
WEBUI_NAME = os.environ.get("WEBUI_NAME", "Open WebUI")
if WEBUI_NAME != "Open WebUI":
WEBUI_NAME += " (Open WebUI)"
WEBUI_URL = os.environ.get("WEBUI_URL", "http://localhost:3000")
WEBUI_FAVICON_URL = "https://openwebui.com/favicon.png"
TRUSTED_SIGNATURE_KEY = os.environ.get("TRUSTED_SIGNATURE_KEY", "")
####################################
# ENV (dev,test,prod)
@@ -124,8 +130,8 @@ else:
except Exception:
PACKAGE_DATA = {"version": "0.0.0"}
VERSION = PACKAGE_DATA["version"]
INSTANCE_ID = os.environ.get("INSTANCE_ID", str(uuid4()))
# Function to parse each section
@@ -155,7 +161,6 @@ try:
except Exception:
changelog_content = (pkgutil.get_data("open_webui", "CHANGELOG.md") or b"").decode()
# Convert markdown content to HTML
html_content = markdown.markdown(changelog_content)
@@ -186,7 +191,6 @@ for version in soup.find_all("h2"):
changelog_json[version_number] = version_data
CHANGELOG = changelog_json
####################################
@@ -195,6 +199,15 @@ CHANGELOG = changelog_json
SAFE_MODE = os.environ.get("SAFE_MODE", "false").lower() == "true"
####################################
# ENABLE_FORWARD_USER_INFO_HEADERS
####################################
ENABLE_FORWARD_USER_INFO_HEADERS = (
os.environ.get("ENABLE_FORWARD_USER_INFO_HEADERS", "False").lower() == "true"
)
####################################
# WEBUI_BUILD_HASH
####################################
@@ -221,8 +234,15 @@ if FROM_INIT_PY:
else:
shutil.copy2(item, dest)
# Zip the data directory
shutil.make_archive(DATA_DIR.parent / "open_webui_data", "zip", DATA_DIR)
# Remove the old data directory
shutil.rmtree(DATA_DIR)
DATA_DIR = Path(os.getenv("DATA_DIR", OPEN_WEBUI_DIR / "data"))
STATIC_DIR = Path(os.getenv("STATIC_DIR", OPEN_WEBUI_DIR / "static"))
FONTS_DIR = Path(os.getenv("FONTS_DIR", OPEN_WEBUI_DIR / "static" / "fonts"))
@@ -233,19 +253,6 @@ if FROM_INIT_PY:
os.getenv("FRONTEND_BUILD_DIR", OPEN_WEBUI_DIR / "frontend")
).resolve()
RESET_CONFIG_ON_START = (
os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true"
)
if RESET_CONFIG_ON_START:
try:
os.remove(f"{DATA_DIR}/config.json")
with open(f"{DATA_DIR}/config.json", "w") as f:
f.write("{}")
except Exception:
pass
####################################
# Database
####################################
@@ -260,10 +267,104 @@ else:
DATABASE_URL = os.environ.get("DATABASE_URL", f"sqlite:///{DATA_DIR}/webui.db")
DATABASE_TYPE = os.environ.get("DATABASE_TYPE")
DATABASE_USER = os.environ.get("DATABASE_USER")
DATABASE_PASSWORD = os.environ.get("DATABASE_PASSWORD")
DATABASE_CRED = ""
if DATABASE_USER:
DATABASE_CRED += f"{DATABASE_USER}"
if DATABASE_PASSWORD:
DATABASE_CRED += f":{DATABASE_PASSWORD}"
if DATABASE_CRED:
DATABASE_CRED += "@"
DB_VARS = {
"db_type": DATABASE_TYPE,
"db_cred": DATABASE_CRED,
"db_host": os.environ.get("DATABASE_HOST"),
"db_port": os.environ.get("DATABASE_PORT"),
"db_name": os.environ.get("DATABASE_NAME"),
}
if all(DB_VARS.values()):
DATABASE_URL = f"{DB_VARS['db_type']}://{DB_VARS['db_cred']}@{DB_VARS['db_host']}:{DB_VARS['db_port']}/{DB_VARS['db_name']}"
# Replace the postgres:// with postgresql://
if "postgres://" in DATABASE_URL:
DATABASE_URL = DATABASE_URL.replace("postgres://", "postgresql://")
DATABASE_SCHEMA = os.environ.get("DATABASE_SCHEMA", None)
DATABASE_POOL_SIZE = os.environ.get("DATABASE_POOL_SIZE", None)
if DATABASE_POOL_SIZE != None:
try:
DATABASE_POOL_SIZE = int(DATABASE_POOL_SIZE)
except Exception:
DATABASE_POOL_SIZE = None
DATABASE_POOL_MAX_OVERFLOW = os.environ.get("DATABASE_POOL_MAX_OVERFLOW", 0)
if DATABASE_POOL_MAX_OVERFLOW == "":
DATABASE_POOL_MAX_OVERFLOW = 0
else:
try:
DATABASE_POOL_MAX_OVERFLOW = int(DATABASE_POOL_MAX_OVERFLOW)
except Exception:
DATABASE_POOL_MAX_OVERFLOW = 0
DATABASE_POOL_TIMEOUT = os.environ.get("DATABASE_POOL_TIMEOUT", 30)
if DATABASE_POOL_TIMEOUT == "":
DATABASE_POOL_TIMEOUT = 30
else:
try:
DATABASE_POOL_TIMEOUT = int(DATABASE_POOL_TIMEOUT)
except Exception:
DATABASE_POOL_TIMEOUT = 30
DATABASE_POOL_RECYCLE = os.environ.get("DATABASE_POOL_RECYCLE", 3600)
if DATABASE_POOL_RECYCLE == "":
DATABASE_POOL_RECYCLE = 3600
else:
try:
DATABASE_POOL_RECYCLE = int(DATABASE_POOL_RECYCLE)
except Exception:
DATABASE_POOL_RECYCLE = 3600
RESET_CONFIG_ON_START = (
os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true"
)
ENABLE_REALTIME_CHAT_SAVE = (
os.environ.get("ENABLE_REALTIME_CHAT_SAVE", "False").lower() == "true"
)
####################################
# REDIS
####################################
REDIS_URL = os.environ.get("REDIS_URL", "")
REDIS_KEY_PREFIX = os.environ.get("REDIS_KEY_PREFIX", "open-webui")
REDIS_SENTINEL_HOSTS = os.environ.get("REDIS_SENTINEL_HOSTS", "")
REDIS_SENTINEL_PORT = os.environ.get("REDIS_SENTINEL_PORT", "26379")
####################################
# UVICORN WORKERS
####################################
# Number of uvicorn worker processes for handling requests
UVICORN_WORKERS = os.environ.get("UVICORN_WORKERS", "1")
try:
UVICORN_WORKERS = int(UVICORN_WORKERS)
if UVICORN_WORKERS < 1:
UVICORN_WORKERS = 1
except ValueError:
UVICORN_WORKERS = 1
log.info(f"Invalid UVICORN_WORKERS value, defaulting to {UVICORN_WORKERS}")
####################################
# WEBUI_AUTH (Required for security)
@@ -274,8 +375,19 @@ WEBUI_AUTH_TRUSTED_EMAIL_HEADER = os.environ.get(
"WEBUI_AUTH_TRUSTED_EMAIL_HEADER", None
)
WEBUI_AUTH_TRUSTED_NAME_HEADER = os.environ.get("WEBUI_AUTH_TRUSTED_NAME_HEADER", None)
WEBUI_AUTH_TRUSTED_GROUPS_HEADER = os.environ.get(
"WEBUI_AUTH_TRUSTED_GROUPS_HEADER", None
)
BYPASS_MODEL_ACCESS_CONTROL = (
os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true"
)
WEBUI_AUTH_SIGNOUT_REDIRECT_URL = os.environ.get(
"WEBUI_AUTH_SIGNOUT_REDIRECT_URL", None
)
####################################
# WEBUI_SECRET_KEY
####################################
@@ -287,23 +399,237 @@ WEBUI_SECRET_KEY = os.environ.get(
), # DEPRECATED: remove at next major version
)
WEBUI_SESSION_COOKIE_SAME_SITE = os.environ.get(
"WEBUI_SESSION_COOKIE_SAME_SITE",
os.environ.get("WEBUI_SESSION_COOKIE_SAME_SITE", "lax"),
WEBUI_SESSION_COOKIE_SAME_SITE = os.environ.get("WEBUI_SESSION_COOKIE_SAME_SITE", "lax")
WEBUI_SESSION_COOKIE_SECURE = (
os.environ.get("WEBUI_SESSION_COOKIE_SECURE", "false").lower() == "true"
)
WEBUI_SESSION_COOKIE_SECURE = os.environ.get(
"WEBUI_SESSION_COOKIE_SECURE",
os.environ.get("WEBUI_SESSION_COOKIE_SECURE", "false").lower() == "true",
WEBUI_AUTH_COOKIE_SAME_SITE = os.environ.get(
"WEBUI_AUTH_COOKIE_SAME_SITE", WEBUI_SESSION_COOKIE_SAME_SITE
)
WEBUI_AUTH_COOKIE_SECURE = (
os.environ.get(
"WEBUI_AUTH_COOKIE_SECURE",
os.environ.get("WEBUI_SESSION_COOKIE_SECURE", "false"),
).lower()
== "true"
)
if WEBUI_AUTH and WEBUI_SECRET_KEY == "":
raise ValueError(ERROR_MESSAGES.ENV_VAR_NOT_FOUND)
ENABLE_COMPRESSION_MIDDLEWARE = (
os.environ.get("ENABLE_COMPRESSION_MIDDLEWARE", "True").lower() == "true"
)
####################################
# MODELS
####################################
MODELS_CACHE_TTL = os.environ.get("MODELS_CACHE_TTL", "1")
if MODELS_CACHE_TTL == "":
MODELS_CACHE_TTL = None
else:
try:
MODELS_CACHE_TTL = int(MODELS_CACHE_TTL)
except Exception:
MODELS_CACHE_TTL = 1
####################################
# WEBSOCKET SUPPORT
####################################
ENABLE_WEBSOCKET_SUPPORT = (
os.environ.get("ENABLE_WEBSOCKET_SUPPORT", "True").lower() == "true"
)
WEBSOCKET_MANAGER = os.environ.get("WEBSOCKET_MANAGER", "")
WEBSOCKET_REDIS_URL = os.environ.get("WEBSOCKET_REDIS_URL", "redis://localhost:6379/0")
WEBSOCKET_REDIS_URL = os.environ.get("WEBSOCKET_REDIS_URL", REDIS_URL)
WEBSOCKET_REDIS_LOCK_TIMEOUT = os.environ.get("WEBSOCKET_REDIS_LOCK_TIMEOUT", 60)
WEBSOCKET_SENTINEL_HOSTS = os.environ.get("WEBSOCKET_SENTINEL_HOSTS", "")
WEBSOCKET_SENTINEL_PORT = os.environ.get("WEBSOCKET_SENTINEL_PORT", "26379")
AIOHTTP_CLIENT_TIMEOUT = os.environ.get("AIOHTTP_CLIENT_TIMEOUT", "")
if AIOHTTP_CLIENT_TIMEOUT == "":
AIOHTTP_CLIENT_TIMEOUT = None
else:
try:
AIOHTTP_CLIENT_TIMEOUT = int(AIOHTTP_CLIENT_TIMEOUT)
except Exception:
AIOHTTP_CLIENT_TIMEOUT = 300
AIOHTTP_CLIENT_SESSION_SSL = (
os.environ.get("AIOHTTP_CLIENT_SESSION_SSL", "True").lower() == "true"
)
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST = os.environ.get(
"AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST",
os.environ.get("AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST", "10"),
)
if AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST == "":
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST = None
else:
try:
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST = int(AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST)
except Exception:
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST = 10
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA = os.environ.get(
"AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA", "10"
)
if AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA == "":
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA = None
else:
try:
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA = int(
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA
)
except Exception:
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA = 10
AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL = (
os.environ.get("AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL", "True").lower() == "true"
)
####################################
# SENTENCE TRANSFORMERS
####################################
SENTENCE_TRANSFORMERS_BACKEND = os.environ.get("SENTENCE_TRANSFORMERS_BACKEND", "")
if SENTENCE_TRANSFORMERS_BACKEND == "":
SENTENCE_TRANSFORMERS_BACKEND = "torch"
SENTENCE_TRANSFORMERS_MODEL_KWARGS = os.environ.get(
"SENTENCE_TRANSFORMERS_MODEL_KWARGS", ""
)
if SENTENCE_TRANSFORMERS_MODEL_KWARGS == "":
SENTENCE_TRANSFORMERS_MODEL_KWARGS = None
else:
try:
SENTENCE_TRANSFORMERS_MODEL_KWARGS = json.loads(
SENTENCE_TRANSFORMERS_MODEL_KWARGS
)
except Exception:
SENTENCE_TRANSFORMERS_MODEL_KWARGS = None
SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND = os.environ.get(
"SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND", ""
)
if SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND == "":
SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND = "torch"
SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = os.environ.get(
"SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS", ""
)
if SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS == "":
SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = None
else:
try:
SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = json.loads(
SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS
)
except Exception:
SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = None
####################################
# OFFLINE_MODE
####################################
ENABLE_VERSION_UPDATE_CHECK = (
os.environ.get("ENABLE_VERSION_UPDATE_CHECK", "true").lower() == "true"
)
OFFLINE_MODE = os.environ.get("OFFLINE_MODE", "false").lower() == "true"
if OFFLINE_MODE:
os.environ["HF_HUB_OFFLINE"] = "1"
ENABLE_VERSION_UPDATE_CHECK = False
####################################
# AUDIT LOGGING
####################################
# Where to store log file
AUDIT_LOGS_FILE_PATH = f"{DATA_DIR}/audit.log"
# Maximum size of a file before rotating into a new log file
AUDIT_LOG_FILE_ROTATION_SIZE = os.getenv("AUDIT_LOG_FILE_ROTATION_SIZE", "10MB")
# Comma separated list of logger names to use for audit logging
# Default is "uvicorn.access" which is the access log for Uvicorn
# You can add more logger names to this list if you want to capture more logs
AUDIT_UVICORN_LOGGER_NAMES = os.getenv(
"AUDIT_UVICORN_LOGGER_NAMES", "uvicorn.access"
).split(",")
# METADATA | REQUEST | REQUEST_RESPONSE
AUDIT_LOG_LEVEL = os.getenv("AUDIT_LOG_LEVEL", "NONE").upper()
try:
MAX_BODY_LOG_SIZE = int(os.environ.get("MAX_BODY_LOG_SIZE") or 2048)
except ValueError:
MAX_BODY_LOG_SIZE = 2048
# Comma separated list for urls to exclude from audit
AUDIT_EXCLUDED_PATHS = os.getenv("AUDIT_EXCLUDED_PATHS", "/chats,/chat,/folders").split(
","
)
AUDIT_EXCLUDED_PATHS = [path.strip() for path in AUDIT_EXCLUDED_PATHS]
AUDIT_EXCLUDED_PATHS = [path.lstrip("/") for path in AUDIT_EXCLUDED_PATHS]
####################################
# OPENTELEMETRY
####################################
ENABLE_OTEL = os.environ.get("ENABLE_OTEL", "False").lower() == "true"
ENABLE_OTEL_METRICS = os.environ.get("ENABLE_OTEL_METRICS", "False").lower() == "true"
OTEL_EXPORTER_OTLP_ENDPOINT = os.environ.get(
"OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4317"
)
OTEL_EXPORTER_OTLP_INSECURE = (
os.environ.get("OTEL_EXPORTER_OTLP_INSECURE", "False").lower() == "true"
)
OTEL_SERVICE_NAME = os.environ.get("OTEL_SERVICE_NAME", "open-webui")
OTEL_RESOURCE_ATTRIBUTES = os.environ.get(
"OTEL_RESOURCE_ATTRIBUTES", ""
) # e.g. key1=val1,key2=val2
OTEL_TRACES_SAMPLER = os.environ.get(
"OTEL_TRACES_SAMPLER", "parentbased_always_on"
).lower()
OTEL_BASIC_AUTH_USERNAME = os.environ.get("OTEL_BASIC_AUTH_USERNAME", "")
OTEL_BASIC_AUTH_PASSWORD = os.environ.get("OTEL_BASIC_AUTH_PASSWORD", "")
OTEL_OTLP_SPAN_EXPORTER = os.environ.get(
"OTEL_OTLP_SPAN_EXPORTER", "grpc"
).lower() # grpc or http
####################################
# TOOLS/FUNCTIONS PIP OPTIONS
####################################
PIP_OPTIONS = os.getenv("PIP_OPTIONS", "").split()
PIP_PACKAGE_INDEX_OPTIONS = os.getenv("PIP_PACKAGE_INDEX_OPTIONS", "").split()
####################################
# PROGRESSIVE WEB APP OPTIONS
####################################
EXTERNAL_PWA_MANIFEST_URL = os.environ.get("EXTERNAL_PWA_MANIFEST_URL")
+321
View File
@@ -0,0 +1,321 @@
import logging
import sys
import inspect
import json
import asyncio
from pydantic import BaseModel
from typing import AsyncGenerator, Generator, Iterator
from fastapi import (
Depends,
FastAPI,
File,
Form,
HTTPException,
Request,
UploadFile,
status,
)
from starlette.responses import Response, StreamingResponse
from open_webui.socket.main import (
get_event_call,
get_event_emitter,
)
from open_webui.models.users import UserModel
from open_webui.models.functions import Functions
from open_webui.models.models import Models
from open_webui.utils.plugin import (
load_function_module_by_id,
get_function_module_from_cache,
)
from open_webui.utils.tools import get_tools
from open_webui.utils.access_control import has_access
from open_webui.env import SRC_LOG_LEVELS, GLOBAL_LOG_LEVEL
from open_webui.utils.misc import (
add_or_update_system_message,
get_last_user_message,
prepend_to_first_user_message_content,
openai_chat_chunk_message_template,
openai_chat_completion_message_template,
)
from open_webui.utils.payload import (
apply_model_params_to_body_openai,
apply_model_system_prompt_to_body,
)
logging.basicConfig(stream=sys.stdout, level=GLOBAL_LOG_LEVEL)
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MAIN"])
def get_function_module_by_id(request: Request, pipe_id: str):
function_module, _, _ = get_function_module_from_cache(request, pipe_id)
if hasattr(function_module, "valves") and hasattr(function_module, "Valves"):
valves = Functions.get_function_valves_by_id(pipe_id)
function_module.valves = function_module.Valves(**(valves if valves else {}))
return function_module
async def get_function_models(request):
pipes = Functions.get_functions_by_type("pipe", active_only=True)
pipe_models = []
for pipe in pipes:
function_module = get_function_module_by_id(request, pipe.id)
# Check if function is a manifold
if hasattr(function_module, "pipes"):
sub_pipes = []
# Handle pipes being a list, sync function, or async function
try:
if callable(function_module.pipes):
if asyncio.iscoroutinefunction(function_module.pipes):
sub_pipes = await function_module.pipes()
else:
sub_pipes = function_module.pipes()
else:
sub_pipes = function_module.pipes
except Exception as e:
log.exception(e)
sub_pipes = []
log.debug(
f"get_function_models: function '{pipe.id}' is a manifold of {sub_pipes}"
)
for p in sub_pipes:
sub_pipe_id = f'{pipe.id}.{p["id"]}'
sub_pipe_name = p["name"]
if hasattr(function_module, "name"):
sub_pipe_name = f"{function_module.name}{sub_pipe_name}"
pipe_flag = {"type": pipe.type}
pipe_models.append(
{
"id": sub_pipe_id,
"name": sub_pipe_name,
"object": "model",
"created": pipe.created_at,
"owned_by": "openai",
"pipe": pipe_flag,
}
)
else:
pipe_flag = {"type": "pipe"}
log.debug(
f"get_function_models: function '{pipe.id}' is a single pipe {{ 'id': {pipe.id}, 'name': {pipe.name} }}"
)
pipe_models.append(
{
"id": pipe.id,
"name": pipe.name,
"object": "model",
"created": pipe.created_at,
"owned_by": "openai",
"pipe": pipe_flag,
}
)
return pipe_models
async def generate_function_chat_completion(
request, form_data, user, models: dict = {}
):
async def execute_pipe(pipe, params):
if inspect.iscoroutinefunction(pipe):
return await pipe(**params)
else:
return pipe(**params)
async def get_message_content(res: str | Generator | AsyncGenerator) -> str:
if isinstance(res, str):
return res
if isinstance(res, Generator):
return "".join(map(str, res))
if isinstance(res, AsyncGenerator):
return "".join([str(stream) async for stream in res])
def process_line(form_data: dict, line):
if isinstance(line, BaseModel):
line = line.model_dump_json()
line = f"data: {line}"
if isinstance(line, dict):
line = f"data: {json.dumps(line)}"
try:
line = line.decode("utf-8")
except Exception:
pass
if line.startswith("data:"):
return f"{line}\n\n"
else:
line = openai_chat_chunk_message_template(form_data["model"], line)
return f"data: {json.dumps(line)}\n\n"
def get_pipe_id(form_data: dict) -> str:
pipe_id = form_data["model"]
if "." in pipe_id:
pipe_id, _ = pipe_id.split(".", 1)
return pipe_id
def get_function_params(function_module, form_data, user, extra_params=None):
if extra_params is None:
extra_params = {}
pipe_id = get_pipe_id(form_data)
# Get the signature of the function
sig = inspect.signature(function_module.pipe)
params = {"body": form_data} | {
k: v for k, v in extra_params.items() if k in sig.parameters
}
if "__user__" in params and hasattr(function_module, "UserValves"):
user_valves = Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id)
try:
params["__user__"]["valves"] = function_module.UserValves(**user_valves)
except Exception as e:
log.exception(e)
params["__user__"]["valves"] = function_module.UserValves()
return params
model_id = form_data.get("model")
model_info = Models.get_model_by_id(model_id)
metadata = form_data.pop("metadata", {})
files = metadata.get("files", [])
tool_ids = metadata.get("tool_ids", [])
# Check if tool_ids is None
if tool_ids is None:
tool_ids = []
__event_emitter__ = None
__event_call__ = None
__task__ = None
__task_body__ = None
if metadata:
if all(k in metadata for k in ("session_id", "chat_id", "message_id")):
__event_emitter__ = get_event_emitter(metadata)
__event_call__ = get_event_call(metadata)
__task__ = metadata.get("task", None)
__task_body__ = metadata.get("task_body", None)
extra_params = {
"__event_emitter__": __event_emitter__,
"__event_call__": __event_call__,
"__chat_id__": metadata.get("chat_id", None),
"__session_id__": metadata.get("session_id", None),
"__message_id__": metadata.get("message_id", None),
"__task__": __task__,
"__task_body__": __task_body__,
"__files__": files,
"__user__": user.model_dump() if isinstance(user, UserModel) else {},
"__metadata__": metadata,
"__request__": request,
}
extra_params["__tools__"] = get_tools(
request,
tool_ids,
user,
{
**extra_params,
"__model__": models.get(form_data["model"], None),
"__messages__": form_data["messages"],
"__files__": files,
},
)
if model_info:
if model_info.base_model_id:
form_data["model"] = model_info.base_model_id
params = model_info.params.model_dump()
if params:
system = params.pop("system", None)
form_data = apply_model_params_to_body_openai(params, form_data)
form_data = apply_model_system_prompt_to_body(
system, form_data, metadata, user
)
pipe_id = get_pipe_id(form_data)
function_module = get_function_module_by_id(request, pipe_id)
pipe = function_module.pipe
params = get_function_params(function_module, form_data, user, extra_params)
if form_data.get("stream", False):
async def stream_content():
try:
res = await execute_pipe(pipe, params)
# Directly return if the response is a StreamingResponse
if isinstance(res, StreamingResponse):
async for data in res.body_iterator:
yield data
return
if isinstance(res, dict):
yield f"data: {json.dumps(res)}\n\n"
return
except Exception as e:
log.error(f"Error: {e}")
yield f"data: {json.dumps({'error': {'detail':str(e)}})}\n\n"
return
if isinstance(res, str):
message = openai_chat_chunk_message_template(form_data["model"], res)
yield f"data: {json.dumps(message)}\n\n"
if isinstance(res, Iterator):
for line in res:
yield process_line(form_data, line)
if isinstance(res, AsyncGenerator):
async for line in res:
yield process_line(form_data, line)
if isinstance(res, str) or isinstance(res, Generator):
finish_message = openai_chat_chunk_message_template(
form_data["model"], ""
)
finish_message["choices"][0]["finish_reason"] = "stop"
yield f"data: {json.dumps(finish_message)}\n\n"
yield "data: [DONE]"
return StreamingResponse(stream_content(), media_type="text/event-stream")
else:
try:
res = await execute_pipe(pipe, params)
except Exception as e:
log.error(f"Error: {e}")
return {"error": {"detail": str(e)}}
if isinstance(res, StreamingResponse) or isinstance(res, dict):
return res
if isinstance(res, BaseModel):
return res.model_dump()
message = await get_message_content(res)
return openai_chat_completion_message_template(form_data["model"], message)
@@ -3,12 +3,22 @@ import logging
from contextlib import contextmanager
from typing import Any, Optional
from open_webui.apps.webui.internal.wrappers import register_connection
from open_webui.env import OPEN_WEBUI_DIR, DATABASE_URL, SRC_LOG_LEVELS
from open_webui.internal.wrappers import register_connection
from open_webui.env import (
OPEN_WEBUI_DIR,
DATABASE_URL,
DATABASE_SCHEMA,
SRC_LOG_LEVELS,
DATABASE_POOL_MAX_OVERFLOW,
DATABASE_POOL_RECYCLE,
DATABASE_POOL_SIZE,
DATABASE_POOL_TIMEOUT,
)
from peewee_migrate import Router
from sqlalchemy import Dialect, create_engine, types
from sqlalchemy import Dialect, create_engine, MetaData, types
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.pool import QueuePool, NullPool
from sqlalchemy.sql.type_api import _T
from typing_extensions import Self
@@ -45,13 +55,16 @@ def handle_peewee_migration(DATABASE_URL):
try:
# Replace the postgresql:// with postgres:// to handle the peewee migration
db = register_connection(DATABASE_URL.replace("postgresql://", "postgres://"))
migrate_dir = OPEN_WEBUI_DIR / "apps" / "webui" / "internal" / "migrations"
migrate_dir = OPEN_WEBUI_DIR / "internal" / "migrations"
router = Router(db, logger=log, migrate_dir=migrate_dir)
router.run()
db.close()
except Exception as e:
log.error(f"Failed to initialize the database connection: {e}")
log.warning(
"Hint: If your database password contains special characters, you may need to URL-encode it."
)
raise
finally:
# Properly closing the database connection
@@ -71,13 +84,30 @@ if "sqlite" in SQLALCHEMY_DATABASE_URL:
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
else:
engine = create_engine(SQLALCHEMY_DATABASE_URL, pool_pre_ping=True)
if isinstance(DATABASE_POOL_SIZE, int):
if DATABASE_POOL_SIZE > 0:
engine = create_engine(
SQLALCHEMY_DATABASE_URL,
pool_size=DATABASE_POOL_SIZE,
max_overflow=DATABASE_POOL_MAX_OVERFLOW,
pool_timeout=DATABASE_POOL_TIMEOUT,
pool_recycle=DATABASE_POOL_RECYCLE,
pool_pre_ping=True,
poolclass=QueuePool,
)
else:
engine = create_engine(
SQLALCHEMY_DATABASE_URL, pool_pre_ping=True, poolclass=NullPool
)
else:
engine = create_engine(SQLALCHEMY_DATABASE_URL, pool_pre_ping=True)
SessionLocal = sessionmaker(
autocommit=False, autoflush=False, bind=engine, expire_on_commit=False
)
Base = declarative_base()
metadata_obj = MetaData(schema=DATABASE_SCHEMA)
Base = declarative_base(metadata=metadata_obj)
Session = scoped_session(SessionLocal)
@@ -43,7 +43,7 @@ class ReconnectingPostgresqlDatabase(CustomReconnectMixin, PostgresqlDatabase):
def register_connection(db_url):
db = connect(db_url, unquote_password=True)
db = connect(db_url, unquote_user=True, unquote_password=True)
if isinstance(db, PostgresqlDatabase):
# Enable autoconnect for SQLite databases, managed by Peewee
db.autoconnect = True
@@ -51,7 +51,7 @@ def register_connection(db_url):
log.info("Connected to PostgreSQL database")
# Get the connection details
connection = parse(db_url, unquote_password=True)
connection = parse(db_url, unquote_user=True, unquote_password=True)
# Use our custom database class that supports reconnection
db = ReconnectingPostgresqlDatabase(**connection)
+1509 -2047
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,7 +1,7 @@
from logging.config import fileConfig
from alembic import context
from open_webui.apps.webui.models.auths import Auth
from open_webui.models.auths import Auth
from open_webui.env import DATABASE_URL
from sqlalchemy import engine_from_config, pool
+1 -1
View File
@@ -9,7 +9,7 @@ from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
import open_webui.apps.webui.internal.db
import open_webui.internal.db
${imports if imports else ""}
# revision identifiers, used by Alembic.
@@ -1,19 +0,0 @@
from alembic import command
from alembic.config import Config
from open_webui.env import OPEN_WEBUI_DIR
alembic_cfg = Config(OPEN_WEBUI_DIR / "alembic.ini")
# Set the script location dynamically
migrations_path = OPEN_WEBUI_DIR / "migrations"
alembic_cfg.set_main_option("script_location", str(migrations_path))
def revision(message: str) -> None:
command.revision(alembic_cfg, message=message, autogenerate=False)
if __name__ == "__main__":
input_message = input("Enter the revision message: ")
revision(input_message)
+6
View File
@@ -7,3 +7,9 @@ def get_existing_tables():
inspector = Inspector.from_engine(con)
tables = set(inspector.get_table_names())
return tables
def get_revision_id():
import uuid
return str(uuid.uuid4()).replace("-", "")[:12]
@@ -0,0 +1,151 @@
"""Migrate tags
Revision ID: 1af9b942657b
Revises: 242a2047eae0
Create Date: 2024-10-09 21:02:35.241684
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import table, select, update, column
from sqlalchemy.engine.reflection import Inspector
import json
revision = "1af9b942657b"
down_revision = "242a2047eae0"
branch_labels = None
depends_on = None
def upgrade():
# Setup an inspection on the existing table to avoid issues
conn = op.get_bind()
inspector = Inspector.from_engine(conn)
# Clean up potential leftover temp table from previous failures
conn.execute(sa.text("DROP TABLE IF EXISTS _alembic_tmp_tag"))
# Check if the 'tag' table exists
tables = inspector.get_table_names()
# Step 1: Modify Tag table using batch mode for SQLite support
if "tag" in tables:
# Get the current columns in the 'tag' table
columns = [col["name"] for col in inspector.get_columns("tag")]
# Get any existing unique constraints on the 'tag' table
current_constraints = inspector.get_unique_constraints("tag")
with op.batch_alter_table("tag", schema=None) as batch_op:
# Check if the unique constraint already exists
if not any(
constraint["name"] == "uq_id_user_id"
for constraint in current_constraints
):
# Create unique constraint if it doesn't exist
batch_op.create_unique_constraint("uq_id_user_id", ["id", "user_id"])
# Check if the 'data' column exists before trying to drop it
if "data" in columns:
batch_op.drop_column("data")
# Check if the 'meta' column needs to be created
if "meta" not in columns:
# Add the 'meta' column if it doesn't already exist
batch_op.add_column(sa.Column("meta", sa.JSON(), nullable=True))
tag = table(
"tag",
column("id", sa.String()),
column("name", sa.String()),
column("user_id", sa.String()),
column("meta", sa.JSON()),
)
# Step 2: Migrate tags
conn = op.get_bind()
result = conn.execute(sa.select(tag.c.id, tag.c.name, tag.c.user_id))
tag_updates = {}
for row in result:
new_id = row.name.replace(" ", "_").lower()
tag_updates[row.id] = new_id
for tag_id, new_tag_id in tag_updates.items():
print(f"Updating tag {tag_id} to {new_tag_id}")
if new_tag_id == "pinned":
# delete tag
delete_stmt = sa.delete(tag).where(tag.c.id == tag_id)
conn.execute(delete_stmt)
else:
# Check if the new_tag_id already exists in the database
existing_tag_query = sa.select(tag.c.id).where(tag.c.id == new_tag_id)
existing_tag_result = conn.execute(existing_tag_query).fetchone()
if existing_tag_result:
# Handle duplicate case: the new_tag_id already exists
print(
f"Tag {new_tag_id} already exists. Removing current tag with ID {tag_id} to avoid duplicates."
)
# Option 1: Delete the current tag if an update to new_tag_id would cause duplication
delete_stmt = sa.delete(tag).where(tag.c.id == tag_id)
conn.execute(delete_stmt)
else:
update_stmt = sa.update(tag).where(tag.c.id == tag_id)
update_stmt = update_stmt.values(id=new_tag_id)
conn.execute(update_stmt)
# Add columns `pinned` and `meta` to 'chat'
op.add_column("chat", sa.Column("pinned", sa.Boolean(), nullable=True))
op.add_column(
"chat", sa.Column("meta", sa.JSON(), nullable=False, server_default="{}")
)
chatidtag = table(
"chatidtag", column("chat_id", sa.String()), column("tag_name", sa.String())
)
chat = table(
"chat",
column("id", sa.String()),
column("pinned", sa.Boolean()),
column("meta", sa.JSON()),
)
# Fetch existing tags
conn = op.get_bind()
result = conn.execute(sa.select(chatidtag.c.chat_id, chatidtag.c.tag_name))
chat_updates = {}
for row in result:
chat_id = row.chat_id
tag_name = row.tag_name.replace(" ", "_").lower()
if tag_name == "pinned":
# Specifically handle 'pinned' tag
if chat_id not in chat_updates:
chat_updates[chat_id] = {"pinned": True, "meta": {}}
else:
chat_updates[chat_id]["pinned"] = True
else:
if chat_id not in chat_updates:
chat_updates[chat_id] = {"pinned": False, "meta": {"tags": [tag_name]}}
else:
tags = chat_updates[chat_id]["meta"].get("tags", [])
tags.append(tag_name)
chat_updates[chat_id]["meta"]["tags"] = list(set(tags))
# Update chats based on accumulated changes
for chat_id, updates in chat_updates.items():
update_stmt = sa.update(chat).where(chat.c.id == chat_id)
update_stmt = update_stmt.values(
meta=updates.get("meta", {}), pinned=updates.get("pinned", False)
)
conn.execute(update_stmt)
pass
def downgrade():
pass
@@ -0,0 +1,107 @@
"""Update chat table
Revision ID: 242a2047eae0
Revises: 6a39f3d8e55c
Create Date: 2024-10-09 21:02:35.241684
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import table, select, update
import json
revision = "242a2047eae0"
down_revision = "6a39f3d8e55c"
branch_labels = None
depends_on = None
def upgrade():
conn = op.get_bind()
inspector = sa.inspect(conn)
columns = inspector.get_columns("chat")
column_dict = {col["name"]: col for col in columns}
chat_column = column_dict.get("chat")
old_chat_exists = "old_chat" in column_dict
if chat_column:
if isinstance(chat_column["type"], sa.Text):
print("Converting 'chat' column to JSON")
if old_chat_exists:
print("Dropping old 'old_chat' column")
op.drop_column("chat", "old_chat")
# Step 1: Rename current 'chat' column to 'old_chat'
print("Renaming 'chat' column to 'old_chat'")
op.alter_column(
"chat", "chat", new_column_name="old_chat", existing_type=sa.Text()
)
# Step 2: Add new 'chat' column of type JSON
print("Adding new 'chat' column of type JSON")
op.add_column("chat", sa.Column("chat", sa.JSON(), nullable=True))
else:
# If the column is already JSON, no need to do anything
pass
# Step 3: Migrate data from 'old_chat' to 'chat'
chat_table = table(
"chat",
sa.Column("id", sa.String(), primary_key=True),
sa.Column("old_chat", sa.Text()),
sa.Column("chat", sa.JSON()),
)
# - Selecting all data from the table
connection = op.get_bind()
results = connection.execute(select(chat_table.c.id, chat_table.c.old_chat))
for row in results:
try:
# Convert text JSON to actual JSON object, assuming the text is in JSON format
json_data = json.loads(row.old_chat)
except json.JSONDecodeError:
json_data = None # Handle cases where the text cannot be converted to JSON
connection.execute(
sa.update(chat_table)
.where(chat_table.c.id == row.id)
.values(chat=json_data)
)
# Step 4: Drop 'old_chat' column
print("Dropping 'old_chat' column")
op.drop_column("chat", "old_chat")
def downgrade():
# Step 1: Add 'old_chat' column back as Text
op.add_column("chat", sa.Column("old_chat", sa.Text(), nullable=True))
# Step 2: Convert 'chat' JSON data back to text and store in 'old_chat'
chat_table = table(
"chat",
sa.Column("id", sa.String(), primary_key=True),
sa.Column("chat", sa.JSON()),
sa.Column("old_chat", sa.Text()),
)
connection = op.get_bind()
results = connection.execute(select(chat_table.c.id, chat_table.c.chat))
for row in results:
text_data = json.dumps(row.chat) if row.chat is not None else None
connection.execute(
sa.update(chat_table)
.where(chat_table.c.id == row.id)
.values(old_chat=text_data)
)
# Step 3: Remove the new 'chat' JSON column
op.drop_column("chat", "chat")
# Step 4: Rename 'old_chat' back to 'chat'
op.alter_column("chat", "old_chat", new_column_name="chat", existing_type=sa.Text())
@@ -0,0 +1,70 @@
"""Update message & channel tables
Revision ID: 3781e22d8b01
Revises: 7826ab40b532
Create Date: 2024-12-30 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "3781e22d8b01"
down_revision = "7826ab40b532"
branch_labels = None
depends_on = None
def upgrade():
# Add 'type' column to the 'channel' table
op.add_column(
"channel",
sa.Column(
"type",
sa.Text(),
nullable=True,
),
)
# Add 'parent_id' column to the 'message' table for threads
op.add_column(
"message",
sa.Column("parent_id", sa.Text(), nullable=True),
)
op.create_table(
"message_reaction",
sa.Column(
"id", sa.Text(), nullable=False, primary_key=True, unique=True
), # Unique reaction ID
sa.Column("user_id", sa.Text(), nullable=False), # User who reacted
sa.Column(
"message_id", sa.Text(), nullable=False
), # Message that was reacted to
sa.Column(
"name", sa.Text(), nullable=False
), # Reaction name (e.g. "thumbs_up")
sa.Column(
"created_at", sa.BigInteger(), nullable=True
), # Timestamp of when the reaction was added
)
op.create_table(
"channel_member",
sa.Column(
"id", sa.Text(), nullable=False, primary_key=True, unique=True
), # Record ID for the membership row
sa.Column("channel_id", sa.Text(), nullable=False), # Associated channel
sa.Column("user_id", sa.Text(), nullable=False), # Associated user
sa.Column(
"created_at", sa.BigInteger(), nullable=True
), # Timestamp of when the user joined the channel
)
def downgrade():
# Revert 'type' column addition to the 'channel' table
op.drop_column("channel", "type")
op.drop_column("message", "parent_id")
op.drop_table("message_reaction")
op.drop_table("channel_member")
@@ -0,0 +1,81 @@
"""Update tags
Revision ID: 3ab32c4b8f59
Revises: 1af9b942657b
Create Date: 2024-10-09 21:02:35.241684
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import table, select, update, column
from sqlalchemy.engine.reflection import Inspector
import json
revision = "3ab32c4b8f59"
down_revision = "1af9b942657b"
branch_labels = None
depends_on = None
def upgrade():
conn = op.get_bind()
inspector = Inspector.from_engine(conn)
# Inspecting the 'tag' table constraints and structure
existing_pk = inspector.get_pk_constraint("tag")
unique_constraints = inspector.get_unique_constraints("tag")
existing_indexes = inspector.get_indexes("tag")
print(f"Primary Key: {existing_pk}")
print(f"Unique Constraints: {unique_constraints}")
print(f"Indexes: {existing_indexes}")
with op.batch_alter_table("tag", schema=None) as batch_op:
# Drop existing primary key constraint if it exists
if existing_pk and existing_pk.get("constrained_columns"):
pk_name = existing_pk.get("name")
if pk_name:
print(f"Dropping primary key constraint: {pk_name}")
batch_op.drop_constraint(pk_name, type_="primary")
# Now create the new primary key with the combination of 'id' and 'user_id'
print("Creating new primary key with 'id' and 'user_id'.")
batch_op.create_primary_key("pk_id_user_id", ["id", "user_id"])
# Drop unique constraints that could conflict with the new primary key
for constraint in unique_constraints:
if (
constraint["name"] == "uq_id_user_id"
): # Adjust this name according to what is actually returned by the inspector
print(f"Dropping unique constraint: {constraint['name']}")
batch_op.drop_constraint(constraint["name"], type_="unique")
for index in existing_indexes:
if index["unique"]:
if not any(
constraint["name"] == index["name"]
for constraint in unique_constraints
):
# You are attempting to drop unique indexes
print(f"Dropping unique index: {index['name']}")
batch_op.drop_index(index["name"])
def downgrade():
conn = op.get_bind()
inspector = Inspector.from_engine(conn)
current_pk = inspector.get_pk_constraint("tag")
with op.batch_alter_table("tag", schema=None) as batch_op:
# Drop the current primary key first, if it matches the one we know we added in upgrade
if current_pk and "pk_id_user_id" == current_pk.get("name"):
batch_op.drop_constraint("pk_id_user_id", type_="primary")
# Restore the original primary key
batch_op.create_primary_key("pk_id", ["id"])
# Since primary key on just 'id' is restored, we now add back any unique constraints if necessary
batch_op.create_unique_constraint("uq_id_user_id", ["id", "user_id"])
@@ -0,0 +1,67 @@
"""Update folder table and change DateTime to BigInteger for timestamp fields
Revision ID: 4ace53fd72c8
Revises: af906e964978
Create Date: 2024-10-23 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "4ace53fd72c8"
down_revision = "af906e964978"
branch_labels = None
depends_on = None
def upgrade():
# Perform safe alterations using batch operation
with op.batch_alter_table("folder", schema=None) as batch_op:
# Step 1: Remove server defaults for created_at and updated_at
batch_op.alter_column(
"created_at",
server_default=None, # Removing server default
)
batch_op.alter_column(
"updated_at",
server_default=None, # Removing server default
)
# Step 2: Change the column types to BigInteger for created_at
batch_op.alter_column(
"created_at",
type_=sa.BigInteger(),
existing_type=sa.DateTime(),
existing_nullable=False,
postgresql_using="extract(epoch from created_at)::bigint", # Conversion for PostgreSQL
)
# Change the column types to BigInteger for updated_at
batch_op.alter_column(
"updated_at",
type_=sa.BigInteger(),
existing_type=sa.DateTime(),
existing_nullable=False,
postgresql_using="extract(epoch from updated_at)::bigint", # Conversion for PostgreSQL
)
def downgrade():
# Downgrade: Convert columns back to DateTime and restore defaults
with op.batch_alter_table("folder", schema=None) as batch_op:
batch_op.alter_column(
"created_at",
type_=sa.DateTime(),
existing_type=sa.BigInteger(),
existing_nullable=False,
server_default=sa.func.now(), # Restoring server default on downgrade
)
batch_op.alter_column(
"updated_at",
type_=sa.DateTime(),
existing_type=sa.BigInteger(),
existing_nullable=False,
server_default=sa.func.now(), # Restoring server default on downgrade
onupdate=sa.func.now(), # Restoring onupdate behavior if it was there
)
@@ -0,0 +1,48 @@
"""Add channel table
Revision ID: 57c599a3cb57
Revises: 922e7a387820
Create Date: 2024-12-22 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "57c599a3cb57"
down_revision = "922e7a387820"
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
"channel",
sa.Column("id", sa.Text(), nullable=False, primary_key=True, unique=True),
sa.Column("user_id", sa.Text()),
sa.Column("name", sa.Text()),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("data", sa.JSON(), nullable=True),
sa.Column("meta", sa.JSON(), nullable=True),
sa.Column("access_control", sa.JSON(), nullable=True),
sa.Column("created_at", sa.BigInteger(), nullable=True),
sa.Column("updated_at", sa.BigInteger(), nullable=True),
)
op.create_table(
"message",
sa.Column("id", sa.Text(), nullable=False, primary_key=True, unique=True),
sa.Column("user_id", sa.Text()),
sa.Column("channel_id", sa.Text(), nullable=True),
sa.Column("content", sa.Text()),
sa.Column("data", sa.JSON(), nullable=True),
sa.Column("meta", sa.JSON(), nullable=True),
sa.Column("created_at", sa.BigInteger(), nullable=True),
sa.Column("updated_at", sa.BigInteger(), nullable=True),
)
def downgrade():
op.drop_table("channel")
op.drop_table("message")
@@ -0,0 +1,80 @@
"""Add knowledge table
Revision ID: 6a39f3d8e55c
Revises: c0fbf31ca0db
Create Date: 2024-10-01 14:02:35.241684
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import table, column, select
import json
revision = "6a39f3d8e55c"
down_revision = "c0fbf31ca0db"
branch_labels = None
depends_on = None
def upgrade():
# Creating the 'knowledge' table
print("Creating knowledge table")
knowledge_table = op.create_table(
"knowledge",
sa.Column("id", sa.Text(), primary_key=True),
sa.Column("user_id", sa.Text(), nullable=False),
sa.Column("name", sa.Text(), nullable=False),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("data", sa.JSON(), nullable=True),
sa.Column("meta", sa.JSON(), nullable=True),
sa.Column("created_at", sa.BigInteger(), nullable=False),
sa.Column("updated_at", sa.BigInteger(), nullable=True),
)
print("Migrating data from document table to knowledge table")
# Representation of the existing 'document' table
document_table = table(
"document",
column("collection_name", sa.String()),
column("user_id", sa.String()),
column("name", sa.String()),
column("title", sa.Text()),
column("content", sa.Text()),
column("timestamp", sa.BigInteger()),
)
# Select all from existing document table
documents = op.get_bind().execute(
select(
document_table.c.collection_name,
document_table.c.user_id,
document_table.c.name,
document_table.c.title,
document_table.c.content,
document_table.c.timestamp,
)
)
# Insert data into knowledge table from document table
for doc in documents:
op.get_bind().execute(
knowledge_table.insert().values(
id=doc.collection_name,
user_id=doc.user_id,
description=doc.name,
meta={
"legacy": True,
"document": True,
"tags": json.loads(doc.content or "{}").get("tags", []),
},
name=doc.title,
created_at=doc.timestamp,
updated_at=doc.timestamp, # using created_at for both created_at and updated_at in project
)
)
def downgrade():
op.drop_table("knowledge")
@@ -0,0 +1,26 @@
"""Update file table
Revision ID: 7826ab40b532
Revises: 57c599a3cb57
Create Date: 2024-12-23 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "7826ab40b532"
down_revision = "57c599a3cb57"
branch_labels = None
depends_on = None
def upgrade():
op.add_column(
"file",
sa.Column("access_control", sa.JSON(), nullable=True),
)
def downgrade():
op.drop_column("file", "access_control")
@@ -11,8 +11,8 @@ from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
import open_webui.apps.webui.internal.db
from open_webui.apps.webui.internal.db import JSONField
import open_webui.internal.db
from open_webui.internal.db import JSONField
from open_webui.migrations.util import get_existing_tables
# revision identifiers, used by Alembic.
@@ -0,0 +1,85 @@
"""Add group table
Revision ID: 922e7a387820
Revises: 4ace53fd72c8
Create Date: 2024-11-14 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "922e7a387820"
down_revision = "4ace53fd72c8"
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
"group",
sa.Column("id", sa.Text(), nullable=False, primary_key=True, unique=True),
sa.Column("user_id", sa.Text(), nullable=True),
sa.Column("name", sa.Text(), nullable=True),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("data", sa.JSON(), nullable=True),
sa.Column("meta", sa.JSON(), nullable=True),
sa.Column("permissions", sa.JSON(), nullable=True),
sa.Column("user_ids", sa.JSON(), nullable=True),
sa.Column("created_at", sa.BigInteger(), nullable=True),
sa.Column("updated_at", sa.BigInteger(), nullable=True),
)
# Add 'access_control' column to 'model' table
op.add_column(
"model",
sa.Column("access_control", sa.JSON(), nullable=True),
)
# Add 'is_active' column to 'model' table
op.add_column(
"model",
sa.Column(
"is_active",
sa.Boolean(),
nullable=False,
server_default=sa.sql.expression.true(),
),
)
# Add 'access_control' column to 'knowledge' table
op.add_column(
"knowledge",
sa.Column("access_control", sa.JSON(), nullable=True),
)
# Add 'access_control' column to 'prompt' table
op.add_column(
"prompt",
sa.Column("access_control", sa.JSON(), nullable=True),
)
# Add 'access_control' column to 'tools' table
op.add_column(
"tool",
sa.Column("access_control", sa.JSON(), nullable=True),
)
def downgrade():
op.drop_table("group")
# Drop 'access_control' column from 'model' table
op.drop_column("model", "access_control")
# Drop 'is_active' column from 'model' table
op.drop_column("model", "is_active")
# Drop 'access_control' column from 'knowledge' table
op.drop_column("knowledge", "access_control")
# Drop 'access_control' column from 'prompt' table
op.drop_column("prompt", "access_control")
# Drop 'access_control' column from 'tools' table
op.drop_column("tool", "access_control")
@@ -0,0 +1,33 @@
"""Add note table
Revision ID: 9f0c9cd09105
Revises: 3781e22d8b01
Create Date: 2025-05-03 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "9f0c9cd09105"
down_revision = "3781e22d8b01"
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
"note",
sa.Column("id", sa.Text(), nullable=False, primary_key=True, unique=True),
sa.Column("user_id", sa.Text(), nullable=True),
sa.Column("title", sa.Text(), nullable=True),
sa.Column("data", sa.JSON(), nullable=True),
sa.Column("meta", sa.JSON(), nullable=True),
sa.Column("access_control", sa.JSON(), nullable=True),
sa.Column("created_at", sa.BigInteger(), nullable=True),
sa.Column("updated_at", sa.BigInteger(), nullable=True),
)
def downgrade():
op.drop_table("note")
@@ -0,0 +1,51 @@
"""Add feedback table
Revision ID: af906e964978
Revises: c29facfe716b
Create Date: 2024-10-20 17:02:35.241684
"""
from alembic import op
import sqlalchemy as sa
# Revision identifiers, used by Alembic.
revision = "af906e964978"
down_revision = "c29facfe716b"
branch_labels = None
depends_on = None
def upgrade():
# ### Create feedback table ###
op.create_table(
"feedback",
sa.Column(
"id", sa.Text(), primary_key=True
), # Unique identifier for each feedback (TEXT type)
sa.Column(
"user_id", sa.Text(), nullable=True
), # ID of the user providing the feedback (TEXT type)
sa.Column(
"version", sa.BigInteger(), default=0
), # Version of feedback (BIGINT type)
sa.Column("type", sa.Text(), nullable=True), # Type of feedback (TEXT type)
sa.Column("data", sa.JSON(), nullable=True), # Feedback data (JSON type)
sa.Column(
"meta", sa.JSON(), nullable=True
), # Metadata for feedback (JSON type)
sa.Column(
"snapshot", sa.JSON(), nullable=True
), # snapshot data for feedback (JSON type)
sa.Column(
"created_at", sa.BigInteger(), nullable=False
), # Feedback creation timestamp (BIGINT representing epoch)
sa.Column(
"updated_at", sa.BigInteger(), nullable=False
), # Feedback update timestamp (BIGINT representing epoch)
)
def downgrade():
# ### Drop feedback table ###
op.drop_table("feedback")
@@ -0,0 +1,32 @@
"""Update file table
Revision ID: c0fbf31ca0db
Revises: ca81bd47c050
Create Date: 2024-09-20 15:26:35.241684
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision: str = "c0fbf31ca0db"
down_revision: Union[str, None] = "ca81bd47c050"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column("file", sa.Column("hash", sa.Text(), nullable=True))
op.add_column("file", sa.Column("data", sa.JSON(), nullable=True))
op.add_column("file", sa.Column("updated_at", sa.BigInteger(), nullable=True))
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column("file", "updated_at")
op.drop_column("file", "data")
op.drop_column("file", "hash")

Some files were not shown because too many files have changed in this diff Show More