feat: add vision and extension management to WebUI

This commit is contained in:
luckyyzh
2026-08-03 05:06:34 +08:00
parent dd47c3628d
commit e79485bf4c
16 changed files with 7612 additions and 3180 deletions
+35 -1
View File
@@ -11,6 +11,8 @@ export const enLocale: LocalePlugin = {
"common.mcp": "MCP",
"common.skills": "Skills",
"common.plugins": "Plugins",
"common.extensions": "Extensions",
"common.vision": "Vision",
"sidebar.hide": "Hide sidebar",
"sidebar.show": "Show sidebar",
"theme.light": "Switch to light mode",
@@ -43,7 +45,7 @@ export const enLocale: LocalePlugin = {
"session.output": "Output",
"session.cacheRead": "Cache Read",
"session.cacheWrite": "Cache Write",
"session.cacheHitRate": "Cache Hit Rate",
"session.cacheHitRate": "Cache Hit Rate (Main Session)",
"session.cost": "Cost",
"session.context": "Context",
"session.copy": "Copy {value}",
@@ -259,6 +261,25 @@ export const enLocale: LocalePlugin = {
"mcp.noServers": "No MCP servers configured",
"mcp.selectServer": "Select a server to edit",
"mcp.restartHint": "Saved changes apply after restarting pi (or /reload).",
"vision.title": "Vision config",
"vision.loading": "Loading…",
"vision.backend.ollama": "Local Ollama",
"vision.backend.ollamaHint": "Free and private — needs a local Ollama with a vision model pulled",
"vision.backend.openai": "OpenAI-compatible API",
"vision.backend.openaiHint": "Any OpenAI-compatible vision endpoint (cloud or self-hosted)",
"vision.ollama.host": "Ollama address",
"vision.ollama.hostPlaceholder": "e.g. http://localhost:11434",
"vision.ollama.model": "Vision model",
"vision.ollama.modelPlaceholder": "e.g. qwen3-vl:8b",
"vision.openai.baseUrl": "Base URL",
"vision.openai.baseUrlPlaceholder": "e.g. https://api.openai.com/v1",
"vision.openai.apiKey": "API Key",
"vision.openai.model": "Model",
"vision.openai.modelPlaceholder": "e.g. gpt-4o-mini / glm-4.5v",
"vision.effective": "Saved config takes effect on the next image request — no restart needed. Uploaded images are auto-transcribed into text for text-only main models (e.g. DeepSeek).",
"vision.loadFailed": "Failed to load / save config",
"vision.save": "Save",
"vision.saved": "Saved — takes effect on the next image request",
"i18n.close": "Close",
"i18n.copy": "Copy",
"i18n.copied": "Copied",
@@ -389,6 +410,19 @@ export const enLocale: LocalePlugin = {
"i18n.configuredVersion": "configured {version}",
"i18n.extensions": "Extensions",
"i18n.prompts": "Prompts",
"extensions.app": "App",
"extensions.project": "Project",
"extensions.builtin": "Built-in",
"extensions.enabled": "enabled",
"extensions.disabled": "disabled",
"extensions.blocked": "blocked",
"extensions.total": "extensions",
"extensions.status": "Status",
"extensions.source": "Source",
"extensions.path": "Path",
"extensions.noExtensions": "No direct extensions found",
"extensions.projectResourcesBlocked": "Project extensions are blocked until this project is trusted.",
"extensions.diagnostics": "diagnostics",
"i18n.themes": "Themes",
"i18n.resourceCount": "{count} {label}",
"i18n.extensionShort": "ext",