官网去掉指向私有仓库的链接,完整更新日志折叠在页面内
This commit is contained in:
1 parent
3117b69deb
commit
a67d12120b
7 files changed
+164
-58
No files matched your search
+1
-1
@@ -3,7 +3,7 @@
|
||||
记录 OpenStats 应用的功能新增、样式调整和问题修复,按版本与日期倒序排列。
|
||||
官网、构建与发布脚本等不影响应用本身的改动不在此记录。
|
||||
|
||||
## 0.3.0 · 2026-09-13
|
||||
## 未发布
|
||||
|
||||
### 2026-09-13
|
||||
|
||||
|
||||
@@ -47,9 +47,26 @@ Developed and tested on Apple Silicon. The interface is in Simplified Chinese.
|
||||
<!-- changelog:start -->
|
||||
<!-- Generated from CHANGELOG.md by Scripts/sync_changelog.py. Do not edit by hand. -->
|
||||
|
||||
Latest release **0.2.0** (2026-09-13) · [full changelog](CHANGELOG.md) (kept in Chinese)
|
||||
Latest release **0.2.0** (2026-09-13) · **6** changes in development · [full changelog](CHANGELOG.md) (kept in Chinese)
|
||||
|
||||
<details open>
|
||||
<summary><b>2026-09-13</b> · Unreleased · 3 added · 3 changed</summary>
|
||||
|
||||
**Added**
|
||||
|
||||
- 在线升级:启动时和之后每天检查官网版本清单,发现新版本时弹出版本号与更新摘要,可一键安装、以后再说或跳过此版本;下载后依次核对 sha256、包名与版本、开发者签名团队和 Apple 公证,任何一项不通过都放弃安装;旧版先备份再原地替换,失败自动还原,装完自动重启到新版。「设置 · 关于」与应用菜单里可以手动检查更新。
|
||||
- 辅助工具版本检查:启动时核对正在运行的辅助工具版本;旧进程还在运行时先断开让它退出,由系统启动新版本,仍然旧时在风扇、合盖运行和辅助工具设置里提示“重新安装”,侧边栏对应项目显示提醒圆点;有新版本时“关于”旁同样显示圆点。
|
||||
- 导出诊断信息(设置 · 关于):把版本、系统与辅助工具状态、主要设置、最近 3 天的运行日志、清理记录和最近的崩溃报告打包成 zip,反馈问题时附上;自动去掉用户目录名、IP 与硬件地址,不含序列号。应用与辅助工具的关键操作和错误写入系统日志。
|
||||
|
||||
**Changed**
|
||||
|
||||
- 连接探测更省电:打开网络详情时按设置的间隔探测;详情关闭、只在菜单栏显示网速时改为每 10 秒低频探测,并允许系统合并唤醒,也可以在设置里关闭后台探测。
|
||||
- 进程页每 2 秒刷新一次(读取全系统进程需要启动 ps),其他页面仍为每秒。
|
||||
- 菜单栏图标用 ⌘ 拖动调整的顺序会被记住,重启应用或切换显示项目后保持不变。
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>2026-09-13</b> · 0.2.0 · 30 added · 12 style · 6 fixed</summary>
|
||||
|
||||
**Added**
|
||||
|
||||
+18
-1
@@ -46,9 +46,26 @@ brew install --cask gentpan/tap/openstats
|
||||
<!-- changelog:start -->
|
||||
<!-- 由 Scripts/sync_changelog.py 从 CHANGELOG.md 生成,请勿手改。 -->
|
||||
|
||||
最新版本 **0.2.0**(2026-09-13) · [完整更新日志](CHANGELOG.md)
|
||||
最新版本 **0.2.0**(2026-09-13) · 开发中 **6** 项改动尚未发布 · [完整更新日志](CHANGELOG.md)
|
||||
|
||||
<details open>
|
||||
<summary><b>2026-09-13</b> · 未发布 · 新增 3 · 调整 3</summary>
|
||||
|
||||
**新增**
|
||||
|
||||
- 在线升级:启动时和之后每天检查官网版本清单,发现新版本时弹出版本号与更新摘要,可一键安装、以后再说或跳过此版本;下载后依次核对 sha256、包名与版本、开发者签名团队和 Apple 公证,任何一项不通过都放弃安装;旧版先备份再原地替换,失败自动还原,装完自动重启到新版。「设置 · 关于」与应用菜单里可以手动检查更新。
|
||||
- 辅助工具版本检查:启动时核对正在运行的辅助工具版本;旧进程还在运行时先断开让它退出,由系统启动新版本,仍然旧时在风扇、合盖运行和辅助工具设置里提示“重新安装”,侧边栏对应项目显示提醒圆点;有新版本时“关于”旁同样显示圆点。
|
||||
- 导出诊断信息(设置 · 关于):把版本、系统与辅助工具状态、主要设置、最近 3 天的运行日志、清理记录和最近的崩溃报告打包成 zip,反馈问题时附上;自动去掉用户目录名、IP 与硬件地址,不含序列号。应用与辅助工具的关键操作和错误写入系统日志。
|
||||
|
||||
**调整**
|
||||
|
||||
- 连接探测更省电:打开网络详情时按设置的间隔探测;详情关闭、只在菜单栏显示网速时改为每 10 秒低频探测,并允许系统合并唤醒,也可以在设置里关闭后台探测。
|
||||
- 进程页每 2 秒刷新一次(读取全系统进程需要启动 ps),其他页面仍为每秒。
|
||||
- 菜单栏图标用 ⌘ 拖动调整的顺序会被记住,重启应用或切换显示项目后保持不变。
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>2026-09-13</b> · 0.2.0 · 新增 30 · 样式 12 · 修复 6</summary>
|
||||
|
||||
**新增**
|
||||
|
||||
@@ -24,6 +24,10 @@ APP="build/DerivedData/Build/Products/Release/OpenStats.app"
|
||||
DMG_NAME="OpenStats-${VERSION}.dmg"
|
||||
ZIP_NAME="OpenStats-${VERSION}.zip"
|
||||
|
||||
# 在线升级的更新摘要取自该版本的更新日志:发版前把 “## 未发布” 改成 “## 版本 · 日期”
|
||||
grep -q "^## ${VERSION} · " CHANGELOG.md \
|
||||
|| { echo "error: CHANGELOG.md 里没有 “## ${VERSION} · 日期” 标题,先把 “## 未发布” 改成正式版本。" >&2; exit 1; }
|
||||
|
||||
if [ -z "$SIGN_ID" ]; then
|
||||
echo "error: 钥匙串里没有 Developer ID Application 证书,无法发布。" >&2
|
||||
exit 1
|
||||
|
||||
+39
-16
@@ -27,9 +27,8 @@ ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||||
RECENT_DAYS = 3
|
||||
WEEKS = 26
|
||||
|
||||
KIND_EN = {"新增": "Added", "样式": "Style", "修复": "Fixed"}
|
||||
KIND_EN = {"新增": "Added", "样式": "Style", "调整": "Changed", "修复": "Fixed"}
|
||||
WEB_ITEMS_PER_DAY = 8
|
||||
CHANGELOG_URL = "https://github.com/gentpan/OpenStats/blob/main/CHANGELOG.md"
|
||||
|
||||
|
||||
# ── CHANGELOG.md ──────────────────────────────────────────────────────────
|
||||
@@ -170,24 +169,48 @@ def inline_html(text):
|
||||
return out
|
||||
|
||||
|
||||
def web_day(release, day, lines):
|
||||
items = [(g["kind"], item) for g in day["groups"] for item in g["items"]]
|
||||
lines.append(' <article class="log__day">')
|
||||
lines.append(f' <div class="log__head"><time datetime="{day["date"]}">{day["date"]}</time>'
|
||||
f'<span class="log__tag">{html.escape(release["version"])}</span></div>')
|
||||
lines.append(f' <p class="log__counts">{html.escape(counts(day, False))}</p>')
|
||||
|
||||
def item_lines(chunk, indent):
|
||||
return [f'{indent}<li><span class="log__kind">{html.escape(kind)}</span>{inline_html(item)}</li>'
|
||||
for kind, item in chunk]
|
||||
|
||||
lines.append(' <ul class="log__list">')
|
||||
lines += item_lines(items[:WEB_ITEMS_PER_DAY], " ")
|
||||
lines.append(" </ul>")
|
||||
rest = items[WEB_ITEMS_PER_DAY:]
|
||||
if rest:
|
||||
# 仓库是私有的,完整条目直接折叠在官网上,不链接到 GitHub
|
||||
lines.append(' <details class="log__rest">')
|
||||
lines.append(f' <summary>还有 {len(rest)} 项</summary>')
|
||||
lines.append(' <ul class="log__list">')
|
||||
lines += item_lines(rest, " ")
|
||||
lines.append(" </ul>")
|
||||
lines.append(" </details>")
|
||||
lines.append(" </article>")
|
||||
|
||||
|
||||
def web_block(releases, indent=" "):
|
||||
"""官网只展示已发布的版本:最近几天直接显示,更早的折叠。"""
|
||||
released = [r for r in releases if r["version"]]
|
||||
entries = day_entries(released)
|
||||
lines = ["<!-- changelog:start -->",
|
||||
"<!-- 由 Scripts/sync_changelog.py 从 CHANGELOG.md 生成,请勿手改。 -->",
|
||||
'<div class="log">']
|
||||
for release, day in day_entries(releases)[:RECENT_DAYS]:
|
||||
label = release["version"] or "未发布"
|
||||
items = [(g["kind"], item) for g in day["groups"] for item in g["items"]]
|
||||
lines.append(' <article class="log__day">')
|
||||
lines.append(f' <div class="log__head"><time datetime="{day["date"]}">{day["date"]}</time>'
|
||||
f'<span class="log__tag">{html.escape(label)}</span></div>')
|
||||
lines.append(f' <p class="log__counts">{html.escape(counts(day, False))}</p>')
|
||||
lines.append(' <ul class="log__list">')
|
||||
for kind, item in items[:WEB_ITEMS_PER_DAY]:
|
||||
lines.append(f' <li><span class="log__kind">{html.escape(kind)}</span>{inline_html(item)}</li>')
|
||||
lines.append(" </ul>")
|
||||
if len(items) > WEB_ITEMS_PER_DAY:
|
||||
lines.append(f' <a class="log__more" href="{CHANGELOG_URL}">还有 {len(items) - WEB_ITEMS_PER_DAY} 项 →</a>')
|
||||
lines.append(" </article>")
|
||||
for release, day in entries[:RECENT_DAYS]:
|
||||
web_day(release, day, lines)
|
||||
older = entries[RECENT_DAYS:]
|
||||
if older:
|
||||
lines.append(' <details class="log__older">')
|
||||
lines.append(f' <summary>更早的更新({len(older)} 天)</summary>')
|
||||
for release, day in older:
|
||||
web_day(release, day, lines)
|
||||
lines.append(" </details>")
|
||||
lines.append("</div>")
|
||||
lines.append("<!-- changelog:end -->")
|
||||
return "\n".join(lines[:1] + [indent + line for line in lines[1:]])
|
||||
|
||||
+77
-35
@@ -15,9 +15,9 @@
|
||||
<meta property="og:site_name" content="OpenStats">
|
||||
<meta property="og:locale" content="zh_CN">
|
||||
<meta property="og:image" content="https://getopenstats.com/assets/window-light.png">
|
||||
<link rel="icon" href="assets/favicon.ico?v=568f3916" sizes="48x48">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32.png?v=568f3916">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon.png?v=568f3916">
|
||||
<link rel="icon" href="assets/favicon.ico?v=ca6e7cfe" sizes="48x48">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32.png?v=ca6e7cfe">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon.png?v=ca6e7cfe">
|
||||
<script>
|
||||
// 在样式生效前确定主题,避免深色模式下先闪一下白底
|
||||
try {
|
||||
@@ -25,8 +25,8 @@
|
||||
document.documentElement.dataset.theme = saved || (matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
|
||||
} catch { document.documentElement.dataset.theme = "light"; }
|
||||
</script>
|
||||
<link rel="stylesheet" href="styles.css?v=568f3916">
|
||||
<link rel="stylesheet" href="replica.css?v=568f3916">
|
||||
<link rel="stylesheet" href="styles.css?v=ca6e7cfe">
|
||||
<link rel="stylesheet" href="replica.css?v=ca6e7cfe">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -46,8 +46,6 @@
|
||||
<div class="mb-drop" role="menu">
|
||||
<a role="menuitem" href="#features">关于 OpenStats</a>
|
||||
<a role="menuitem" href="#download">下载 for Mac…</a>
|
||||
<hr>
|
||||
<a role="menuitem" href="https://github.com/gentpan/OpenStats">查看源码<span class="mb-drop__ext" aria-hidden="true">↗</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-menu">
|
||||
@@ -71,15 +69,13 @@
|
||||
<a class="mb-title" href="#changelog" aria-haspopup="menu" aria-expanded="false">更新日志</a>
|
||||
<div class="mb-drop" role="menu">
|
||||
<a role="menuitem" href="#changelog">最近更新</a>
|
||||
<a role="menuitem" href="https://github.com/gentpan/OpenStats/blob/main/CHANGELOG.md">完整更新日志<span class="mb-drop__ext" aria-hidden="true">↗</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-menu">
|
||||
<a class="mb-title" href="#faq" aria-haspopup="menu" aria-expanded="false">帮助</a>
|
||||
<div class="mb-drop" role="menu">
|
||||
<a role="menuitem" href="#faq">常见问题</a>
|
||||
<hr>
|
||||
<a role="menuitem" href="https://github.com/gentpan/OpenStats/issues">反馈问题<span class="mb-drop__ext" aria-hidden="true">↗</span></a>
|
||||
<a role="menuitem" href="#install">安装与卸载</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -108,7 +104,7 @@
|
||||
</span>
|
||||
<span class="island__expanded" aria-hidden="true">
|
||||
<span class="island__row">
|
||||
<span class="island__brand"><img src="assets/icon.png?v=568f3916" alt="" width="18" height="18">OpenStats</span>
|
||||
<span class="island__brand"><img src="assets/icon.png?v=ca6e7cfe" alt="" width="18" height="18">OpenStats</span>
|
||||
<span class="island__health" data-bind="island-health">各项指标正常</span>
|
||||
</span>
|
||||
<span class="island__grid">
|
||||
@@ -128,12 +124,12 @@
|
||||
<!-- 左侧桌面图标 -->
|
||||
<nav class="desk-icons" aria-label="快捷入口">
|
||||
<a class="desk-icon" href="#download">
|
||||
<span class="desk-icon__art desk-icon__art--dmg" aria-hidden="true"><img src="assets/icon.png?v=568f3916" alt="" width="40" height="40"></span>
|
||||
<span class="desk-icon__art desk-icon__art--dmg" aria-hidden="true"><img src="assets/icon.png?v=ca6e7cfe" alt="" width="40" height="40"></span>
|
||||
<span class="desk-icon__name">OpenStats.dmg</span>
|
||||
</a>
|
||||
<a class="desk-icon" href="https://github.com/gentpan/OpenStats#readme">
|
||||
<span class="desk-icon__art desk-icon__art--doc" aria-hidden="true"><span>MD</span></span>
|
||||
<span class="desk-icon__name">README.md</span>
|
||||
<a class="desk-icon" href="#faq">
|
||||
<span class="desk-icon__art desk-icon__art--doc" aria-hidden="true"><span>FAQ</span></span>
|
||||
<span class="desk-icon__name">常见问题</span>
|
||||
</a>
|
||||
<a class="desk-icon" href="#changelog">
|
||||
<span class="desk-icon__art desk-icon__art--doc" aria-hidden="true"><span>LOG</span></span>
|
||||
@@ -152,14 +148,14 @@
|
||||
<span class="window__title">欢迎使用 OpenStats</span>
|
||||
</div>
|
||||
<div class="window__body hero__body">
|
||||
<img class="hero__icon" src="assets/icon.png?v=568f3916" alt="OpenStats 图标" width="72" height="72">
|
||||
<img class="hero__icon" src="assets/icon.png?v=ca6e7cfe" alt="OpenStats 图标" width="72" height="72">
|
||||
<h1 class="hero__title" id="heroTitle">Mac 的状态,抬眼就看见</h1>
|
||||
<p class="hero__lead">CPU、GPU、内存、网络与温度常驻菜单栏,还能调风扇、防休眠、一键清理。所有数据在本机读取,没有账号与统计上报。</p>
|
||||
<div class="hero__actions">
|
||||
<a class="btn btn--primary" href="#download">下载 for Mac</a>
|
||||
<a class="btn btn--secondary" href="https://github.com/gentpan/OpenStats">GitHub</a>
|
||||
<a class="btn btn--secondary" href="#changelog">更新日志</a>
|
||||
</div>
|
||||
<p class="hero__meta">macOS 14 及以上 · Apple Silicon · MIT 开源</p>
|
||||
<p class="hero__meta">macOS 14 及以上 · Apple Silicon · 已签名并经 Apple 公证</p>
|
||||
<p class="hero__hint">点右上角菜单栏里的 CPU、内存或网速,看看每一项的详情 ↗</p>
|
||||
<button class="hero__link" id="heroOpenWindow" type="button">或者打开 OpenStats 主窗口</button>
|
||||
</div>
|
||||
@@ -172,10 +168,10 @@
|
||||
<!-- 程序坞 -->
|
||||
<nav class="dock" aria-label="程序坞">
|
||||
<a class="dock__item" href="#features" title="访达"><span class="dock__art dock__art--finder" aria-hidden="true"></span></a>
|
||||
<button class="dock__item" id="dockOpenStats" type="button" title="打开 OpenStats"><img class="dock__art" src="assets/icon.png?v=568f3916" alt="OpenStats"></button>
|
||||
<button class="dock__item" id="dockOpenStats" type="button" title="打开 OpenStats"><img class="dock__art" src="assets/icon.png?v=ca6e7cfe" alt="OpenStats"></button>
|
||||
<a class="dock__item" href="#thermal" title="风扇与防休眠"><span class="dock__art dock__art--fan" aria-hidden="true"></span></a>
|
||||
<a class="dock__item" href="#cleanup" title="清理"><span class="dock__art dock__art--clean" aria-hidden="true"></span></a>
|
||||
<a class="dock__item" href="https://github.com/gentpan/OpenStats" title="GitHub"><span class="dock__art dock__art--terminal" aria-hidden="true"></span></a>
|
||||
<a class="dock__item" href="#install" title="Homebrew 安装"><span class="dock__art dock__art--terminal" aria-hidden="true"></span></a>
|
||||
<span class="dock__divider" aria-hidden="true"></span>
|
||||
<a class="dock__item" href="#download" title="下载"><span class="dock__art dock__art--download" aria-hidden="true"></span></a>
|
||||
</nav>
|
||||
@@ -249,8 +245,8 @@
|
||||
<p class="note">公网 IP 查询与连接探测都可以在设置里关闭。修改 DNS 需要管理员权限。</p>
|
||||
</div>
|
||||
<figure class="shot shot--popover split__media">
|
||||
<img class="shot--light" src="assets/popover-network-light.png?v=568f3916" alt="OpenStats 网络详情弹窗" loading="lazy">
|
||||
<img class="shot--dark" src="assets/popover-network-dark.png?v=568f3916" alt="OpenStats 网络详情弹窗,深色" loading="lazy">
|
||||
<img class="shot--light" src="assets/popover-network-light.png?v=ca6e7cfe" alt="OpenStats 网络详情弹窗" loading="lazy">
|
||||
<img class="shot--dark" src="assets/popover-network-dark.png?v=ca6e7cfe" alt="OpenStats 网络详情弹窗,深色" loading="lazy">
|
||||
</figure>
|
||||
</div>
|
||||
</section>
|
||||
@@ -262,8 +258,8 @@
|
||||
<p>主窗口、设置和弹窗共用同一底色,侧边栏与标题栏不分栏着色;窗口宽高都能拖动调整。</p>
|
||||
</div>
|
||||
<div class="shots">
|
||||
<figure class="shot"><img src="assets/window-light.png?v=568f3916" alt="OpenStats 主窗口仪表盘,浅色" loading="lazy"><figcaption>浅色</figcaption></figure>
|
||||
<figure class="shot"><img src="assets/window-dark.png?v=568f3916" alt="OpenStats 主窗口仪表盘,深色" loading="lazy"><figcaption>深色</figcaption></figure>
|
||||
<figure class="shot"><img src="assets/window-light.png?v=ca6e7cfe" alt="OpenStats 主窗口仪表盘,浅色" loading="lazy"><figcaption>浅色</figcaption></figure>
|
||||
<figure class="shot"><img src="assets/window-dark.png?v=ca6e7cfe" alt="OpenStats 主窗口仪表盘,深色" loading="lazy"><figcaption>深色</figcaption></figure>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -284,7 +280,7 @@
|
||||
<p>合盖后继续运行适合下载、渲染和远程连接。使用电池且电量低于下限时会自动关闭,避免在包里过热。</p>
|
||||
<p class="note">风扇与合盖运行需要安装一次辅助工具。它只提供固定的几个操作,不执行任意命令,应用退出时自动恢复设置。</p>
|
||||
</div>
|
||||
<figure class="shot split__media"><img src="assets/thermal.png?v=568f3916" alt="OpenStats 散热页面" loading="lazy"></figure>
|
||||
<figure class="shot split__media"><img src="assets/thermal.png?v=ca6e7cfe" alt="OpenStats 散热页面" loading="lazy"></figure>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -301,7 +297,7 @@
|
||||
</ul>
|
||||
<p>只处理白名单目录;正在运行的应用会跳过,浏览器需先退出;删除前每一项再校验一次,所有操作写入日志。</p>
|
||||
</div>
|
||||
<figure class="shot split__media"><img src="assets/cleaner.png?v=568f3916" alt="OpenStats 清理页面" loading="lazy"></figure>
|
||||
<figure class="shot split__media"><img src="assets/cleaner.png?v=ca6e7cfe" alt="OpenStats 清理页面" loading="lazy"></figure>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -319,19 +315,18 @@
|
||||
<li><b>归属地</b><span>国家、城市与 ASN 在本机的 MaxMind GeoLite2 数据库里查,数据库从本站下载并校验</span></li>
|
||||
<li><b>连接探测</b><span>按设定间隔 ping 你选择的目标,只在显示网络项时运行,可关闭</span></li>
|
||||
<li><b>偏好设置</b><span>保存在本机,不含个人信息</span></li>
|
||||
<li><b>源代码</b><span><a href="https://github.com/gentpan/OpenStats">MIT 开源,全部公开</a></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="band band--alt" id="download">
|
||||
<div class="shell narrow download">
|
||||
<img src="assets/icon.png?v=568f3916" alt="" width="96" height="96">
|
||||
<img src="assets/icon.png?v=ca6e7cfe" alt="" width="96" height="96">
|
||||
<h2>下载 OpenStats</h2>
|
||||
<p>使用 Developer ID 签名并经过 Apple 公证,打开时不会遇到安全拦截。</p>
|
||||
<div class="hero__actions">
|
||||
<a class="btn btn--primary" href="download/OpenStats-0.2.0.dmg">下载 OpenStats 0.2.0</a>
|
||||
<a class="btn btn--secondary" href="https://github.com/gentpan/OpenStats">从源码构建</a>
|
||||
<a class="btn btn--secondary" href="#changelog">这个版本更新了什么</a>
|
||||
</div>
|
||||
<p class="hero__meta">macOS 14 Sonoma 及以上 · 简体中文界面</p>
|
||||
<p class="download__brew">也可以用 Homebrew 安装:<code>brew install --cask gentpan/tap/openstats</code></p>
|
||||
@@ -360,11 +355,54 @@
|
||||
<li><span class="log__kind">新增</span>网络详情:上下镜像的流量历史;连接探测格子(每 1 / 2 / 5 秒 ping 一次 Cloudflare、Google、阿里云、腾讯或路由器,显示延迟、抖动、丢包);接口、物理地址、Wi-Fi 信号与速率、VPN / 代理;本地 IPv4 / IPv6、路由器、公网 IPv4 / IPv6,点击即可拷贝;归属地显示 SVG 国旗、城市、ASN 与网络运营方;各进程上传下载速率。</li>
|
||||
<li><span class="log__kind">新增</span>DNS:显示正在使用的 DNS 与配置方式,一键刷新 DNS 缓存,一键切换为自动、Cloudflare、Google、腾讯 DNSPod、阿里云,或手动填写地址(逐个校验为 IPv4 / IPv6)。流量经过 VPN / 代理时提示 DNS 可能被接管。</li>
|
||||
</ul>
|
||||
<a class="log__more" href="https://github.com/gentpan/OpenStats/blob/main/CHANGELOG.md">还有 40 项 →</a>
|
||||
<details class="log__rest">
|
||||
<summary>还有 40 项</summary>
|
||||
<ul class="log__list">
|
||||
<li><span class="log__kind">新增</span>主窗口:左侧边栏切换仪表盘、CPU、GPU、内存、网络、温度与风扇、进程、防休眠、清理;指标页右上角直接开关该项的菜单栏显示;宽度与高度都可调整,卡片按比例放大。打开主窗口时应用出现在程序坞中,关闭后回到仅菜单栏运行。</li>
|
||||
<li><span class="log__kind">新增</span>CPU 详情:顶部是占用、状态(空闲 / 适中 / 繁忙 / 满载)、与 30 秒前相比的变化和温度余量,下面是走势线与用户 / 系统 / 空闲构成条;核心热力图(每行一个核心、每列一次采样);核心分工(各类核心平均占用与最忙的核心);排队程度(平均负载折算到每个核心,并提示负载在上升还是下降);按应用汇总 CPU。</li>
|
||||
<li><span class="log__kind">新增</span>内存详情:顶部是还可用多少、压力状态与最近 60 秒的压力走势条;内存水位条(App / 联动 / 压缩 / 缓存 / 空闲);压缩与交换(压缩省下的内存、压缩比、交换区用量与实时换入换出速率,持续写盘时提示);按应用汇总内存(合并辅助进程,显示占已用内存的比例)。</li>
|
||||
<li><span class="log__kind">新增</span>用 Apple 智能解释进程:在进程上右键或点进程页的星形按钮,由系统自带的本机大模型说明它是什么、占用是否正常、能否退出;把路径、所属应用和签名方一起交给模型以减少猜测,全程不联网(需要 macOS 26 并开启 Apple 智能)。</li>
|
||||
<li><span class="log__kind">新增</span>IP 归属地改为本地 MaxMind GeoLite2 数据库查询:自己实现 .mmdb 读取器(不依赖第三方库),国家、城市与 ASN 完全离线查;数据库由官网服务器每周二、周五用 MaxMind 账号同步,应用每 3 天检查清单、下载并按 sha256 校验后替换,也可以从文件导入;设置中可选是否包含城市库(约 60 MB);数据库就绪前暂用 ipinfo.io 在线查询,网络详情里标明数据来源。</li>
|
||||
<li><span class="log__kind">新增</span>本机信息页:机型图与名称、系统版本与版号、芯片与各类核心、内存与图形、存储用量、电池健康与循环次数、每台显示器的尺寸 / 原生分辨率 / 显示分辨率 / 刷新率、机型标识符、序列号(默认遮住,点眼睛图标显示,截图时始终遮住)与启动时间。</li>
|
||||
<li><span class="log__kind">新增</span>进程管理器(主窗口“进程”页):包括 root 与其他用户的系统进程(通过系统自带的 ps 读取,不需要辅助工具);列出 CPU、CPU 时间、内存、线程、唤醒次数、磁盘读写与用户,点列标题排序;可搜索名称、PID 或用户,筛选全部 / 我的 / 系统,切换按进程或按应用合并;选中后显示路径与详情,可在访达中显示、用 Apple 智能解释、退出或强制退出(二次确认,系统进程与 loginwindow 等禁止结束);底部汇总用户 / 系统 / 空闲与全系统进程数、线程数。</li>
|
||||
<li><span class="log__kind">新增</span>进程显示应用的本地化名称(如“微信”);按应用汇总时,同一应用的主进程与辅助进程合并计算。</li>
|
||||
<li><span class="log__kind">新增</span>仪表盘顶部是健康评分和芯片、内存、系统版本、运行时长、机型徽章,下面是 CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇三列卡片,以及核心负载、电池环形图、高占用进程和快捷开关。</li>
|
||||
<li><span class="log__kind">新增</span>CPU 按超级核、性能核、能效核分组显示各核心负载;内存口径与活动监视器一致,并显示内存压力;网速读取 64 位计数器,大流量下不会回绕。</li>
|
||||
<li><span class="log__kind">新增</span>温度与风扇:启动时枚举一次 SMC 键并按前缀归类,不按芯片型号硬编码,显示 CPU、GPU、内存、电池和掌托温度。</li>
|
||||
<li><span class="log__kind">新增</span>按界面需要分级采样:只显示菜单栏时只采集菜单栏用到的指标,打开详情或主窗口时按页面加采,锁屏、屏幕休眠和系统睡眠时暂停。</li>
|
||||
<li><span class="log__kind">新增</span>风扇调速:自动、降温、强冷、自定义四种模式。自定义模式下 CPU 达到安全温度会自动交还系统控制,应用退出或断开连接时风扇恢复自动。</li>
|
||||
<li><span class="log__kind">新增</span>防休眠:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可设定持续时间;使用电池且电量低于下限时自动关闭合盖运行。</li>
|
||||
<li><span class="log__kind">新增</span>辅助工具:通过 SMAppService 注册,只提供设置风扇转速、切换合盖不睡眠、刷新 DNS、释放内存、为网络服务设置 DNS 几个固定操作(DNS 地址与服务名在辅助工具内再次校验);运行时读取自己的签名团队,只接受同一团队签名的 OpenStats 调用;异常退出后下次开机自动恢复风扇与睡眠设置。</li>
|
||||
<li><span class="log__kind">新增</span>清理:扫描应用缓存、日志与崩溃报告、Chrome / Edge / Brave / Arc / Firefox / Safari 缓存、Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。按类别显示大小,可展开查看具体项目;清理前二次确认,操作写入 <code>~/Library/Logs/OpenStats/cleanup.log</code>。</li>
|
||||
<li><span class="log__kind">新增</span>清理的安全边界:只清理白名单目录,钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;正在运行的应用和浏览器自动跳过,执行前逐项重新校验。</li>
|
||||
<li><span class="log__kind">新增</span>系统维护:一键刷新 DNS 缓存、释放内存,已安装辅助工具时直接执行,否则请求一次管理员授权。</li>
|
||||
<li><span class="log__kind">新增</span>进程页按 CPU 或内存排序,辅助进程归并显示为所属应用。</li>
|
||||
<li><span class="log__kind">新增</span>设置(主窗口侧边栏的“设置”分组):外观、登录时启动、刷新频率、温度单位、菜单栏布局 / 显示项 / 样式 / 弹窗内容、连接探测与公网 IP 查询、风扇安全温度、合盖运行电量下限、辅助工具安装与卸载。</li>
|
||||
<li><span class="log__kind">新增</span>统一外观:浅色为白底蓝色、深色为黑底蓝色,主窗口与弹窗共用同一底色;侧边栏、标题栏与页面不分栏着色,红绿灯按钮与页面标题对齐;卡片为浅灰 / 深灰实色。侧边栏的太阳 / 月亮按钮一键切换,也可以跟随系统。</li>
|
||||
<li><span class="log__kind">新增</span>截图命令 <code>OpenStats --snapshot <目录></code>:用本机实时数据渲染主窗口各页、详情弹窗、设置和菜单栏的浅色与深色截图,IP 与硬件地址替换为示例值。</li>
|
||||
<li><span class="log__kind">样式</span>网络详情的流量历史:上传 / 下载峰值移到标题行(“60 秒峰值 ↑ … ↓ …”,箭头按上传绿、下载蓝着色),图表上不再压文字。</li>
|
||||
<li><span class="log__kind">样式</span>设置并入主窗口:侧边栏新增“设置”分组(通用、菜单栏、辅助工具、关于);网络设置(连接探测、公网 IP、IP 归属地数据库)放到“网络”页底部,风扇安全温度放到“温度与风扇”页底部,合盖运行电量下限放到“防休眠”页底部;弹窗齿轮、菜单栏右键“设置…”与 ⌘, 都打开主窗口的通用设置;不再有单独的设置窗口,已有偏好全部保留;导航较多时侧边栏可滚动。</li>
|
||||
<li><span class="log__kind">样式</span>主窗口侧边栏的选中样式:左侧一条两端渐隐的细线,选中项有发光的蓝色光条,切换时带回弹地滑过去,右侧拖出渐淡的蓝色高亮;不再整块填蓝。</li>
|
||||
<li><span class="log__kind">样式</span>仪表盘“快捷开关”改为开关样式:防休眠、合盖运行、散热模式各一行,右侧开关,下面一行小字说明当前状态。</li>
|
||||
<li><span class="log__kind">样式</span>进程表按窗口宽度自动隐藏次要列,窄窗口里名称列不会被挤没。</li>
|
||||
<li><span class="log__kind">样式</span>内存详情的“释放内存”移到标题栏,执行中与完成后在按钮上显示进度和结果;主窗口内存页顶栏同样提供。</li>
|
||||
<li><span class="log__kind">样式</span>主窗口默认 1072×720,可自由调整大小;滚动条改为浮层样式,只在滚动时出现。</li>
|
||||
<li><span class="log__kind">样式</span>菜单栏字号缩小并统一:两行布局为 7pt 标签加 10pt 数值,单行布局 11pt,网速两行 9pt;每种风格内部只用一套字号,指标之间留出更宽的间距。</li>
|
||||
<li><span class="log__kind">样式</span>柱状历史去掉满高的灰色底槽,只保留一条淡基线,负载起伏更清楚。</li>
|
||||
<li><span class="log__kind">样式</span>面板加宽为三列布局,高度按内容自动计算,常见屏幕上不需要滚动。</li>
|
||||
<li><span class="log__kind">样式</span>更换应用图标,面板左上角和关于页使用同一图标。</li>
|
||||
<li><span class="log__kind">样式</span>首次启动默认在菜单栏显示 CPU、内存与网速。</li>
|
||||
<li><span class="log__kind">修复</span>深色菜单栏上 CPU、RAM 小标签颜色过深,几乎看不清。</li>
|
||||
<li><span class="log__kind">修复</span>面板打开后高度会再调整一次、内容轻微回弹,看起来在抖动;面板打开时点击菜单栏图标关闭,会立刻又被打开。</li>
|
||||
<li><span class="log__kind">修复</span>风扇被其他程序设为手动模式时,误显示为由 OpenStats 控制。</li>
|
||||
<li><span class="log__kind">修复</span>风扇转速、PID 等数字出现千分位分隔符,例如 1,350 RPM。</li>
|
||||
<li><span class="log__kind">修复</span>关闭液态玻璃后点击菜单栏图标,面板看起来打不开:面板内容被放大成两倍,窗口里只显示空白的一角。</li>
|
||||
<li><span class="log__kind">修复</span>面板第一次打开时高度偏小:打开瞬间温度、风扇、进程等数据还没采集,现在启动时先完整采集一次。</li>
|
||||
</ul>
|
||||
</details>
|
||||
</article>
|
||||
</div>
|
||||
<!-- changelog:end -->
|
||||
<p class="log__all"><a href="https://github.com/gentpan/OpenStats/blob/main/CHANGELOG.md">查看完整更新日志 →</a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -391,6 +429,10 @@
|
||||
<summary>清理会不会删掉重要文件?</summary>
|
||||
<p>只清理白名单目录中的缓存与日志,钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;清理前可以展开查看每一项,下载目录中的内容会先移到废纸篓。</p>
|
||||
</details>
|
||||
<details class="faq" id="install">
|
||||
<summary>怎么安装、卸载?</summary>
|
||||
<p>下载 DMG 后把 OpenStats 拖进“应用程序”;也可以用 Homebrew:<code>brew install --cask gentpan/tap/openstats</code>。卸载时先在“设置 › 辅助工具”里卸载辅助工具,再把应用移到废纸篓;用 Homebrew 安装的执行 <code>brew uninstall --zap --cask openstats</code>。</p>
|
||||
</details>
|
||||
<details class="faq">
|
||||
<summary>支持 Intel Mac 吗?</summary>
|
||||
<p>目前在 Apple Silicon 上开发和测试,Intel 机型的风扇与温度读取尚未验证。</p>
|
||||
@@ -401,13 +443,13 @@
|
||||
|
||||
<footer class="footer">
|
||||
<div class="shell footer__inner">
|
||||
<span class="footer__brand"><img src="assets/icon.png?v=568f3916" alt="" width="20" height="20">OpenStats</span>
|
||||
<span class="footer__fine">© 2026 GiantAccel, LLC · <a href="https://github.com/gentpan/OpenStats/blob/main/LICENSE">MIT 许可证</a> · <a href="https://github.com/gentpan/OpenStats">GitHub</a></span>
|
||||
<span class="footer__brand"><img src="assets/icon.png?v=ca6e7cfe" alt="" width="20" height="20">OpenStats</span>
|
||||
<span class="footer__fine">© 2026 GiantAccel, LLC</span>
|
||||
<span class="footer__fine">OpenStats 是独立的第三方应用,与 Apple 没有隶属关系。</span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="app.js?v=568f3916" defer></script>
|
||||
<script src="replica.js?v=568f3916" defer></script>
|
||||
<script src="app.js?v=ca6e7cfe" defer></script>
|
||||
<script src="replica.js?v=ca6e7cfe" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
+7
-4
@@ -232,8 +232,8 @@ p { margin: 0; }
|
||||
.download h2 { font-size: var(--text-2xl); }
|
||||
.download p { color: var(--color-text-secondary); }
|
||||
.download__brew { font-size: var(--text-sm); }
|
||||
.download__brew code { font-family: var(--font-mono); font-size: var(--text-xs); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); background: var(--color-neutral-100); color: var(--color-text); }
|
||||
:root[data-theme="dark"] .download__brew code { background: #25282d; }
|
||||
.download__brew code, .faq code { font-family: var(--font-mono); font-size: var(--text-xs); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); background: var(--color-neutral-100); color: var(--color-text); }
|
||||
:root[data-theme="dark"] .download__brew code, :root[data-theme="dark"] .faq code { background: #25282d; }
|
||||
|
||||
/* 更新日志(由 Scripts/sync_changelog.py 生成) */
|
||||
.log { display: grid; gap: var(--space-4); }
|
||||
@@ -246,8 +246,11 @@ p { margin: 0; }
|
||||
.log__list { margin: var(--space-3) 0 0; padding-left: var(--space-4); font-size: var(--text-sm); color: var(--color-text-secondary); display: grid; gap: var(--space-2); }
|
||||
.log__kind { display: inline-block; margin-right: var(--space-2); font-size: var(--text-xs); font-weight: 600; color: var(--color-primary); }
|
||||
.log__list code { font-family: var(--font-mono); font-size: var(--text-xs); }
|
||||
.log__more { display: inline-block; margin-top: var(--space-3); font-size: var(--text-sm); }
|
||||
.log__all { margin-top: var(--space-6); font-size: var(--text-sm); }
|
||||
.log__rest { margin-top: var(--space-3); }
|
||||
.log__rest > summary, .log__older > summary { cursor: pointer; font-size: var(--text-sm); color: var(--color-primary); }
|
||||
.log__rest[open] > summary { margin-bottom: var(--space-1); }
|
||||
.log__older { display: grid; gap: var(--space-4); }
|
||||
.log__older[open] > summary { margin-bottom: var(--space-2); }
|
||||
|
||||
.faq { border-bottom: 1px solid var(--color-border); padding: var(--space-4) 0; }
|
||||
.faq summary { cursor: pointer; font-weight: 600; list-style: none; }
|
||||
|
||||
Reference in new issue
Block a user