Commit Graph
84 Commits
Author SHA1 Message Date
gentpan e1f70d34da 构建号 0108 2026-09-21 03:43:03 +05:00
gentpan ab1c76ce6f 发布 0.6.2:修复账号登录后应用直接退出 2026-09-21 03:39:34 +05:00
gentpan 0a56c10d9b 构建号 0107 2026-09-21 03:38:09 +05:00
gentpan 645d161cbd 清理死代码、死译文与重复代码
- 删掉没人调用的函数、属性与解码字段:网络弹窗的两个标签函数、supportsStyleOverride、probedAddress、countryEn、辅助工具客户端的单风扇恢复自动封装(协议与辅助工具端保留,不动 XPC 接口)
- 译文表删掉 19 条不再使用的条目,补上测速窗口“开始”按钮漏掉的英文
- 网络弹窗与出口窗口各自一份的归属地格式化和 IP 类型徽章合并为 GeoText;两个折线图里重复的参考线绘制提成 ChartGrid
- 官网样式删掉没人用的 .mb-drop__ext
- server/sync/sync 是误提交的 Go 编译产物,从仓库移除并忽略
2026-09-21 03:38:08 +05:00
gentpan 1022e4e541 修复账号登录后应用直接退出
系统的登录窗口在后台队列上回调结果,而回调闭包写在主线程隔离的方法里,Swift 6 在闭包入口检查执行器,
不在主线程就中止进程:选完 GitHub / Google / Apple 账号应用立即闪退,令牌还没换到,重开也没有登录状态。
回调改为在非隔离的上下文里创建,收到结果后再回到主线程处理;补了在后台队列调用回调的回归测试。
2026-09-21 03:38:08 +05:00
gentpan 718d441fa9 构建号 0105 2026-09-18 14:10:00 +05:00
gentpan 067299a420 发布 0.6.1:菜单栏合并时点击弹出状态总览,解决 Issue #2 2026-09-18 14:06:30 +05:00
gentpan b5c1a330c7 菜单栏合并时点击弹出状态总览,可切到各项详情(#2)
- 合并模式点击图标不再直接打开主窗口,改为弹出面板:顶部标签在总览与菜单栏开启的各项之间切换
- 总览每项一行:数值、状态、走势,偏高时变色;点一行进入该项完整详情,与每项独立时的弹窗共用 PopoverDetail
- 切到某一项时 openPopover 跟着切换,采样范围与单项弹窗一致;面板打开期间每秒刷新
- 合并面板最小高度减半,项目少时不留空白;设置里的弹窗区块选项在合并模式下也可用
- 电池状态文案合成 BatteryStatus.stateText;--show-panel overview 用于调试
2026-09-18 13:59:20 +05:00
gentpan 7095a9022f 从仓库里删掉误提交的 __pycache__ 文件 2026-09-18 01:04:49 +05:00
gentpan 983cc2761e 忽略 Python 脚本生成的 __pycache__ 2026-09-18 01:04:39 +05:00
gentpan 03a95ca214 发布 0.6.0:新增出口与分流窗口 2026-09-18 01:02:49 +05:00
gentpan 80f7639f21 新增出口与分流窗口:检测 VPN 与代理是否生效,25 个网站分别从哪个出口出去 2026-09-18 00:57:49 +05:00
gentpan 17b319153e 发布 0.5.0:新增网络测速窗口,程序坞默认不再显示图标 2026-09-18 00:49:22 +05:00
gentpan 3b901e18cb 新增网络测速窗口:本机宽带、国内分省三网延迟、全球节点下载测速与全球探针 2026-09-18 00:29:09 +05:00
gentpan 823a3cbe3f cleanip.io 字标与文字按基线对齐时对齐字母基线,不再被 p 的下伸部分顶高 2026-09-17 21:46:35 +05:00
gentpan 33baa71470 程序坞默认不再显示图标:主窗口开着也只在菜单栏运行,通用设置可打开“在程序坞显示图标” 2026-09-17 21:39:34 +05:00
gentpan 76e7427dfe 发布 0.4.0:主窗口改用液态玻璃,菜单栏弹窗更紧凑,应用 CPU 改为占整机比例 2026-09-16 21:32:38 +05:00
gentpan 75a161410f 主窗口顶栏改为标准高度 52pt:右上角按钮统一 32pt、上下留白一致,红绿灯留在侧边栏面板之外 2026-09-16 21:17:31 +05:00
gentpan 5cca1169bd IP 地址区块:弹窗只显示公网地址,没有 IPv6 时不占行
- 菜单栏弹窗里不再显示本地 IPv4、本地 IPv6 与路由器,这三行只在主窗口的网络页显示
- 网卡没有 IPv6 地址时不显示“本地 IPv6”,拿不到公网 IPv6 时不显示“公网 IPv6”,不再用“—”占一行
2026-09-16 21:01:14 +05:00
gentpan 46d5b33030 连接探测标题右侧不再显示探测地址与“每秒一次” 2026-09-16 20:57:50 +05:00
gentpan 8f7691d290 进程 CPU 在概览里改为占整机的比例,悬停显示单核口径
用户反馈 CPU 占用高:CPU 弹窗“按应用汇总”与仪表盘“高占用进程”按单核满载为 100% 计(活动监视器的算法),多核 Mac 上一个应用常显示 99%、75%,又放在整机总占用下面,容易误读。

- Format.machineShare:单核口径 ÷ 逻辑核心数,全部核心跑满为 100%;小于 0.1% 且不为 0 写 “<0.1%”。Format.coreShare 保留单核口径写法
- CPU 弹窗 / CPU 页的按应用汇总、仪表盘高占用进程改用整机占比,数值悬停显示单核口径;仪表盘着色阈值改为整机占比 25% / 50%
- 进程页保持单核口径,与活动监视器一致
- 单元测试覆盖两种写法;译文与更新日志同步
2026-09-16 20:53:52 +05:00
gentpan 165963de84 弹窗高度随内容自动调整:数据到达后变高不再露出滚动条
弹窗打开时按平铺布局测一次高度,之后公网 IP、归属地等数据陆续到达,内容变高(实测 860 → 911pt)而窗口不变,底部露出一小截滚动条。

- PageScroll 在弹窗里用 onGeometryChange 记下滚动内容高度与可视高度,差值通过 reportPopoverOverflow 环境值交给面板
- StatusPanel.adjustHeight(by:):按差值调整窗口高度、顶边不动,上限为菜单栏下方到屏幕底边的可用高度,屏幕放不下时才保留滚动
- 打开时的平铺测量保留作为起始高度;展开 / 收起区块、数据刷新都会自动校正
2026-09-16 19:48:18 +05:00
gentpan 84542374bc IP 纯净度标题行重新排版:置信度改为浅色小字,完整报告、刷新、收起并成一组按钮
- 置信度不再是带框徽章,改为标题旁的 12pt 浅灰文字,百分比按高低着色(confidenceTone → confidenceColor)
- “查看完整报告 / 完整报告”文字链接与 ReportLink、ReportStyle、ViewThatFits 三档标题行一并去掉,改为外链图标
- 新增 HeaderActionGroup:一组小图标按钮在 macOS 26 上合成一颗玻璃胶囊,更早系统为浅灰胶囊;组内的 MiniIconButton 不再各自带玻璃
- 译文与更新日志同步
2026-09-16 19:32:11 +05:00
gentpan 4099ec636e 菜单栏弹窗改为紧凑排版:去掉卡片底色改细分隔线,纯净度与 DNS 默认收起
- 新增 isPopover 环境值,PopoverRootView 打开;Card 在弹窗里不画灰底,只在顶部画一条细分隔线,上下 8pt、行距 6pt;PageScroll 在弹窗里区块间不再留间距
- 弹窗顶栏的两个按钮改用 24pt 的 MiniIconButton
- 网络弹窗:IP 纯净度、DNS 默认收起成一行(CollapsedSection,显示分数等级 / 正在使用的 DNS),点开后标题栏右侧有收起按钮;展开状态存在 AppSettings.expandedPopoverSections,变化时刷新弹窗高度
- 流量图高度 72pt → 56pt,连接探测改为 30 列 2 行
- 网络弹窗 1519pt → 952pt,其余弹窗矮 9%~21%;主窗口详情页不变
2026-09-16 18:52:04 +05:00
gentpan 9e4f92e366 连接探测只看通不通:绿红两色 60 格,去掉延迟抖动丢包,前台固定每秒探测
- ProbeGrid 只分绿(通)、红(超时或不可达)、灰(尚无数据),不再用橙色表示延迟偏高
- 探测历史固定 60 次:弹窗 20 列 3 行,主窗口 30 列 2 行;去掉格子下面的延迟、抖动、丢包与 NetworkController 里对应的统计
- 网络详情打开时固定每秒探测一次(NetworkController.foregroundProbeSeconds),移除 AppSettings.probeSeconds、设置里的“探测间隔”与同步文档字段;后台低频探测仍每 10 秒
- 译文、README、官网与隐私页、更新日志同步
2026-09-16 18:32:38 +05:00
gentpan d68fbce42a 主窗口改用液态玻璃(macOS 26),分段切换改为苹果标准样式,新增全局加载框
- 新增 Design/LiquidGlass.swift:dsGlass 修饰器(macOS 26 用 glassEffect,更早系统与离屏截图退回实色)、isInsideGlass 环境值避免玻璃叠玻璃、LoadingHUD 全局加载框
- 侧边栏是浮在窗口里的玻璃面板,选中项为滑动的淡蓝圆角底;顶栏“在菜单栏显示”一组收进玻璃胶囊
- DSButtonStyle:主按钮蓝色玻璃胶囊、次要按钮透明玻璃;IconButton / MiniIconButton 为圆形玻璃;ChipButton 为玻璃胶囊;DSToggle 在 macOS 26 用系统开关
- SegmentedControl 统一为苹果标准样式:灰色圆角底槽、等宽分段、选中段实心品牌蓝白字并滑动;PillSwitch 同样灰底
- 清理、卸载、导出诊断、修改 DNS 进行中显示全局加载框
- 没有用 safeAreaBar 让页面从顶栏下滚过:macOS 上交界处会画一条分隔线,柔和或隐藏滚动边缘都去不掉
2026-09-16 18:26:09 +05:00
gentpan f3c0f860cb 发布 0.3.2:修复 IP 纯净度查不到(cleanip.io 只查请求方自己,改为锁定 IPv4 / IPv6 分别查询) 2026-09-16 01:56:16 +05:00
gentpan d305e5e3e1 纯净度改为只查自己:锁定 IPv4 / IPv6 连接分别请求 cleanip.io/cli?json=1
cleanip.io 自 09-15 起不再接受 /cli?ip=,带参数一律 400,网络详情的纯净度因此一直停在“正在查询”。

- 新增 AddressFamilyRequest:用 Network.framework 建连接并锁定 IP 版本,走 HTTP/1.1 over TLS 请求,
  处理 chunked 与 Content-Length;这一族没有路由时直接失败,不干等。URLSession 无法指定地址族,
  而 cleanip.io 在 Cloudflare 后面 A / AAAA 都有,锁定地址族才能两族各查到自己的结果
- 锁定地址族的连接建不起来时退回 URLSession,只接受与所查同一族的结果
- 分流代理下 cleanip.io 看到的出口与 Cloudflare 不同时,显示 cleanip.io 看到的地址;缓存按 Cloudflare 的地址比对
- 查询失败的空结果不再写进 7 天缓存,也不进内存缓存,服务恢复后下次打开详情即重查
- 单元测试覆盖响应解析;真实网络下 IPv4 在本机验证、IPv6 在服务器上用 curl -6 验证 cleanip.io 返回对应地址的纯净度
2026-09-16 01:47:21 +05:00
gentpan 504b6eaeab 官网静态资源指纹更新 2026-09-15 16:23:56 +05:00
gentpan 40b7e41cbf 支持 Intel 芯片:分别打包 Apple 芯片版与 Intel 版,官网按芯片提供两个下载按钮
- Makefile 支持 ARCH=arm64 / x86_64,release.sh 两种芯片各自构建、签名、公证,生成 DMG 与升级包
- 版本清单顶层仍是 Apple 芯片版(兼容 0.3.0),intel 字段放 Intel 版;应用按芯片挑包,安装前核对架构
- Homebrew cask 按 arch 选择安装包
- 官网下载区改为 Apple 芯片 / Intel 两张卡片,README 安装段落与常见问题同步
2026-09-15 16:21:29 +05:00
gentpan 5de9f22221 README 补齐 0.3.0:IP 纯净度专区与截图,磁盘弹窗,英文界面与检查更新说明
- 弹窗截图行把过高的网络弹窗换成磁盘弹窗,网络弹窗里的 IP 地址与纯净度区块单独裁出浅色、深色两张
- 标语加上卸载应用与 IP 纯净度;界面语言、联网说明补上 English 界面、检查更新与可选账号,去掉已不存在的玻璃效果
- sync_changelog.py 保留缩进的子条目,README 与官网更新日志里不再把它们压成一行
2026-09-15 14:52:08 +05:00
gentpan 486b94fdb1 官网与 README 加入 0.3.0 新卖点:IP 纯净度检测、卸载应用与启动项、磁盘与电池
- 官网功能网格新增三张卡片,两列时奇数的最后一张占满整行
- 首屏与“会联网吗”改为 cleanip.io 查询、账号可选、每天检查新版本,去掉已移除的归属地数据库更新
2026-09-15 14:46:21 +05:00
gentpan e2300826b6 发布 0.3.0:更新 README 截图,补充卸载应用与启动项说明,自动检查更新失败后按小时重试
- 官网此前的 0.2.0 安装包早于卸载应用、启动项与在线升级的提交,发布 0.3.0 补上(#1)
- 自动检查更新只有拿到版本清单才记为已检查,登录时网络未就绪导致的失败不再等 24 小时才重试
- release.sh 在构建后读取构建号,版本清单里的 build 与安装包一致
- README 截图换成 0.3.0 界面,新增启动项截图与“卸载应用与启动项”一节
2026-09-15 14:43:07 +05:00
gentpan e0d63f55e6 GeoLite2 脚本不再把 /etc/openstats 改成 700
同步服务以 openstats-sync 用户运行,要能进入这个目录才读得到 Apple 登录的 .p8 私钥;
geoip 的 install.sh / configure.sh 用 install -d -m 700 会把已有目录的权限收紧成只有 root 能进,
Apple 登录随之失效。改为 mkdir -p,只保证目录存在。服务器上已手动改回 750。
2026-09-15 04:46:04 +05:00
gentpan 6383d0badc 恢复 server/geoip 的 GeoLite2 同步脚本:服务器继续同步,应用不再下载
- 把上一个提交删掉的 server/geoip 五个文件与部署脚本里的注释原样恢复;getopenstats.com/geoip/ 继续由服务器上的定时任务生成
- 架构说明补一句:应用已改用 cleanip.io,这份 GeoLite2 留作他用
2026-09-15 04:32:50 +05:00
gentpan b8db7eacae 归属地只用 cleanip.io:移除 MaxMind GeoLite2 与其他在线数据源
- 删掉 MaxMind .mmdb 读取器、本地数据库控制器与「IP 归属地数据库」设置区块,去掉「归属地数据源」选择及 ipapi.is / DB-IP / ipinfo.io 解析;PublicAddressLookup 只向 cleanip.io 查询,结果按 IP 记一小时,收到 429 当天不再请求
- 设置同步文档不再带 geoSource / geoIncludeCity / geoAutoUpdate;公网 IP 缓存键升到第 4 版,旧数据源的缓存不再读取
- 网络详情:IP 地址区块标题不再放 cleanip.io 字标,只留在纯净度区块;纯净度色带改为直角
- 删除 server/geoip 的 GeoLite2 同步脚本;README、架构说明、第三方声明、官网与隐私页、译文同步,清掉 53 条不再使用的翻译
2026-09-15 04:24:42 +05:00
gentpan 51b954983b 菜单栏新增“电池”项目:电量、24 小时曲线、功耗、健康度与蓝牙设备电量
- 电池按九种风格画在菜单栏,充电中带闪电,电量低于 20% 按“高负载时着色”变红;点击弹出电池详情,主窗口同名页面复用同一视图,历史页多了电池电量曲线
- 历史库加 battery 列(旧库首次打开时 ALTER TABLE 迁移),HistoryRecorder 单独查最近 24 小时电量供弹窗使用
- BluetoothController 按需轮询蓝牙设备电量:弹窗 / 页面开着每分钟,菜单栏需要时每 5 分钟;本机信息页的蓝牙卡片改用它
- 没有电池的 Mac 上电池项目改为显示电量最低的蓝牙设备;「设置 · 菜单栏」新增“蓝牙设备电量低时提示”开关(同步文档一并带上)
- README、架构说明、更新日志与译文同步
2026-09-15 03:58:30 +05:00
gentpan c9d722f20d 账号同步、磁盘工具、IP 归属地数据源与纯净度、弹窗与设置调整
- 账号与同步:GitHub / Google / Apple 登录后把菜单栏项目与风格等偏好同步到 getopenstats.com,换一台 Mac 登录即恢复(AccountSync 模块、SyncController、SettingsDocument、账号设置页,openstats:// 回调)
- 磁盘页成为工具页:已用 / 可清除 / 可用分段容量条、空间分析、文件系统检查、本地快照清理(辅助工具协议 v4)、其他磁盘推出
- 公网 IP:归属地数据源可选 CleanIP.io / ipapi.is / DB-IP / ipinfo.io / 本地 GeoLite2,每台 Mac 自己查、本地缓存 7 天;IPv4 / IPv6 双栈各自查询与切换;弹窗显示 ASN、运营方、原生 / 住宅等徽章与纯净度评分色带;接口区块可重置上传 / 下载统计
- 弹窗:右上角按钮改为该指标自己的图标 + 总设置;主窗口页面标题栏的开关点不动已修复;滚动条改为悬浮式,内容不再偏左;网络弹窗卡片被标题行撑宽的问题已修复
- 设置:⌘ 拖动排序说明;每个菜单栏项目单独选风格并带实时预览;网络与磁盘的进程榜单固定 5 行并平滑排序;CPU 持续高负载通知
- 设计系统:分段条、评分色带、标签徽章、胶囊切换、刷新按钮等组件与徽章配色 token
- 更新日志、架构说明、README 与译文同步
2026-09-15 03:37:24 +05:00
gentpan 480a7b551d 服务器与官网:自托管的账号同步服务、GeoLite2 下载配置脚本、隐私页
- server/sync:Go 写的同步服务(GitHub / Google / Apple 登录、PKCE、设置文档存 SQLite),附 systemd 单元、Caddy 片段、install.sh 部署到官网源站、configure.sh 填写各平台密钥
- server/geoip:configure.sh 填 MaxMind 账号与许可证;install.sh 的主机改为官网源站
- 官网新增隐私说明页,首页补隐私条目与 ⌘ 拖动排序的常见问题;部署与发布脚本的默认主机改为 51.38.126.148
2026-09-15 03:37:24 +05:00
gentpan f7e88fa06c 国旗改为预渲染的 PNG:SVG 源文件移到 Assets/flags-svg,Scripts/render_flags.sh 用 librsvg 批量生成
NSImage 画不出 SVG 里的 <use> 引用,弹窗里的归属地国旗显示错乱。改为构建前渲染成 64×48 的 PNG 打进资源包,FlagImage 直接读 PNG;第三方声明补上国旗与品牌标志的来源。
2026-09-15 03:37:23 +05:00
gentpan dce6ab2a79 每次构建自动卸载旧版并安装新版:本机只保留 /Applications 一个 OpenStats 2026-09-14 23:37:43 +05:00
gentpan 92d09169fd 版本号改为 0.2.0 (0003) 格式:每次构建号加一,发布时用 bump-patch / bump-minor 改营销版本 2026-09-14 23:24:09 +05:00
gentpan 11fc451fae 语言切换立即生效:视图、应用菜单与菜单栏随设置重建,不再需要重启 2026-09-13 15:30:55 +05:00
gentpan 9af1aaaf27 本地化测试不再切换全局语言,避免与并行的测试互相影响 2026-09-13 09:18:55 +05:00
gentpan 5e16e65233 修复旧版编译器报错:局部变量遮蔽 model 2026-09-13 09:17:18 +05:00
gentpan a97b592ae6 ARCHITECTURE:在线升级、功耗与磁盘、历史、本地化 2026-09-13 09:16:35 +05:00
gentpan e6bed09dc0 英文界面:翻译层、语言设置与英文文案 2026-09-13 09:16:04 +05:00
gentpan de7a50b57c 桌面小组件:系统概览(小号、中号) 2026-09-13 08:52:50 +05:00
gentpan 0cd20c4c8a 全局快捷键 2026-09-13 08:51:09 +05:00
gentpan 4f46446494 蓝牙设备电量与低电量通知 2026-09-13 08:48:40 +05:00