From aa1dedc932ce5b173e6b44ce3052feaf1b340c13 Mon Sep 17 00:00:00 2001 From: hkfires <10558748+hkfires@users.noreply.github.com> Date: Fri, 7 Nov 2025 22:02:29 +0800 Subject: [PATCH] feat(ui): mark runtime-only auth files and disable actions --- app.js | 42 ++++++++++++++++++++++++------------------ styles.css | 21 +++++++++++++++++++++ 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/app.js b/app.js index 4d312c2..f6e1911 100644 --- a/app.js +++ b/app.js @@ -3370,17 +3370,13 @@ class CLIProxyManager { if (fileStats.success === 0 && fileStats.failure === 0) { const nameWithoutExt = file.name.replace(/\.[^/.]+$/, ""); // 去掉扩展名 - // 后端有两种脱敏规则,都要尝试: - // 规则1:完整描述脱敏 - mikiunameina@gmail.com (ethereal-advice-465201-t0) -> 脱敏 -> miki...-t0) - // 规则2:直接整体脱敏 - mikiunameina@gmail.com-ethereal-advice-465201-t0 -> 脱敏 -> ??? - const possibleSources = []; // 规则1:尝试完整描述脱敏 const match = nameWithoutExt.match(/^([^@]+@[^-]+)-(.+)$/); if (match) { - const email = match[1]; // mikiunameina@gmail.com - const projectName = match[2]; // ethereal-advice-465201-t0 + const email = match[1]; + const projectName = match[2]; // 组合成完整的描述格式 const fullDescription = `${email} (${projectName})`; @@ -3448,8 +3444,28 @@ class CLIProxyManager { } const typeBadge = `${i18n.t(typeDisplayKey)}`; + // 检查是否为 runtime-only 文件 + const isRuntimeOnly = file.runtime_only === true; + + // 生成操作按钮 HTML,runtime-only 文件显示虚拟标记 + const actionsHtml = isRuntimeOnly ? ` +
+ 虚拟认证文件 +
` : ` +
+ + + +
`; + return ` -
+
${typeBadge}${file.name}
@@ -3465,17 +3481,7 @@ class CLIProxyManager { ${i18n.t('stats.failure')}: ${fileStats.failure}
-
- - - -
+ ${actionsHtml}
diff --git a/styles.css b/styles.css index 8f40bb5..dd94a1e 100644 --- a/styles.css +++ b/styles.css @@ -1683,6 +1683,27 @@ input:checked+.slider:before { border: 1px dashed #666666; } +/* 虚拟认证文件标记样式 */ +.virtual-auth-badge { + background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); + color: white; + font-size: 13px; + padding: 4px 8px; + border-radius: 12px; + font-weight: 500; + text-align: center; + display: inline-block; + width: 100%; + box-shadow: 0 2px 4px rgba(59, 130, 246, 0.25); + letter-spacing: 0.3px; +} + +[data-theme="dark"] .virtual-auth-badge { + background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); + box-shadow: 0 2px 4px rgba(96, 165, 250, 0.25); +} + + .provider-list { /* 默认不限制高度,动态设置 */ min-height: 0;