发布 0.2.0:安装包放官网,Homebrew 通过 gentpan/tap 安装

- 版本号改为 0.2.0(构建号 2),更新日志标记为 0.2.0 · 2026-09-13
- release.sh 生成的 cask 指向 getopenstats.com/download;新增 publish_release.sh:上传 DMG、校验线上文件、提交 cask 到 homebrew-tap
- 官网部署排除 /download/;官网下载按钮与 README 安装说明改为官网下载与 brew 命令
This commit is contained in:
gentpan committed 2026-09-13 07:18:50 +05:00
1 parent 3b3fd577da
commit bdb55e602d
9 files changed
+105 -48

No files matched your search

+1 -1
View File
@@ -3,7 +3,7 @@
记录 OpenStats 应用的功能新增、样式调整和问题修复,按版本与日期倒序排列。
官网、构建与发布脚本等不影响应用本身的改动不在此记录。
## 未发布
## 0.2.0 · 2026-09-13
### 2026-09-13
+11 -10
View File
@@ -6,13 +6,12 @@
**Your Mac at a glance — CPU, GPU, memory, network and temperatures in the menu bar, with fan control, keep-awake and one-click cleanup.**
[![Release](https://img.shields.io/github/v/release/gentpan/OpenStats?color=6ee02b&label=release)](https://github.com/gentpan/OpenStats/releases/latest)
[![Downloads](https://img.shields.io/github/downloads/gentpan/OpenStats/total?color=6ee02b&label=downloads)](https://github.com/gentpan/OpenStats/releases)
[![Release](https://img.shields.io/badge/release-0.2.0-6ee02b)](https://getopenstats.com/#download)
[![Stars](https://img.shields.io/github/stars/gentpan/OpenStats?style=flat&color=f5c518&label=stars)](https://github.com/gentpan/OpenStats/stargazers)
[![Last commit](https://img.shields.io/github/last-commit/gentpan/OpenStats?color=black&label=last%20commit)](https://github.com/gentpan/OpenStats/commits/main)
[![Commit activity](https://img.shields.io/github/commit-activity/m/gentpan/OpenStats?color=black&label=commits)](https://github.com/gentpan/OpenStats/graphs/commit-activity)
[![CI](https://github.com/gentpan/OpenStats/actions/workflows/ci.yml/badge.svg)](https://github.com/gentpan/OpenStats/actions/workflows/ci.yml)
[![macOS](https://img.shields.io/badge/macOS-14%2B-black)](https://github.com/gentpan/OpenStats/releases/latest)
[![macOS](https://img.shields.io/badge/macOS-14%2B-black)](https://getopenstats.com/#download)
[![License](https://img.shields.io/badge/license-MIT-black)](LICENSE)
OpenStats is a macOS menu-bar app that shows what your Mac is doing right now — per-core
@@ -20,7 +19,7 @@ CPU load, GPU, memory pressure, network speed, disk, battery, temperatures and f
lets you act on it: spin the fans up, keep the Mac awake with the lid closed, clear caches.
Everything is read on your own Mac. No account, no telemetry. The only network traffic is optional and on demand: a public-IP lookup when you open network details, and a ping probe to a target you choose.
[Download](https://github.com/gentpan/OpenStats/releases/latest) ·
[Download](https://getopenstats.com/#download) ·
[Website](https://getopenstats.com) ·
[Changelog](CHANGELOG.md) ·
[Architecture](ARCHITECTURE.md)
@@ -33,10 +32,12 @@ Everything is read on your own Mac. No account, no telemetry. The only network t
## Install
OpenStats has not had a release yet. The first one will be a `.dmg` on
[Releases](https://github.com/gentpan/OpenStats/releases/latest), signed with a Developer ID
certificate and notarized by Apple, followed by a Homebrew cask. Until then, build it from
source — see [Build & run](#build--run).
Download [OpenStats 0.2.0](https://getopenstats.com/download/OpenStats-0.2.0.dmg) from the website
(signed with a Developer ID certificate and notarized by Apple), or install it with Homebrew:
```bash
brew install --cask gentpan/tap/openstats
```
Requires macOS 14 (Sonoma) or later.
Developed and tested on Apple Silicon. The interface is in Simplified Chinese.
@@ -46,10 +47,10 @@ 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. -->
Not released yet · **48** changes in development · [full changelog](CHANGELOG.md) (kept in Chinese)
Latest release **0.2.0** (2026-09-13) · [full changelog](CHANGELOG.md) (kept in Chinese)
<details open>
<summary><b>2026-09-13</b> · Unreleased · 30 added · 12 style · 6 fixed</summary>
<summary><b>2026-09-13</b> · 0.2.0 · 30 added · 12 style · 6 fixed</summary>
**Added**
+11 -9
View File
@@ -6,20 +6,19 @@
**Mac 的状态,抬眼就看见——CPU、GPU、内存、网络与温度常驻菜单栏,还能调风扇、防休眠、一键清理。**
[![Release](https://img.shields.io/github/v/release/gentpan/OpenStats?color=6ee02b&label=%E7%89%88%E6%9C%AC)](https://github.com/gentpan/OpenStats/releases/latest)
[![Downloads](https://img.shields.io/github/downloads/gentpan/OpenStats/total?color=6ee02b&label=%E4%B8%8B%E8%BD%BD)](https://github.com/gentpan/OpenStats/releases)
[![Release](https://img.shields.io/badge/%E7%89%88%E6%9C%AC-0.2.0-6ee02b)](https://getopenstats.com/#download)
[![Stars](https://img.shields.io/github/stars/gentpan/OpenStats?style=flat&color=f5c518&label=%E6%98%9F%E6%A0%87)](https://github.com/gentpan/OpenStats/stargazers)
[![Last commit](https://img.shields.io/github/last-commit/gentpan/OpenStats?color=black&label=%E6%9C%80%E8%BF%91%E6%8F%90%E4%BA%A4)](https://github.com/gentpan/OpenStats/commits/main)
[![Commit activity](https://img.shields.io/github/commit-activity/m/gentpan/OpenStats?color=black&label=%E6%8F%90%E4%BA%A4)](https://github.com/gentpan/OpenStats/graphs/commit-activity)
[![CI](https://github.com/gentpan/OpenStats/actions/workflows/ci.yml/badge.svg)](https://github.com/gentpan/OpenStats/actions/workflows/ci.yml)
[![macOS](https://img.shields.io/badge/macOS-14%2B-black)](https://github.com/gentpan/OpenStats/releases/latest)
[![macOS](https://img.shields.io/badge/macOS-14%2B-black)](https://getopenstats.com/#download)
[![License](https://img.shields.io/badge/license-MIT-black)](LICENSE)
OpenStats 是一款 macOS 菜单栏应用,实时显示 Mac 正在做什么:各核心 CPU 负载、GPU、内存压力、
网速、磁盘、电池、温度和风扇,并且可以直接处理:给风扇提速、合盖后继续运行、清理缓存。
所有数据都在你自己的 Mac 上读取。无需注册账号,没有统计上报。只有两项可关闭的网络功能会联网:打开网络详情时查询公网 IP,以及定时 ping 你选择的探测目标。
[下载](https://github.com/gentpan/OpenStats/releases/latest) ·
[下载](https://getopenstats.com/#download) ·
[官网](https://getopenstats.com) ·
[更新日志](CHANGELOG.md) ·
[架构说明](ARCHITECTURE.md)
@@ -32,9 +31,12 @@ OpenStats 是一款 macOS 菜单栏应用,实时显示 Mac 正在做什么:
## 安装
OpenStats 还没有发布正式版本。第一个版本会在 [Releases](https://github.com/gentpan/OpenStats/releases/latest)
提供 `.dmg`,使用 Developer ID 证书签名并经过 Apple 公证,之后提供 Homebrew cask。
在此之前请从源码构建,见[构建与运行](#构建与运行)。
从官网下载 [OpenStats 0.2.0](https://getopenstats.com/download/OpenStats-0.2.0.dmg)(Developer ID 签名、经过 Apple 公证),
或者用 Homebrew 安装:
```bash
brew install --cask gentpan/tap/openstats
```
需要 macOS 14(Sonoma)或更高版本。在 Apple Silicon 上开发和测试。
界面为简体中文。
@@ -44,10 +46,10 @@ OpenStats 还没有发布正式版本。第一个版本会在 [Releases](https:/
<!-- changelog:start -->
<!-- 由 Scripts/sync_changelog.py 从 CHANGELOG.md 生成,请勿手改。 -->
尚未发布正式版本 · 开发中 **48** 项改动尚未发布 · [完整更新日志](CHANGELOG.md)
最新版本 **0.2.0**(2026-09-13) · [完整更新日志](CHANGELOG.md)
<details open>
<summary><b>2026-09-13</b> · 未发布 · 新增 30 · 样式 12 · 修复 6</summary>
<summary><b>2026-09-13</b> · 0.2.0 · 新增 30 · 样式 12 · 修复 6</summary>
**新增**
+3 -2
View File
@@ -24,8 +24,9 @@ echo "内容指纹 v=$STAMP"
# 目录归部署用户所有,Caddy 只需读取
"${SSH[@]}" "$HOST" "sudo mkdir -p $ROOT && sudo chown -R \$(id -un):\$(id -gn) $ROOT"
# geoip/ 由服务器上的定时任务生成,不在 web/ 里——排除掉,否则 --delete 会把数据库删了
rsync -az --delete --exclude /geoip/ -e "${SSH[*]}" web/ "$HOST:$ROOT/"
# geoip/ 由服务器上的定时任务生成,download/ 是 publish_release.sh 上传的安装包,都不在 web/ 里——
# 排除掉,否则 --delete 会把它们删了
rsync -az --delete --exclude /geoip/ --exclude /download/ -e "${SSH[*]}" web/ "$HOST:$ROOT/"
"${SSH[@]}" "$HOST" "sudo chmod -R a+rX $ROOT"
echo "已同步到 $HOST:$ROOT"
+48
View File
@@ -0,0 +1,48 @@
#!/bin/bash
# 发布已公证的版本:DMG 上传到官网 /download/,cask 提交到 gentpan/homebrew-tap,并校验线上文件。
#
# ./Scripts/release.sh # 先打包、公证
# ./Scripts/publish_release.sh # 再发布
set -euo pipefail
cd "$(dirname "$0")/.."
HOST="${SITE_HOST:-debian@15.204.80.137}"
KEY="${SITE_KEY:-$HOME/.ssh/gentpan.pem}"
ROOT="${SITE_ROOT:-/var/www/getopenstats.com}"
TAP="${TAP:-gentpan/homebrew-tap}"
VERSION="$(sed -nE 's/^ *MARKETING_VERSION: *"?([0-9.]+)"?.*/\1/p' project.yml | head -1)"
DMG="dist/OpenStats-${VERSION}.dmg"
CASK="dist/openstats.rb"
SSH=(ssh -i "$KEY" -o BatchMode=yes "$HOST")
[ -f "$DMG" ] && [ -f "$CASK" ] || { echo "缺少 $DMG 或 $CASK,先运行 ./Scripts/release.sh" >&2; exit 1; }
grep -q "version \"${VERSION}\"" "$CASK" || { echo "$CASK 的版本不是 ${VERSION}" >&2; exit 1; }
xcrun stapler validate "$DMG" >/dev/null || { echo "$DMG 没有装订公证票据" >&2; exit 1; }
SHA="$(shasum -a 256 "$DMG" | cut -d' ' -f1)"
grep -q "$SHA" "$CASK" || { echo "$CASK 里的 sha256 与 DMG 不一致" >&2; exit 1; }
# 上传:先传临时名再改名,下载中途不会拿到半个文件
"${SSH[@]}" "sudo install -d -o \$(id -un) -m 755 $ROOT/download"
scp -i "$KEY" -o BatchMode=yes "$DMG" "$HOST:$ROOT/download/.OpenStats-${VERSION}.dmg.part"
"${SSH[@]}" "mv -f $ROOT/download/.OpenStats-${VERSION}.dmg.part $ROOT/download/OpenStats-${VERSION}.dmg && chmod 644 $ROOT/download/OpenStats-${VERSION}.dmg"
URL="https://getopenstats.com/download/OpenStats-${VERSION}.dmg"
ONLINE="$(curl -fsSL --max-time 300 "$URL" | shasum -a 256 | cut -d' ' -f1)"
[ "$ONLINE" = "$SHA" ] || { echo "线上 DMG 校验不一致:$ONLINE" >&2; exit 1; }
echo "✅ $URL"
# Homebrew tap
WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT
gh repo clone "$TAP" "$WORK/tap" -- --quiet
mkdir -p "$WORK/tap/Casks"
cp "$CASK" "$WORK/tap/Casks/openstats.rb"
if git -C "$WORK/tap" diff --quiet -- Casks/openstats.rb && git -C "$WORK/tap" ls-files --error-unmatch Casks/openstats.rb >/dev/null 2>&1; then
echo "✅ $TAP 已是 ${VERSION}"
else
git -C "$WORK/tap" add Casks/openstats.rb
git -C "$WORK/tap" commit -q -m "openstats ${VERSION}"
git -C "$WORK/tap" push -q
echo "✅ 已提交 Casks/openstats.rb 到 $TAP"
fi
echo "安装:brew install --cask gentpan/tap/openstats"
+4 -3
View File
@@ -12,7 +12,8 @@
set -euo pipefail
cd "$(dirname "$0")/.."
REPO="${REPO:-gentpan/OpenStats}"
# 安装包放在官网(仓库是私有的,GitHub Release 无法匿名下载)
DOWNLOAD_BASE="${DOWNLOAD_BASE:-https://getopenstats.com/download}"
DIST="${DIST:-dist}"
NOTARY_PROFILE="${NOTARY_PROFILE:-QuotaBar}"
SIGN_ID="${SIGN_ID:-$(security find-identity -v -p codesigning 2>/dev/null \
@@ -91,7 +92,7 @@ cask "openstats" do
version "${VERSION}"
sha256 "${SHA256}"
url "https://github.com/${REPO}/releases/download/v#{version}/OpenStats-#{version}.dmg"
url "${DOWNLOAD_BASE}/OpenStats-#{version}.dmg"
name "OpenStats"
desc "Menu bar system monitor with fan control, keep-awake and cleanup"
homepage "https://getopenstats.com"
@@ -114,5 +115,5 @@ echo " Homebrew cask:${DIST}/openstats.rb"
if [ "${SKIP_NOTARIZE:-0}" = "1" ]; then
echo "⚠️ 未公证,仅供本机测试。"
else
echo "下一步:创建 GitHub Release v${VERSION} 并上传 DMG,再把 cask 提交到 gentpan/homebrew-tap。"
echo "下一步:./Scripts/publish_release.sh 上传 DMG 到官网并更新 gentpan/homebrew-tap。"
fi
+2 -2
View File
@@ -11,8 +11,8 @@ options:
settings:
base:
SWIFT_VERSION: "6.0"
MARKETING_VERSION: "0.1.0"
CURRENT_PROJECT_VERSION: "1"
MARKETING_VERSION: "0.2.0"
CURRENT_PROJECT_VERSION: "2"
MACOSX_DEPLOYMENT_TARGET: "14.0"
# 本地开发使用 ad-hoc 签名;发布时改为 Developer ID(见 docs/PLAN.md)
CODE_SIGN_STYLE: Manual
+22 -21
View File
@@ -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=b67d2007" sizes="48x48">
<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32.png?v=b67d2007">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon.png?v=b67d2007">
<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">
<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=b67d2007">
<link rel="stylesheet" href="replica.css?v=b67d2007">
<link rel="stylesheet" href="styles.css?v=568f3916">
<link rel="stylesheet" href="replica.css?v=568f3916">
</head>
<body>
@@ -108,7 +108,7 @@
</span>
<span class="island__expanded" aria-hidden="true">
<span class="island__row">
<span class="island__brand"><img src="assets/icon.png?v=b67d2007" alt="" width="18" height="18">OpenStats</span>
<span class="island__brand"><img src="assets/icon.png?v=568f3916" alt="" width="18" height="18">OpenStats</span>
<span class="island__health" data-bind="island-health">各项指标正常</span>
</span>
<span class="island__grid">
@@ -128,7 +128,7 @@
<!-- 左侧桌面图标 -->
<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=b67d2007" alt="" width="40" height="40"></span>
<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__name">OpenStats.dmg</span>
</a>
<a class="desk-icon" href="https://github.com/gentpan/OpenStats#readme">
@@ -152,7 +152,7 @@
<span class="window__title">欢迎使用 OpenStats</span>
</div>
<div class="window__body hero__body">
<img class="hero__icon" src="assets/icon.png?v=b67d2007" alt="OpenStats 图标" width="72" height="72">
<img class="hero__icon" src="assets/icon.png?v=568f3916" 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">
@@ -172,7 +172,7 @@
<!-- 程序坞 -->
<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=b67d2007" alt="OpenStats"></button>
<button class="dock__item" id="dockOpenStats" type="button" title="打开 OpenStats"><img class="dock__art" src="assets/icon.png?v=568f3916" 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>
@@ -249,8 +249,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=b67d2007" alt="OpenStats 网络详情弹窗" loading="lazy">
<img class="shot--dark" src="assets/popover-network-dark.png?v=b67d2007" alt="OpenStats 网络详情弹窗,深色" loading="lazy">
<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">
</figure>
</div>
</section>
@@ -262,8 +262,8 @@
<p>主窗口、设置和弹窗共用同一底色,侧边栏与标题栏不分栏着色;窗口宽高都能拖动调整。</p>
</div>
<div class="shots">
<figure class="shot"><img src="assets/window-light.png?v=b67d2007" alt="OpenStats 主窗口仪表盘,浅色" loading="lazy"><figcaption>浅色</figcaption></figure>
<figure class="shot"><img src="assets/window-dark.png?v=b67d2007" alt="OpenStats 主窗口仪表盘,深色" loading="lazy"><figcaption>深色</figcaption></figure>
<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>
</div>
</div>
</section>
@@ -284,7 +284,7 @@
<p>合盖后继续运行适合下载、渲染和远程连接。使用电池且电量低于下限时会自动关闭,避免在包里过热。</p>
<p class="note">风扇与合盖运行需要安装一次辅助工具。它只提供固定的几个操作,不执行任意命令,应用退出时自动恢复设置。</p>
</div>
<figure class="shot split__media"><img src="assets/thermal.png?v=b67d2007" alt="OpenStats 散热页面" loading="lazy"></figure>
<figure class="shot split__media"><img src="assets/thermal.png?v=568f3916" alt="OpenStats 散热页面" loading="lazy"></figure>
</div>
</section>
@@ -301,7 +301,7 @@
</ul>
<p>只处理白名单目录;正在运行的应用会跳过,浏览器需先退出;删除前每一项再校验一次,所有操作写入日志。</p>
</div>
<figure class="shot split__media"><img src="assets/cleaner.png?v=b67d2007" alt="OpenStats 清理页面" loading="lazy"></figure>
<figure class="shot split__media"><img src="assets/cleaner.png?v=568f3916" alt="OpenStats 清理页面" loading="lazy"></figure>
</div>
</section>
@@ -326,14 +326,15 @@
<section class="band band--alt" id="download">
<div class="shell narrow download">
<img src="assets/icon.png?v=b67d2007" alt="" width="96" height="96">
<img src="assets/icon.png?v=568f3916" alt="" width="96" height="96">
<h2>下载 OpenStats</h2>
<p>使用 Developer ID 签名并经过 Apple 公证,打开时不会遇到安全拦截。</p>
<div class="hero__actions">
<a class="btn btn--primary" href="https://github.com/gentpan/OpenStats/releases/latest">下载 .dmg</a>
<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>
</div>
<p class="hero__meta">macOS 14 Sonoma 及以上 · 简体中文界面</p>
<p class="download__brew">也可以用 Homebrew 安装:<code>brew install --cask gentpan/tap/openstats</code></p>
</div>
</section>
@@ -347,7 +348,7 @@
<!-- 由 Scripts/sync_changelog.py 从 CHANGELOG.md 生成,请勿手改。 -->
<div class="log">
<article class="log__day">
<div class="log__head"><time datetime="2026-09-13">2026-09-13</time><span class="log__tag">未发布</span></div>
<div class="log__head"><time datetime="2026-09-13">2026-09-13</time><span class="log__tag">0.2.0</span></div>
<p class="log__counts">新增 30 · 样式 12 · 修复 6</p>
<ul class="log__list">
<li><span class="log__kind">新增</span>菜单栏显示 CPU、GPU、内存、网速、CPU 温度和风扇转速。</li>
@@ -400,13 +401,13 @@
<footer class="footer">
<div class="shell footer__inner">
<span class="footer__brand"><img src="assets/icon.png?v=b67d2007" alt="" width="20" height="20">OpenStats</span>
<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__fine">OpenStats 是独立的第三方应用,与 Apple 没有隶属关系。</span>
</div>
</footer>
<script src="app.js?v=b67d2007" defer></script>
<script src="replica.js?v=b67d2007" defer></script>
<script src="app.js?v=568f3916" defer></script>
<script src="replica.js?v=568f3916" defer></script>
</body>
</html>
+3
View File
@@ -231,6 +231,9 @@ p { margin: 0; }
.download { text-align: center; display: flex; flex-direction: column; align-items: center; gap: var(--space-4); }
.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; }
/* 更新日志(由 Scripts/sync_changelog.py 生成) */
.log { display: grid; gap: var(--space-4); }