Spaces:
Runtime error
Runtime error
krinlove99
commited on
Commit
·
c2317b3
1
Parent(s):
05f8e81
修改UI
Browse files- backend/apps/audio/main.py +3 -3
- backend/apps/ollama/main.py +9 -9
- backend/apps/openai/main.py +4 -4
- backend/config.py +59 -16
- backend/data/config.json +16 -17
- backend/dev.sh +0 -0
- backend/start.sh +0 -0
- backend/static/fonts/NotoSans-Bold.ttf +0 -3
- backend/static/fonts/NotoSans-Italic.ttf +0 -3
- backend/static/fonts/NotoSans-Regular.ttf +0 -3
- backend/static/fonts/NotoSansJP-Regular.ttf +0 -3
- backend/static/fonts/NotoSansKR-Regular.ttf +0 -3
- bun.lockb +0 -0
- confirm_remove.sh +0 -0
- kubernetes/manifest/base/ollama-service.yaml +0 -12
- kubernetes/manifest/base/ollama-statefulset.yaml +0 -41
- kubernetes/manifest/base/open-webui.yaml +0 -4
- kubernetes/manifest/base/webui-deployment.yaml +0 -38
- kubernetes/manifest/base/webui-ingress.yaml +0 -20
- kubernetes/manifest/base/webui-pvc.yaml +0 -12
- kubernetes/manifest/base/webui-service.yaml +0 -15
- kubernetes/manifest/kustomization.yaml +0 -13
- kubernetes/manifest/patches/ollama-statefulset-gpu.yaml +0 -17
- run-compose.sh +0 -0
- src/app.html +2 -2
- src/lib/components/layout/Help/HelpMenu.svelte +1 -1
- src/lib/constants.ts +1 -1
- static/assets/fonts/Archivo-Variable.ttf +0 -3
- static/assets/fonts/Inter-Variable.ttf +0 -3
- static/favicon.png +0 -0
- static/logo.svg +31 -0
- static/opensearch.xml +2 -2
- static/static/favicon.png +0 -0
- static/static/logo.svg +31 -0
- static/static/splash-dark.png +0 -0
- static/static/splash.png +0 -0
backend/apps/audio/main.py
CHANGED
|
@@ -237,7 +237,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
|
| 237 |
|
| 238 |
except Exception as e:
|
| 239 |
log.exception(e)
|
| 240 |
-
error_detail = "
|
| 241 |
if r is not None:
|
| 242 |
try:
|
| 243 |
res = r.json()
|
|
@@ -292,7 +292,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
|
| 292 |
|
| 293 |
except Exception as e:
|
| 294 |
log.exception(e)
|
| 295 |
-
error_detail = "
|
| 296 |
if r is not None:
|
| 297 |
try:
|
| 298 |
res = r.json()
|
|
@@ -414,7 +414,7 @@ def transcribe(
|
|
| 414 |
return data
|
| 415 |
except Exception as e:
|
| 416 |
log.exception(e)
|
| 417 |
-
error_detail = "
|
| 418 |
if r is not None:
|
| 419 |
try:
|
| 420 |
res = r.json()
|
|
|
|
| 237 |
|
| 238 |
except Exception as e:
|
| 239 |
log.exception(e)
|
| 240 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 241 |
if r is not None:
|
| 242 |
try:
|
| 243 |
res = r.json()
|
|
|
|
| 292 |
|
| 293 |
except Exception as e:
|
| 294 |
log.exception(e)
|
| 295 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 296 |
if r is not None:
|
| 297 |
try:
|
| 298 |
res = r.json()
|
|
|
|
| 414 |
return data
|
| 415 |
except Exception as e:
|
| 416 |
log.exception(e)
|
| 417 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 418 |
if r is not None:
|
| 419 |
try:
|
| 420 |
res = r.json()
|
backend/apps/ollama/main.py
CHANGED
|
@@ -177,7 +177,7 @@ async def post_streaming_url(url: str, payload: str, stream: bool = True):
|
|
| 177 |
return res
|
| 178 |
|
| 179 |
except Exception as e:
|
| 180 |
-
error_detail = "
|
| 181 |
if r is not None:
|
| 182 |
try:
|
| 183 |
res = await r.json()
|
|
@@ -263,7 +263,7 @@ async def get_ollama_tags(
|
|
| 263 |
return r.json()
|
| 264 |
except Exception as e:
|
| 265 |
log.exception(e)
|
| 266 |
-
error_detail = "
|
| 267 |
if r is not None:
|
| 268 |
try:
|
| 269 |
res = r.json()
|
|
@@ -317,7 +317,7 @@ async def get_ollama_versions(url_idx: Optional[int] = None):
|
|
| 317 |
return r.json()
|
| 318 |
except Exception as e:
|
| 319 |
log.exception(e)
|
| 320 |
-
error_detail = "
|
| 321 |
if r is not None:
|
| 322 |
try:
|
| 323 |
res = r.json()
|
|
@@ -442,7 +442,7 @@ async def copy_model(
|
|
| 442 |
return True
|
| 443 |
except Exception as e:
|
| 444 |
log.exception(e)
|
| 445 |
-
error_detail = "
|
| 446 |
if r is not None:
|
| 447 |
try:
|
| 448 |
res = r.json()
|
|
@@ -489,7 +489,7 @@ async def delete_model(
|
|
| 489 |
return True
|
| 490 |
except Exception as e:
|
| 491 |
log.exception(e)
|
| 492 |
-
error_detail = "
|
| 493 |
if r is not None:
|
| 494 |
try:
|
| 495 |
res = r.json()
|
|
@@ -527,7 +527,7 @@ async def show_model_info(form_data: ModelNameForm, user=Depends(get_verified_us
|
|
| 527 |
return r.json()
|
| 528 |
except Exception as e:
|
| 529 |
log.exception(e)
|
| 530 |
-
error_detail = "
|
| 531 |
if r is not None:
|
| 532 |
try:
|
| 533 |
res = r.json()
|
|
@@ -584,7 +584,7 @@ async def generate_embeddings(
|
|
| 584 |
return r.json()
|
| 585 |
except Exception as e:
|
| 586 |
log.exception(e)
|
| 587 |
-
error_detail = "
|
| 588 |
if r is not None:
|
| 589 |
try:
|
| 590 |
res = r.json()
|
|
@@ -641,7 +641,7 @@ def generate_ollama_embeddings(
|
|
| 641 |
raise "Something went wrong :/"
|
| 642 |
except Exception as e:
|
| 643 |
log.exception(e)
|
| 644 |
-
error_detail = "
|
| 645 |
if r is not None:
|
| 646 |
try:
|
| 647 |
res = r.json()
|
|
@@ -1087,7 +1087,7 @@ async def get_openai_models(
|
|
| 1087 |
|
| 1088 |
except Exception as e:
|
| 1089 |
log.exception(e)
|
| 1090 |
-
error_detail = "
|
| 1091 |
if r is not None:
|
| 1092 |
try:
|
| 1093 |
res = r.json()
|
|
|
|
| 177 |
return res
|
| 178 |
|
| 179 |
except Exception as e:
|
| 180 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 181 |
if r is not None:
|
| 182 |
try:
|
| 183 |
res = await r.json()
|
|
|
|
| 263 |
return r.json()
|
| 264 |
except Exception as e:
|
| 265 |
log.exception(e)
|
| 266 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 267 |
if r is not None:
|
| 268 |
try:
|
| 269 |
res = r.json()
|
|
|
|
| 317 |
return r.json()
|
| 318 |
except Exception as e:
|
| 319 |
log.exception(e)
|
| 320 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 321 |
if r is not None:
|
| 322 |
try:
|
| 323 |
res = r.json()
|
|
|
|
| 442 |
return True
|
| 443 |
except Exception as e:
|
| 444 |
log.exception(e)
|
| 445 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 446 |
if r is not None:
|
| 447 |
try:
|
| 448 |
res = r.json()
|
|
|
|
| 489 |
return True
|
| 490 |
except Exception as e:
|
| 491 |
log.exception(e)
|
| 492 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 493 |
if r is not None:
|
| 494 |
try:
|
| 495 |
res = r.json()
|
|
|
|
| 527 |
return r.json()
|
| 528 |
except Exception as e:
|
| 529 |
log.exception(e)
|
| 530 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 531 |
if r is not None:
|
| 532 |
try:
|
| 533 |
res = r.json()
|
|
|
|
| 584 |
return r.json()
|
| 585 |
except Exception as e:
|
| 586 |
log.exception(e)
|
| 587 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 588 |
if r is not None:
|
| 589 |
try:
|
| 590 |
res = r.json()
|
|
|
|
| 641 |
raise "Something went wrong :/"
|
| 642 |
except Exception as e:
|
| 643 |
log.exception(e)
|
| 644 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 645 |
if r is not None:
|
| 646 |
try:
|
| 647 |
res = r.json()
|
|
|
|
| 1087 |
|
| 1088 |
except Exception as e:
|
| 1089 |
log.exception(e)
|
| 1090 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 1091 |
if r is not None:
|
| 1092 |
try:
|
| 1093 |
res = r.json()
|
backend/apps/openai/main.py
CHANGED
|
@@ -169,7 +169,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
|
| 169 |
|
| 170 |
except Exception as e:
|
| 171 |
log.exception(e)
|
| 172 |
-
error_detail = "
|
| 173 |
if r is not None:
|
| 174 |
try:
|
| 175 |
res = r.json()
|
|
@@ -334,7 +334,7 @@ async def get_models(url_idx: Optional[int] = None, user=Depends(get_verified_us
|
|
| 334 |
return response_data
|
| 335 |
except Exception as e:
|
| 336 |
log.exception(e)
|
| 337 |
-
error_detail = "
|
| 338 |
if r is not None:
|
| 339 |
try:
|
| 340 |
res = r.json()
|
|
@@ -496,7 +496,7 @@ async def generate_chat_completion(
|
|
| 496 |
return response_data
|
| 497 |
except Exception as e:
|
| 498 |
log.exception(e)
|
| 499 |
-
error_detail = "
|
| 500 |
if r is not None:
|
| 501 |
try:
|
| 502 |
res = await r.json()
|
|
@@ -559,7 +559,7 @@ async def proxy(path: str, request: Request, user=Depends(get_verified_user)):
|
|
| 559 |
return response_data
|
| 560 |
except Exception as e:
|
| 561 |
log.exception(e)
|
| 562 |
-
error_detail = "
|
| 563 |
if r is not None:
|
| 564 |
try:
|
| 565 |
res = await r.json()
|
|
|
|
| 169 |
|
| 170 |
except Exception as e:
|
| 171 |
log.exception(e)
|
| 172 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 173 |
if r is not None:
|
| 174 |
try:
|
| 175 |
res = r.json()
|
|
|
|
| 334 |
return response_data
|
| 335 |
except Exception as e:
|
| 336 |
log.exception(e)
|
| 337 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 338 |
if r is not None:
|
| 339 |
try:
|
| 340 |
res = r.json()
|
|
|
|
| 496 |
return response_data
|
| 497 |
except Exception as e:
|
| 498 |
log.exception(e)
|
| 499 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 500 |
if r is not None:
|
| 501 |
try:
|
| 502 |
res = await r.json()
|
|
|
|
| 559 |
return response_data
|
| 560 |
except Exception as e:
|
| 561 |
log.exception(e)
|
| 562 |
+
error_detail = "X-Chat: Server Connection Error"
|
| 563 |
if r is not None:
|
| 564 |
try:
|
| 565 |
res = await r.json()
|
backend/config.py
CHANGED
|
@@ -88,8 +88,8 @@ logging.getLogger("uvicorn.access").addFilter(EndpointFilter())
|
|
| 88 |
|
| 89 |
|
| 90 |
WEBUI_NAME = os.environ.get("WEBUI_NAME", "Open WebUI")
|
| 91 |
-
if WEBUI_NAME != "Open WebUI":
|
| 92 |
-
|
| 93 |
|
| 94 |
WEBUI_URL = os.environ.get("WEBUI_URL", "http://localhost:3000")
|
| 95 |
|
|
@@ -489,7 +489,7 @@ CUSTOM_NAME = os.environ.get("CUSTOM_NAME", "")
|
|
| 489 |
|
| 490 |
if CUSTOM_NAME:
|
| 491 |
try:
|
| 492 |
-
r = requests.get(f"https://api
|
| 493 |
data = r.json()
|
| 494 |
if r.ok:
|
| 495 |
if "logo" in data:
|
|
@@ -734,35 +734,78 @@ DEFAULT_PROMPT_SUGGESTIONS = PersistentConfig(
|
|
| 734 |
"ui.prompt_suggestions",
|
| 735 |
[
|
| 736 |
{
|
| 737 |
-
"title": ["
|
| 738 |
-
"content": "
|
| 739 |
},
|
| 740 |
{
|
| 741 |
-
"title": ["
|
| 742 |
-
"content": "
|
| 743 |
},
|
| 744 |
{
|
| 745 |
-
"title": ["
|
| 746 |
-
"content": "
|
| 747 |
},
|
| 748 |
{
|
| 749 |
-
"title": ["
|
| 750 |
-
"content": "
|
| 751 |
},
|
| 752 |
{
|
| 753 |
"title": [
|
| 754 |
-
"
|
| 755 |
-
"
|
| 756 |
],
|
| 757 |
-
"content": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 758 |
},
|
| 759 |
{
|
| 760 |
-
"title": ["
|
| 761 |
-
"content": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 762 |
},
|
| 763 |
],
|
| 764 |
)
|
| 765 |
|
|
|
|
| 766 |
DEFAULT_USER_ROLE = PersistentConfig(
|
| 767 |
"DEFAULT_USER_ROLE",
|
| 768 |
"ui.default_user_role",
|
|
|
|
| 88 |
|
| 89 |
|
| 90 |
WEBUI_NAME = os.environ.get("WEBUI_NAME", "Open WebUI")
|
| 91 |
+
# if WEBUI_NAME != "Open WebUI":
|
| 92 |
+
# WEBUI_NAME += " (Open WebUI)"
|
| 93 |
|
| 94 |
WEBUI_URL = os.environ.get("WEBUI_URL", "http://localhost:3000")
|
| 95 |
|
|
|
|
| 489 |
|
| 490 |
if CUSTOM_NAME:
|
| 491 |
try:
|
| 492 |
+
r = requests.get(f"https://api..com/api/v1/custom/{CUSTOM_NAME}")
|
| 493 |
data = r.json()
|
| 494 |
if r.ok:
|
| 495 |
if "logo" in data:
|
|
|
|
| 734 |
"ui.prompt_suggestions",
|
| 735 |
[
|
| 736 |
{
|
| 737 |
+
"title": ["创作一张动漫壁纸", "动漫壁纸创作"],
|
| 738 |
+
"content": "按照如下关键词画图:可爱的女孩,棕色的长卷发,迪士尼风格,8k分辨率,超清,极其详细的CG8k壁纸,杰作。",
|
| 739 |
},
|
| 740 |
{
|
| 741 |
+
"title": ["与我谈一谈!", "来一场轻松的对话"],
|
| 742 |
+
"content": "我希望你能充当一个高级的对话生成器。我会给你一个由我和一个我认识了两个月的女生之间的对话作为初始输入。例如:“我:你好吗?她:我很好,谢谢。”。在这之后,我希望你能从我的角度,根据前文的上下文,生成一个回应。这个回应应该以“我:”开头,并且不需要与她的回答形成连续的对话。我希望这个回应是幽默、有趣、体贴和温柔的,同时能够扩展话题,使得整个对话显得轻松愉快。如果你理解了我的要求,请回答:“好的,请提供初始对话。”",
|
| 743 |
},
|
| 744 |
{
|
| 745 |
+
"title": ["心理健康顾问", "说一说你近期的问题吧"],
|
| 746 |
+
"content": "我希望你扮演一名心理健康顾问。我会为你提供一个寻求关于管理情绪、压力、焦虑和其他心理健康问题的指导和建议的个体。请你运用认知行为疗法、冥想技巧、正念实践和其他治疗方法的知识,为这个个体创建策略,以便他们可以实施来提高他们的整体幸福感。我的第一个请求是'遇到的问题'。",
|
| 747 |
},
|
| 748 |
{
|
| 749 |
+
"title": ["哲学启蒙导师", "讨论一些哲学问题"],
|
| 750 |
+
"content": "我希望你扮演一名哲学家。我会为你提供与哲学研究相关的一些主题或问题,你的任务是深入探讨这些概念。这可能涉及对各种哲学理论的研究、提出新的观点或为解决复杂问题找到创造性的解决方案。我的第一个请求是'哲学主题'。",
|
| 751 |
},
|
| 752 |
{
|
| 753 |
"title": [
|
| 754 |
+
"Linux内核专家",
|
| 755 |
+
"帮助用户更好地理解和使用 Linux 内核",
|
| 756 |
],
|
| 757 |
+
"content": "你是一位精通 Linux 内核的专家,对最新内核源代码有着深入的理解和分析能力。\
|
| 758 |
+
你的能力范围:\
|
| 759 |
+
解释内核的实现机制,包括但不限于: \
|
| 760 |
+
内存管理 \
|
| 761 |
+
进程调度 \
|
| 762 |
+
文件系统 \
|
| 763 |
+
网络协议栈 \
|
| 764 |
+
驱动程序 \
|
| 765 |
+
安全机制 \
|
| 766 |
+
提供与内核源代码相关的具体细节,例如: \
|
| 767 |
+
某个特定函数的实现 \
|
| 768 |
+
数据结构的定义 \
|
| 769 |
+
代码路径的分析 \
|
| 770 |
+
性能优化建议 \
|
| 771 |
+
回答关于内核工作原理、配置、调试等方面的问题 \
|
| 772 |
+
你的角色目标: 帮助用户更好地理解和使用 Linux 内核。",
|
| 773 |
},
|
| 774 |
{
|
| 775 |
+
"title": ["IT系统架构师", "资深IT架构师,擅长需求分析、系统设计、技术选型和跨平台系统优化。5年以上经验,精通Windows、macOS和Linux三大操作系统,具备故障排除和安全防护能力"],
|
| 776 |
+
"content": "我希望你充当 IT 专家的身份为我提供协助,我将提供解决技术问题所需的所有相关信息,您的任务是协助我解决问题。请您运用项目管理及敏捷开发的专长来制定解决方案。在回复时,若能采用通俗易懂、适合不同层次理解的语言,并按要点分步阐述,将极为有益。我更倾向于直接获得解决方案,而非冗长的解释,除非我明确提出要求。\
|
| 777 |
+
作为 IT 架构师,你的职能包括:\
|
| 778 |
+
1. 需求分析:与客户和项目团队合作,理解业务需求,确定技术规格和性能要求。\
|
| 779 |
+
2. 系统设计:根据需求设计整体 IT 架构,包括服务器、存储、网络、安全等。\
|
| 780 |
+
3. 技术选型:研究和评估新技术,选择最合适的技术路线和解决方案。\
|
| 781 |
+
4. 性能优化:负责 IT 系统的性能调试和优化,确保系统高效稳定运行。\
|
| 782 |
+
5. 协同工作:与软件工程师、硬件工程师、网络工程师等协作,确保软硬件的兼容性和整体性能。\
|
| 783 |
+
6. 供应商管理:与供应商合作,评估和选择硬件和软件产品,确保供应链的质量和效率。\
|
| 784 |
+
你的背景和经验包括:\
|
| 785 |
+
1. 教育背景:计算机科学或相关专业本科及以上学历。\
|
| 786 |
+
2. 工作经验:具备 5 年以上的 IT 架构设计经验,熟悉服务器、存储、网络等硬件和软件技术。\
|
| 787 |
+
3. 专业知识:对服务器硬件、存储、网络、安全等技术有深入了解。\
|
| 788 |
+
4. 技能能力: \
|
| 789 |
+
a. 熟悉硬件性能测试和优化。 \
|
| 790 |
+
b. 熟练使用相关设计工具和软件。 \
|
| 791 |
+
c. 良好的项目管理能力,能够进行风险评估和时间控制。\
|
| 792 |
+
5. 持续学习:具有创新精神和快速学习能力,能够适应新技术的发展。\
|
| 793 |
+
6. 问题解决能力:能够快速识别和解决技术问题,做出有效决策。\
|
| 794 |
+
你精通 Windows、macOS 和 Linux 三大操作系统,对其有深刻理解和高超的 IT 技巧,并具备以下能力:\
|
| 795 |
+
1. 跨平台技能:你精通 Windows、macOS 和 Linux 三大操作系统,能够在这三个平台上进行系统架构设计、部署和维护。\
|
| 796 |
+
2. 系统优化:你能够根据不同操作系统的特点进行深度优化,提高系统性能,确保资源的高效利用。\
|
| 797 |
+
3. 故障排除:你具备快速诊断和解决跨平台系统问题的能力,无论是硬件兼容性问题还是软件配置问题。\
|
| 798 |
+
4. 安全性:你熟悉不同操作系统的安全特性,能够设计出既安全又高效的系统架构,防范潜在的安全威胁。\
|
| 799 |
+
5. 自动化和脚本编写:你擅长使用 PowerShell、Bash、Python 等编程语言进行自动化任务编写,提高工作效率。\
|
| 800 |
+
6. 背景和经验: \
|
| 801 |
+
a. 教育背景:计算机科学或相关专业,拥有丰富的理论知识和技术背景。 \
|
| 802 |
+
b. 工作经验:在多个项目中担任关键角色,负责跨平台系统的架构设计和实施。 \
|
| 803 |
+
c. 专业认证:持有 Windows、Linux 或 macOS 相关的专业认证,如 MCSE、LPIC、Apple Certified Technical Coordinator 等。",
|
| 804 |
},
|
| 805 |
],
|
| 806 |
)
|
| 807 |
|
| 808 |
+
|
| 809 |
DEFAULT_USER_ROLE = PersistentConfig(
|
| 810 |
"DEFAULT_USER_ROLE",
|
| 811 |
"ui.default_user_role",
|
backend/data/config.json
CHANGED
|
@@ -1,35 +1,34 @@
|
|
| 1 |
{
|
| 2 |
"version": 0,
|
| 3 |
"ui": {
|
| 4 |
-
"default_locale": "",
|
| 5 |
"prompt_suggestions": [
|
| 6 |
{
|
| 7 |
-
"title": ["
|
| 8 |
-
"content": "
|
| 9 |
},
|
| 10 |
{
|
| 11 |
-
"title": ["
|
| 12 |
-
"content": "
|
| 13 |
},
|
| 14 |
{
|
| 15 |
-
"title": ["
|
| 16 |
-
"content": "
|
| 17 |
},
|
| 18 |
{
|
| 19 |
-
"title": ["
|
| 20 |
-
"content": "
|
| 21 |
},
|
| 22 |
{
|
| 23 |
-
"title": [
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
| 25 |
},
|
| 26 |
{
|
| 27 |
-
"title": ["
|
| 28 |
-
"content": "
|
| 29 |
-
},
|
| 30 |
-
{
|
| 31 |
-
"title": ["Grammar check", "rewrite it for better readability "],
|
| 32 |
-
"content": "Check the following sentence for grammar and clarity: \"[sentence]\". Rewrite it for better readability while maintaining its original meaning."
|
| 33 |
}
|
| 34 |
]
|
| 35 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"version": 0,
|
| 3 |
"ui": {
|
| 4 |
+
"default_locale": "zh-CN",
|
| 5 |
"prompt_suggestions": [
|
| 6 |
{
|
| 7 |
+
"title": ["创作一张动漫壁纸", "动漫壁纸创作"],
|
| 8 |
+
"content": "按照如下关键词画图:可爱的女孩,棕色的长卷发,迪士尼风格,8k分辨率,超清,极其详细的CG8k壁纸,杰作。"
|
| 9 |
},
|
| 10 |
{
|
| 11 |
+
"title": ["与我谈一谈!", "来一场轻松的对话"],
|
| 12 |
+
"content": "我希望你能充当一个高级的对话生成器。我会给你一个由我和一个我认识了两个月的女生之间的对话作为初始输入。例如:“我:你好吗?她:我很好,谢谢。”。在这之后,我希望你能从我的角度,根据前文的上下文,生成一个回应。这个回应应该以“我:”开头,并且不需要与她的回答形成连续的对话。我希望这个回应是幽默、有趣、体贴和温柔的,同时能够扩展话题,使得整个对话显得轻松愉快。如果你理解了我的要求,请回答:“好的,请提供初始对话。”"
|
| 13 |
},
|
| 14 |
{
|
| 15 |
+
"title": ["心理健康顾问", "说一说你近期的问题吧"],
|
| 16 |
+
"content": "我希望你扮演一名心理健康顾问。我会为你提供一个寻求关于管理情绪、压力、焦虑和其他心理健康问题的指导和建议的个体。请你运用认知行为疗法、冥想技巧、正念实践和其他治疗方法的知识,为这个个体创建策略,以便他们可以实施来提高他们的整体幸福感。我的第一个请求是'遇到的问题'。"
|
| 17 |
},
|
| 18 |
{
|
| 19 |
+
"title": ["哲学启蒙导师", "讨论一些哲学问题"],
|
| 20 |
+
"content": "我希望你扮演一名哲学家。我会为你提供与哲学研究相关的一些主题或问题,你的任务是深入探讨这些概念。这可能涉及对各种哲学理论的研究、提出新的观点或为解决复杂问题找到创造性的解决方案。我的第一个请求是'哲学主题'。"
|
| 21 |
},
|
| 22 |
{
|
| 23 |
+
"title": [
|
| 24 |
+
"Linux内核专家",
|
| 25 |
+
"帮助用户更好地理解和使用 Linux 内核"
|
| 26 |
+
],
|
| 27 |
+
"content": "你是一位精通 Linux 内核的专家,对最新内核源代码有着深入的理解和分析能力。你的能力范围:解释内核的实现机制,包括但不限于:内存管理、进程调度、文件系统、网络协议栈、驱动程序、安全机制、提供与内核源代码相关的具体细节,例如:、某个特定函数的实现、 数据结构的定义、代码路径的分析、性能优化建议、回答关于内核工作原理、配置、调试等方面的问题。你的角色目标: 帮助用户更好地理解和使用 Linux 内核。"
|
| 28 |
},
|
| 29 |
{
|
| 30 |
+
"title": ["IT系统架构师", "资深IT架构师,擅长需求分析、系统设计、技术选型和跨平台系统优化。5年以上经验,精通Windows、macOS和Linux三大操作系统,具备故障排除和安全防护能力"],
|
| 31 |
+
"content": "我希望你充当 IT 专家的身份为我提供协助,我将提供解决技术问题所需的所有相关信息,您的任务是协助我解决问题。请您运用项目管理及敏捷开发的专长来制定解决方案。在回复时,若能采用通俗易懂、适合不同层次理解的语言,并按要点分步阐述,将极为有益。我更倾向于直接获得解决方案,而非冗长的解释,除非我明确提出要求。作为 IT 架构师,你的职能包括:1. 需求分析:与客户和项目团队合作,理解业务需求,确定技术规格和性能要求。2. 系统设计:根据需求设计整体 IT 架构,包括服务器、存储、网络、安全等。3. 技术选型:研究和评估新技术,选择最合适的技术路线和解决方案。4. 性能优化:负责 IT 系统的性能调试和优化,确保系统高效稳定运行。5. 协同工作:与软件工程师、硬件工程师、网络工程师等协作,确保软硬件的兼容性和整体性能。6. 供应商管理:与供应商合作,评估和选择硬件和软件产品,确保供应链的质量和效率。你的背景和经验包括:1. 教育背景:计算机科学或相关专业本科及以上学历。2. 工作经验:具备 5 年以上的 IT 架构设计经验,熟悉服务器、存储、网络等硬件和软件技术。3. 专业知识:对服务器硬件、存储、网络、安全等技术有深入了解。4. 技能能力: a. 熟悉硬件性能测试和优化。b. 熟练使用相关设计工具和软件。c. 良好的项目管理能力,能够进行风险评估和时间控制。5. 持续学习:具有创新精神和快速学习能力,能够适应新技术的发展。6. 问题解决能力:能够快速识别和解决技术问题,做出有效决策。你精通 Windows、macOS 和 Linux 三大操作系统,对其有深刻理解和高超的 IT 技巧,并具备以下能力:1. 跨平台技能:你精通 Windows、macOS 和 Linux 三大操作系统,能够在这三个平台上进行系统架构设计、部署和维护。2. 系统优化:你能够根据不同操作系统的特点进行深度优化,提高系统性能,确保资源的高效利用。3. 故障排除:你具备快速诊断和解决跨平台系统问题的能力,无论是硬件兼容性问题还是软件配置问题。4. 安全性:你熟悉不同操作系统的安全特性,能够设计出既安全又高效的系统架构,防范潜在的安全威胁。5. 自动化和脚本编写:你擅长使用 PowerShell、Bash、Python 等编程语言进行自动化任务编写,提高工作效率。6. 背景和经验:a. 教育背景:计算机科学或相关专业,拥有丰富的理论知识和技术背景。b. 工作经验:在多个项目中担任关键角色,负责跨平台系统的架构设计和实施。c. 专业认证:持有 Windows、Linux 或 macOS 相关的专业认证,如 MCSE、LPIC、Apple Certified Technical Coordinator 等。"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
}
|
| 33 |
]
|
| 34 |
}
|
backend/dev.sh
CHANGED
|
File without changes
|
backend/start.sh
CHANGED
|
File without changes
|
backend/static/fonts/NotoSans-Bold.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:cf382cad35e731fc4f13b1bf068c5085cd17bee2141014cc94919c140529488d
|
| 3 |
-
size 582604
|
|
|
|
|
|
|
|
|
|
|
|
backend/static/fonts/NotoSans-Italic.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:380a500e3dda76d955dadc77053227cc61149814737dc9f7d973d09415ad851f
|
| 3 |
-
size 597000
|
|
|
|
|
|
|
|
|
|
|
|
backend/static/fonts/NotoSans-Regular.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:3be6b371cef19ed6add589bd106444ab74c9793bc812d3159298b73d00ee011c
|
| 3 |
-
size 582748
|
|
|
|
|
|
|
|
|
|
|
|
backend/static/fonts/NotoSansJP-Regular.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:fb3df01b4182734d021d79ec5bac17903bb681e926a059c59ed81a373d612241
|
| 3 |
-
size 5732824
|
|
|
|
|
|
|
|
|
|
|
|
backend/static/fonts/NotoSansKR-Regular.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:9db318b65ee9c575a43e7efd273dbdd1afef26e467eea3e1073a50e1a6595f6d
|
| 3 |
-
size 6192764
|
|
|
|
|
|
|
|
|
|
|
|
bun.lockb
CHANGED
|
File without changes
|
confirm_remove.sh
CHANGED
|
File without changes
|
kubernetes/manifest/base/ollama-service.yaml
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
apiVersion: v1
|
| 2 |
-
kind: Service
|
| 3 |
-
metadata:
|
| 4 |
-
name: ollama-service
|
| 5 |
-
namespace: open-webui
|
| 6 |
-
spec:
|
| 7 |
-
selector:
|
| 8 |
-
app: ollama
|
| 9 |
-
ports:
|
| 10 |
-
- protocol: TCP
|
| 11 |
-
port: 11434
|
| 12 |
-
targetPort: 11434
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/base/ollama-statefulset.yaml
DELETED
|
@@ -1,41 +0,0 @@
|
|
| 1 |
-
apiVersion: apps/v1
|
| 2 |
-
kind: StatefulSet
|
| 3 |
-
metadata:
|
| 4 |
-
name: ollama
|
| 5 |
-
namespace: open-webui
|
| 6 |
-
spec:
|
| 7 |
-
serviceName: "ollama"
|
| 8 |
-
replicas: 1
|
| 9 |
-
selector:
|
| 10 |
-
matchLabels:
|
| 11 |
-
app: ollama
|
| 12 |
-
template:
|
| 13 |
-
metadata:
|
| 14 |
-
labels:
|
| 15 |
-
app: ollama
|
| 16 |
-
spec:
|
| 17 |
-
containers:
|
| 18 |
-
- name: ollama
|
| 19 |
-
image: ollama/ollama:latest
|
| 20 |
-
ports:
|
| 21 |
-
- containerPort: 11434
|
| 22 |
-
resources:
|
| 23 |
-
requests:
|
| 24 |
-
cpu: "2000m"
|
| 25 |
-
memory: "2Gi"
|
| 26 |
-
limits:
|
| 27 |
-
cpu: "4000m"
|
| 28 |
-
memory: "4Gi"
|
| 29 |
-
nvidia.com/gpu: "0"
|
| 30 |
-
volumeMounts:
|
| 31 |
-
- name: ollama-volume
|
| 32 |
-
mountPath: /root/.ollama
|
| 33 |
-
tty: true
|
| 34 |
-
volumeClaimTemplates:
|
| 35 |
-
- metadata:
|
| 36 |
-
name: ollama-volume
|
| 37 |
-
spec:
|
| 38 |
-
accessModes: [ "ReadWriteOnce" ]
|
| 39 |
-
resources:
|
| 40 |
-
requests:
|
| 41 |
-
storage: 30Gi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/base/open-webui.yaml
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
apiVersion: v1
|
| 2 |
-
kind: Namespace
|
| 3 |
-
metadata:
|
| 4 |
-
name: open-webui
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/base/webui-deployment.yaml
DELETED
|
@@ -1,38 +0,0 @@
|
|
| 1 |
-
apiVersion: apps/v1
|
| 2 |
-
kind: Deployment
|
| 3 |
-
metadata:
|
| 4 |
-
name: open-webui-deployment
|
| 5 |
-
namespace: open-webui
|
| 6 |
-
spec:
|
| 7 |
-
replicas: 1
|
| 8 |
-
selector:
|
| 9 |
-
matchLabels:
|
| 10 |
-
app: open-webui
|
| 11 |
-
template:
|
| 12 |
-
metadata:
|
| 13 |
-
labels:
|
| 14 |
-
app: open-webui
|
| 15 |
-
spec:
|
| 16 |
-
containers:
|
| 17 |
-
- name: open-webui
|
| 18 |
-
image: ghcr.io/open-webui/open-webui:main
|
| 19 |
-
ports:
|
| 20 |
-
- containerPort: 8080
|
| 21 |
-
resources:
|
| 22 |
-
requests:
|
| 23 |
-
cpu: "500m"
|
| 24 |
-
memory: "500Mi"
|
| 25 |
-
limits:
|
| 26 |
-
cpu: "1000m"
|
| 27 |
-
memory: "1Gi"
|
| 28 |
-
env:
|
| 29 |
-
- name: OLLAMA_BASE_URL
|
| 30 |
-
value: "http://ollama-service.open-webui.svc.cluster.local:11434"
|
| 31 |
-
tty: true
|
| 32 |
-
volumeMounts:
|
| 33 |
-
- name: webui-volume
|
| 34 |
-
mountPath: /app/backend/data
|
| 35 |
-
volumes:
|
| 36 |
-
- name: webui-volume
|
| 37 |
-
persistentVolumeClaim:
|
| 38 |
-
claimName: open-webui-pvc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/base/webui-ingress.yaml
DELETED
|
@@ -1,20 +0,0 @@
|
|
| 1 |
-
apiVersion: networking.k8s.io/v1
|
| 2 |
-
kind: Ingress
|
| 3 |
-
metadata:
|
| 4 |
-
name: open-webui-ingress
|
| 5 |
-
namespace: open-webui
|
| 6 |
-
#annotations:
|
| 7 |
-
# Use appropriate annotations for your Ingress controller, e.g., for NGINX:
|
| 8 |
-
# nginx.ingress.kubernetes.io/rewrite-target: /
|
| 9 |
-
spec:
|
| 10 |
-
rules:
|
| 11 |
-
- host: open-webui.minikube.local
|
| 12 |
-
http:
|
| 13 |
-
paths:
|
| 14 |
-
- path: /
|
| 15 |
-
pathType: Prefix
|
| 16 |
-
backend:
|
| 17 |
-
service:
|
| 18 |
-
name: open-webui-service
|
| 19 |
-
port:
|
| 20 |
-
number: 8080
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/base/webui-pvc.yaml
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
apiVersion: v1
|
| 2 |
-
kind: PersistentVolumeClaim
|
| 3 |
-
metadata:
|
| 4 |
-
labels:
|
| 5 |
-
app: open-webui
|
| 6 |
-
name: open-webui-pvc
|
| 7 |
-
namespace: open-webui
|
| 8 |
-
spec:
|
| 9 |
-
accessModes: ["ReadWriteOnce"]
|
| 10 |
-
resources:
|
| 11 |
-
requests:
|
| 12 |
-
storage: 2Gi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/base/webui-service.yaml
DELETED
|
@@ -1,15 +0,0 @@
|
|
| 1 |
-
apiVersion: v1
|
| 2 |
-
kind: Service
|
| 3 |
-
metadata:
|
| 4 |
-
name: open-webui-service
|
| 5 |
-
namespace: open-webui
|
| 6 |
-
spec:
|
| 7 |
-
type: NodePort # Use LoadBalancer if you're on a cloud that supports it
|
| 8 |
-
selector:
|
| 9 |
-
app: open-webui
|
| 10 |
-
ports:
|
| 11 |
-
- protocol: TCP
|
| 12 |
-
port: 8080
|
| 13 |
-
targetPort: 8080
|
| 14 |
-
# If using NodePort, you can optionally specify the nodePort:
|
| 15 |
-
# nodePort: 30000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/kustomization.yaml
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
resources:
|
| 2 |
-
- base/open-webui.yaml
|
| 3 |
-
- base/ollama-service.yaml
|
| 4 |
-
- base/ollama-statefulset.yaml
|
| 5 |
-
- base/webui-deployment.yaml
|
| 6 |
-
- base/webui-service.yaml
|
| 7 |
-
- base/webui-ingress.yaml
|
| 8 |
-
- base/webui-pvc.yaml
|
| 9 |
-
|
| 10 |
-
apiVersion: kustomize.config.k8s.io/v1beta1
|
| 11 |
-
kind: Kustomization
|
| 12 |
-
patches:
|
| 13 |
-
- path: patches/ollama-statefulset-gpu.yaml
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
kubernetes/manifest/patches/ollama-statefulset-gpu.yaml
DELETED
|
@@ -1,17 +0,0 @@
|
|
| 1 |
-
apiVersion: apps/v1
|
| 2 |
-
kind: StatefulSet
|
| 3 |
-
metadata:
|
| 4 |
-
name: ollama
|
| 5 |
-
namespace: open-webui
|
| 6 |
-
spec:
|
| 7 |
-
selector:
|
| 8 |
-
matchLabels:
|
| 9 |
-
app: ollama
|
| 10 |
-
serviceName: "ollama"
|
| 11 |
-
template:
|
| 12 |
-
spec:
|
| 13 |
-
containers:
|
| 14 |
-
- name: ollama
|
| 15 |
-
resources:
|
| 16 |
-
limits:
|
| 17 |
-
nvidia.com/gpu: "1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
run-compose.sh
CHANGED
|
File without changes
|
src/app.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
| 9 |
<link
|
| 10 |
rel="search"
|
| 11 |
type="application/opensearchdescription+xml"
|
| 12 |
-
title="
|
| 13 |
href="/opensearch.xml"
|
| 14 |
/>
|
| 15 |
|
|
@@ -61,7 +61,7 @@
|
|
| 61 |
})();
|
| 62 |
</script>
|
| 63 |
|
| 64 |
-
<title>
|
| 65 |
|
| 66 |
%sveltekit.head%
|
| 67 |
</head>
|
|
|
|
| 9 |
<link
|
| 10 |
rel="search"
|
| 11 |
type="application/opensearchdescription+xml"
|
| 12 |
+
title="X-Chat"
|
| 13 |
href="/opensearch.xml"
|
| 14 |
/>
|
| 15 |
|
|
|
|
| 61 |
})();
|
| 62 |
</script>
|
| 63 |
|
| 64 |
+
<title>X-Chat</title>
|
| 65 |
|
| 66 |
%sveltekit.head%
|
| 67 |
</head>
|
src/lib/components/layout/Help/HelpMenu.svelte
CHANGED
|
@@ -38,7 +38,7 @@
|
|
| 38 |
class="flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
|
| 39 |
id="chat-share-button"
|
| 40 |
on:click={() => {
|
| 41 |
-
window.open('https://
|
| 42 |
}}
|
| 43 |
>
|
| 44 |
<QuestionMarkCircle className="size-5" />
|
|
|
|
| 38 |
class="flex gap-2 items-center px-3 py-2 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
|
| 39 |
id="chat-share-button"
|
| 40 |
on:click={() => {
|
| 41 |
+
window.open('https://doc.rntec.top', '_blank');
|
| 42 |
}}
|
| 43 |
>
|
| 44 |
<QuestionMarkCircle className="size-5" />
|
src/lib/constants.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
import { browser, dev } from '$app/environment';
|
| 2 |
// import { version } from '../../package.json';
|
| 3 |
|
| 4 |
-
export const APP_NAME = '
|
| 5 |
|
| 6 |
export const WEBUI_HOSTNAME = browser ? (dev ? `${location.hostname}:8080` : ``) : '';
|
| 7 |
export const WEBUI_BASE_URL = browser ? (dev ? `http://${WEBUI_HOSTNAME}` : ``) : ``;
|
|
|
|
| 1 |
import { browser, dev } from '$app/environment';
|
| 2 |
// import { version } from '../../package.json';
|
| 3 |
|
| 4 |
+
export const APP_NAME = 'X-Chat';
|
| 5 |
|
| 6 |
export const WEBUI_HOSTNAME = browser ? (dev ? `${location.hostname}:8080` : ``) : '';
|
| 7 |
export const WEBUI_BASE_URL = browser ? (dev ? `http://${WEBUI_HOSTNAME}` : ``) : ``;
|
static/assets/fonts/Archivo-Variable.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:ed648e6308957e7b2d45b755d8a0461c4d10cd99bc501ee859f91935cb3d8727
|
| 3 |
-
size 652084
|
|
|
|
|
|
|
|
|
|
|
|
static/assets/fonts/Inter-Variable.ttf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:cf3cb43b0366e2dc6df60e1132b1c9a4c15777f0cd8e5a53e0c15124003e9ed4
|
| 3 |
-
size 804612
|
|
|
|
|
|
|
|
|
|
|
|
static/favicon.png
CHANGED
|
|
|
|
static/logo.svg
ADDED
|
|
static/opensearch.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
| 2 |
-
<ShortName>
|
| 3 |
-
<Description>Search
|
| 4 |
<InputEncoding>UTF-8</InputEncoding>
|
| 5 |
<Image width="16" height="16" type="image/x-icon">http://localhost:5137/favicon.png</Image>
|
| 6 |
<Url type="text/html" method="get" template="http://localhost:5137/?q={searchTerms}"/>
|
|
|
|
| 1 |
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
|
| 2 |
+
<ShortName>X-Chat</ShortName>
|
| 3 |
+
<Description>Search X-Chat</Description>
|
| 4 |
<InputEncoding>UTF-8</InputEncoding>
|
| 5 |
<Image width="16" height="16" type="image/x-icon">http://localhost:5137/favicon.png</Image>
|
| 6 |
<Url type="text/html" method="get" template="http://localhost:5137/?q={searchTerms}"/>
|
static/static/favicon.png
CHANGED
|
|
|
|
static/static/logo.svg
ADDED
|
|
static/static/splash-dark.png
CHANGED
|
|
static/static/splash.png
CHANGED
|
|