feat(ui): 美化启动界面并重构 /is 工具/插件展示
- 缩小标题加 ❯ 引导符、彩色版本号、中文说明 - 去除启动头部段落间空行 - /is 本地扩展和 npm 扩展合并为 [插件] 分组展示 - /is 新增 [工具] 区块显示所有注册工具及激活状态 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1422,19 +1422,30 @@ export class InteractiveMode {
|
||||
};
|
||||
const { local, packages } = this.splitExtensionsByOrigin(extensions);
|
||||
|
||||
const allExtensionLabels = [
|
||||
...this.getCompactExtensionLabels(local),
|
||||
...this.getCompactExtensionLabels(packages),
|
||||
];
|
||||
const pluginCompactList = formatCompactGrid(allExtensionLabels);
|
||||
|
||||
const expandedParts: string[] = [];
|
||||
if (local.length > 0) {
|
||||
const localGroups = this.buildScopeGroups(local);
|
||||
const localList = this.formatScopeGroups(localGroups, extensionFormatOptions);
|
||||
const localCompactList = formatCompactGrid(this.getCompactExtensionLabels(local));
|
||||
addLoadedSection("本地扩展", localCompactList, localList, "mdHeading", local.length);
|
||||
expandedParts.push(
|
||||
`${theme.fg("mdHeading", " 本地扩展")} ${theme.fg("muted", String(local.length))}\n${localList}`,
|
||||
);
|
||||
}
|
||||
|
||||
if (packages.length > 0) {
|
||||
const packageGroups = this.buildScopeGroups(packages);
|
||||
const packageList = this.formatScopeGroups(packageGroups, extensionFormatOptions);
|
||||
const packageCompactList = formatCompactGrid(this.getCompactExtensionLabels(packages));
|
||||
addLoadedSection("npm 扩展", packageCompactList, packageList, "mdHeading", packages.length);
|
||||
expandedParts.push(
|
||||
`${theme.fg("mdHeading", " npm 扩展")} ${theme.fg("muted", String(packages.length))}\n${packageList}`,
|
||||
);
|
||||
}
|
||||
const pluginExpandedList = expandedParts.join("\n");
|
||||
|
||||
addLoadedSection("插件", pluginCompactList, pluginExpandedList, "mdHeading", extensions.length);
|
||||
}
|
||||
|
||||
// Show loaded themes (excluding built-in)
|
||||
@@ -1459,6 +1470,20 @@ export class InteractiveMode {
|
||||
);
|
||||
addLoadedSection("Themes", themeCompactList, themeList, "mdHeading", customThemes.length);
|
||||
}
|
||||
|
||||
const allTools = this.session.getAllTools();
|
||||
if (allTools.length > 0) {
|
||||
const activeToolNames = new Set(this.session.getActiveToolNames());
|
||||
const toolCompactList = formatCompactGrid(allTools.map((t) => t.name));
|
||||
const toolList = allTools
|
||||
.map((t) => {
|
||||
const active = activeToolNames.has(t.name);
|
||||
const marker = active ? " " : theme.fg("dim", "✗ ");
|
||||
return `${marker}${theme.fg("dim", t.name)}${t.description ? theme.fg("dim", ` ${t.description.split("\n")[0].slice(0, 60)}`) : ""}`;
|
||||
})
|
||||
.join("\n");
|
||||
addLoadedSection("工具", toolCompactList, toolList, "mdHeading", allTools.length);
|
||||
}
|
||||
}
|
||||
|
||||
if (showDiagnostics) {
|
||||
|
||||
Reference in New Issue
Block a user