diff --git a/web/src/config/modules.ts b/web/src/config/modules.ts
index 7476da9..7898fa4 100644
--- a/web/src/config/modules.ts
+++ b/web/src/config/modules.ts
@@ -20,7 +20,6 @@ export type ModuleDefinition = {
path: string;
section: WorkbenchSection;
labelKey: string;
- descKey?: string;
iconTone: ModuleIconTone;
iconKind: ModuleIconKind;
titleKey: string;
@@ -37,7 +36,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/ume",
section: "monitoring",
labelKey: "workbench.cards.umeSync",
- descKey: "workbench.cards.umeSyncDesc",
iconTone: "blue",
iconKind: "sync",
titleKey: "layout.titleUme",
@@ -48,7 +46,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/ne",
section: "operations",
labelKey: "workbench.cards.managedNe",
- descKey: "workbench.cards.managedNeDesc",
iconTone: "green",
iconKind: "server",
titleKey: "layout.titleManagedNe",
@@ -59,7 +56,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/network",
section: "operations",
labelKey: "workbench.cards.network",
- descKey: "workbench.cards.networkDesc",
iconTone: "slate",
iconKind: "network",
titleKey: "layout.titleNetwork",
@@ -70,7 +66,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/topology",
section: "operations",
labelKey: "workbench.cards.topology",
- descKey: "workbench.cards.topologyDesc",
iconTone: "amber",
iconKind: "topology",
titleKey: "layout.titleTopology",
@@ -81,7 +76,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/webcrt",
section: "operations",
labelKey: "workbench.cards.webcrt",
- descKey: "workbench.cards.webcrtDesc",
iconTone: "slate",
iconKind: "terminal",
titleKey: "layout.titleWebcrt",
@@ -92,7 +86,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/port-traffic/wall",
section: "operations",
labelKey: "workbench.cards.portTrafficWall",
- descKey: "workbench.cards.portTrafficWallDesc",
iconTone: "amber",
iconKind: "wall",
titleKey: "layout.titlePortTrafficWall",
@@ -104,7 +97,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/users",
section: "system",
labelKey: "workbench.cards.users",
- descKey: "workbench.cards.usersDesc",
iconTone: "slate",
iconKind: "users",
titleKey: "layout.titleUsers",
@@ -115,7 +107,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/audit",
section: "system",
labelKey: "workbench.cards.audit",
- descKey: "workbench.cards.auditDesc",
iconTone: "amber",
iconKind: "audit",
titleKey: "layout.titleAudit",
@@ -125,7 +116,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/api-keys",
section: "system",
labelKey: "workbench.cards.apiKeys",
- descKey: "workbench.cards.apiKeysDesc",
iconTone: "green",
iconKind: "key",
titleKey: "layout.titleApiKeys",
@@ -135,7 +125,6 @@ export const MODULES: readonly ModuleDefinition[] = [
path: "/sessions",
section: "system",
labelKey: "workbench.cards.sessions",
- descKey: "workbench.cards.sessionsDesc",
iconTone: "slate",
iconKind: "key",
titleKey: "layout.titleSessions",
diff --git a/web/src/i18n/en.ts b/web/src/i18n/en.ts
index c01d801..a2caea7 100644
--- a/web/src/i18n/en.ts
+++ b/web/src/i18n/en.ts
@@ -79,27 +79,16 @@ const en = {
},
cards: {
umeSync: "UME Sync",
- umeSyncDesc: "UME alarms, subscription & inventory",
network: "Network Management",
- networkDesc: "NE inventory, alarms, config sync, and monitoring tasks",
managedNe: "NE Management",
- managedNeDesc: "Multi-vendor SSH/Telnet NEs & connectivity test",
collect: "Batch Collect",
- collectDesc: "Run custom CLI commands on connected NEs and save logs",
webcrt: "WebCRT",
- webcrtDesc: "Interactive browser login to connected NEs (SSH/Telnet)",
topology: "Topology",
- topologyDesc: "Fabric topology views; LLDP physical discovery; MCP paged graph query",
portTrafficWall: "Traffic wall",
- portTrafficWallDesc: "Named traffic boards in dedicated tabs",
users: "Users",
- usersDesc: "Admin: create, disable users and reset passwords",
audit: "Audit",
- auditDesc: "Live task overview and operation logs",
apiKeys: "API Keys",
- apiKeysDesc: "Issue MCP/script tokens per user with expiry",
sessions: "Login sessions",
- sessionsDesc: "Review and revoke logins on other devices",
},
},
network: {
diff --git a/web/src/i18n/zh.ts b/web/src/i18n/zh.ts
index d4782ad..4d32ab0 100644
--- a/web/src/i18n/zh.ts
+++ b/web/src/i18n/zh.ts
@@ -79,27 +79,16 @@ const zh = {
},
cards: {
umeSync: "UME同步",
- umeSyncDesc: "UME 告警同步、订阅与清单",
network: "网络管理",
- networkDesc: "网元清单、告警、配置同步与监控任务",
managedNe: "网元管理",
- managedNeDesc: "多厂商 SSH/Telnet 网元与连通性测试",
collect: "批量采集",
- collectDesc: "对已连通网元执行定制 CLI 命令并保存日志",
webcrt: "WebCRT",
- webcrtDesc: "浏览器内交互登录已连通网元(SSH/Telnet)",
topology: "拓扑管理",
- topologyDesc: "Fabric 拓扑视图;LLDP 发现物理链路,MCP 可分页拉图",
portTrafficWall: "流量大屏",
- portTrafficWallDesc: "独立页签打开命名流量大屏",
users: "用户管理",
- usersDesc: "管理员添加、禁用用户并重置密码",
audit: "操作审计",
- auditDesc: "任务概览与操作日志",
apiKeys: "API Key",
- apiKeysDesc: "为用户生成 MCP/脚本用 Token,可设有效期",
sessions: "登录会话",
- sessionsDesc: "查看并踢掉其他设备上的登录",
},
},
network: {
diff --git a/web/src/pages/ApiTokensPage.tsx b/web/src/pages/ApiTokensPage.tsx
index 22f58e2..3a0a6f8 100644
--- a/web/src/pages/ApiTokensPage.tsx
+++ b/web/src/pages/ApiTokensPage.tsx
@@ -164,10 +164,13 @@ export function ApiTokensPage() {
createMut.mutate();
};
+ const dismissCreatedPlain = () => setCreatedPlain("");
+
const copyToken = async () => {
try {
await navigator.clipboard.writeText(createdPlain);
showOk(t("auth.tokenCopied"));
+ dismissCreatedPlain();
} catch {
showError(t("auth.tokenCopyFailed"));
}
@@ -260,6 +263,9 @@ export function ApiTokensPage() {
+
) : null}