Skip to content

v0.2.1 (持久化幂等安全、端点退避重试与可见性驱动)

Choose a tag to compare

@Jolly-J Jolly-J released this 21 Oct 09:00
· 1 commit to main since this release

🚀 Mihomo Monitor v0.2.1

专为 macOS 打造的「纯代理流量监控」与「原生系统性能分析」状态栏应用。

本版本聚焦底层健壮性、流量计量的精准性与极端边界场景的数据安全,全面升级 Actor 并发隔离、连接水位幂等去重、跨日守恒分摊与退出落盘保障,并引入包含 7 组 36 项断言的回归测试套件。


📦 资产下载

• MihomoMonitor-v0.2.1.dmg(DMG 镜像安装包,推荐,双击拖入 Applications 即可使用)
• MihomoMonitor-v0.2.1.zip(绿色免安装版)
• MihomoMonitor-macOS.dmg(最新通用安装包软链)


✨ 核心更新亮点 (Highlights)

1. 🛡️ 流量持久化幂等安全与跨日守恒
  • 连接幂等检查点:引入 TrafficCheckpoint,结合连接核心 ID 与原始 startToken 联合构建防碰撞唯一键,写入 traffic_checkpoints 水位表,彻底杜绝重启、重放或采样乱序导致的流量重复累计。
  • 跨午夜/夏令时流量守恒分配:长连接跨日时通过 splitByDay 算法按时间跨度比例将上下行用量分摊到对应日期,整数余数归入最后一天,保持流量严格守恒。
  • 批量原子事务与异常整批回滚:采样维持约 1.5 秒,磁盘批量事务每 15 秒(或跨日、或退出)集中提交一次;写入失败立即整批回滚并保留待写数据,杜绝数据虚增或丢失。
  • 异步退出协议与防丢保护:AppDelegate 实现 applicationShouldTerminate 异步退出流程,等待在途轮询结束并排空内存缓冲区;若数据库写入失败弹出警示并取消退出。
2. ⚡ 服务端点自适应重探测与 Actor 隔离
  • 核心采集器升级为 Swift 原生 actor:TrafficTracker 与 MihomoClient 升级为 actor 串行隔离,彻底杜绝数据竞态。
  • 端点自适应重探测与指数退避:解决“先启动监控、后启动代理”时端点锁定无法恢复的问题;连接失败时按 1s、2s、4s……最高 30s 自动指数退避重探测所有候选端点(Socket 与 HTTP),并在 UI 悬浮提示具体故障原因。
3. 🎯 界面可见性感知与查询防抖
  • 原生窗口可见性感知(PanelVisibilityObserver):基于 AppKit 底层 occlusionState 感知菜单栏窗口的真实显示与遮挡,解决 macOS MenuBarExtra 窗口收起时不触发 SwiftUI onDisappear 的问题,面板隐藏时自动暂停数据库轮询。
  • 域名搜索移入 SQL 筛选层:改为在数据库层先按 host 进行 LIKE ? 模糊匹配后再取前 50 条,解决前端截断导致无法搜索到第 51 个域名的缺陷;配备 250ms 输入防抖。
  • ViewModel 版本代号(Generation)防竞态:快速切换标签或时间区间时,自动废弃旧请求的慢查询结果,绝不覆盖当前最新状态。
  • 应用图标有界短时负缓存:AppIconProvider 引入 TTL 为 60 秒的有界负缓存(上限 512 条),大幅降低不存在图标的高频查找开销,同时允许新安装的应用及时被识别。
4. 🧪 完备的回归自动化测试
  • 新增 Tests/RegressionTests.swift 与 Tests/run-regressions.sh,覆盖跨日守恒、幂等去重、事务回滚、域名搜索及断线重连等 7 大测试组共 36 条断言,全部自动化通过。

💡 关于首次打开与开发者提示:
纯个人业余爱好开源项目,未购买昂贵的苹果开发者证书。首次打开若提示「无法验证开发者」:
请在系统「设置」->「隐私与安全性」中点击「仍要打开」,或在访达中右键点击应用选择「打开」即可。100% 本地纯净运行,零网络外传!