mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-25 06:33:32 +00:00
UI: gateway dashboard with glassmorphism theme system
Add a full-featured gateway dashboard UI built on Lit web components. Shell & plumbing: - App shell with router, controllers, and dependency wiring - Login gate, i18n keys, and base layout scaffolding Styles & theming: - Base styles, chat styles, and responsive layout CSS - 6-theme glassmorphism system (Obsidian, Aurora, Solar, etc.) - Glass card, glass panel, and glass input components - Favicon logo in expanded sidebar header Views & features: - Overview with attention cards, event log, quick actions, and log tail - Chat view with markdown rendering, tool-call collapse, and delete support - Command palette with fuzzy search - Agent overview with config display, slash commands, and sidebar filtering - Session list navigation and agent selector Privacy & polish: - Redact toggle with stream-mode default - Blur host/IP in Connected Instances with reveal toggle - Sensitive config value masking with count badge - Card accent borders, hover lift effects, and responsive grid
This commit is contained in:
@@ -12,6 +12,7 @@ export const en: TranslationMap = {
|
||||
na: "n/a",
|
||||
docs: "Docs",
|
||||
resources: "Resources",
|
||||
search: "Search",
|
||||
},
|
||||
nav: {
|
||||
chat: "Chat",
|
||||
@@ -99,6 +100,47 @@ export const en: TranslationMap = {
|
||||
hint: "This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open {url} on the gateway host.",
|
||||
stayHttp: "If you must stay on HTTP, set {config} (token-only).",
|
||||
},
|
||||
connection: {
|
||||
title: "How to connect",
|
||||
step1: "Start the gateway on your host machine:",
|
||||
step2: "Get a tokenized dashboard URL:",
|
||||
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
|
||||
step4: "Or generate a reusable token:",
|
||||
docsHint: "For remote access, Tailscale Serve is recommended. ",
|
||||
docsLink: "Read the docs →",
|
||||
},
|
||||
cards: {
|
||||
cost: "Cost",
|
||||
skills: "Skills",
|
||||
recentSessions: "Recent Sessions",
|
||||
},
|
||||
attention: {
|
||||
title: "Attention",
|
||||
},
|
||||
eventLog: {
|
||||
title: "Event Log",
|
||||
},
|
||||
logTail: {
|
||||
title: "Gateway Logs",
|
||||
},
|
||||
quickActions: {
|
||||
newSession: "New Session",
|
||||
automation: "Automation",
|
||||
refreshAll: "Refresh All",
|
||||
terminal: "Terminal",
|
||||
},
|
||||
streamMode: {
|
||||
active: "Stream mode — values redacted",
|
||||
disable: "Disable",
|
||||
},
|
||||
palette: {
|
||||
placeholder: "Type a command…",
|
||||
noResults: "No results",
|
||||
},
|
||||
},
|
||||
login: {
|
||||
subtitle: "Gateway Dashboard",
|
||||
passwordPlaceholder: "optional",
|
||||
},
|
||||
chat: {
|
||||
disconnected: "Disconnected from gateway.",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const pt_BR: TranslationMap = {
|
||||
na: "n/a",
|
||||
docs: "Docs",
|
||||
resources: "Recursos",
|
||||
search: "Pesquisar",
|
||||
},
|
||||
nav: {
|
||||
chat: "Chat",
|
||||
@@ -101,6 +102,47 @@ export const pt_BR: TranslationMap = {
|
||||
hint: "Esta página é HTTP, então o navegador bloqueia a identidade do dispositivo. Use HTTPS (Tailscale Serve) ou abra {url} no host do gateway.",
|
||||
stayHttp: "Se você precisar permanecer em HTTP, defina {config} (apenas token).",
|
||||
},
|
||||
connection: {
|
||||
title: "Como conectar",
|
||||
step1: "Inicie o gateway na sua máquina host:",
|
||||
step2: "Obtenha uma URL do painel com token:",
|
||||
step3: "Cole a URL do WebSocket e o token acima, ou abra a URL com token diretamente.",
|
||||
step4: "Ou gere um token reutilizável:",
|
||||
docsHint: "Para acesso remoto, recomendamos o Tailscale Serve. ",
|
||||
docsLink: "Leia a documentação →",
|
||||
},
|
||||
cards: {
|
||||
cost: "Custo",
|
||||
skills: "Habilidades",
|
||||
recentSessions: "Sessões Recentes",
|
||||
},
|
||||
attention: {
|
||||
title: "Atenção",
|
||||
},
|
||||
eventLog: {
|
||||
title: "Log de Eventos",
|
||||
},
|
||||
logTail: {
|
||||
title: "Logs do Gateway",
|
||||
},
|
||||
quickActions: {
|
||||
newSession: "Nova Sessão",
|
||||
automation: "Automação",
|
||||
refreshAll: "Atualizar Tudo",
|
||||
terminal: "Terminal",
|
||||
},
|
||||
streamMode: {
|
||||
active: "Modo stream — valores ocultos",
|
||||
disable: "Desativar",
|
||||
},
|
||||
palette: {
|
||||
placeholder: "Digite um comando…",
|
||||
noResults: "Sem resultados",
|
||||
},
|
||||
},
|
||||
login: {
|
||||
subtitle: "Painel do Gateway",
|
||||
passwordPlaceholder: "opcional",
|
||||
},
|
||||
chat: {
|
||||
disconnected: "Desconectado do gateway.",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const zh_CN: TranslationMap = {
|
||||
na: "不适用",
|
||||
docs: "文档",
|
||||
resources: "资源",
|
||||
search: "搜索",
|
||||
},
|
||||
nav: {
|
||||
chat: "聊天",
|
||||
@@ -98,6 +99,47 @@ export const zh_CN: TranslationMap = {
|
||||
hint: "此页面为 HTTP,因此浏览器阻止设备标识。请使用 HTTPS (Tailscale Serve) 或在网关主机上打开 {url}。",
|
||||
stayHttp: "如果您必须保持 HTTP,请设置 {config} (仅限令牌)。",
|
||||
},
|
||||
connection: {
|
||||
title: "如何连接",
|
||||
step1: "在主机上启动网关:",
|
||||
step2: "获取带令牌的仪表盘 URL:",
|
||||
step3: "将 WebSocket URL 和令牌粘贴到上方,或直接打开带令牌的 URL。",
|
||||
step4: "或生成可重复使用的令牌:",
|
||||
docsHint: "如需远程访问,建议使用 Tailscale Serve。",
|
||||
docsLink: "查看文档 →",
|
||||
},
|
||||
cards: {
|
||||
cost: "费用",
|
||||
skills: "技能",
|
||||
recentSessions: "最近会话",
|
||||
},
|
||||
attention: {
|
||||
title: "注意事项",
|
||||
},
|
||||
eventLog: {
|
||||
title: "事件日志",
|
||||
},
|
||||
logTail: {
|
||||
title: "网关日志",
|
||||
},
|
||||
quickActions: {
|
||||
newSession: "新建会话",
|
||||
automation: "自动化",
|
||||
refreshAll: "全部刷新",
|
||||
terminal: "终端",
|
||||
},
|
||||
streamMode: {
|
||||
active: "流模式 — 数据已隐藏",
|
||||
disable: "禁用",
|
||||
},
|
||||
palette: {
|
||||
placeholder: "输入命令…",
|
||||
noResults: "无结果",
|
||||
},
|
||||
},
|
||||
login: {
|
||||
subtitle: "网关仪表盘",
|
||||
passwordPlaceholder: "可选",
|
||||
},
|
||||
chat: {
|
||||
disconnected: "已断开与网关的连接。",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const zh_TW: TranslationMap = {
|
||||
na: "不適用",
|
||||
docs: "文檔",
|
||||
resources: "資源",
|
||||
search: "搜尋",
|
||||
},
|
||||
nav: {
|
||||
chat: "聊天",
|
||||
@@ -98,6 +99,47 @@ export const zh_TW: TranslationMap = {
|
||||
hint: "此頁面為 HTTP,因此瀏覽器阻止設備標識。請使用 HTTPS (Tailscale Serve) 或在網關主機上打開 {url}。",
|
||||
stayHttp: "如果您必須保持 HTTP,請設置 {config} (僅限令牌)。",
|
||||
},
|
||||
connection: {
|
||||
title: "如何連接",
|
||||
step1: "在主機上啟動閘道:",
|
||||
step2: "取得帶令牌的儀表板 URL:",
|
||||
step3: "將 WebSocket URL 和令牌貼到上方,或直接開啟帶令牌的 URL。",
|
||||
step4: "或產生可重複使用的令牌:",
|
||||
docsHint: "如需遠端存取,建議使用 Tailscale Serve。",
|
||||
docsLink: "查看文件 →",
|
||||
},
|
||||
cards: {
|
||||
cost: "費用",
|
||||
skills: "技能",
|
||||
recentSessions: "最近會話",
|
||||
},
|
||||
attention: {
|
||||
title: "注意事項",
|
||||
},
|
||||
eventLog: {
|
||||
title: "事件日誌",
|
||||
},
|
||||
logTail: {
|
||||
title: "閘道日誌",
|
||||
},
|
||||
quickActions: {
|
||||
newSession: "新建會話",
|
||||
automation: "自動化",
|
||||
refreshAll: "全部刷新",
|
||||
terminal: "終端",
|
||||
},
|
||||
streamMode: {
|
||||
active: "串流模式 — 數據已隱藏",
|
||||
disable: "禁用",
|
||||
},
|
||||
palette: {
|
||||
placeholder: "輸入指令…",
|
||||
noResults: "無結果",
|
||||
},
|
||||
},
|
||||
login: {
|
||||
subtitle: "閘道儀表板",
|
||||
passwordPlaceholder: "可選",
|
||||
},
|
||||
chat: {
|
||||
disconnected: "已斷開與網關的連接。",
|
||||
|
||||
Reference in New Issue
Block a user