Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 0 additions & 114 deletions desktop/renderer/src/components/UsagePanel.vue
Original file line number Diff line number Diff line change
Expand Up @@ -148,21 +148,6 @@
</div>
</section>

<!-- Skills -->
<section class="panel-section">
<div class="section-head">
<span class="section-title">{{ t("usage.skillsTitle") }}</span>
<button class="section-add" :title="t('usage.openSkills')" @click="goSkillSettings">
+
</button>
</div>

<div v-if="skillChips.length" class="skill-grid">
<span v-for="s in skillChips" :key="s" class="skill-chip">{{ s }}</span>
</div>
<div v-else class="skill-empty">{{ t("usage.noSkills") }}</div>
</section>

<!-- Gateway-offline sticky banner -->
<div v-if="gatewayOffline" class="gateway-banner">
<span class="gateway-banner-text">{{ t("usage.gatewayOffline") }}</span>
Expand All @@ -171,9 +156,6 @@
</button>
</div>
</div>
<button v-if="hasMoreSkills" class="view-more-btn" @click="goSkillSettings">
{{ t("usage.viewMoreSkills") }}
</button>
</aside>
</template>

Expand All @@ -197,11 +179,9 @@ const { isOpen, close } = useUsagePanel();

// --- State ---
const data = ref<any>(null);
const skills = ref<Array<{ name?: string; id?: string; enabled?: boolean }>>([]);
const loading = ref(false);
const modelErrored = ref(false);

const MAX_SKILL_CHIPS = 9;
const agentName = computed(() => t("app.name"));

// --- Derived ---
Expand Down Expand Up @@ -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 "—";
Expand All @@ -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");
Expand All @@ -329,7 +278,6 @@ watch(isOpen, (open) => {
if (open) {
// Delay data loading until slide-in animation completes
setTimeout(() => {
loadSkills();
if (!gatewayOffline.value) loadData();
}, 300);
}
Expand All @@ -340,7 +288,6 @@ const stopGatewayWatch = watch(
(online, wasOnline) => {
if (isOpen.value && online && !wasOnline) {
loadData();
loadSkills();
}
},
);
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
31 changes: 0 additions & 31 deletions desktop/renderer/src/i18n/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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.",
Expand Down
31 changes: 0 additions & 31 deletions desktop/renderer/src/i18n/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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": "数据与隐私",
Expand Down Expand Up @@ -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": "自定义模型已添加",
Expand Down Expand Up @@ -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": "隐私",
Expand Down Expand Up @@ -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": "打开设置",
Expand Down
Loading
Loading