From cc1bc604508684da4782eeeca63b3e08ff0f845b Mon Sep 17 00:00:00 2001 From: "Tao Sun (from Dev Box)" Date: Wed, 29 Jul 2026 18:15:38 +0800 Subject: [PATCH] Hide Skills UI: remove Settings Skills section + Usage skills widget Step 3 of the hide-Skills feature. Renderer-only removal of the three user-facing Skills management surfaces: - Settings > Skills section (nav item, section, and all skill list/toggle logic) - Usage panel skills widget (chips, view-more button, and loaders) - Orphaned settings.* and usage.* skills i18n keys in en-US and zh-CN The skill-integrity / tamper-detection dialog and the window.openclaw.skills IPC surface it depends on are intentionally kept. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1fe75171-fea2-45ef-9401-bf8a4ea0f2ba --- .../renderer/src/components/UsagePanel.vue | 114 -------- desktop/renderer/src/i18n/en-US.ts | 31 -- desktop/renderer/src/i18n/zh-CN.ts | 31 -- desktop/renderer/src/views/SettingsView.vue | 268 +----------------- 4 files changed, 1 insertion(+), 443 deletions(-) diff --git a/desktop/renderer/src/components/UsagePanel.vue b/desktop/renderer/src/components/UsagePanel.vue index a6f855b..98f68dc 100644 --- a/desktop/renderer/src/components/UsagePanel.vue +++ b/desktop/renderer/src/components/UsagePanel.vue @@ -148,21 +148,6 @@ - -
-
- {{ t("usage.skillsTitle") }} - -
- -
- {{ s }} -
-
{{ t("usage.noSkills") }}
-
-
{{ t("usage.gatewayOffline") }} @@ -171,9 +156,6 @@
- @@ -197,11 +179,9 @@ const { isOpen, close } = useUsagePanel(); // --- State --- const data = ref(null); -const skills = ref>([]); const loading = ref(false); const modelErrored = ref(false); -const MAX_SKILL_CHIPS = 9; const agentName = computed(() => t("app.name")); // --- Derived --- @@ -265,19 +245,6 @@ const counts = computed(() => { }; }); -const skillChips = computed(() => - skills.value - .filter((s) => s.enabled !== false) - .map((s) => s.name || s.id || "") - .filter(Boolean) - .slice(0, MAX_SKILL_CHIPS), -); - -const hasMoreSkills = computed(() => { - const enabledCount = skills.value.filter((s) => s.enabled !== false).length; - return enabledCount > MAX_SKILL_CHIPS; -}); - // --- Helpers --- function formatTokens(n: number): string { if (!n && n !== 0) return "—"; @@ -301,24 +268,6 @@ async function loadData() { } } -async function loadSkills() { - try { - const res = await (window as any).openclaw.skills.list(); - const all: any[] = []; - if (Array.isArray(res?.builtin)) all.push(...res.builtin); - if (Array.isArray(res?.custom)) all.push(...res.custom); - if (Array.isArray(res?.managed)) all.push(...res.managed); - skills.value = all; - } catch { - skills.value = []; - } -} - -function goSkillSettings() { - close(); - router.push("/settings/skills"); -} - function goSettings() { close(); router.push("/settings"); @@ -329,7 +278,6 @@ watch(isOpen, (open) => { if (open) { // Delay data loading until slide-in animation completes setTimeout(() => { - loadSkills(); if (!gatewayOffline.value) loadData(); }, 300); } @@ -340,7 +288,6 @@ const stopGatewayWatch = watch( (online, wasOnline) => { if (isOpen.value && online && !wasOnline) { loadData(); - loadSkills(); } }, ); @@ -736,54 +683,6 @@ html.dark .usage-backdrop { color: var(--text-secondary); } -/* ── Skill grid ── */ -.skill-grid { - display: flex; - flex-wrap: wrap; - gap: 6px; -} - -.skill-chip { - padding: 6px 12px; - background: #f3f3f5; - border: 1px solid #d8d8d8; - border-radius: 999px; - font-size: 12px; - color: #1d1d1f; - transition: background 0.15s; -} - -.skill-chip:hover { - background: var(--bg-tertiary); -} - -.skill-empty { - font-size: 12px; - color: var(--text-muted); - padding: 8px 0; -} - -.view-more-btn { - margin: 0 var(--usage-drawer-padding) var(--usage-drawer-padding); - padding: 10px; - background: var(--bg-secondary); - border: 1px solid var(--border); - border-radius: 12px; - font-size: 13px; - color: #555; - flex-shrink: 0; - cursor: pointer; - transition: - background 0.15s, - color 0.15s; - font-family: inherit; -} - -.view-more-btn:hover { - background: var(--bg-tertiary); - color: var(--text-primary); -} - /* ── Skeleton loading ── */ .skeleton { display: inline-block; @@ -904,19 +803,6 @@ html.dark .chip { color: var(--text-secondary); } -html.dark .skill-chip { - background: var(--bg-tertiary); - border-color: var(--border); - color: var(--text-primary); -} -html.dark .skill-chip:hover { - background: var(--bg-hover, var(--bg-tertiary)); -} - -html.dark .view-more-btn { - color: var(--text-secondary); -} - html.dark .gateway-banner { background: #1a1a1d; color: #f5f5f5; diff --git a/desktop/renderer/src/i18n/en-US.ts b/desktop/renderer/src/i18n/en-US.ts index 579c463..a45d6b4 100644 --- a/desktop/renderer/src/i18n/en-US.ts +++ b/desktop/renderer/src/i18n/en-US.ts @@ -230,31 +230,9 @@ export default { "settings.callsSuffix": "calls", "settings.inputSuffix": "input", "settings.outputSuffix": "output", - "settings.skillManagement": "Skill Management", - "settings.builtinSkills": "Built-in Skills", - "settings.enabledCount": "enabled", "settings.windowsAdapt": "Windows", "settings.otherPlatforms": "Other Platforms", - "settings.noBuiltinSkills": "No built-in skills detected", - "settings.skillUnavailable": "Unavailable", - "settings.skillMissingDeps": "Disabled — requires {bins} (not installed on this machine)", - "settings.skillUnavailablePrefix": "Unavailable —", - "settings.skillMissingBins": "requires {bins} (not installed on this machine)", - "settings.skillMissingAnyBins": "requires one of {bins} (none installed)", - "settings.skillMissingEnv": "requires environment variable(s) {env}", - "settings.skillMissingConfig": "requires configuration: {config}", - "settings.skillOsMismatch": "only supported on {os}", - "settings.askAgent": "Ask Agent", - "settings.askAgentPrompt": - 'The skill "{name}" is unavailable in MicroClaw: {reason}. How can I resolve this so the skill becomes available?', - "settings.refreshSkills": "Refresh", - "settings.skillsRefreshed": "Skills refreshed", - "settings.skillsRefreshFailed": "Failed to refresh skills: {error}", - "settings.managedSkills": "Managed Skills", - "settings.customSkills": "Custom Skills", "settings.notInstalled": "Not Installed", - "settings.noManagedSkills": "No managed skills", - "settings.noCustomSkills": "No custom skills", "settings.connectionStatus": "Connection Status", "settings.status": "Status", "settings.privacy": "Data & Privacy", @@ -347,10 +325,6 @@ export default { "MicroClaw uses the configured provider for web search. The gateway restarts automatically after you save.", "settings.getApiKey": "Get API key", "settings.save": "Save", - "settings.skillConfigUpdated": "Skill configuration updated", - "settings.skillConfigFailed": "Failed to update skill config: {error}", - "settings.managedSkillConfigUpdated": "Managed skill configuration updated", - "settings.managedSkillConfigFailed": "Failed to update managed skill config: {error}", "settings.configSaveFailed": "Failed to save configuration: {error}", "settings.modelSwitched": "Model switched to {model}", "settings.customModelAdded": "Custom model added", @@ -379,7 +353,6 @@ export default { "settings.menu.theme": "Appearance", "settings.menu.usage": "Usage", "settings.menu.models": "Models", - "settings.menu.skills": "Skills", "settings.menu.gateway": "Gateway", "settings.menu.channels": "Channels", "settings.menu.privacy": "Privacy", @@ -633,10 +606,6 @@ export default { "usage.requestsLabel": "requests", "usage.sessionsLabel": "sessions", "usage.toolCallsLabel": "tool calls", - "usage.viewMoreSkills": "View more", - "usage.skillsTitle": "Skills", - "usage.openSkills": "Manage skills", - "usage.noSkills": "No skills installed", "usage.modelOfflineTitle": "Model not connected — agent paused", "usage.modelOfflineHint": "Check the model configuration in Settings. Usage data will refresh once the connection is restored.", diff --git a/desktop/renderer/src/i18n/zh-CN.ts b/desktop/renderer/src/i18n/zh-CN.ts index 5b23978..5a0277b 100644 --- a/desktop/renderer/src/i18n/zh-CN.ts +++ b/desktop/renderer/src/i18n/zh-CN.ts @@ -218,31 +218,9 @@ export default { "settings.callsSuffix": "次调用", "settings.inputSuffix": "输入", "settings.outputSuffix": "输出", - "settings.skillManagement": "技能管理", - "settings.builtinSkills": "内置技能", - "settings.enabledCount": "已启用", "settings.windowsAdapt": "Windows 适配", "settings.otherPlatforms": "其他平台", - "settings.noBuiltinSkills": "未检测到内置技能", - "settings.skillUnavailable": "不可用", - "settings.skillMissingDeps": "已禁用 — 需要 {bins}(本机未安装)", - "settings.skillUnavailablePrefix": "不可用 —", - "settings.skillMissingBins": "需要 {bins}(本机未安装)", - "settings.skillMissingAnyBins": "需要以下之一 {bins}(均未安装)", - "settings.skillMissingEnv": "需要环境变量 {env}", - "settings.skillMissingConfig": "需要配置项:{config}", - "settings.skillOsMismatch": "仅支持 {os}", - "settings.askAgent": "询问助手", - "settings.askAgentPrompt": - "技能“{name}”在 MicroClaw 中当前不可用:{reason}。我该如何解决才能启用该技能?", - "settings.refreshSkills": "刷新", - "settings.skillsRefreshed": "技能已刷新", - "settings.skillsRefreshFailed": "刷新技能失败:{error}", - "settings.managedSkills": "托管技能", - "settings.customSkills": "自定义技能", "settings.notInstalled": "未安装", - "settings.noManagedSkills": "暂无托管技能", - "settings.noCustomSkills": "暂无自定义技能", "settings.connectionStatus": "连接状态", "settings.status": "状态", "settings.privacy": "数据与隐私", @@ -329,10 +307,6 @@ export default { "settings.webSearchDesc": "MicroClaw 使用已配置的提供商进行联网搜索。保存后网关将自动重启生效。", "settings.getApiKey": "获取 API 密钥", "settings.save": "保存", - "settings.skillConfigUpdated": "技能配置已更新", - "settings.skillConfigFailed": "技能配置更新失败: {error}", - "settings.managedSkillConfigUpdated": "托管技能配置已更新", - "settings.managedSkillConfigFailed": "托管技能配置更新失败: {error}", "settings.configSaveFailed": "配置保存失败: {error}", "settings.modelSwitched": "模型已切换为 {model}", "settings.customModelAdded": "自定义模型已添加", @@ -360,7 +334,6 @@ export default { "settings.menu.theme": "外观", "settings.menu.usage": "用量", "settings.menu.models": "模型", - "settings.menu.skills": "技能", "settings.menu.gateway": "网关", "settings.menu.channels": "频道", "settings.menu.privacy": "隐私", @@ -608,10 +581,6 @@ export default { "usage.requestsLabel": "请求", "usage.sessionsLabel": "会话", "usage.toolCallsLabel": "工具调用", - "usage.viewMoreSkills": "查看更多", - "usage.skillsTitle": "技能", - "usage.openSkills": "技能管理", - "usage.noSkills": "暂未安装技能", "usage.modelOfflineTitle": "模型未连接,Agent 暂停服务", "usage.modelOfflineHint": "请在「设置」中检查模型配置,连接恢复后会自动刷新用量数据。", "usage.openSettings": "打开设置", diff --git a/desktop/renderer/src/views/SettingsView.vue b/desktop/renderer/src/views/SettingsView.vue index 7245148..01b08d4 100644 --- a/desktop/renderer/src/views/SettingsView.vue +++ b/desktop/renderer/src/views/SettingsView.vue @@ -262,106 +262,6 @@ - -
- - - -
- {{ t("settings.builtinSkills") }} ({{ builtinSkills.length }}) - {{ enabledCount }}/{{ builtinSkills.length }} {{ t("settings.enabledCount") }} -
- -
-
-
-
- {{ skill.name }} - - {{ t("settings.skillUnavailable") }} - -
- {{ skill.description }} -
- - {{ t("settings.askAgent") }} - - -
-
- -
-
- {{ t("settings.noBuiltinSkills") }} -
-
- - -
{{ t("settings.customSkills") }} ({{ customSkills.length }})
-
- -
- {{ t("settings.noCustomSkills") }} -
-
-
-
@@ -892,10 +792,9 @@