+
+
+ 任务运行
+
+ } loading={loading} onClick={load}>
+ 刷新
+
+
+
+ {/* Active tasks */}
+ {activeTasks.length > 0 && (
+
+
+ 进行中 ({activeTasks.length})
+
+ {activeTasks.map(renderTask)}
+
+ )}
+
+ {/* Finished tasks */}
+ {finishedTasks.length > 0 && (
+
+
+ 已完成 ({finishedTasks.length})
+
+ {finishedTasks.map(renderTask)}
+
+ )}
+
+ {tasks.length === 0 && !loading && (
+
+ )}
+
+ {/* Log drawer */}
+
+
+ 任务日志
+ {logTaskId && (
+
+ {logTaskId}
+
+ )}
+
+ }
+ open={!!logTaskId}
+ onClose={() => setLogTaskId(null)}
+ width={720}
+ destroyOnClose
+ bodyStyle={{ padding: 16 }}
+ >
+ {logTaskId && }
+
+
+ )
+}
diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx
index 7f6de91..89fa707 100644
--- a/frontend/src/pages/Settings.tsx
+++ b/frontend/src/pages/Settings.tsx
@@ -221,6 +221,8 @@ const TAB_ITEMS = [
{ key: 'cfworker_admin_token', label: '管理员 Token', secret: true },
{ key: 'cfworker_custom_auth', label: '站点密码', secret: true },
{ key: 'cfworker_subdomain', label: '固定子域名', placeholder: 'mail / pool-a' },
+ { key: 'email_domain_rule_enabled', label: '启用域名规则', type: 'boolean' },
+ { key: 'email_domain_level_count', label: '域名级数(N 级)', placeholder: '例如 2 / 3 / 4' },
{ key: 'cfworker_random_subdomain', label: '随机子域名', type: 'boolean' },
{ key: 'cfworker_random_name_subdomain', label: '随机姓名子域名', type: 'boolean' },
{ key: 'cfworker_fingerprint', label: 'Fingerprint', placeholder: '6703363b...' },
@@ -570,6 +572,10 @@ function ConfigField({ field }: { field: FieldConfig }) {
const helpText =
field.key === 'default_executor'
? '仅对支持的平台生效;ChatGPT、Cursor、Grok、Kiro、Tavily、Trae 支持浏览器模式,OpenBlockLabs 仅支持纯协议。'
+ : field.key === 'email_domain_rule_enabled'
+ ? '仅 CF Worker 生效:开启后会校验域名级数,以及域名至少包含 2 个字母和 2 个数字。'
+ : field.key === 'email_domain_level_count'
+ ? '例如 2=example.com,3=a.example.com,4=a.b.example.com。'
: undefined
return (
@@ -1088,10 +1094,20 @@ function ContributionPanel({
const [statsResponse, setStatsResponse] = useState