Files
ZenEcho b48e639490 feat: 引入共享类型与工具层,重构代码结构并优化用户体验
- 新增 `shared/` 目录,统一管理前后端共享的类型定义与工具函数,消除重复代码
- 重构 IPC 数据传输,使用 `toIpcSafeSnapshot` 确保序列化安全
- 新增系统托盘独立窗口 (`/tray` 路由) 与主窗口关闭行为设置,提升用户体验
- 优化 Sing-box 配置校验错误提示,增强可读性
- 修复订阅更新无新节点时的提示逻辑
- 更新项目依赖与构建配置,支持共享层路径别名 (`@shared`)
- 补充单元测试,完善国际化词条
2026-03-01 16:50:40 +08:00

89 lines
2.0 KiB
TypeScript

// ============================
// 设置相关类型
// ============================
/** 节点检测方式 */
export type CheckMethod = 'ping' | 'tcp' | 'http'
/** DNS 模式 */
export type DnsMode = 'secure' | 'system'
/** 加速网络模式 */
export type AccelNetworkMode = 'tun' | 'system_proxy'
/** 网络调优预设 */
export type NetworkProfile = 'stable' | 'aggressive'
/** UDP 偏好模式 */
export type UdpMode = 'auto' | 'prefer_udp' | 'prefer_tcp'
/** TUN 栈模式 */
export type TunStackMode = 'system' | 'mixed'
/** VLESS 包编码覆盖 */
export type VlessPacketEncodingOverride = 'off' | 'xudp'
/** 会话级网络调优选项 */
export interface SessionNetworkTuningOptions {
enabled: boolean
profile: NetworkProfile
udpMode: UdpMode
tunMtu: number
tunStack: TunStackMode
strictRoute: boolean
vlessPacketEncodingOverride: VlessPacketEncodingOverride
highLossHintOnly: boolean
}
// ============================
// 外观相关类型
// ============================
/** 主题模式 */
export type Theme = 'light' | 'dark' | 'auto'
/** 主题色 */
export type ThemeColor = 'green' | 'blue' | 'purple' | 'orange' | 'red'
// ============================
// 延迟记录类型
// ============================
/** 节点延迟测试记录 */
export interface LatencyRecord {
id?: number
nodeKey: string
server: string
port: number
method: 'ping' | 'tcp' | 'http'
latency: number
loss: number
timestamp: number
gameId?: string
accelerationSeconds?: number
sessionLossRate?: number
}
/** 延迟测试上下文 */
export interface CheckRecordContext {
recordLatency?: boolean
gameId?: string
accelerationSeconds?: number
sessionLossRate?: number
}
// ============================
// 日志类型
// ============================
/** 前端日志级别 */
export type FrontendLogLevel = 'debug' | 'info' | 'warn' | 'error'
/** 前端日志载荷 */
export type FrontendLogPayload = {
level: FrontendLogLevel
source: string
message: string
detail?: string
}