This commit is contained in:
Timothy Jaeryang Baek
2026-07-27 19:39:36 -04:00
parent b6b16d5871
commit 810378c0b8
93 changed files with 440 additions and 12 deletions
+3
View File
@@ -18,6 +18,9 @@ def version_callback(value: bool) -> None:
if value:
from open_webui.env import VERSION
# LICENSE covers this Open WebUI CLI identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
typer.echo(f'Open WebUI version: {VERSION}')
raise typer.Exit()
+3
View File
@@ -2053,6 +2053,9 @@ DEFAULT_ARENA_MODEL = {
'id': 'arena-model',
'name': 'Arena Model',
'meta': {
# LICENSE covers this Open WebUI fallback logo.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'profile_image_url': '/favicon.png',
'description': 'Submit your questions to anonymous AI chatbots and vote on the best response.',
'model_ids': None,
+3
View File
@@ -121,6 +121,9 @@ class ERROR_MESSAGES(str, Enum):
FEATURE_DISABLED = lambda name='': f'{name} is disabled'
INPUT_TOO_LONG = lambda size='': f'Input prompt exceeds maximum length of {size}'
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
SERVER_CONNECTION_ERROR = 'Open WebUI: Server Connection Error'
REQUIRED_FIELD_EMPTY = lambda name='': f'Required field {name} is empty'
OAUTH_NOT_CONFIGURED = lambda name='': f"Provider '{name}' is not configured"
+6 -3
View File
@@ -888,14 +888,16 @@ if LICENSE_PUBLIC_KEY:
# WEBUI Identity
####################################
# LICENSE covers this Open WebUI name/logo/identifier.
# LICENSE covers this Open WebUI branding surface, including name, logo,
# visual, textual, symbolic identifiers, metadata, and surrounding UI.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
WEBUI_NAME = os.getenv('WEBUI_NAME', 'Open WebUI')
if WEBUI_NAME != 'Open WebUI':
WEBUI_NAME += ' (Open WebUI)'
# LICENSE covers this Open WebUI favicon identifier.
# LICENSE covers this Open WebUI branding surface, including this favicon
# and any visual, textual, or symbolic identifiers it preserves.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
WEBUI_FAVICON_URL = 'https://openwebui.com/favicon.png'
@@ -954,7 +956,8 @@ except ValueError:
# Progressive Web App
####################################
# LICENSE covers install-time Open WebUI branding.
# LICENSE covers this install-time Open WebUI branding surface, including
# names, logos, manifests, metadata, and surrounding UI.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
EXTERNAL_PWA_MANIFEST_URL = os.getenv('EXTERNAL_PWA_MANIFEST_URL', None)
+3
View File
@@ -1026,6 +1026,9 @@ def build_event(
async def dispatch_webhook_event(app: Any, event: Event) -> None:
# LICENSE covers this Open WebUI webhook identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
name = getattr(getattr(app, 'state', None), 'WEBUI_NAME', 'Open WebUI')
subject = event.subject or {}
subject_id = subject.get('id')
+12 -3
View File
@@ -320,6 +320,9 @@ https://github.com/open-webui/open-webui
print(banner)
except UnicodeEncodeError:
# Stdout can't encode the box-drawing banner (Windows cp1252, redirected/headless stdout); fall back to ASCII.
# LICENSE covers this Open WebUI CLI identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
print(f'Open WebUI v{VERSION} - building the best AI user interface.\nhttps://github.com/open-webui/open-webui')
@@ -461,6 +464,9 @@ async def lifespan(app: FastAPI):
# response_model routes keep FastAPI's Pydantic fast path either way.
apply_orjson_http_json()
# LICENSE covers this Open WebUI API metadata identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
app = FastAPI(
title='Open WebUI',
docs_url='/docs' if ENV == 'dev' else None,
@@ -483,7 +489,8 @@ app.state.oauth_client_manager = oauth_client_manager
app.state.instance_id = None
app.state.redis = None
# LICENSE covers this Open WebUI name/logo/identifier.
# LICENSE covers this Open WebUI branding surface, including name, logo,
# visual, textual, symbolic identifiers, metadata, and surrounding UI.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
app.state.WEBUI_NAME = WEBUI_NAME
@@ -2691,7 +2698,8 @@ async def oauth_backchannel_logout(
async def get_manifest_json():
external_pwa_manifest_url = getattr(app.state, 'EXTERNAL_PWA_MANIFEST_URL', None)
if external_pwa_manifest_url:
# LICENSE covers install-time Open WebUI branding.
# LICENSE covers this install-time Open WebUI branding surface, including
# names, logos, manifests, metadata, and surrounding UI.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
session = await get_session()
@@ -2702,7 +2710,8 @@ async def get_manifest_json():
r.raise_for_status()
return await r.json()
else:
# LICENSE covers generated Open WebUI install branding.
# LICENSE covers this generated Open WebUI install branding surface,
# including names, logos, manifests, metadata, and surrounding UI.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
return {
@@ -30,6 +30,9 @@ class ExternalWebLoader(BaseLoader):
response = requests.post(
self.external_url,
headers={
# LICENSE covers this Open WebUI user-agent identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'User-Agent': 'Open WebUI (https://github.com/open-webui/open-webui) External Web Loader',
'Authorization': f'Bearer {self.external_api_key}',
},
@@ -21,6 +21,9 @@ def search_external(
) -> List[SearchResult]:
try:
headers = {
# LICENSE covers this Open WebUI user-agent identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'User-Agent': 'Open WebUI (https://github.com/open-webui/open-webui) RAG Bot',
'Authorization': f'Bearer {external_api_key}',
}
@@ -12,6 +12,9 @@ log = logging.getLogger(__name__)
# SearXNG request headers — identifies the bot to instance operators.
_SEARXNG_HEADERS = {
# LICENSE covers this Open WebUI user-agent identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'User-Agent': 'Open WebUI (https://github.com/open-webui/open-webui) RAG Bot',
'Accept': 'text/html',
'Accept-Encoding': 'gzip, deflate',
+3
View File
@@ -59,6 +59,9 @@ def search_yacy(
query_url,
auth=yacy_auth,
headers={
# LICENSE covers this Open WebUI user-agent identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'User-Agent': 'Open WebUI (https://github.com/open-webui/open-webui) RAG Bot',
'Accept': 'text/html',
'Accept-Encoding': 'gzip, deflate',
@@ -41,6 +41,9 @@ def search_yandex(
) -> List[SearchResult]:
try:
headers = {
# LICENSE covers this Open WebUI user-agent identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'User-Agent': 'Open WebUI (https://github.com/open-webui/open-webui) RAG Bot',
'Authorization': f'Api-Key {yandex_search_api_key}',
}
+15
View File
@@ -330,6 +330,9 @@ def load_speech_pipeline(request):
async def _raise_tts_error(exc: Exception, r=None) -> None:
"""Raise a standardised HTTPException from a TTS provider failure."""
code = r.status if r is not None else 500
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
detail = 'Open WebUI: Server Connection Error'
if r is not None:
try:
@@ -711,6 +714,9 @@ async def _transcribe_openai(request, file_path, filename, languages, file_dir,
detail = f'External: {res["error"].get("message", "")}'
except Exception:
detail = f'External: {e}'
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
raise Exception(detail if detail else 'Open WebUI: Server Connection Error')
@@ -761,6 +767,9 @@ async def _transcribe_deepgram(request, file_path, languages, file_dir, id):
except Exception as e:
log.exception(e)
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
detail = 'Open WebUI: Server Connection Error'
if r is not None:
try:
@@ -890,6 +899,9 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id):
detail = f'External: {res["error"].get("message", "")}'
except Exception:
detail = f'External: {e}'
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
raise HTTPException(
status_code=e.status if e.status else 500,
detail=detail if detail else 'Open WebUI: Server Connection Error',
@@ -1054,6 +1066,9 @@ async def _transcribe_mistral(request, file_path, filename, metadata, file_dir,
detail = f'External: {await r.text()}'
except Exception:
detail = f'External: {e}'
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
raise HTTPException(
status_code=e.status if e.status else 500,
detail=detail if detail else 'Open WebUI: Server Connection Error',
+6
View File
@@ -1809,6 +1809,9 @@ async def get_webhook_profile_image(webhook_id: str, user=Depends(get_verified_u
webhook = await Channels.get_webhook_by_id(webhook_id)
if not webhook:
# Return default favicon if webhook not found
# LICENSE covers this Open WebUI fallback logo.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
return FileResponse(f'{STATIC_DIR}/favicon.png')
if webhook.profile_image_url:
@@ -1834,6 +1837,9 @@ async def get_webhook_profile_image(webhook_id: str, user=Depends(get_verified_u
pass
# Return default favicon if no profile image
# LICENSE covers this Open WebUI fallback logo.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
return FileResponse(f'{STATIC_DIR}/favicon.png')
+6
View File
@@ -609,6 +609,9 @@ async def get_model_profile_image(
# only serve known-safe raster types inline; reject SVG/unknown (can run script on our origin)
if media_type not in PROFILE_IMAGE_ALLOWED_MIME_TYPES:
# LICENSE covers this Open WebUI fallback logo.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
return RedirectResponse(
url='/static/favicon.png',
status_code=status.HTTP_302_FOUND,
@@ -636,6 +639,9 @@ async def get_model_profile_image(
status_code=status.HTTP_302_FOUND,
)
# LICENSE covers this Open WebUI fallback logo.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
return RedirectResponse(
url='/static/favicon.png',
status_code=status.HTTP_302_FOUND,
@@ -94,6 +94,9 @@ async def set_default_notification_target(target_id: str, user=Depends(get_verif
async def test_notification_target(request: Request, target_id: str, user=Depends(get_verified_user)):
await _check_notifications_access(user)
try:
# LICENSE covers this Open WebUI notification identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
app_name = getattr(request.app.state, 'WEBUI_NAME', 'Open WebUI')
return await test_target(user.id, target_id, app_name)
except ValueError as e:
+12
View File
@@ -166,6 +166,9 @@ async def get_headers_and_cookies(
'Content-Type': 'application/json',
**(
{
# LICENSE covers this Open WebUI upstream metadata identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'HTTP-Referer': 'https://openwebui.com/',
'X-Title': 'Open WebUI',
}
@@ -516,6 +519,9 @@ async def speech(request: Request, user=Depends(get_verified_user)):
except Exception:
detail = f'External: {e}'
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
raise HTTPException(
status_code=r.status if r else 500,
detail=detail if detail else 'Open WebUI: Server Connection Error',
@@ -773,6 +779,9 @@ async def get_models(request: Request, url_idx: int | None = None, user=Depends(
except aiohttp.ClientError as e:
# ClientError covers all aiohttp requests issues
log.exception(f'Client error: {str(e)}')
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
raise HTTPException(status_code=500, detail='Open WebUI: Server Connection Error')
except Exception as e:
log.exception(f'Unexpected error: {e}')
@@ -1784,6 +1793,9 @@ async def proxy(path: str, request: Request, user=Depends(get_verified_user)):
raise
except Exception as e:
log.exception(e)
# LICENSE covers this Open WebUI error identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
raise HTTPException(
status_code=r.status if r else 500,
detail='Open WebUI: Server Connection Error',
+9
View File
@@ -0,0 +1,9 @@
# Open WebUI Branding Assets
This directory contains Open WebUI branding assets, including favicons, logos, splash images, app icons, and web app manifest icons.
Open WebUI branding in this directory includes assets, filenames, metadata, manifests, references, and surrounding UI that present or preserve the Open WebUI name, logo, visual, textual, or symbolic identifiers.
Do not alter, remove, obscure, or replace Open WebUI branding except as permitted by `LICENSE`.
See also: https://docs.openwebui.com/license.
+9
View File
@@ -0,0 +1,9 @@
# Open WebUI Branding Assets
This directory contains Open WebUI branding assets and references, including favicons, logos, splash images, app icons, manifests, metadata, and search identifiers.
Open WebUI branding here includes the name, logo, and any visual, textual, or symbolic identifiers that present or preserve Open WebUI attribution.
Do not alter, remove, obscure, or replace Open WebUI branding except as permitted by `LICENSE`.
See also: https://docs.openwebui.com/license.
+3
View File
@@ -138,6 +138,9 @@ async def notify(
return 'Notification failed: user not found.'
app_name = getattr(getattr(__request__, 'app', None), 'state', None)
# LICENSE covers this Open WebUI notification identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
app_name = getattr(app_name, 'WEBUI_NAME', 'Open WebUI')
try:
result = await notify_target(user_id, message, target=target, title=title, app_name=app_name)
+3
View File
@@ -565,6 +565,9 @@ Conversation:
'messages': [
{
'role': 'system',
# LICENSE covers this Open WebUI system identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'content': "You are Open WebUI's private memory reviewer. Return only valid JSON.",
},
{'role': 'user', 'content': review_prompt},
+17 -1
View File
@@ -343,6 +343,9 @@ def _notification_webhook_content(event: Any) -> tuple[str, str, dict[str, Any],
return str(title), message, event.model_dump(), message if title else None
# LICENSE covers this Open WebUI notification identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
async def test_target(user_id: str, target_id: str, app_name: str = 'Open WebUI') -> dict[str, Any]:
notifications = await _load_notifications(user_id)
target = _find_target(notifications, target_id)
@@ -351,6 +354,9 @@ async def test_target(user_id: str, target_id: str, app_name: str = 'Open WebUI'
await _send_webhook(
app_name,
target,
# LICENSE covers this Open WebUI notification copy.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'This is a test notification from Open WebUI.',
{'action': 'test', 'user_id': user_id},
'Test notification',
@@ -358,8 +364,15 @@ async def test_target(user_id: str, target_id: str, app_name: str = 'Open WebUI'
return {'ok': True}
# LICENSE covers this Open WebUI notification identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
async def notify_target(
user_id: str, message: str, target: str = '', title: str = '', app_name: str = 'Open WebUI'
user_id: str,
message: str,
target: str = '',
title: str = '',
app_name: str = 'Open WebUI',
) -> dict[str, Any]:
notifications = await _load_notifications(user_id)
item = _find_target(notifications, target)
@@ -383,6 +396,9 @@ async def dispatch_notification_event(app: Any, event: Any) -> None:
from open_webui.events import event_user_ids
# LICENSE covers this Open WebUI notification identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
app_name = getattr(getattr(app, 'state', None), 'WEBUI_NAME', 'Open WebUI')
for user_id in event_user_ids(event):
try:
+3
View File
@@ -506,6 +506,9 @@ async def get_oauth_client_info_with_dynamic_client_registration(
redirect_base_url = (str(webui_url or request.base_url)).rstrip('/')
oauth_client_metadata = OAuthClientMetadata(
# LICENSE covers this Open WebUI OAuth client identifier.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
client_name='Open WebUI',
redirect_uris=[f'{redirect_base_url}/oauth/clients/{client_id}/callback'],
grant_types=['authorization_code', 'refresh_token'],
+4 -1
View File
@@ -14,10 +14,13 @@ _USER_PROFILE_IMAGE_RE = re.compile(r'^/api/v1/users/[^/?#]+/profile/image$')
_mime_suffixes = '|'.join(re.escape(t.split('/')[-1]) for t in sorted(PROFILE_IMAGE_ALLOWED_MIME_TYPES))
_SAFE_DATA_URI_RE = re.compile(rf'^data:image/({_mime_suffixes});base64,', re.IGNORECASE)
# Exact relative paths accepted as profile images. These are the only
# Exact relative paths accepted as profile images. These are the only
# static-asset paths OWUI itself assigns; no prefix/wildcard matching is
# used so that arbitrary relative paths cannot trigger authenticated GETs
# against internal endpoints when rendered as ``<img>`` sources.
# LICENSE covers the Open WebUI favicon fallback paths below. Do not alter,
# remove, obscure, or replace them except as LICENSE permits:
# https://docs.openwebui.com/license.
_SAFE_STATIC_PATHS = frozenset(
{
'/user.png',
+3
View File
@@ -69,6 +69,9 @@ async def post_webhook(name: str, url: str, message: str, event_data: dict, desc
{
'activityTitle': message,
'activitySubtitle': f'{name} ({VERSION}) - {action}',
# LICENSE covers this Open WebUI webhook logo.
# Do not alter, remove, obscure, or replace it except as LICENSE permits:
# https://docs.openwebui.com/license.
'activityImage': WEBUI_FAVICON_URL,
'text': description,
'facts': facts,
+11 -1
View File
@@ -2,7 +2,8 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<!-- LICENSE covers this Open WebUI name/logo/identifier.
<!-- LICENSE covers this Open WebUI branding surface, including name, logo,
visual, textual, symbolic identifiers, metadata, and surrounding UI.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<link rel="icon" type="image/png" href="/static/favicon.png" crossorigin="use-credentials" />
@@ -74,6 +75,9 @@
metaThemeColorTag.setAttribute('content', '#171717');
}
// LICENSE covers these Open WebUI splash logo assets.
// Do not alter, remove, obscure, or replace them except as LICENSE permits:
// https://docs.openwebui.com/license.
const preloadHref = document.documentElement.classList.contains('dark')
? '/static/splash-dark.png'
: '/static/splash.png';
@@ -105,6 +109,9 @@
'position: absolute; width: auto; height: 6rem; top: 44%; left: 50%; transform: translateX(-50%); display:block;';
logo.loading = 'eager';
logo.fetchPriority = 'high';
// LICENSE covers this Open WebUI splash logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
logo.src = isDarkMode ? '/static/splash-dark.png' : '/static/splash.png';
document.addEventListener('DOMContentLoaded', function () {
@@ -150,6 +157,9 @@
align-items: center;
"
>
<!-- LICENSE covers this Open WebUI splash logo.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<img
id="logo-her"
style="width: auto; height: 13rem"
@@ -964,6 +964,9 @@
<span class="font-normal">
{$i18n.t('Warning')}:
</span>
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.'
)}
@@ -482,6 +482,9 @@
alt={model.name}
class="size-5 rounded-full object-cover shrink-0"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.target.src = '/favicon.png';
}}
/>
@@ -125,6 +125,9 @@
};
const shareHandler = async () => {
// LICENSE covers this Open WebUI Community wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.success($i18n.t('Redirecting you to Open WebUI Community'));
// remove snapshot from feedbacks
@@ -214,6 +214,9 @@
alt={model.name}
class="size-5 rounded-full object-cover shrink-0"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.target.src = '/favicon.png';
}}
/>
@@ -157,6 +157,9 @@
return null;
});
// LICENSE covers this Open WebUI Community wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.success($i18n.t('Redirecting you to Open WebUI Community'));
const url = 'https://openwebui.com';
@@ -301,6 +304,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Functions')} / {$WEBUI_NAME}
</title>
@@ -420,6 +420,9 @@
<Switch bind:state={STT_MISTRAL_USE_CHAT_COMPLETIONS} ariaLabelledbyId={labelId} />
</AdminSettingRow>
{:else if STT_ENGINE === ''}
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingField
label={$i18n.t('STT Model')}
description={$i18n.t('Open WebUI uses faster-whisper internally.')}
@@ -592,6 +595,9 @@
</SettingsSelect>
</AdminSettingField>
{:else if TTS_ENGINE === 'transformers'}
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingField
label={$i18n.t('TTS Model')}
description={$i18n.t('Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.')}
@@ -488,6 +488,9 @@
</AdminSettingField>
{/if}
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingRow
label={$i18n.t('Group Mapping')}
description={$i18n.t('Map LDAP groups to Open WebUI groups.')}
@@ -693,6 +696,9 @@
/>
</AdminSettingField>
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingRow
label={$i18n.t('Role Mapping')}
description={$i18n.t('Map OAuth claims to Open WebUI roles.')}
@@ -741,6 +747,9 @@
</AdminSettingField>
{/if}
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingRow
label={$i18n.t('Group Mapping')}
description={$i18n.t('Map OAuth claims to Open WebUI groups.')}
@@ -93,6 +93,9 @@
/>
</AdminSettingField>
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingRow
label={$i18n.t('Jupyter Auth')}
description={$i18n.t('Select how Open WebUI authenticates with the Jupyter server.')}
@@ -194,6 +197,9 @@
/>
</AdminSettingField>
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<AdminSettingRow
label={$i18n.t('Jupyter Auth')}
description={$i18n.t('Select how Open WebUI authenticates with the Jupyter server.')}
@@ -37,6 +37,9 @@
}
};
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
let profileImageUrl = `${WEBUI_BASE_URL}/favicon.png`;
let description = '';
@@ -93,6 +96,9 @@
name = '';
id = '';
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
profileImageUrl = `${WEBUI_BASE_URL}/favicon.png`;
description = '';
modelIds = [];
@@ -642,6 +642,9 @@
</div>
<div class="text-xs text-gray-500">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.'
)}
@@ -754,6 +754,9 @@
</div>
<div class="text-xs text-gray-500 mt-1">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'External vectors must be generated with the same embedding model configured in Open WebUI.'
)}
@@ -141,6 +141,9 @@
<div class="min-w-0">
<div class="text-gray-600 dark:text-gray-400">{$i18n.t('Help')}</div>
<div class="mt-0.5 text-gray-400 dark:text-gray-600">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t('Discover how to use Open WebUI and seek support from the community.')}
</div>
</div>
@@ -222,6 +225,9 @@
description={$i18n.t('Allow users to share chats with the Open WebUI community.')}
let:labelId
>
<!-- LICENSE covers this Open WebUI Community wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<Switch bind:state={adminConfig.ENABLE_COMMUNITY_SHARING} ariaLabelledbyId={labelId} />
</AdminSettingRow>
<AdminSettingRow
@@ -946,6 +946,9 @@
loading="lazy"
decoding="async"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.target.src = '/favicon.png';
}}
/>
@@ -355,6 +355,9 @@
src={`${WEBUI_API_BASE_URL}/users/${user.id}/profile/image`}
alt="user"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -480,15 +483,24 @@
<div class="mt-3 mb-3 pb-1 text-gray-700 dark:text-gray-300">
<div class="max-w-3xl text-xs leading-5">
<div class="text-gray-900 dark:text-gray-100">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t('Running Open WebUI for a team?')}
</div>
<div class="mt-2 space-y-2">
<p>
<!-- LICENSE covers this Open WebUI branding copy.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.'
)}
</p>
<p class="text-gray-500 dark:text-gray-400">
<!-- LICENSE covers this Open WebUI branding copy.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.'
)}
@@ -236,6 +236,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>{automation.name || $i18n.t('Automation')} / {$WEBUI_NAME}</title>
</svelte:head>
@@ -108,6 +108,9 @@
class="rounded-full size-5 items-center mr-2"
loading="lazy"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -296,6 +296,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{#if channel?.type === 'dm'}
<title
>{channel?.name.trim() ||
@@ -197,6 +197,9 @@
alt={item?.data?.name ?? item.id}
class="rounded-full size-5 items-center mr-2"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -206,6 +209,9 @@
alt={item?.label ?? item.id}
class="rounded-full size-5 items-center mr-2"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -343,6 +343,9 @@
message.reply_to_message.meta.model_id}
class="size-4 ml-0.5 rounded-full object-cover"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -386,6 +389,9 @@
alt={message.meta.model_name ?? message.meta.model_id}
class="size-8 translate-y-1 ml-0.5 object-cover rounded-full"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -89,6 +89,9 @@
class="w-full flex items-center gap-3 px-3.5 py-3 hover:bg-gray-50 dark:hover:bg-gray-900 rounded-xl transition"
on:click={onClick}
>
<!-- LICENSE covers this Open WebUI fallback logo.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<img
src={image || `${WEBUI_BASE_URL}/static/favicon.png`}
class="rounded-full size-8 object-cover flex-shrink-0"
@@ -123,6 +126,9 @@
class="shrink-0 rounded-xl overflow-hidden hover:opacity-80 transition"
on:click={() => filesInputElement.click()}
>
<!-- LICENSE covers this Open WebUI fallback logo.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<img
src={image || `${WEBUI_BASE_URL}/static/favicon.png`}
class="size-8 object-cover"
+3
View File
@@ -3667,6 +3667,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$settings.showChatTitleInTab !== false && $chatTitle
? `${$chatTitle.length > 30 ? `${$chatTitle.slice(0, 30)}...` : $chatTitle} / ${$WEBUI_NAME}`
@@ -61,6 +61,9 @@
alt="logo"
draggable="false"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -260,6 +260,9 @@
alt={model?.name ?? model.id}
class="mr-2 size-4.5 rounded-full object-cover"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
(e.currentTarget as HTMLImageElement).src = '/favicon.png';
}}
/>
@@ -88,6 +88,9 @@
alt={model?.name ?? model.id}
class="mr-2 size-4.5 rounded-full object-cover"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -179,6 +179,9 @@
alt="favicon"
class="size-4 rounded-full shrink-0 border border-white dark:border-gray-850 bg-white dark:bg-gray-900"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.target.src = '/favicon.png';
}}
/>
@@ -3,6 +3,9 @@
import { safeImageUrl } from '$lib/utils/safeImageUrl';
export let className = 'size-8';
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
export let src = `${WEBUI_BASE_URL}/static/favicon.png`;
</script>
@@ -137,6 +137,9 @@
>
{#if !($settings?.chatBubble ?? true) && !(message?.meta?.internal === true && message?.meta?.type === 'subagent') && !(message?.meta?.internal === true && message?.meta?.type === 'timer')}
<div class={`shrink-0 ltr:mr-2 rtl:ml-2 hidden @lg:flex mt-0.5`}>
<!-- LICENSE covers this Open WebUI fallback logo.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<ProfileImage
src={user?.id
? `${WEBUI_API_BASE_URL}/users/${user.id}/profile/image`
@@ -88,6 +88,9 @@
class="flex size-4 items-center rounded-full"
loading="lazy"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -134,6 +134,9 @@
aria-hidden="true"
draggable="false"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -125,6 +125,9 @@
</div>
<div class="text-[0.6875rem] text-gray-400 dark:text-gray-600">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'CORS must be properly configured by the provider to allow requests from Open WebUI.'
)}
@@ -246,6 +246,9 @@
href="https://github.com/open-webui/open-webui/blob/main/docs/CONTRIBUTING.md#-translations-and-internationalization"
target="_blank"
>
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
Help us translate Open WebUI!
</a>
</div>
@@ -142,6 +142,9 @@
{$i18n.t('Connect to your own OpenAPI compatible external tool servers.')}
</div>
<div class={helpTextClass}>
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'CORS must be properly configured by the provider to allow requests from Open WebUI.'
)}
@@ -371,10 +371,16 @@
<div class="px-5 pt-2 pb-5">
<div class="text-sm text-gray-500 dark:text-gray-400">
<!-- LICENSE covers this Open WebUI Community wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t('Do you want to sync your usage stats with Open WebUI Community?')}
</div>
<div class="mt-2 text-xs text-gray-500">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.'
)}
@@ -385,6 +391,9 @@
{$i18n.t('What is shared:')}
</div>
<ul class="list-disc list-inside space-y-0.5 ml-1 mb-2">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<li>{$i18n.t('Open WebUI version')}</li>
<li>{$i18n.t('Model names and usage frequency')}</li>
<li>{$i18n.t('Message counts and response timestamps')}</li>
@@ -39,6 +39,9 @@
const _chat = chat.chat;
console.log('share', _chat);
// LICENSE covers this Open WebUI Community wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.success($i18n.t('Redirecting you to Open WebUI Community'));
const url = 'https://openwebui.com';
// const url = 'http://localhost:5173';
@@ -175,6 +178,9 @@
shareChat();
}}
>
<!-- LICENSE covers this Open WebUI Community wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t('Share to Open WebUI Community')}
</button>
{/if}
@@ -112,6 +112,9 @@
<div class="px-5 pb-5 w-full flex flex-col justify-center">
<div class=" text-xs text-gray-600 dark:text-gray-300 mb-2">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t('Open WebUI can use tools provided by any OpenAPI server.')} <br /><a
class="underline"
href="https://github.com/open-webui/openapi-servers"
@@ -40,6 +40,9 @@
class=" size-4 rounded-full"
alt="logo"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.currentTarget.src = '/favicon.png';
}}
/>
@@ -960,6 +960,9 @@ ${content}
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{note?.title
? `${note?.title.length > 30 ? `${note?.title.slice(0, 30)}...` : note?.title} / ${$WEBUI_NAME}`
+3
View File
@@ -336,6 +336,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Notes')} / {$WEBUI_NAME}
</title>
@@ -279,6 +279,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Knowledge')} / {$WEBUI_NAME}
</title>
@@ -1355,6 +1355,9 @@
</div>
<div class="text-xs text-gray-500">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.'
)}
@@ -211,6 +211,9 @@
};
const shareModelHandler = async (model) => {
// LICENSE covers this Open WebUI Community wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.success($i18n.t('Redirecting you to Open WebUI Community'));
const url = 'https://openwebui.com';
@@ -432,6 +435,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Models')} / {$WEBUI_NAME}
</title>
@@ -708,6 +714,9 @@
loading="lazy"
decoding="async"
on:error={(e) => {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
e.target.src = '/favicon.png';
}}
/>
@@ -81,6 +81,9 @@
base_model_id: null,
name: '',
meta: {
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
profile_image_url: `${WEBUI_BASE_URL}/static/favicon.png`,
description: '',
suggestion_prompts: null,
@@ -601,6 +604,9 @@
<div class="flex w-full flex-col gap-3">
<div class="flex w-full min-w-0 items-center gap-3 py-0.5">
<div class="flex min-w-0 flex-1 items-center gap-3">
<!-- LICENSE covers this Open WebUI fallback logo.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<button
class="group relative flex size-12 shrink-0 items-center overflow-hidden rounded-xl md:size-14 {info
.meta.profile_image_url !== `${WEBUI_BASE_URL}/static/favicon.png`
@@ -194,6 +194,9 @@
};
const shareHandler = async (prompt) => {
// LICENSE covers this Open WebUI Community wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.success($i18n.t('Redirecting you to Open WebUI Community'));
const url = 'https://openwebui.com';
@@ -357,6 +360,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Prompts')} / {$WEBUI_NAME}
</title>
@@ -248,6 +248,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Skills')} / {$WEBUI_NAME}
</title>
@@ -177,6 +177,9 @@
return null;
});
// LICENSE covers this Open WebUI Community wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.success($i18n.t('Redirecting you to Open WebUI Community'));
const url = 'https://openwebui.com';
@@ -281,6 +284,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Tools')} / {$WEBUI_NAME}
</title>
@@ -12,6 +12,9 @@
<div class="mt-6 px-2 pb-8">
<div class="mb-0.5 text-[11px] font-normal text-gray-400 dark:text-gray-600">
<!-- LICENSE covers this Open WebUI Community wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t('Made by Open WebUI Community')}
</div>
@@ -43,6 +43,9 @@
</div>
<div class="my-2">
<!-- LICENSE covers this Open WebUI wordmark.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
{$i18n.t(
'Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.'
)}
+2 -1
View File
@@ -1,7 +1,8 @@
import { browser, dev } from '$app/environment';
// import { version } from '../../package.json';
// LICENSE covers this Open WebUI name/logo/identifier.
// LICENSE covers this Open WebUI branding surface, including name, logo,
// visual, textual, symbolic identifiers, metadata, and surrounding UI.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
export const APP_NAME = 'Open WebUI';
+3
View File
@@ -1,5 +1,8 @@
import { WEBUI_BASE_URL } from '$lib/constants';
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
const PLACEHOLDER_IMAGE = '/favicon.png';
/**
+3
View File
@@ -26,6 +26,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Admin Panel')} / {$WEBUI_NAME}
</title>
@@ -22,6 +22,9 @@
const manifest = extractFrontmatter(data.content);
if (compareVersion(manifest?.required_open_webui_version ?? '0.0.0', WEBUI_VERSION)) {
console.log('Version is lower than required');
// LICENSE covers this Open WebUI wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.error(
$i18n.t(
'Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})',
@@ -23,6 +23,9 @@
const manifest = extractFrontmatter(data.content);
if (compareVersion(manifest?.required_open_webui_version ?? '0.0.0', WEBUI_VERSION)) {
console.log('Version is lower than required');
// LICENSE covers this Open WebUI wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.error(
$i18n.t(
'Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})',
@@ -353,6 +353,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>{$i18n.t('Automations')} / {$WEBUI_NAME}</title>
</svelte:head>
+3
View File
@@ -206,6 +206,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>{$i18n.t('Calendar')} / {$WEBUI_NAME}</title>
</svelte:head>
+3
View File
@@ -11,6 +11,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Home')} / {$WEBUI_NAME}
</title>
+3
View File
@@ -23,6 +23,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Notes')} / {$WEBUI_NAME}
</title>
@@ -9,6 +9,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Playground')} / {$WEBUI_NAME}
</title>
@@ -106,6 +106,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{$i18n.t('Workspace')} / {$WEBUI_NAME}
</title>
@@ -33,6 +33,9 @@
...modelInfo,
meta: {
...modelInfo.meta,
// LICENSE covers this Open WebUI fallback logo.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
profile_image_url:
modelInfo.meta.profile_image_url ?? `${WEBUI_BASE_URL}/static/favicon.png`,
suggestion_prompts: modelInfo.meta.suggestion_prompts
@@ -20,6 +20,9 @@
const manifest = extractFrontmatter(data.content);
if (compareVersion(manifest?.required_open_webui_version ?? '0.0.0', WEBUI_VERSION)) {
console.log('Version is lower than required');
// LICENSE covers this Open WebUI wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.error(
$i18n.t(
'Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})',
@@ -20,6 +20,9 @@
const manifest = extractFrontmatter(data.content);
if (compareVersion(manifest?.required_open_webui_version ?? '0.0.0', WEBUI_VERSION)) {
console.log('Version is lower than required');
// LICENSE covers this Open WebUI wordmark.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
toast.error(
$i18n.t(
'Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})',
+4 -2
View File
@@ -1190,7 +1190,8 @@
if (backendConfig) {
// Save Backend Status to Store
await config.set(backendConfig);
// LICENSE covers this Open WebUI name/logo/identifier.
// LICENSE covers this Open WebUI branding surface, including name, logo,
// visual, textual, symbolic identifiers, metadata, and surrounding UI.
// Do not alter, remove, obscure, or replace it except as LICENSE permits:
// https://docs.openwebui.com/license.
await WEBUI_NAME.set(backendConfig.name);
@@ -1305,7 +1306,8 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI name/logo/identifier.
<!-- LICENSE covers this Open WebUI branding surface, including name, logo,
visual, textual, symbolic identifiers, metadata, and surrounding UI.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>{$WEBUI_NAME}</title>
+3
View File
@@ -203,6 +203,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{`${$WEBUI_NAME}`}
</title>
+3
View File
@@ -165,6 +165,9 @@
</script>
<svelte:head>
<!-- LICENSE covers this Open WebUI browser-title identifier.
Do not alter, remove, obscure, or replace it except as LICENSE permits:
https://docs.openwebui.com/license. -->
<title>
{title
? `${title.length > 30 ? `${title.slice(0, 30)}...` : title} / ${$WEBUI_NAME}`
+9
View File
@@ -0,0 +1,9 @@
# Open WebUI Branding Assets
`favicon.png`, `opensearch.xml`, and nearby references contain Open WebUI name, logo, visual, textual, or symbolic identifiers.
Open WebUI branding in this directory includes assets, filenames, metadata, manifests, references, and surrounding UI that present or preserve the Open WebUI name, logo, visual, textual, or symbolic identifiers.
Do not alter, remove, obscure, or replace Open WebUI branding except as permitted by `LICENSE`.
See also: https://docs.openwebui.com/license.
+9
View File
@@ -0,0 +1,9 @@
# Open WebUI Branding Assets
This directory contains Open WebUI branding assets and references, including favicons, logos, splash images, app icons, manifests, metadata, and search identifiers.
Open WebUI branding here includes the name, logo, and any visual, textual, or symbolic identifiers that present or preserve Open WebUI attribution.
Do not alter, remove, obscure, or replace Open WebUI branding except as permitted by `LICENSE`.
See also: https://docs.openwebui.com/license.
+9
View File
@@ -0,0 +1,9 @@
# Open WebUI Branding Assets
This directory contains Open WebUI branding assets, including favicons, logos, splash images, app icons, and web app manifest icons.
Open WebUI branding in this directory includes assets, filenames, metadata, manifests, references, and surrounding UI that present or preserve the Open WebUI name, logo, visual, textual, or symbolic identifiers.
Do not alter, remove, obscure, or replace Open WebUI branding except as permitted by `LICENSE`.
See also: https://docs.openwebui.com/license.
+9
View File
@@ -0,0 +1,9 @@
# Open WebUI Branding Assets
This directory contains Open WebUI branding assets and references, including favicons, logos, splash images, app icons, manifests, metadata, and search identifiers.
Open WebUI branding here includes the name, logo, and any visual, textual, or symbolic identifiers that present or preserve Open WebUI attribution.
Do not alter, remove, obscure, or replace Open WebUI branding except as permitted by `LICENSE`.
See also: https://docs.openwebui.com/license.