Skip to content

Releases: qiu-yuxiao/clash-mini

Clash Mini Ver.v3.2.2

Choose a tag to compare

@github-actions github-actions released this 28 Oct 07:53

v3.2.2 Update Logs

📝 Key Changes

⚡ Instant Full-Node Auto-Select in Onboarding & Auto-Launch Switch Polish

  • 修复基础设置「开机自动启动」开关首次点击必然没反应的问题(BUG-312):
    • 现象:在基础设置中点击开机自启开关,第一次必然回弹无反应,必须点第二次才能开启;
    • 根因:BasicSettingsCard 中的 useEffect 依赖了 [verge?.enable_auto_launch]。点击开关触发 patchVerge 乐观更新瞬时,useEffect 立即被触发并调用 getAutoLaunchStatus() 读取注册表。由于此时异步 IPC 写入 Windows 注册表尚未完成,回读得到旧值 false,瞬间将开关覆盖重置回关闭;点第二次时注册表已在前次异步完成,才能读到 true;
    • 修复:增加操作互斥标志,仅在挂载时拉取真实注册表状态;用户点击时乐观更新 + 异步写入注册表完成后对账,彻底消除首次点击回弹。
  • 新手引导 Step 2/2 改为 0ms 立即全节点并发选优,未完成前不挂死假「最优节点」(BUG-312):
    • 现象:进入 Step 2/2 后界面首先显示了订阅自带的第 1 个默认节点作为「当前最优节点」,测速失败后才进行全节点选优,给用户造成“测速第一次必然失败”的困惑;
    • 从一开始就全节点并发选优:取消等待,进入 Step 2/2 第 0 毫秒立即在后台触发全量并发测速择优(triggerAutoSelect select=true);
    • 未测速前位置空置、真实跑赢才展示:在并发测速选优未完成前,「当前最优节点」位置保持空置,状态明确提示「正在并发测速并自动选优最快节点…」;待后台实际跑赢并确认最低延迟后,才展示「🌐 当前最优节点」及精确延迟胶囊,体验顺畅自然。

🔨 Commit History

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Wed Oct 28 15:53:42 CST 2026.

Clash Mini Ver.v3.2.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 06:05

v3.2.1 Update Logs

📝 Key Changes

✨ Proactive Node Benchmarking & One-Click Re-test in Onboarding

  • 首次使用向导弹窗(FirstRunGuideDialog)Step 2/2 新增「🔄 重新测速并优选节点」主动引导闭环(BUG-311):
    • 一键重测并自动择优按钮:当节点测速超时(0 ms)或等待超时未确认时,不再仅展示静态文字提示,而是在状态卡片内直接提供醒目的 「🔄 重新测速并优选节点」 按钮;点击后立即触发后端全节点并发测速(triggerAutoSelect select=true),从订阅全部节点中重新挑出延迟最低的可用节点并自动切换;
    • 建设性行动指引文案:将超时提示升级为清晰的行动引导(「当前节点响应超时,可点击下方按钮自动重新测速并切换至最快节点;您也可以直接进入主界面手动选择其他节点」),彻底消除新手用户的困惑;
    • 进入 Step 2/2 自动兜底测速与 DelayManager 实时联动:打通 DelayManager 测速缓存监听(无需等轮询即可毫秒级响应后端并发测速结果),并在进入 Step 2/2 后若 2.5 秒内尚无有效延迟自动后台触发一次全量并发测速优选。
  • 修复首次导入订阅时 isImportingRef 门闩误拦截自动测速优选的时序竞态(BUG-311):
    • 现象:handleImportProfile 在调用 await mutateProfiles() 更新 currentProfileUid 时,isImportingRef.current 仍处于 true(直到 finally 块才释放),导致新订阅触发的 useEffect 在首行检查 if (isImportingRef.current) return 时直接提前返回,跳过了首次导入后的自动并发测速优选;
    • 修复:在导入与配置落盘完成、await mutateProfiles() 触发状态变更前即释放 isImportingRef.current = false,确保首次导入后自动测速优选 100% 正常执行。

🔨 Commit History

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Wed Oct 28 14:05:37 CST 2026.

Clash Mini Ver.v3.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 04:45

v3.2.0 Update Logs

📝 Key Changes

✨ Zero-Download Rule Pruning & First-Run Guide Experience Perfection

  • 剥离机场订阅未引用的残留 rule-providers,实现首次启动 100% 零外部规则下载(BUG-310):
    • 现象:部分机场原始订阅 YAML 自带了额外的 rule-providers(如 China-Site.mrs、China-IP.mrs、Local-IP.mrs);虽然 Clash Mini 在 enforce_mini_agreements 中已用内置精简规则覆写了 rules:(未引用那些规则集),但保留在 rule-providers: 中的残留定义仍会触发 Mihomo 内核在首次启动时联网下载数百 KB 无用规则文件;
    • 修复:按最终生效的 final_rules 中 RULE-SET,<name> 实际引用的名称集合(默认仅有随包预置的 gfwlist)自动剔除未引用的 rule-providers,确保 Clash Mini 分流所需的 gfwlist.yaml、Country.mmdb、geosite.dat 100% 随安装包预置,首次启动零外部规则拉取。
  • 首次使用向导弹窗(FirstRunGuideDialog)Step 1/2 回车直通导入与剪贴板联动(BUG-310):
    • 全窗口 Enter 监听兜底:在弹窗 Paper 监听基础上新增 window 级 keydown 兜底监听(配合 submittingRef 防重入锁),解决首次启动延迟弹窗或异步剪贴板探测后焦点停留在 document.body 时按回车无响应的问题;
    • 剪贴板订阅一键回车直导:当输入框为空且剪贴板中已存在订阅链接时,无需先点击横幅或手动粘贴,直接按 Enter 键(或点击「立即导入并开启」、点击输入框右侧 ↵ 图标)即可自动填入剪贴板订阅链接并立即开始导入;
    • 切回窗口自动重探测剪贴板:监听窗口 focus 与 visibilitychange 事件,用户在打开软件后切去浏览器复制订阅链接再切回软件,即刻自动识别并支持直接按 Enter 导入。
  • 修复首次使用向导弹窗(FirstRunGuideDialog)Step 2/2 误报「系统代理未开启」的问题(BUG-310):
    • 现象:getSystemProxy 查询仅在打开设置抽屉时才启用,引导弹窗期间 sysproxy 恒为 undefined,且在 TUN 模式下 sysproxy.enable 本就为 false,导致旧逻辑 !sysproxy?.enable 在代理和节点已经正常工作时仍 100% 误报「⚠️ 系统代理未开启,请在设置中开启后再试」;
    • 修复:改用 verge.enable_system_proxy || verge.enable_tun_mode || sysproxy?.enable 判定真实流量接管状态,并在 Step 1/2 导入成功时若检测到系统代理与 TUN 均未开启则自动开启系统代理,彻底消除误导提示。

🔨 Commit History

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Wed Oct 28 12:45:14 CST 2026.

Clash Mini Ver.v3.1.9

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:28

v3.1.9 Update Logs

📝 Key Changes

This version includes code optimizations and bug fixes.

🔨 Commit History

  • chore(release): v3.1.9 — pre-bundle gfwlist.yaml for zero-wait first-run routing and center onboarding step badges (BUG-309) (8edd7c6)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Wed Oct 28 04:28:13 CST 2026.

Clash Mini Ver.v3.1.8

Choose a tag to compare

@github-actions github-actions released this 27 Oct 17:00

v3.1.8 Update Logs

📝 Key Changes

🐞 DNS Hygiene & Code Quality

  • 订阅 dns.nameserver 境外明文 UDP 上游自动改写为 DoH(BUG-308):
    • 现象:部分机场订阅在 dns.nameserver 中自带明文 8.8.8.8 等境外公共 DNS,在 respect-rules: true 下内核自身 DNS 查询命中代理规则穿代理;当活跃节点为 anytls 等 TCP 承载协议时,UDP 查询需走 UDP-over-TCP 新建会话,建连速度慢于境内 DoH,在内核 DNS 并发竞速中必被取消并刷出 failed to create session: dial tcp <node>: operation was canceled 告警;
    • 修复:enhance 管线新增 sanitize_foreign_plain_dns_upstreams,将 dns.nameserver 中 Google(8.8.8.8 / 8.8.4.4)与 Cloudflare(1.1.1.1 / 1.0.0.1)的明文 UDP 形式(裸 IP 或 :53 端口)自动改写为 https://<ip>/dns-query DoH,同时严格保留 default-nameserver 明文引导项、境内明文 DNS 及已加密上游不变。
  • 清零 clippy --all-targets 测试与诊断模块存量告警:
    • 清理 diagnostics.rs、migrate.rs 与 enhance/mod.rs 中的 field_reassign_with_default 及测试断言告警,确保 pre-push 静态检查门禁零告警全绿通过。

🔨 Commit History

  • release: bump version to 3.1.8 (c534fb4)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Wed Oct 28 01:00:26 CST 2026.

Clash Mini Ver.v3.1.7

Choose a tag to compare

@github-actions github-actions released this 27 Oct 14:31

v3.1.7 Update Logs

📝 Key Changes

✨ Onboarding Vertical Hierarchy & Narrow-Window Aesthetics

  • 首次使用向导弹窗(FirstRunGuideDialog)竖屏主从层级重构(BUG-307):
    • 主标题与步骤标识上下分行:将弹窗顶部主标题(「🎉 欢迎使用 Clash Mini」/「🚀 订阅已就绪」)与从属步骤胶囊(STEP 1 / 2 / STEP 2 / 2)由左右并列改为上下主从两行,消除窄窗口下主标题被挤压折行的问题;
    • 粘贴按钮与回车提示上下居中分行:将订阅输入框下方的「📋 一键粘贴剪贴板链接」与「提示:按 Enter 键即可导入」改为上下两行居中排布,同时取消剪贴板智能探测提示条的单行省略截断,三大核心特性胶囊改为自适应均分撑满整行;
    • 「当前最优节点」标签与节点全称上下分行:第一行展示「🌐 当前最优节点」标签与右侧「⚡ xx ms」实测延迟胶囊,第二行由节点完整名称独占整行宽度展示,彻底解决长节点名称被截断一半的问题;
    • 底部操作按钮双行居中满宽排布:第一步与第二步底部操作区(DialogActions)统一改为纵向两行居中满宽布局(主操作按钮在上、「稍后手动配置」/「进入主界面」独立在最下方一行),彻底消除窄窗口下双按钮并列拥挤。

🔨 Commit History

  • release: bump version to 3.1.7 (bf2de07)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Tue Oct 27 22:31:56 CST 2026.

Clash Mini Ver.v3.1.6

Choose a tag to compare

@github-actions github-actions released this 27 Oct 13:17

v3.1.6 Update Logs

📝 Key Changes

✨ Connections Table & Wide-Window Layout Improvements

  • 宽窗口路径控制表格「路由」列支持点击循环排序(活跃 & 历史连接通用):
    • 为 ConnectionTable 的 chains(路由)列补齐 accessorFn(按实际展示的「代理 / 直连 / 阻断 / 其它」路由类别提取排序键),支持与「链接目标」列一致的点击切换 升序(▲)→ 降序(▼)→ 取消排序,并将列宽由 50px 拓宽至 64px 防止排序箭头折行截断。
  • 修复连接表格无法上下滚动的问题(保持隐藏滚动条、鼠标滚轮丝滑滚动):
    • 修复 ConnectionsPanel 表格外层容器默认 display: block 导致内部 flex: 1, minHeight: 0 失效、虚拟列表被撑高至全量高度而被裁切的问题;补齐 display: 'flex', flexDirection: 'column', height: '100%' 纵向滚动链路,同时保持无滚动条的简洁视觉(scrollbarWidth: 'none'),活跃与历史连接均可通过鼠标滚轮顺畅上下滚动。
  • 修复首次在设置界面将窗口拉至最宽时右侧路径控制面板偶发不出现的竞态(BUG-306):
    • 现象:拖拽窗口边缘至最大宽度(640px)时,末帧 onResized 事件常在 pointerup 后的 200ms 冷却期结束前触发;旧逻辑在 WindowProvider.checkMaximized 中因 isWindowResizing() 直接丢弃该事件,冷却结束后又无新 onResized 触发,导致 isMinimalWidth 卡在 true,需来回调整窗口才显示右侧面板;
    • 修复:移除纯内存计算函数 syncGeometryAndLargeState 前的 isWindowResizing() 拦截(0 次 IPC 调用),新增 clash-mini-resize-ended 收尾对账事件与 toggleMaximize 即时 applyGeometry 同步,确保首次拉宽或点击放大时右侧路径控制组件立即挂载显示。

🔨 Commit History

  • release: bump version to 3.1.6 (968f5a4)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Tue Oct 27 21:17:45 CST 2026.

Clash Mini Ver.v3.1.5

Choose a tag to compare

@github-actions github-actions released this 27 Oct 08:12

v3.1.5 Update Logs

📝 Key Changes

✨ UI & Onboarding Layout Refinement

  • 首次使用引导弹窗横向 100% 铺满默认窗口宽度(Full-Width Onboarding Dialog):
    • 现象:初次启动默认窗口为 330px 窄竖条,此前 FirstRunGuideDialog 受 MUI Dialog 默认左右各 32px 外边距(共 64px)与内部 px: 2.5(共 40px)双重挤压,实际内容可用宽度仅剩 226px,在窄窗口中形成「窄条套窄条」的局促观感;
    • 优化:显式声明 m: 0, width: '100%' 破除默认外边距挤压,并将内部横向内边距收紧为 px: 1.5,使可用内容宽度由 226px 拓宽至 306px(提升 +35%);同时将底部主操作按钮设为 flex: 1 自适应撑满,大幅减少文本折行,视觉比例更加饱满舒展。

🔨 Commit History

  • release: bump version to 3.1.5 (2e5170a)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Tue Oct 27 16:12:48 CST 2026.

Clash Mini Ver.v3.1.4

Choose a tag to compare

@github-actions github-actions released this 27 Oct 07:10

v3.1.4 Update Logs

📝 Key Changes

✨ Onboarding Experience & UI Consistency

  • 首次使用向导全链路重设计与 GitHub Star 激励转化(First-Run Onboarding Redesign):
    • 两步式价值感知向导(STEP 1 / 2 → STEP 2 / 2):新增顶部步骤胶囊徽章与三枚核心特性标识(智能优选低延迟节点 / 防 DNS 泄漏保护 / 轻量静默驻留);
    • 剪贴板智能嗅探一键填入:弹窗打开时自动静默检测系统剪贴板,若包含单行 http(s):// 订阅链接且输入框为空,展示可一键填入的横幅提示,实现零键盘输入导入;
    • 实时连通性仪表盘与开源支持卡:导入成功后原地切换至第二步,实时展示当前最优出口节点名称与毫秒级延迟徽章,并新增暖金渐变 GitHub ⭐ Star 激励卡(含主按钮直达仓库测速点 Star 及次级 Wiki 指南入口);
    • 顶栏帮助菜单常驻 Star 入口:? 帮助下拉菜单首项升级为醒目的 ⭐ 去 GitHub 点亮 Star(13 个语种资源全量同步对齐)。
  • 顶部活跃节点栏与下方节点表格延迟颜色标准 100% 统一:
    • 现象:此前顶部活跃节点栏(ActiveNodeStatusCard / getSignalIcon)沿用了独立硬编码的旧分段阈值(200 / 300 / 500ms 及 info.main)与三分支胶囊底色,导致同一延迟数值在 200 ~ 4999ms 区间内顶部栏与下方节点表格(ProxyItem)呈现出截然不同的颜色;
    • 修复:在 src/services/delay.ts 中收敛出共用颜色解析函数 resolveSignalDelayColor,使顶部活跃节点栏与下方节点表格 100% 共享 formatDelayColor 单一真源(< 250ms 绿色 success.main、250 ~ 399ms 主题色 primary.main、400 ~ 4999ms 橙色 warning.dark/warning.main、0 或 >= 5000ms 红色 error.main),同步修复胶囊背景色映射并补充深浅色主题全区间单测。

🔨 Commit History

  • release: bump version to 3.1.4 (86107cd)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Tue Oct 27 15:10:12 CST 2026.

Clash Mini Ver.v3.1.3

Choose a tag to compare

@github-actions github-actions released this 27 Oct 04:38

v3.1.3 Update Logs

📝 Key Changes

🐞 Fixed Bugs & Core Lifecycle

  • 关闭 TUN 模式后彻底释放系统服务并切回用户态 Sidecar(BUG-305 / F-01):
    • 现象:此前从 TUN 模式切回「系统代理」或「手动模式」时,仅执行 UpdateFlags::CLASH_CONFIG 热重载,Mihomo 内核仍继续驻留在高权限 Windows 服务(RunningMode::Service)中运行,未释放服务句柄也未切回普通用户态 Sidecar。同时前端开启 TUN 时在 patchVerge 之后又重复调用了一次 restartCore(),造成双重重启延迟。
    • 修复:后端 determine_update_flags 对比修改前后的 enable_tun_mode 与当前 RunningMode,开启或关闭 TUN 时均自动附加 UpdateFlags::RESTART_CORE,在关闭系统代理时先清理注册表再重启切换运行模式,并在 RESTART_CORE 已执行时跳过冗余热重载;前端移除重复的 restartCore() 调用并统一刷新系统运行态。
  • Win32 WM_SIZING 防上边缘缩放下移钩子 100% 挂载生效(BUG-305 / F-02):
    • 现象:setup_wm_sizing_hook 原先仅在 RunEvent::Ready 中调用,比异步创建主窗口早约 0.5 秒触发,导致首次冷启动时 get_webview_window("main") 返回 None 跳过安装;且旧的全局重入锁在轻量模式销毁并重建主窗口后阻止为新 HWND 重新挂载钩子。
    • 修复:将 setup_wm_sizing_hook 迁入 build_new_window 窗口创建后立即执行,并改用 HOOKED_HWND 按窗口句柄原子判重,确保初次启动与轻量模式唤醒重建窗口后均 100% 生效。
  • 单例唤醒补齐 clash-mini:// 协议匹配并修复 Deep Link 参数截断(BUG-305 / F-03):
    • 修复:check_singleton 新增 clash-mini: 与 clash-verge: 协议前缀识别,改用 .query(&[("param", param)]) 自动对含 & 的订阅 URL 进行百分比编码,防止服务端查询参数截断;非 --silent 普通二次启动时正确唤醒已有实例主窗口。

⚡ Performance & Bundle Size Optimization

  • 剥离未使用的 Monaco Editor 子系统与 16 个冗余依赖(BUG-305 / FE-01, FE-02, FE-04, FE-08, FE-09, FE-10):
    • 移除零引用的 Monaco 编辑器组件、YAML Worker 及 16 个未使用的 npm 依赖包(node_modules 净减 122 个包),前端 dist/ 构建产物直降 >4.4MB (>60%);
    • 清理 4 个无引用历史基础组件、约 560 行未使用的手动出站代理配置与 WebDAV 类型定义、以及后端 13 语种共 52 处孤立 i18n 键;vite.config.mts 移除遗留的 safari>=14 目标,进一步缩减 polyfill 体积。
  • 前后端热路径与渲染生命周期优化(BUG-305 / F-04, F-05, F-06, F-07, FE-03, FE-05, FE-06, FE-07):
    • get_proxy_addr 改用强类型轻量结构体单次读取并反序列化 clash-mini.yaml,消除 fallback 阶段的二次磁盘读取与全量动态 AST 构建;
    • 残留核心清理改用 System::new_with_specifics 仅扫描进程列表,避免枚举磁盘/网卡/传感器带来的 50~150ms 阻塞;后台监控任务覆盖前显式 abort 旧句柄;系统服务管理命令统一解析 %SystemRoot%\System32\sc.exe 绝对路径并规范化安装器路径;
    • useProxyDelayState 改用 useReducer 惰性初始化消除节点卡片挂载时的首帧双重渲染;FirstRunGuideDialog 解耦为细粒度 Context 订阅;ProxyRenderComponent 移除无效的 useVerge / useIconCache 行级订阅;收敛 useSkinControls 与 useCustomTheme 的 controlSkin 状态为单一真源。

🔨 Commit History

  • release: bump version to 3.1.3 (c4c3f79)

下载地址

Windows 64位 安装版(推荐,支持自动更新)

Windows 64位绿色便携版(免安装)

项目主页

Created at Tue Oct 27 12:38:39 CST 2026.