Repository navigation
v0.2.1 (持久化幂等安全、端点退避重试与可见性驱动)
🚀 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 窗口收起时不触发 SwiftUIonDisappear的问题,面板隐藏时自动暂停数据库轮询。 - 域名搜索移入 SQL 筛选层:改为在数据库层先按 host 进行
LIKE ?模糊匹配后再取前 50 条,解决前端截断导致无法搜索到第 51 个域名的缺陷;配备 250ms 输入防抖。 - ViewModel 版本代号(Generation)防竞态:快速切换标签或时间区间时,自动废弃旧请求的慢查询结果,绝不覆盖当前最新状态。
- 应用图标有界短时负缓存:
AppIconProvider引入 TTL 为 60 秒的有界负缓存(上限 512 条),大幅降低不存在图标的高频查找开销,同时允许新安装的应用及时被识别。
4. 🧪 完备的回归自动化测试
- 新增
Tests/RegressionTests.swift与Tests/run-regressions.sh,覆盖跨日守恒、幂等去重、事务回滚、域名搜索及断线重连等 7 大测试组共 36 条断言,全部自动化通过。
💡 关于首次打开与开发者提示:
纯个人业余爱好开源项目,未购买昂贵的苹果开发者证书。首次打开若提示「无法验证开发者」:
请在系统「设置」->「隐私与安全性」中点击「仍要打开」,或在访达中右键点击应用选择「打开」即可。100% 本地纯净运行,零网络外传!