Skip to content

SysPulse v0.1.13

Choose a tag to compare

@Rabbit-Spec Rabbit-Spec released this 14 Nov 05:25
· 1 commit to main since this release

一. 基础功能优化和 Bug 修复

  • 智能清理进入页面自动开扫(与「软件」/「空间」体验拉齐):点击侧边栏切入「智能清理」且当前处于待机无结果状态(.idle)时自动开始扫描;已扫描出结果、清理完成刚展示释放摘要(.cleaned)或扫出 0 项时保持原状不打断,主动点过「取消」后本次打开期间切走再切回也不再强行重扫。
  • 清理设置新增独立开关:在清理设置弹窗的「扫描行为」卡片中新增 「进入清理页时自动扫描」 开关(默认开启,持久化记忆),不想每次自动扫描时可随时关闭。
  • 大幅减少白耗电与无谓画面重绘:
    • 主界面健康度光环改用 GPU 原生 .phaseAnimator 呼吸动效,小波形图(MiniWaveformLine、DualSparklineView)去掉轮询重绘,降低日常 CPU 刷新开销;
    • 风扇图标在转速 rpm <= 0 静止时彻底停止转动画图(运转时按 20 FPS 旋转),头部未旋转图标与未激活模块徽章静止时不空转;
    • 去掉空间/面板里的随机占位假进程列表,改为共享 AppIconLookupCache(NSCache)复用应用图标,减少反复查找与内存占用。
  • 修好窗口/事件监听器泄漏与后台空转:
    • 「屏幕清洁遮罩」每次启动前先清理上一次的键盘监听器,避免多次开启后监听叠加;
    • 「实时活动连接窗口」关闭或隐藏时自动停止后台刷新定时器,并接入系统休眠前统一暂停、唤醒后仅在窗口可见时恢复刷新;
    • 菜单栏弹窗关闭时同步重置网络详情子页面导航状态。
  • 修好卡顿、管道阻塞死锁与逻辑小 Bug:
    • 系统诊断弹窗不再在界面渲染 body 时同步阻塞采集数据,改为打开后再异步采集,并修好 SIP 状态、tmutil 快照、system_profiler 等系统命令的管道读取顺序避免偶发卡死;
    • 网络监控首次测速完成前显示 -- 与 测量中…(不再先亮假初始数字),物理网卡主 DNS 优先级上移,为 nettop / lsof / ping 加上单飞防重入与限频;
    • 应用卸载增加「扫描中/卸载中」互斥防连点保护;空间分析换用线程安全取消锁(ScanCancellationBox)。
  • 清理、OTA 自动更新与命令安全全面加固:
    • 系统清理:白名单补全 Safari 容器缓存、Xcode/Archives、.cocoapods/cache、.gradle/caches,不再跳过 app 包内可清缓存,容量统计优先按磁盘实际占用计算,同时拿掉扫盘末段多余的 2.5 秒人为等待;同时加入 软链接防逃逸校验——遇到符号链接只删链接本身,绝不顺着软链接去统计或删外部真实目录;
    • OTA 应用内更新:下载与解压目录迁至 0700 权限的用户私有缓存 ~/Library/Caches/com.rabbit.syspulse/OTAUpdate,替换安装前强制 codesign --verify --deep --strict 校验并核对 com.rabbit.syspulse 签名标识,正确管理取消下载时的 URLSession,并修好带 _Test 测试后缀版本号的新旧大小比较逻辑;
    • 提权与构建安全:公网 IP 接口全面升级 HTTPS,Info.plist 中 ATS 从 NSAllowsArbitraryLoads 收紧为 NSAllowsLocalNetworking;补全多处特权命令 Shell 单引号与 AppleScript 参数转义、修复 Fan Helper 管道死锁;清理源码中的本地开发机路径残留,默认打包切换为 release 模式。

二. 菜单栏动态兔子健康卡片与真实系统版本修复

  • 菜单栏健康卡片升级「动态矢量兔子动画」:
    • 替换掉原来 15pt 的旋转小太阳,换成左侧全高 72×72pt 视口的原生动态矢量兔子动画(MenuBarHealthRabbitView),增大健康度展示区;
    • 根据 4 档健康状态(很好 / 良好 / 一般 / 需要留意)切换对应光晕、双圈声呐涟漪与星芒/光球特效。
  • 「百天开机也不乱换行」双行等宽硬件胶囊:
    • 右侧规格标签重构为两行等宽对齐布局:第一行显示 [芯片型号] · [逻辑核数] · [内存容量],第二行显示 [macOS 版本] · [已运行时间],搭配等宽数字(.monospacedDigit())与自适应缩放,就算连续开机 100 天以上也不会空间不够或左右错位换行。
  • 修好系统版本读取偏差:
    • 统一优先读取系统 /System/Library/CoreServices/SystemVersion.plist(兜底 sysctl kern.osproductversion / kern.osversion),保留完整三段版本号与 Build 号,彻底修复菜单栏健康卡片、主界面状态总览、系统诊断弹窗、版本号栏及 --self-test 显示版本号不准或被截断的问题。

三、PS Portal 串流画质增强插件(v0.1.2 → v0.1.3)

  • 待机也能唤醒并找出来:Portal 放在一边待机时,Wi-Fi 会进入深度省电休眠,以前扫网经常扫不到。现在改成 两段式无线 DTIM 唤醒:先向已记录的 PS5 / Portal IP 发 ICMP + TCP(9295/443/80)+ UDP(5353/9302)唤醒包并全网并发扫描(等待 450ms);如果待机 Portal 还没醒来入表,自动补发第 2 轮 ICMP + TCP 9295/443 唤醒包并再等 500ms(总计约 950ms 窗口),大幅提升待机状态下的检出率。
  • 硬件号段全覆盖,同时不误认电视音响:从以前只匹配 2 个 Portal OUI 扩展为 全量 46 个 Sony Interactive Entertainment(SIE 互动娱乐)游戏硬件号段 + 全量 142 个索尼 OUI 号段,结合 PlayStation DDP(UDP 9302)、设备自报主机名含 portal、历史保存 IP 四信号联合判定;同时自动排除索尼 BRAVIA 电视、回音壁/音响、Xperia 手机、相机、投影仪等非掌机设备。
  • 特权中继目录与文件安全加固(0.1.13_Test1 起):portal_engine 把原先放在 /tmp 下的 PID_FILE 与 STATE_FILE 迁入 root 属主的 /Library/Application Support/SysPulse/,配合 O_NOFOLLOW、lstat 属主与权限校验防止软链接顶替;运行日志改写到 ~/Library/Logs/SysPulse/psportal.log,并修复父进程日志句柄泄漏与 restoreNetworkDirect() 管道读取顺序问题。

四. 局域网 ARP 嗅探插件(v0.1.1 → v0.1.2)

  • 内置官方 5.4 万条 IEEE OUI 厂商库 + 随机 MAC 识别:
    • 打包内置完整 ieee_oui.tsv(涵盖 MA-L / MA-M / MA-S 共 54,466 条权威记录),按 36 位 → 28 位 → 24 位 最长前缀精准匹配;自动识别手机/电脑开启「私有无线局域网(随机 MAC)」的情况并如实标注,彻底告别以前硬编码 OUI 表导致的大面积乱认厂商问题。
  • 四协议设备主动自报探测:
    • 扫描局域网时主动通过 路由器 DNS PTR、mDNS/Bonjour、SSDP/UPnP XML、NetBIOS 四种协议询问设备真实名称与型号,自报信息优先显示;同时内置如 Shenzhen Zhangyue → iReader(掌阅电纸书,匹配书本图标)等品牌识别映射。
  • 界面内「自定义厂商」+ 全局「厂商规则」:
    • 点开任意设备行的编辑框,可直接修改「设备名」与「自定义厂商」,还能勾选 「同步将所有同类厂商设备统一映射为此厂商名称」 一键生效;
    • 点击工具栏 「厂商规则」 按钮可集中增删「原厂商关键词」或「MAC 前缀(如 d0:da:24:5)→ 目标厂商」规则,写进本地配置文件长期保留,修改或删除后列表实时刷新无需重新扫网。
  • 列表视觉与版本号同步:
    • 取消编辑设备后刺眼的「自定义」小胶囊标签;
    • 「厂商 / 接口」列文字过长时自动平滑左右往返滚动显示完整内容;
    • 局域网 ARP 嗅探卡片与详情页版本号同步更新为 v0.1.2,统一规范设备 MAC 档案持久化键名。