35 Commits
Author SHA1 Message Date
ysicing cbd44993ec feat(menubar): 新增单图标模式并优化状态总览 2026-10-04 21:52:14 +08:00
ysicing 87079eddb2 perf(cpu): 减少菜单栏读取和磁盘排行重复计算 2026-10-01 11:18:40 +08:00
ysicing 1c1e94a15f feat(updates): 接入 Sparkle 并支持双语发布说明 2026-09-30 15:20:08 +08:00
ysicing 578c7c7b64 refactor(ai-usage): 简化模块名称为 AI 用量 2026-09-29 22:32:10 +08:00
ysicing e19ea53771 feat(processes): 改为可选模块并支持活动监视器回退 2026-09-29 22:13:53 +08:00
ysicing dd099950b1 feat(menubar): 支持显示 IP 归属地国旗和文字 2026-09-29 21:12:47 +08:00
ysicing c48c50fca3 feat(update): 新增版本更新系统通知 2026-09-29 19:38:20 +08:00
ysicing 3e4448e3e5 perf(menubar): 减少菜单栏重绘与隐藏预览刷新 2026-09-29 19:24:11 +08:00
ysicing f9f029b0e3 fix: 按硬件能力显示风扇入口 2026-09-29 17:49:52 +08:00
ysicing 6d1561c6bf feat(cleaner): 将清理功能设为可选并校正确认提示 2026-09-28 13:42:21 +08:00
ysicing 7dc19b3f70 feat(history): 添加低功耗屏幕使用时间统计 2026-09-27 14:30:13 +08:00
ysicing b0221f57d7 docs(about): 更新关于页功能简介 2026-09-26 14:36:02 +08:00
ysicing 9e0bd329aa feat(menubar): 添加双行居中风格 2026-09-26 14:02:08 +08:00
ysicing 1db19df74d feat(updates): 添加自动检查频率菜单 2026-09-26 13:08:07 +08:00
ysicing f86f2d4291 feat(rest): 添加番茄钟与多屏护眼休息 2026-09-26 08:14:11 +08:00
ysicing 59603dcbd2 feat(ai-usage): 增加本地用量开关并自动查询额度 2026-09-24 23:08:45 +08:00
ysicing 84bed521d4 fix(ai-usage): 修复额度失效与圆点排版 2026-09-24 07:59:55 +08:00
ysicing f636af7f03 feat(ai-usage): 缓存额度并修复菜单栏预览 2026-09-24 06:59:29 +08:00
ysicing f91c2b9460 feat(ai-usage): 统一额度菜单栏与配置体验 2026-09-24 06:28:40 +08:00
ysicing cb2b57eb79 feat(ai-usage): 支持 Codex 与 Claude 的 Sub2API 备用额度 2026-09-23 23:46:15 +08:00
ysicing c7e4a34e91 feat(ai-usage): 增加订阅额度与剩余进度展示 2026-09-23 20:26:35 +08:00
ysicing fa2023e630 fix(updates): 修正更新弹窗留白与摘要截断 2026-09-23 17:49:10 +08:00
ysicing 71fbb30c70 feat(legal): 添加服务条款与隐私政策并优化阅读排版 2026-09-23 17:21:51 +08:00
ysicing fc29738597 refactor(ai): 恢复进程解释仅使用 Apple 智能 2026-09-23 15:11:07 +08:00
ysicing 9925b37dc9 feat(settings): 统一日历启用入口并完善设置弹窗 2026-09-23 12:51:06 +08:00
ysicing 49895b34e4 feat(settings): 统一可选模块开关并隐藏停用入口 2026-09-23 11:14:49 +08:00
缘生 a4b44a64fc Codex/ai assistant (#3)
* feat(ai-assistant): 添加全局进程解释与备用服务
2026-09-23 09:44:26 +08:00
缘生 aa8228fac8 Codex/calendar (#4)
* feat(calendar): 新增菜单栏日历与黄历详情
2026-09-23 09:00:05 +08:00
ysicing 6ba59fe150 feat(ai-usage): 添加本机模型统计与年度活动视图 2026-09-23 08:50:41 +08:00
ysicing e44de0bf35 feat(ai-usage): 集成 Codex 只读配额监控 2026-09-23 08:50:41 +08:00
ysicing cab90673d5 fix(settings): 隐藏签名团队信息 2026-09-22 14:39:13 +08:00
缘生 6a7aeffb83 fix(security): 修复辅助工具鉴权、升级路径与卸载误删 (#1)
* fix(security): 修复辅助工具鉴权降级与五处正确性缺陷

代码审查(安全/质量/性能/架构四维度)发现的问题,逐条修复。

辅助工具鉴权(High)
  ad-hoc 构建下 clientRequirement 退化为只校验 bundle identifier,不含
  anchor 约束,任何进程 codesign -s - 伪造同名即可连上 root 辅助工具,
  驱动 DNS、睡眠、本地快照与风扇。project.yml 默认就是 ad-hoc 签名,
  而 make build 是文档化的安装路径,开发机上属常态。
  改为无团队签名时返回 nil 并拒绝连接,与在线升级在 ad-hoc 下直接禁用
  的策略一致;此时 App 走一次性管理员授权回退,功能不丢。

卸载器批量误删
  validate 只拒绝 com.apple. 前缀,包名为 "com" 的应用可通过;随后
  hasPrefix("com.") 把 leftovers 扫描的十余个目录(Preferences、Caches、
  Containers、Saved Application State 等)下所有 com.* 条目当成残留列出
  并默认勾选,一次点击即整体移入废纸篓。前缀匹配改为要求至少三段反向
  域名,精确匹配不受影响。

退出时静默跳过恢复睡眠
  restoreDefaultsSynchronously 的 guard 在循环体内用 return 而非 continue,
  第一步取代理失败就连带跳过第二步,Mac 保持禁止睡眠。同时把两步各等 1 秒
  改为总预算 1.5 秒,避免主线程退出卡顿。

公网 IP 查询重入保护失效
  isLookingUpPublic 同时承担重入锁与转圈开关两个相反职责,有缓存且非强制
  刷新时恒为 false,guard 形同虚设,两个 Task 可各发三次请求并发写缓存,
  失败结果可能覆盖好结果。拆出独立的 isFetchingPublic,并用 defer 确保
  所有退出路径复位。

诊断导出的崩溃报告未脱敏
  日志与清理记录都走了 redact,但 .ips 崩溃报告原样入包,其中可能夹带
  进程内存中的 WebDAV 目录、用户名、公网 IP 与主机名,与界面“不含 IP、
  序列号与硬件地址”的声明不符。改为同样脱敏后写入。

PowerSampler
  channels(in:) 的 unsafeBitCast 改为 Unmanaged.fromOpaque.takeUnretainedValue。
  未加 deinit 释放 IOReport 订阅:IOReport 是私有框架,无公开释放入口且
  无法验证其是否为 CF 对象,而全进程只有一个 PowerSampler、订阅各只创建
  一次且随进程存在,不是增长型泄漏——已就此写明注释。

补回归测试:clientRequirement 的 ad-hoc 分支与 anchor 约束、
matchesIdentifier 的过宽前缀与派生名匹配。

make test 141 项通过(新增 4 项),Release 完整构建通过。

* fix(security): 完善辅助工具升级与卸载边界校验

* fix(ui): 拆分评分条视图以解决 CI 类型检查超时

* fix(webdav): 规范化目录路径以兼容 macOS 15
2026-09-21 09:34:01 +08:00
ysicing ef0bd2f5ee feat(i18n): 支持九种语言与可搜索语言选择 2026-09-20 23:50:54 +08:00
ysicing 7db2c8ad7a chore(license): 采用 AGPL 并完善版权与贡献规则 2026-09-20 23:22:58 +08:00
ysicing 4212961565 feat: 初始化 XStats 并支持 WebDAV 设置同步 2026-09-20 23:02:44 +08:00