Zephyr v2.4.0
Zephyr v2.4.0 — ARM64 原生支持、配置备份与恢复、WebView 崩溃恢复、UnoCSS 迁移
新增 Linux ARM64 原生构建 + Windows ARM64 交叉编译;事务性配置导出/导入;Windows WebView2 崩溃防御恢复;系统休眠唤醒后核心健康检查;x86_64-v3 指令集运行时检测;双源竞速更新检查;Tailwind CSS v4 → UnoCSS presetWind4 迁移;导航栏微动效系统;Design Token 4 级 Radius + semantic color;组件系统(Form Control / Status Dot / Latency Badge / Danger Zone / Status Ring);无障碍增强(ARIA + disabled 状态 + reduced-motion);窗口状态持久化;3D 悬停效果性能优化;83 个细粒度错误码;cargo-deny 安全审计。
新功能 — 平台
ARM64 原生支持
全平台 ARM64 架构支持,覆盖构建、打包、发布全链路。
CPU v3 指令集检测
运行时检测 x86_64-v3 指令集支持(AVX2、BMI1/2、FMA),选择最优 mihomo 二进制。
新功能 — 后端
配置备份与恢复
事务性配置导出/导入系统,支持完整配置迁移。
WebView 崩溃恢复
Windows 平台 WebView2 进程崩溃时自动恢复,无需用户手动重启。
系统休眠恢复
系统从睡眠/休眠唤醒后自动检查 mihomo 核心健康状态。
静默启动
启动时主窗口保持隐藏,仅显示托盘图标。
- 设置入口:Settings → General → Silent Start
- 点击托盘图标显示窗口
Settings Schema 迁移系统
settings.json 新增 schema_version 字段,支持自动迁移。
catch_unwind 守卫
关键函数(start_core、write_config_file、update_core)包装 AssertUnwindSafe + catch_unwind。
双源竞速更新检查
同时请求 GitHub REST API 和 Atom Feed,首个成功响应获胜。
窗口状态持久化
窗口位置、大小、最大化状态跨会话持久化。
多组件更新进度
更新系统新增 UpdateComponent 枚举(Core / GeoData / Client),下载进度事件携带组件标识,前端据此路由到正确的进度指示器。
83 个细粒度错误码
后端错误码从 48 个扩充到 83 个(+35),覆盖所有后端错误路径。
cargo-deny + audit.toml 安全审计
新增供应链安全审计配置。
deny.toml:cargo-deny 配置(license/advisory/ban/source)audit.toml:cargo-audit 配置
新功能 — 前端
Tailwind CSS v4 → UnoCSS presetWind4 迁移
前端 CSS 引擎从 Tailwind CSS v4 全面迁移到 UnoCSS presetWind4。
导航栏微动效系统
侧边栏导航图标新增完整的微动效系统,每个页面有独特的动画语言。
3D 悬停效果性能优化
代理卡片 3D 透视悬停效果重构,消除布局抖动。
Design Token 4 级 Radius 系统
Radius 从 sm/md/lg 三级收敛为 4 级语义化系统。
Semantic Color Token
消除 15+ 文件中的硬编码颜色,统一使用 semantic token 类名。
无障碍增强
- Disabled 状态统一:扩展到
:is(button, input, select, textarea, .btn, .form-control, .select-common, .dropdown-item, [role="button"]):is(:disabled, [disabled], [aria-disabled="true"]) - Hover 禁用保护:所有
btn-*:hover添加:not(:disabled, [disabled], [aria-disabled="true"], .active) - Collapsible ARIA:
role="button"+tabindex="0"+aria-expanded+aria-controls+ keyboard(Enter/Space) - Roving tabindex disabled guard:
isDisabled()helper,键盘激活(Enter/Space)检查 disabled 状态 - Dropdown disabled 守卫:hover / click / option click 全部检查 disabled
- Proxies reduced-motion:检测
prefers-reduced-motion,滚动文本添加tabindex+role+aria-label - Rule library ARIA:分组头部
role="button"+tabindex="0" - Focus ring adapter:
--zephyr-focus-ring/ring-soft/border通过color-mix实现主题感知 - Transition tokens:
--zephyr-time-standard/--zephyr-easing-ease-out替代硬编码值 - btn-success 颜色修正:从
--color-accent改为--zephyr-color-success - Button type 统一:所有按钮添加
type="button"
Bug 修复
- Linux 托盘剪贴板:WebKit2GTK 要求窗口焦点才能使用
navigator.clipboard,从托盘菜单点击时无法保证焦点。剪贴板写入从 JS 迁移到 Rustarboardcrate(Linux 启用wayland-data-controlfeature 支持 Wayland) - 加密配置规则提取:
prism_rebuild、PrismHost::get_profile、update_config中std::fs::read_to_string替换为read_profile_file,自动解密encrypt_configs加密的 profile,修复 "No 'rules' section found" 错误 - 规则库分组头部视觉:从
bg-muted改为border + bg-input样式,折叠时 opacity 0.55,悬停时 border-strong - Confirm modal 空消息处理:
showConfirmModal在 message 为空/null 时跳过渲染消息区域,不再显示空白琥珀色框 - CI frontend-audit:非 PR 事件跳过 dependency-review-action 防止失败