From 3daa7a454115ec2448641655d654e65def583376 Mon Sep 17 00:00:00 2001 From: gentpan Date: Sun, 13 Sep 2026 03:12:30 +0500 Subject: [PATCH] =?UTF-8?q?README=20=E6=94=B9=E4=B8=BA=E4=B8=8E=20QuotaBar?= =?UTF-8?q?=20=E7=BB=9F=E4=B8=80=E7=9A=84=E7=89=88=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 顶部居中 Logo、同配色徽章(版本、下载、星标、最近提交、提交频率、CI、macOS、许可证) - 中英文两份 README,最近更新由 CHANGELOG.md 生成,附提交活跃度热力图与星标历史 - 新增 CHANGELOG.md、ARCHITECTURE.md、MIT LICENSE、Scripts/sync_changelog.py、CI 工作流 - README 图片移到 Assets/readme --- .github/workflows/ci.yml | 53 +++ ARCHITECTURE.md | 105 ++++++ Assets/icon.png | Bin 0 -> 193149 bytes Assets/readme/activity.svg | 199 ++++++++++ Assets/readme/activity.zh.svg | 199 ++++++++++ .../readme}/cleaner-light.png | Bin .../readme}/keepawake-light.png | Bin .../images => Assets/readme}/menubar-dark.png | Bin .../readme}/overview-dark.png | Bin .../readme}/overview-light.png | Bin .../readme}/settings-menubar-light.png | Bin .../images => Assets/readme}/thermal-dark.png | Bin CHANGELOG.md | 40 ++ LICENSE | 21 ++ README.md | 342 +++++++++++------- README.zh-CN.md | 233 ++++++++++++ Scripts/sync_changelog.py | 260 +++++++++++++ 17 files changed, 1326 insertions(+), 126 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 ARCHITECTURE.md create mode 100644 Assets/icon.png create mode 100644 Assets/readme/activity.svg create mode 100644 Assets/readme/activity.zh.svg rename {docs/images => Assets/readme}/cleaner-light.png (100%) rename {docs/images => Assets/readme}/keepawake-light.png (100%) rename {docs/images => Assets/readme}/menubar-dark.png (100%) rename {docs/images => Assets/readme}/overview-dark.png (100%) rename {docs/images => Assets/readme}/overview-light.png (100%) rename {docs/images => Assets/readme}/settings-menubar-light.png (100%) rename {docs/images => Assets/readme}/thermal-dark.png (100%) create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 README.zh-CN.md create mode 100644 Scripts/sync_changelog.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..36df2c4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,53 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + build-and-test: + runs-on: macos-15 + steps: + - uses: actions/checkout@v7 + + # CommandLineTools alone cannot expand SwiftUI's @Observable / @Entry + # macros — the plugins ship only with full Xcode. Use the runner's + # default Xcode rather than pinning a version that may not be installed + # on a future image. + - name: Select Xcode + run: | + ls -d /Applications/Xcode*.app + sudo xcode-select -s /Applications/Xcode.app/Contents/Developer + swift --version + + - name: Install XcodeGen + run: brew install xcodegen + + - name: Test + run: make test + + - name: Build app + run: make build CONFIG=Release + + - name: Verify bundle + run: | + APP=build/DerivedData/Build/Products/Release/OpenStats.app + test -x "$APP/Contents/MacOS/OpenStats" + test -x "$APP/Contents/MacOS/OpenStatsHelper" + test -f "$APP/Contents/Library/LaunchDaemons/com.openstats.helper.plist" + test -f "$APP/Contents/Resources/AppIcon.icns" + codesign --verify --verbose "$APP" + + # Smoke test: the panel is a menu-bar popover with no window to drive in + # CI, so render it off-screen instead. A view that traps on layout fails + # here rather than the first time a user clicks the menu-bar item. + - name: Render UI snapshots + run: | + build/DerivedData/Build/Products/Release/OpenStats.app/Contents/MacOS/OpenStats --snapshot "$PWD/snapshots" + test "$(ls snapshots/*.png | wc -l)" -ge 20 + + - uses: actions/upload-artifact@v7 + with: + name: ui-snapshots + path: snapshots/ diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..affe277 --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,105 @@ +# OpenStats + +macOS 14+ menu-bar system monitor. Swift 6 language mode, AppKit status item and panels +hosting SwiftUI, no third-party dependencies. The Xcode project is generated from +`project.yml` by XcodeGen; everything testable lives in the local Swift package. + +- `App/` — `main.swift` and the asset catalog. +- `Helper/` — the privileged helper (`OpenStatsHelper`) and its launchd plist, embedded in + the app bundle for `SMAppService.daemon`. +- `Packages/OpenStatsKit/Sources/SMC` — the AppleSMC user client, fan control, temperature + key discovery. +- `Packages/OpenStatsKit/Sources/Metrics` — one sampler per metric and `MetricsHub`. +- `Packages/OpenStatsKit/Sources/Cleaner` — cleanup rules, `SafetyGuard`, `CleanEngine`. +- `Packages/OpenStatsKit/Sources/HelperShared` — the XPC protocol and maintenance commands + shared by the app and the helper. +- `Packages/OpenStatsKit/Sources/OpenStatsUI` — design tokens, panel pages, settings, + menu-bar renderer, app controller, snapshot renderer. +- `Packages/OpenStatsKit/Tests` — metrics, SMC decoding and cleanup safety. + +## Build + +**A full Xcode is required.** CommandLineTools does not ship the SwiftUI macro plugins. + +```bash +brew install xcodegen +make build # Debug +make install # Release into /Applications +make test # swift test in the package +``` + +Builds are ad-hoc signed (`CODE_SIGN_IDENTITY: "-"` in `project.yml`). For a release, +switch to a Developer ID identity, keep hardened runtime on, notarize, and set +`HelperConstants.teamIdentifier` so the helper's code-signing requirement includes the team. + +## Sampling + +`MetricsHub` is an actor that runs one loop. `AppModel.demand` describes what is on screen — +which menu-bar items are enabled, whether the panel is open and on which tab — and the hub +samples only that: CPU always; memory and network cheaply; GPU, disk, processes, sensors and +fans only when a visible surface needs them. Disk is read at most every 30 s, battery every +10 s. The loop pauses on screen sleep, system sleep and session switch. + +Things that are easy to get wrong and are handled on purpose: + +- `host_processor_info` returns kernel-allocated memory; it is `vm_deallocate`d every sample. +- `getifaddrs`' `if_data` counters are 32-bit and wrap at 4 GiB; network uses + `NET_RT_IFLIST2` and `if_data64`. +- Memory follows Activity Monitor: app memory is `internal − purgeable` pages; the page size + comes from `host_page_size` (16 KB on Apple Silicon). +- Process CPU time and wall time are both in mach absolute units, so their ratio needs no + timebase conversion. +- Core types come from `hw.perflevelN`; logical CPUs are numbered from the lowest + performance level up. + +## SMC + +Temperatures are not hard-coded per chip. On first use the sampler enumerates every SMC key +once (≈3,800 keys in about 10 ms on an M5 Max), groups `Tp*`/`Te*` as CPU, `Tg*` as GPU, +`Tm*` as memory, `TB*` as battery and `Ts0P`/`Ts1P` as palm rest, keeps keys whose first +reading is plausible, and samples at most 12 per group. + +Fans are read without privileges. Writing needs root and goes through the helper. On M5 +the mode key (`F0md`) accepts a direct write; M1–M4 first need `Ftst=1` and a pause while +`thermalmonitord` lets go. The firmware records only manual or automatic, not who set it, so +a fan in manual mode that OpenStats did not set is shown as controlled by another program. + +## Helper + +Registered with `SMAppService.daemon`; `RunAtLoad` so that an unclean exit is repaired at +boot. The XPC interface is a fixed list of operations — no arbitrary commands — and each +connection gets `setCodeSigningRequirement`. State that must be undone (manual fans, disabled +sleep) is persisted to `/Library/Application Support/OpenStats/helper-state.plist` and +reverted when the last client disconnects or at the next start. The helper exits after 30 s +without clients. + +## Cleanup + +Every rule lists candidate items; every item passes `SafetyGuard` twice — at scan and again +right before deletion, because apps start in between. + +- Deny by default: an item must sit strictly inside an allow-listed root under the home + folder, never be the root itself, contain no `..` or control characters, and still pass + after symlinks are resolved (resolution can only reject, never allow). +- Under `Application Support`, only folders named like caches (`Code Cache`, `GPUCache`, + `CacheStorage`, …) are allowed. +- Any path component matching a protected keyword (keychains, password managers, VPNs, + cookies, history, …) is rejected. +- Reverse-DNS cache folders whose app is running are skipped; browser rules are blocked while + the browser runs; items modified in the last two minutes count as in use. + +Regenerable caches are deleted outright; user files go to the Trash. Each action is appended +to `~/Library/Logs/OpenStats/cleanup.log` as a JSON line. + +## Panel + +A borderless, non-activating `NSPanel` under the status item, hosting SwiftUI inside +`NSGlassEffectView` on macOS 26+ (`NSVisualEffectView` before). The SwiftUI tree is created on +open and destroyed on close, so a hidden panel costs nothing. Height comes from measuring a +flat, scroll-free copy of the same view; placeholders keep that height stable until data +arrives, and the window is resized without animation because animating it makes SwiftUI +re-lay out every frame. Charts are drawn with `Canvas`, not Swift Charts. + +`--snapshot ` renders every panel tab, settings section and the menu bar in light and +dark, through real `NSHostingView`s in off-screen windows — `ImageRenderer` washes out pages +that contain bitmaps. diff --git a/Assets/icon.png b/Assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae4185d9c86b32aca6079564f079d3e6b4217d8 GIT binary patch literal 193149 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

!|m>&gUkMP1U)lb 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

@iBqz2^lgwCt; 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%0D=`x0>LU_Cf*!AeqcJ$~`j!@<&&b5ogojC|F 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
#inymrO%#*$d(gG?uh4nHDKH*vyh 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 +4 commits in the last 26 weeks + +Apr +May +Jun +Jul +Aug +Sep +Mon +Wed +Fri + +0 commits on 2026-03-22 +0 commits on 2026-03-23 +0 commits on 2026-03-24 +0 commits on 2026-03-25 +0 commits on 2026-03-26 +0 commits on 2026-03-27 +0 commits on 2026-03-28 +0 commits on 2026-03-29 +0 commits on 2026-03-30 +0 commits on 2026-03-31 +0 commits on 2026-04-01 +0 commits on 2026-04-02 +0 commits on 2026-04-03 +0 commits on 2026-04-04 +0 commits on 2026-04-05 +0 commits on 2026-04-06 +0 commits on 2026-04-07 +0 commits on 2026-04-08 +0 commits on 2026-04-09 +0 commits on 2026-04-10 +0 commits on 2026-04-11 +0 commits on 2026-04-12 +0 commits on 2026-04-13 +0 commits on 2026-04-14 +0 commits on 2026-04-15 +0 commits on 2026-04-16 +0 commits on 2026-04-17 +0 commits on 2026-04-18 +0 commits on 2026-04-19 +0 commits on 2026-04-20 +0 commits on 2026-04-21 +0 commits on 2026-04-22 +0 commits on 2026-04-23 +0 commits on 2026-04-24 +0 commits on 2026-04-25 +0 commits on 2026-04-26 +0 commits on 2026-04-27 +0 commits on 2026-04-28 +0 commits on 2026-04-29 +0 commits on 2026-04-30 +0 commits on 2026-05-01 +0 commits on 2026-05-02 +0 commits on 2026-05-03 +0 commits on 2026-05-04 +0 commits on 2026-05-05 +0 commits on 2026-05-06 +0 commits on 2026-05-07 +0 commits on 2026-05-08 +0 commits on 2026-05-09 +0 commits on 2026-05-10 +0 commits on 2026-05-11 +0 commits on 2026-05-12 +0 commits on 2026-05-13 +0 commits on 2026-05-14 +0 commits on 2026-05-15 +0 commits on 2026-05-16 +0 commits on 2026-05-17 +0 commits on 2026-05-18 +0 commits on 2026-05-19 +0 commits on 2026-05-20 +0 commits on 2026-05-21 +0 commits on 2026-05-22 +0 commits on 2026-05-23 +0 commits on 2026-05-24 +0 commits on 2026-05-25 +0 commits on 2026-05-26 +0 commits on 2026-05-27 +0 commits on 2026-05-28 +0 commits on 2026-05-29 +0 commits on 2026-05-30 +0 commits on 2026-05-31 +0 commits on 2026-06-01 +0 commits on 2026-06-02 +0 commits on 2026-06-03 +0 commits on 2026-06-04 +0 commits on 2026-06-05 +0 commits on 2026-06-06 +0 commits on 2026-06-07 +0 commits on 2026-06-08 +0 commits on 2026-06-09 +0 commits on 2026-06-10 +0 commits on 2026-06-11 +0 commits on 2026-06-12 +0 commits on 2026-06-13 +0 commits on 2026-06-14 +0 commits on 2026-06-15 +0 commits on 2026-06-16 +0 commits on 2026-06-17 +0 commits on 2026-06-18 +0 commits on 2026-06-19 +0 commits on 2026-06-20 +0 commits on 2026-06-21 +0 commits on 2026-06-22 +0 commits on 2026-06-23 +0 commits on 2026-06-24 +0 commits on 2026-06-25 +0 commits on 2026-06-26 +0 commits on 2026-06-27 +0 commits on 2026-06-28 +0 commits on 2026-06-29 +0 commits on 2026-06-30 +0 commits on 2026-07-01 +0 commits on 2026-07-02 +0 commits on 2026-07-03 +0 commits on 2026-07-04 +0 commits on 2026-07-05 +0 commits on 2026-07-06 +0 commits on 2026-07-07 +0 commits on 2026-07-08 +0 commits on 2026-07-09 +0 commits on 2026-07-10 +0 commits on 2026-07-11 +0 commits on 2026-07-12 +0 commits on 2026-07-13 +0 commits on 2026-07-14 +0 commits on 2026-07-15 +0 commits on 2026-07-16 +0 commits on 2026-07-17 +0 commits on 2026-07-18 +0 commits on 2026-07-19 +0 commits on 2026-07-20 +0 commits on 2026-07-21 +0 commits on 2026-07-22 +0 commits on 2026-07-23 +0 commits on 2026-07-24 +0 commits on 2026-07-25 +0 commits on 2026-07-26 +0 commits on 2026-07-27 +0 commits on 2026-07-28 +0 commits on 2026-07-29 +0 commits on 2026-07-30 +0 commits on 2026-07-31 +0 commits on 2026-08-01 +0 commits on 2026-08-02 +0 commits on 2026-08-03 +0 commits on 2026-08-04 +0 commits on 2026-08-05 +0 commits on 2026-08-06 +0 commits on 2026-08-07 +0 commits on 2026-08-08 +0 commits on 2026-08-09 +0 commits on 2026-08-10 +0 commits on 2026-08-11 +0 commits on 2026-08-12 +0 commits on 2026-08-13 +0 commits on 2026-08-14 +0 commits on 2026-08-15 +0 commits on 2026-08-16 +0 commits on 2026-08-17 +0 commits on 2026-08-18 +0 commits on 2026-08-19 +0 commits on 2026-08-20 +0 commits on 2026-08-21 +0 commits on 2026-08-22 +0 commits on 2026-08-23 +0 commits on 2026-08-24 +0 commits on 2026-08-25 +0 commits on 2026-08-26 +0 commits on 2026-08-27 +0 commits on 2026-08-28 +0 commits on 2026-08-29 +0 commits on 2026-08-30 +0 commits on 2026-08-31 +0 commits on 2026-09-01 +0 commits on 2026-09-02 +0 commits on 2026-09-03 +0 commits on 2026-09-04 +0 commits on 2026-09-05 +0 commits on 2026-09-06 +0 commits on 2026-09-07 +0 commits on 2026-09-08 +0 commits on 2026-09-09 +0 commits on 2026-09-10 +0 commits on 2026-09-11 +0 commits on 2026-09-12 +4 commits on 2026-09-13 + +4 commits in the last 26 weeks · through 2026-09-13 +Less + + + + + +More + diff --git a/Assets/readme/activity.zh.svg b/Assets/readme/activity.zh.svg new file mode 100644 index 0000000..3d4ef2d --- /dev/null +++ b/Assets/readme/activity.zh.svg @@ -0,0 +1,199 @@ + +近 26 周共 4 次提交 + +4月 +5月 +6月 +7月 +8月 +9月 +一 +三 +五 + +2026-03-22:0 次提交 +2026-03-23:0 次提交 +2026-03-24:0 次提交 +2026-03-25:0 次提交 +2026-03-26:0 次提交 +2026-03-27:0 次提交 +2026-03-28:0 次提交 +2026-03-29:0 次提交 +2026-03-30:0 次提交 +2026-03-31:0 次提交 +2026-04-01:0 次提交 +2026-04-02:0 次提交 +2026-04-03:0 次提交 +2026-04-04:0 次提交 +2026-04-05:0 次提交 +2026-04-06:0 次提交 +2026-04-07:0 次提交 +2026-04-08:0 次提交 +2026-04-09:0 次提交 +2026-04-10:0 次提交 +2026-04-11:0 次提交 +2026-04-12:0 次提交 +2026-04-13:0 次提交 +2026-04-14:0 次提交 +2026-04-15:0 次提交 +2026-04-16:0 次提交 +2026-04-17:0 次提交 +2026-04-18:0 次提交 +2026-04-19:0 次提交 +2026-04-20:0 次提交 +2026-04-21:0 次提交 +2026-04-22:0 次提交 +2026-04-23:0 次提交 +2026-04-24:0 次提交 +2026-04-25:0 次提交 +2026-04-26:0 次提交 +2026-04-27:0 次提交 +2026-04-28:0 次提交 +2026-04-29:0 次提交 +2026-04-30:0 次提交 +2026-05-01:0 次提交 +2026-05-02:0 次提交 +2026-05-03:0 次提交 +2026-05-04:0 次提交 +2026-05-05:0 次提交 +2026-05-06:0 次提交 +2026-05-07:0 次提交 +2026-05-08:0 次提交 +2026-05-09:0 次提交 +2026-05-10:0 次提交 +2026-05-11:0 次提交 +2026-05-12:0 次提交 +2026-05-13:0 次提交 +2026-05-14:0 次提交 +2026-05-15:0 次提交 +2026-05-16:0 次提交 +2026-05-17:0 次提交 +2026-05-18:0 次提交 +2026-05-19:0 次提交 +2026-05-20:0 次提交 +2026-05-21:0 次提交 +2026-05-22:0 次提交 +2026-05-23:0 次提交 +2026-05-24:0 次提交 +2026-05-25:0 次提交 +2026-05-26:0 次提交 +2026-05-27:0 次提交 +2026-05-28:0 次提交 +2026-05-29:0 次提交 +2026-05-30:0 次提交 +2026-05-31:0 次提交 +2026-06-01:0 次提交 +2026-06-02:0 次提交 +2026-06-03:0 次提交 +2026-06-04:0 次提交 +2026-06-05:0 次提交 +2026-06-06:0 次提交 +2026-06-07:0 次提交 +2026-06-08:0 次提交 +2026-06-09:0 次提交 +2026-06-10:0 次提交 +2026-06-11:0 次提交 +2026-06-12:0 次提交 +2026-06-13:0 次提交 +2026-06-14:0 次提交 +2026-06-15:0 次提交 +2026-06-16:0 次提交 +2026-06-17:0 次提交 +2026-06-18:0 次提交 +2026-06-19:0 次提交 +2026-06-20:0 次提交 +2026-06-21:0 次提交 +2026-06-22:0 次提交 +2026-06-23:0 次提交 +2026-06-24:0 次提交 +2026-06-25:0 次提交 +2026-06-26:0 次提交 +2026-06-27:0 次提交 +2026-06-28:0 次提交 +2026-06-29:0 次提交 +2026-06-30:0 次提交 +2026-07-01:0 次提交 +2026-07-02:0 次提交 +2026-07-03:0 次提交 +2026-07-04:0 次提交 +2026-07-05:0 次提交 +2026-07-06:0 次提交 +2026-07-07:0 次提交 +2026-07-08:0 次提交 +2026-07-09:0 次提交 +2026-07-10:0 次提交 +2026-07-11:0 次提交 +2026-07-12:0 次提交 +2026-07-13:0 次提交 +2026-07-14:0 次提交 +2026-07-15:0 次提交 +2026-07-16:0 次提交 +2026-07-17:0 次提交 +2026-07-18:0 次提交 +2026-07-19:0 次提交 +2026-07-20:0 次提交 +2026-07-21:0 次提交 +2026-07-22:0 次提交 +2026-07-23:0 次提交 +2026-07-24:0 次提交 +2026-07-25:0 次提交 +2026-07-26:0 次提交 +2026-07-27:0 次提交 +2026-07-28:0 次提交 +2026-07-29:0 次提交 +2026-07-30:0 次提交 +2026-07-31:0 次提交 +2026-08-01:0 次提交 +2026-08-02:0 次提交 +2026-08-03:0 次提交 +2026-08-04:0 次提交 +2026-08-05:0 次提交 +2026-08-06:0 次提交 +2026-08-07:0 次提交 +2026-08-08:0 次提交 +2026-08-09:0 次提交 +2026-08-10:0 次提交 +2026-08-11:0 次提交 +2026-08-12:0 次提交 +2026-08-13:0 次提交 +2026-08-14:0 次提交 +2026-08-15:0 次提交 +2026-08-16:0 次提交 +2026-08-17:0 次提交 +2026-08-18:0 次提交 +2026-08-19:0 次提交 +2026-08-20:0 次提交 +2026-08-21:0 次提交 +2026-08-22:0 次提交 +2026-08-23:0 次提交 +2026-08-24:0 次提交 +2026-08-25:0 次提交 +2026-08-26:0 次提交 +2026-08-27:0 次提交 +2026-08-28:0 次提交 +2026-08-29:0 次提交 +2026-08-30:0 次提交 +2026-08-31:0 次提交 +2026-09-01:0 次提交 +2026-09-02:0 次提交 +2026-09-03:0 次提交 +2026-09-04:0 次提交 +2026-09-05:0 次提交 +2026-09-06:0 次提交 +2026-09-07:0 次提交 +2026-09-08:0 次提交 +2026-09-09:0 次提交 +2026-09-10:0 次提交 +2026-09-11:0 次提交 +2026-09-12:0 次提交 +2026-09-13:4 次提交 + +近 26 周共 4 次提交 · 截至 2026-09-13 +少 + + + + + +多 + diff --git a/docs/images/cleaner-light.png b/Assets/readme/cleaner-light.png similarity index 100% rename from docs/images/cleaner-light.png rename to Assets/readme/cleaner-light.png diff --git a/docs/images/keepawake-light.png b/Assets/readme/keepawake-light.png similarity index 100% rename from docs/images/keepawake-light.png rename to Assets/readme/keepawake-light.png diff --git a/docs/images/menubar-dark.png b/Assets/readme/menubar-dark.png similarity index 100% rename from docs/images/menubar-dark.png rename to Assets/readme/menubar-dark.png diff --git a/docs/images/overview-dark.png b/Assets/readme/overview-dark.png similarity index 100% rename from docs/images/overview-dark.png rename to Assets/readme/overview-dark.png diff --git a/docs/images/overview-light.png b/Assets/readme/overview-light.png similarity index 100% rename from docs/images/overview-light.png rename to Assets/readme/overview-light.png diff --git a/docs/images/settings-menubar-light.png b/Assets/readme/settings-menubar-light.png similarity index 100% rename from docs/images/settings-menubar-light.png rename to Assets/readme/settings-menubar-light.png diff --git a/docs/images/thermal-dark.png b/Assets/readme/thermal-dark.png similarity index 100% rename from docs/images/thermal-dark.png rename to Assets/readme/thermal-dark.png diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b834aef --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,40 @@ +# 更新日志 + +记录 OpenStats 应用的功能新增、样式调整和问题修复,按版本与日期倒序排列。 +官网、构建与发布脚本等不影响应用本身的改动不在此记录。 + +## 未发布 + +### 2026-09-13 + +#### 新增 + +- 菜单栏显示 CPU、GPU、内存、网速、CPU 温度和风扇转速。CPU、GPU、内存可以分别选择数字、柱状图、圆环、饼图、柱状图加数字五种样式;网速两行显示,绿点上传、蓝点下载,带完整单位。 +- 下拉面板分为概览、进程、散热、防休眠、清理五页。概览页顶部是健康评分和芯片、内存、系统版本、运行时长、机型徽章,下面是 CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇三列卡片,以及核心负载、电池环形图、高占用进程和快捷开关。 +- CPU 按超级核、性能核、能效核分组显示各核心负载;内存口径与活动监视器一致,并显示内存压力;网速读取 64 位计数器,大流量下不会回绕。 +- 温度与风扇:启动时枚举一次 SMC 键并按前缀归类,不按芯片型号硬编码,显示 CPU、GPU、内存、电池和掌托温度。 +- 按界面需要分级采样:面板收起时只采集菜单栏用到的指标,锁屏、屏幕休眠和系统睡眠时暂停。 +- 风扇调速:自动、降温、强冷、自定义四种模式。自定义模式下 CPU 达到安全温度会自动交还系统控制,应用退出或断开连接时风扇恢复自动。 +- 防休眠:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可设定持续时间;使用电池且电量低于下限时自动关闭合盖运行。 +- 辅助工具:通过 SMAppService 注册,只提供设置风扇转速、切换合盖不睡眠、刷新 DNS、释放内存几个固定操作,并校验调用方签名;异常退出后下次开机自动恢复风扇与睡眠设置。 +- 清理:扫描应用缓存、日志与崩溃报告、Chrome / Edge / Brave / Arc / Firefox / Safari 缓存、Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。按类别显示大小,可展开查看具体项目;清理前二次确认,操作写入 `~/Library/Logs/OpenStats/cleanup.log`。 +- 清理的安全边界:只清理白名单目录,钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;正在运行的应用和浏览器自动跳过,执行前逐项重新校验。 +- 系统维护:一键刷新 DNS 缓存、释放内存,已安装辅助工具时直接执行,否则请求一次管理员授权。 +- 进程页按 CPU 或内存排序,辅助进程归并显示为所属应用。 +- 设置窗口:外观、登录时启动、刷新频率、温度单位、菜单栏显示项与样式、风扇安全温度、合盖运行电量下限、辅助工具安装与卸载。 +- 外观可选跟随系统、浅色、深色;macOS 26 起面板使用液态玻璃。 +- 截图命令 `OpenStats --snapshot <目录>`:用本机实时数据渲染面板、设置和菜单栏的浅色与深色截图。 + +#### 样式 + +- 菜单栏字号对齐常见菜单栏监控工具:标签 7pt 细体、数值 12pt 常规、网速 9pt 细体,指标之间留出更宽的间距。 +- 面板加宽为三列布局,高度按内容自动计算,常见屏幕上不需要滚动。 +- 更换应用图标,面板左上角和关于页使用同一图标。 +- 首次启动默认在菜单栏显示 CPU、内存与网速。 + +#### 修复 + +- 深色菜单栏上 CPU、RAM 小标签颜色过深,几乎看不清。 +- 面板打开后高度会再调整一次、内容轻微回弹,看起来在抖动;面板打开时点击菜单栏图标关闭,会立刻又被打开。 +- 风扇被其他程序设为手动模式时,误显示为由 OpenStats 控制。 +- 风扇转速、PID 等数字出现千分位分隔符,例如 1,350 RPM。 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c060f0a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 GiantAccel, LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index bfe2fe5..33c156e 100644 --- a/README.md +++ b/README.md @@ -1,170 +1,260 @@ -

- OpenStats 图标 -

+
-

OpenStats

+OpenStats -

- 轻量、原生的 macOS 菜单栏系统监控
- CPU · GPU · 内存 · 网络 · 磁盘 · 电池 · 温度 · 风扇调速 · 防休眠
- getopenstats.com -

+# OpenStats -

- macOS 14+ - Swift 6 - Apple Silicon - 开发中 -

+**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) +[![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) +[![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 +CPU load, GPU, memory pressure, network speed, disk, battery, temperatures and fans — and +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, no network access at all. + +[Download](https://github.com/gentpan/OpenStats/releases/latest) · +[Website](https://getopenstats.com) · +[Changelog](CHANGELOG.md) · +[Architecture](ARCHITECTURE.md) + +**English** · [简体中文](README.zh-CN.md) + +
--- -## 为什么做 OpenStats +## Install -市面上的菜单栏监控要么功能单一,要么常驻耗电。OpenStats 的目标很简单: +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). -- **一眼看全**:点开菜单栏就是一整屏仪表盘,不用翻页、不用下拉。 -- **足够省电**:面板收起时只采集菜单栏用到的指标,M5 Max 实测 **约 0.3% CPU、16 MB 内存**。 -- **原生体验**:Swift 6 + AppKit + SwiftUI,macOS 26 起使用系统液态玻璃,跟随浅色 / 深色外观。 +Requires macOS 14 (Sonoma) or later; the panel uses Liquid Glass on macOS 26 and later. +Developed and tested on Apple Silicon. The interface is in Simplified Chinese. -## 功能 +## Recent updates -### 菜单栏 + + -

菜单栏

+Not released yet · **23** changes in development · [full changelog](CHANGELOG.md) (kept in Chinese) -| 指标 | 显示方式 | -|---|---| -| CPU / GPU / 内存 | 数字、柱状图、圆环、饼图、柱状图 + 数字,逐项可选 | -| 网速 | 两行显示:绿点上传、蓝点下载,完整单位(KB/s、MB/s、GB/s) | -| CPU 温度 / 风扇转速 | 迷你数值 | -| 防休眠 | 开启时显示咖啡杯图标 | +
+2026-09-13 · Unreleased · 15 added · 4 style · 4 fixed -高负载时可选数值变红提醒;数值等宽右对齐,刷新时菜单栏不抖动。 +**Added** -### 面板 +- 菜单栏显示 CPU、GPU、内存、网速、CPU 温度和风扇转速。CPU、GPU、内存可以分别选择数字、柱状图、圆环、饼图、柱状图加数字五种样式;网速两行显示,绿点上传、蓝点下载,带完整单位。 +- 下拉面板分为概览、进程、散热、防休眠、清理五页。概览页顶部是健康评分和芯片、内存、系统版本、运行时长、机型徽章,下面是 CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇三列卡片,以及核心负载、电池环形图、高占用进程和快捷开关。 +- CPU 按超级核、性能核、能效核分组显示各核心负载;内存口径与活动监视器一致,并显示内存压力;网速读取 64 位计数器,大流量下不会回绕。 +- 温度与风扇:启动时枚举一次 SMC 键并按前缀归类,不按芯片型号硬编码,显示 CPU、GPU、内存、电池和掌托温度。 +- 按界面需要分级采样:面板收起时只采集菜单栏用到的指标,锁屏、屏幕休眠和系统睡眠时暂停。 +- 风扇调速:自动、降温、强冷、自定义四种模式。自定义模式下 CPU 达到安全温度会自动交还系统控制,应用退出或断开连接时风扇恢复自动。 +- 防休眠:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可设定持续时间;使用电池且电量低于下限时自动关闭合盖运行。 +- 辅助工具:通过 SMAppService 注册,只提供设置风扇转速、切换合盖不睡眠、刷新 DNS、释放内存几个固定操作,并校验调用方签名;异常退出后下次开机自动恢复风扇与睡眠设置。 +- 清理:扫描应用缓存、日志与崩溃报告、Chrome / Edge / Brave / Arc / Firefox / Safari 缓存、Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。按类别显示大小,可展开查看具体项目;清理前二次确认,操作写入 `~/Library/Logs/OpenStats/cleanup.log`。 +- 清理的安全边界:只清理白名单目录,钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;正在运行的应用和浏览器自动跳过,执行前逐项重新校验。 +- 系统维护:一键刷新 DNS 缓存、释放内存,已安装辅助工具时直接执行,否则请求一次管理员授权。 +- 进程页按 CPU 或内存排序,辅助进程归并显示为所属应用。 +- 设置窗口:外观、登录时启动、刷新频率、温度单位、菜单栏显示项与样式、风扇安全温度、合盖运行电量下限、辅助工具安装与卸载。 +- 外观可选跟随系统、浅色、深色;macOS 26 起面板使用液态玻璃。 +- 截图命令 `OpenStats --snapshot <目录>`:用本机实时数据渲染面板、设置和菜单栏的浅色与深色截图。 -- **概览仪表盘**:健康评分、芯片 / 内存 / 系统 / 运行时长徽章,CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇、各核心负载(超级核 / 性能核 / 能效核分组)、电池环形图、高占用进程、快捷开关。 -- **进程**:按 CPU 或内存排序,辅助进程归并显示为所属应用。 -- **散热**:CPU / GPU / 内存 / 电池 / 掌托温度;风扇实时转速与调速。 -- **防休眠**:屏幕常亮、仅系统不休眠、**合盖后继续运行**,支持定时与低电量自动关闭。 +**Style** + +- 菜单栏字号对齐常见菜单栏监控工具:标签 7pt 细体、数值 12pt 常规、网速 9pt 细体,指标之间留出更宽的间距。 +- 面板加宽为三列布局,高度按内容自动计算,常见屏幕上不需要滚动。 +- 更换应用图标,面板左上角和关于页使用同一图标。 +- 首次启动默认在菜单栏显示 CPU、内存与网速。 + +**Fixed** + +- 深色菜单栏上 CPU、RAM 小标签颜色过深,几乎看不清。 +- 面板打开后高度会再调整一次、内容轻微回弹,看起来在抖动;面板打开时点击菜单栏图标关闭,会立刻又被打开。 +- 风扇被其他程序设为手动模式时,误显示为由 OpenStats 控制。 +- 风扇转速、PID 等数字出现千分位分隔符,例如 1,350 RPM。 + +
+ + + +## Activity

- 散热 - 防休眠 + Commits per day over the last 26 weeks

-### 风扇调速 +

+ + + + Star history + + +

-| 模式 | 行为 | +## At a glance + +

+ Overview, dark + Overview, light +

+ +## Where the numbers show + +**Menu bar** +- CPU, GPU and memory each in one of five styles — number, bars, ring, pie, or bars with a + number — plus network speed, CPU temperature and the fastest fan. +- Network speed takes two rows: a green dot for upload, a blue dot for download, always with + its unit (`KB/s`, `MB/s`, `GB/s`). +- Labels at 7 pt and figures at 12 pt, matching the menu-bar monitors people already use. + Figures are fixed-width, so the bar does not jitter as they change. + +

Menu bar

+ +**Panel** — click the menu-bar item. +- **Overview.** A health score with badges for the chip, memory, macOS version, uptime and + model; then CPU history as bars, GPU as a line, memory, disk, network and fans in three + columns; per-core load grouped by core type (super, performance, efficiency); battery as a + ring; the busiest processes and quick switches. +- **Processes.** Sorted by CPU or memory; helper processes are shown under their app. +- **Thermal.** CPU, GPU, memory, battery and palm-rest temperatures, and the fans. +- **Keep awake.** Keep the display on, keep only the system awake, or keep running with the + lid closed — for a set time or indefinitely. +- **Clean.** Scan, review, clean. See [Cleanup](#cleanup). + +The panel sizes itself to its content and needs no scrolling on common screens. `Esc` +closes it. Light, dark or follow the system. + +

+ Thermal + Keep awake +

+ +## Fans and sleep + +| Fan mode | What it does | |---|---| -| 自动 | 交还 macOS 温控 | -| 降温 | 固定在最低到最高转速的 60% | -| 强冷 | 最高转速 | -| 自定义 | 滑块自由设定 | +| Auto | Hands the fans back to macOS | +| Cool | Holds them at 60% between minimum and maximum speed | +| Max | Full speed | +| Custom | A slider, anywhere in the fan's range | -安全机制:自定义模式下 CPU 达到设定温度(默认 95°C)自动交还系统控制;应用退出、崩溃或断开连接时风扇自动恢复。 +In Custom, the fans are handed back to macOS the moment the CPU reaches the safety +temperature (95 °C by default). Quitting OpenStats, or the app crashing, restores automatic +control. Running with the lid closed switches itself off on battery below a floor you choose. -### 清理与系统维护 +Both need system privileges, provided by a small helper registered with `SMAppService` and +approved once in System Settings → General → Login Items. The helper offers a fixed set of +operations — set a fan's target speed, return fans to auto, toggle `pmset disablesleep`, +flush the DNS cache, purge memory — and **never runs arbitrary commands**. It checks the +caller's code signature, restores fans and sleep when the app disconnects, and after an +unclean exit restores them at the next boot. -- **一键扫描**:应用缓存、日志与崩溃报告、浏览器缓存(Chrome / Edge / Brave / Arc / Firefox / Safari)、Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包、废纸篓。 -- **先预览再清理**:按类别显示大小,可展开查看具体项目并在访达中定位;清理前二次确认。 -- **安全边界**:只清理白名单目录;钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;正在运行的应用和浏览器自动跳过;执行前逐项重新校验;所有操作写入 `~/Library/Logs/OpenStats/cleanup.log`。 -- **系统维护**:一键刷新 DNS 缓存、释放内存(已安装辅助工具时直接执行,否则请求一次管理员授权)。 +## Cleanup -

清理

+- **What it scans.** App caches, logs and crash reports, browser caches (Chrome, Edge, + Brave, Arc, Firefox, Safari), Xcode DerivedData, simulator caches, the npm cache, Xcode + archives, unfinished downloads, installers and the Trash. +- **Review first.** Sizes by category, every rule expandable to its items, a second click to + confirm. Caches and logs are deleted outright so the space comes back at once; downloads go + to the Trash. One switch sends everything to the Trash instead. +- **Safety.** Only allow-listed folders are ever touched. Keychains, password managers, + VPNs, cookies and history are off limits. Caches of running apps are skipped, browsers must + be quit first, and every item is checked again right before it goes. Each action is logged + to `~/Library/Logs/OpenStats/cleanup.log`. +- **Maintenance.** Flush the DNS cache and purge memory — through the helper if it is + installed, otherwise after a one-time administrator prompt. -### 设置 +

Cleanup

-

设置

+## Your data -外观(跟随系统 / 浅色 / 深色)、登录时启动、刷新频率、温度单位、菜单栏显示项与样式、风扇安全温度、合盖模式电量下限。 +OpenStats makes **no network connections**. Metrics come from the kernel (`host_processor_info`, +`host_statistics64`, `sysctl`), IOKit and the SMC on your own Mac. Preferences live in the +app's user defaults and contain nothing personal. There is no analytics and no telemetry. -## 技术实现 +## Build & run -| 数据 | 来源 | -|---|---| -| CPU | `host_processor_info`,按 `hw.perflevelN` 区分核心类型 | -| 内存 | `host_statistics64`,口径与活动监视器一致;`kern.memorystatus_vm_pressure_level` | -| 网络 | `sysctl(NET_RT_IFLIST2)` 读取 64 位计数器(避免 `getifaddrs` 32 位回绕) | -| GPU | `IOAccelerator` 的 `PerformanceStatistics` | -| 温度 / 风扇 | AppleSMC;启动时枚举全部 SMC 键按前缀归类,**不硬编码芯片型号** | -| 进程 | `proc_pid_rusage`,CPU 时间与墙钟时间同用 mach 时间单位 | -| 电池 | `IOPowerSources` + `AppleSmartBattery` | - -采集按界面需要分级:面板收起时只采菜单栏用到的指标;锁屏、屏幕休眠、系统睡眠时暂停。图表全部用 Canvas 自绘,面板关闭后立即销毁视图。 - -## 辅助工具与安全 - -风扇调速、“合盖后继续运行”、刷新 DNS 与释放内存需要系统权限,由 `SMAppService.daemon` 注册的辅助工具完成,首次使用时在“系统设置 › 通用 › 登录项”中批准一次。 - -- 只暴露固定的几个操作:设置风扇目标转速、恢复自动、切换 `pmset disablesleep`、刷新 DNS、释放内存,**不提供任意命令执行**。 -- 通过 XPC 通信,并校验调用方代码签名。 -- 客户端断开时自动恢复风扇与睡眠设置;异常退出后下次开机也会恢复。 - -## 安装 - -尚未发布正式版本。发布后将提供经过 Developer ID 签名与 Apple 公证的 DMG。 - -## 从源码构建 - -需要 Xcode 16 及以上,以及 [XcodeGen](https://github.com/yonaskolb/XcodeGen): +Requires macOS 14+, a **full Xcode** (the SwiftUI macro plugins do not ship with +CommandLineTools) and [XcodeGen](https://github.com/yonaskolb/XcodeGen). ```bash brew install xcodegen -make run # 生成工程、编译并启动(Debug) -make run CONFIG=Release # Release 构建 -make install # Release 构建并安装到 /Applications 后启动 -make test # 单元测试 -make snapshot # 用本机实时数据渲染各页面截图到 build/snapshots -make open # 生成并用 Xcode 打开工程 +make run # generate the project, build Debug and launch +make install # build Release, install into /Applications and launch +make test # unit tests: metrics, SMC decoding, cleanup safety +make open # generate the project and open it in Xcode ``` -开发调试参数: +The app is a menu-bar agent, so there is little to screenshot. Render the surfaces with +live data instead: -- `--snapshot <目录>`:输出面板、设置页、菜单栏的浅色 / 深色截图 -- `--show-panel`:启动后展开并固定面板,用于测量面板打开时的资源占用 - -## 项目结构 - -``` -App/ 应用入口与图标 -Helper/ root 辅助工具及其 launchd 配置 -Packages/OpenStatsKit/ - Sources/SMC SMC 读写、风扇控制、温度传感器归类 - Sources/Metrics 指标采集与分级调度(MetricsHub) - Sources/HelperShared XPC 协议与系统维护命令 - Sources/Cleaner 清理规则、安全守卫、扫描与执行引擎 - Sources/OpenStatsUI 设计 token、面板、设置窗口、菜单栏绘制 - Tests/ 单元测试(采集、SMC 编解码、清理安全边界) -project.yml XcodeGen 工程描述 -docs/PLAN.md 技术方案与调研记录 +```bash +build/DerivedData/Build/Products/Debug/OpenStats.app/Contents/MacOS/OpenStats --snapshot ./snapshots ``` -## 路线图 +Glass and vibrancy exist only on screen. To measure the panel while it is open, launch with +`--show-panel`, which opens the panel and pins it. -- [x] 菜单栏多指标与多种显示样式 -- [x] 概览仪表盘、进程、散热、防休眠 -- [x] 液态玻璃面板与浅色 / 深色主题 -- [x] 风扇调速与合盖运行(辅助工具) -- [x] 缓存清理、刷新 DNS、释放内存 -- [ ] 应用卸载(含残留文件与程序坞图标) -- [ ] 磁盘健康(SSD 寿命、写入量、温度) -- [ ] 点击菜单栏各指标弹出独立详情 -- [ ] Developer ID 签名、公证与 DMG 发布 -- [ ] Sparkle 自动更新 -- [ ] 功耗、磁盘读写等更多指标 -- [ ] 桌面小组件 +After editing `CHANGELOG.md`, run `python3 Scripts/sync_changelog.py` to refresh the recent +updates above and the activity chart. -## 致谢 +## Distribution -SMC 通信与 Apple Silicon 风扇控制流程移植自 [exelban/stats](https://github.com/exelban/stats)(MIT License),详见 [ThirdPartyNotices.md](ThirdPartyNotices.md)。 +Developer ID only, not the App Store — the sandbox forbids talking to the SMC, reading other +apps' caches and installing a privileged helper, which is most of the feature set. -## 许可证 +| What you have | What others get | +|---|---| +| Nothing | Ad-hoc signature — runs on your Mac only. Others see *"OpenStats is damaged"*. | +| Developer ID certificate | Hardened runtime. Others see *"Apple cannot check it for malicious software"*. | +| Certificate + notarization | Gatekeeper accepts it — the normal *"downloaded from the internet"* prompt. | -待定。 +Before a release, set the Team ID in `HelperShared/HelperProtocol.swift` so the helper +requires the caller to be signed by it. + +## Architecture + +- `Packages/OpenStatsKit/Sources/SMC` — SMC reads and writes, fan control, temperature + sensor discovery. +- `Packages/OpenStatsKit/Sources/Metrics` — samplers for CPU, memory, network, GPU, disk, + battery, processes and sensors, and `MetricsHub`, which samples only what is on screen. +- `Packages/OpenStatsKit/Sources/Cleaner` — cleanup rules, the safety guard, scanning and + cleaning. +- `Packages/OpenStatsKit/Sources/HelperShared` — the XPC protocol and maintenance commands. +- `Packages/OpenStatsKit/Sources/OpenStatsUI` — design tokens, the panel, settings and the + menu-bar renderer. +- `Helper/` — the privileged helper and its launchd plist. `App/` — the entry point. + +More in [ARCHITECTURE.md](ARCHITECTURE.md). Every change to the app is logged, dated, in +[CHANGELOG.md](CHANGELOG.md). + +## Acknowledgements + +OpenStats builds on these open-source projects. Thank you. + +| Project | Author | License | What OpenStats took | +|---|---|---|---| +| [Stats](https://github.com/exelban/stats) | Serhiy Mytrovtsiy | MIT | SMC access, the Apple Silicon fan unlock sequence and the menu-bar mini widget metrics | +| [Mole](https://github.com/tw93/Mole) | tw93 | GPL-3.0 | Which folders are worth cleaning and which must never be touched; the cleaner is an independent Swift implementation and contains no Mole code | +| [QuotaBar](https://github.com/gentpan/quotabar) | GiantAccel, LLC | MIT | This README's layout, the changelog sync and the activity chart | + +Details in [ThirdPartyNotices.md](ThirdPartyNotices.md). + +OpenStats is an independent third-party app. It is not affiliated with, endorsed by, or +sponsored by Apple or any other company it mentions. Their names and logos belong to their +respective owners. + +## License + +MIT — see [LICENSE](LICENSE). diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..738bc65 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,233 @@ +
+ +OpenStats + +# OpenStats + +**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) +[![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) +[![License](https://img.shields.io/badge/license-MIT-black)](LICENSE) + +OpenStats 是一款 macOS 菜单栏应用,实时显示 Mac 正在做什么:各核心 CPU 负载、GPU、内存压力、 +网速、磁盘、电池、温度和风扇,并且可以直接处理:给风扇提速、合盖后继续运行、清理缓存。 +所有数据都在你自己的 Mac 上读取。无需注册账号,没有统计上报,完全不联网。 + +[下载](https://github.com/gentpan/OpenStats/releases/latest) · +[官网](https://getopenstats.com) · +[更新日志](CHANGELOG.md) · +[架构说明](ARCHITECTURE.md) + +[English](README.md) · **简体中文** + +
+ +--- + +## 安装 + +OpenStats 还没有发布正式版本。第一个版本会在 [Releases](https://github.com/gentpan/OpenStats/releases/latest) +提供 `.dmg`,使用 Developer ID 证书签名并经过 Apple 公证,之后提供 Homebrew cask。 +在此之前请从源码构建,见[构建与运行](#构建与运行)。 + +需要 macOS 14(Sonoma)或更高版本;macOS 26 起面板使用液态玻璃。在 Apple Silicon 上开发和测试。 +界面为简体中文。 + +## 最近更新 + + + + +尚未发布正式版本 · 开发中 **23** 项改动尚未发布 · [完整更新日志](CHANGELOG.md) + +
+2026-09-13 · 未发布 · 新增 15 · 样式 4 · 修复 4 + +**新增** + +- 菜单栏显示 CPU、GPU、内存、网速、CPU 温度和风扇转速。CPU、GPU、内存可以分别选择数字、柱状图、圆环、饼图、柱状图加数字五种样式;网速两行显示,绿点上传、蓝点下载,带完整单位。 +- 下拉面板分为概览、进程、散热、防休眠、清理五页。概览页顶部是健康评分和芯片、内存、系统版本、运行时长、机型徽章,下面是 CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇三列卡片,以及核心负载、电池环形图、高占用进程和快捷开关。 +- CPU 按超级核、性能核、能效核分组显示各核心负载;内存口径与活动监视器一致,并显示内存压力;网速读取 64 位计数器,大流量下不会回绕。 +- 温度与风扇:启动时枚举一次 SMC 键并按前缀归类,不按芯片型号硬编码,显示 CPU、GPU、内存、电池和掌托温度。 +- 按界面需要分级采样:面板收起时只采集菜单栏用到的指标,锁屏、屏幕休眠和系统睡眠时暂停。 +- 风扇调速:自动、降温、强冷、自定义四种模式。自定义模式下 CPU 达到安全温度会自动交还系统控制,应用退出或断开连接时风扇恢复自动。 +- 防休眠:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可设定持续时间;使用电池且电量低于下限时自动关闭合盖运行。 +- 辅助工具:通过 SMAppService 注册,只提供设置风扇转速、切换合盖不睡眠、刷新 DNS、释放内存几个固定操作,并校验调用方签名;异常退出后下次开机自动恢复风扇与睡眠设置。 +- 清理:扫描应用缓存、日志与崩溃报告、Chrome / Edge / Brave / Arc / Firefox / Safari 缓存、Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。按类别显示大小,可展开查看具体项目;清理前二次确认,操作写入 `~/Library/Logs/OpenStats/cleanup.log`。 +- 清理的安全边界:只清理白名单目录,钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;正在运行的应用和浏览器自动跳过,执行前逐项重新校验。 +- 系统维护:一键刷新 DNS 缓存、释放内存,已安装辅助工具时直接执行,否则请求一次管理员授权。 +- 进程页按 CPU 或内存排序,辅助进程归并显示为所属应用。 +- 设置窗口:外观、登录时启动、刷新频率、温度单位、菜单栏显示项与样式、风扇安全温度、合盖运行电量下限、辅助工具安装与卸载。 +- 外观可选跟随系统、浅色、深色;macOS 26 起面板使用液态玻璃。 +- 截图命令 `OpenStats --snapshot <目录>`:用本机实时数据渲染面板、设置和菜单栏的浅色与深色截图。 + +**样式** + +- 菜单栏字号对齐常见菜单栏监控工具:标签 7pt 细体、数值 12pt 常规、网速 9pt 细体,指标之间留出更宽的间距。 +- 面板加宽为三列布局,高度按内容自动计算,常见屏幕上不需要滚动。 +- 更换应用图标,面板左上角和关于页使用同一图标。 +- 首次启动默认在菜单栏显示 CPU、内存与网速。 + +**修复** + +- 深色菜单栏上 CPU、RAM 小标签颜色过深,几乎看不清。 +- 面板打开后高度会再调整一次、内容轻微回弹,看起来在抖动;面板打开时点击菜单栏图标关闭,会立刻又被打开。 +- 风扇被其他程序设为手动模式时,误显示为由 OpenStats 控制。 +- 风扇转速、PID 等数字出现千分位分隔符,例如 1,350 RPM。 + +
+ + + +## 活跃度 + +

+ 近 26 周每天的提交数 +

+ +

+ + + + 星标历史 + + +

+ +## 界面一览 + +

+ 概览(深色) + 概览(浅色) +

+ +## 数据显示在哪里 + +**菜单栏** +- CPU、GPU、内存可以分别选择数字、柱状图、圆环、饼图、柱状图加数字五种样式,另外还能显示网速、 + CPU 温度和转速最高的风扇。 +- 网速两行显示:绿点上传、蓝点下载,始终带单位(`KB/s`、`MB/s`、`GB/s`)。 +- 标签 7pt、数值 12pt,与常见的菜单栏监控工具一致;数值等宽,刷新时菜单栏不抖动。 + +

菜单栏

+ +**面板**——点击菜单栏图标打开。 +- **概览**:健康评分,芯片、内存、系统版本、运行时长、机型徽章;CPU 柱状历史、GPU 折线、内存、 + 磁盘、网络、风扇三列卡片;按超级核、性能核、能效核分组的核心负载;电池环形图;高占用进程和快捷开关。 +- **进程**:按 CPU 或内存排序,辅助进程归并到所属应用。 +- **散热**:CPU、GPU、内存、电池、掌托温度,以及风扇。 +- **防休眠**:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可定时或不限时。 +- **清理**:扫描、预览、清理,见[清理](#清理)。 + +面板高度按内容自动计算,常见屏幕上不需要滚动;按 `Esc` 关闭。外观可选浅色、深色或跟随系统。 + +

+ 散热 + 防休眠 +

+ +## 风扇与睡眠 + +| 风扇模式 | 行为 | +|---|---| +| 自动 | 交还 macOS 温控 | +| 降温 | 固定在最低到最高转速之间的 60% | +| 强冷 | 最高转速 | +| 自定义 | 用滑块在风扇转速范围内自由设定 | + +自定义模式下,CPU 一旦达到安全温度(默认 95°C)就交还系统控制。退出 OpenStats 或应用崩溃时, +风扇恢复自动。合盖运行在使用电池且电量低于你设定的下限时自动关闭。 + +这两项需要系统权限,由一个通过 `SMAppService` 注册的小型辅助工具完成,首次使用时在 +“系统设置 › 通用 › 登录项”中批准一次。辅助工具只提供固定的几个操作:设置风扇目标转速、恢复自动、 +切换 `pmset disablesleep`、刷新 DNS 缓存、释放内存,**不执行任意命令**。它会校验调用方的代码签名, +应用断开连接时恢复风扇与睡眠设置;异常退出后,下次开机也会恢复。 + +## 清理 + +- **扫描范围**:应用缓存、日志与崩溃报告、浏览器缓存(Chrome、Edge、Brave、Arc、Firefox、Safari)、 + Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。 +- **先预览**:按类别显示大小,每条规则可展开查看具体项目,清理前再确认一次。缓存与日志直接删除, + 空间立即释放;下载目录的内容移到废纸篓。也可以一键改为全部先移到废纸篓。 +- **安全**:只处理白名单目录。钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰。正在运行的应用的缓存 + 会跳过,浏览器需要先退出,删除前每一项都会再校验一次。所有操作记录在 `~/Library/Logs/OpenStats/cleanup.log`。 +- **系统维护**:刷新 DNS 缓存、释放内存。已安装辅助工具时直接执行,否则请求一次管理员授权。 + +

清理

+ +## 你的数据 + +OpenStats **不发起任何网络连接**。指标来自本机的内核接口(`host_processor_info`、`host_statistics64`、 +`sysctl`)、IOKit 与 SMC。偏好设置保存在应用自己的 user defaults 中,不含个人信息。没有任何统计与上报。 + +## 构建与运行 + +需要 macOS 14+、**完整的 Xcode**(CommandLineTools 不含 SwiftUI 宏插件)以及 +[XcodeGen](https://github.com/yonaskolb/XcodeGen)。 + +```bash +brew install xcodegen +make run # 生成工程,编译 Debug 并启动 +make install # 编译 Release,安装到 /Applications 并启动 +make test # 单元测试:指标采集、SMC 编解码、清理安全边界 +make open # 生成工程并用 Xcode 打开 +``` + +菜单栏应用没什么可截图的窗口,可以用本机实时数据渲染各个界面: + +```bash +build/DerivedData/Build/Products/Debug/OpenStats.app/Contents/MacOS/OpenStats --snapshot ./snapshots +``` + +玻璃与半透明效果只在屏幕上存在。需要测量面板打开时的资源占用,用 `--show-panel` 启动,面板会自动展开并固定。 + +修改 `CHANGELOG.md` 后运行 `python3 Scripts/sync_changelog.py`,更新上方的“最近更新”和活跃度图。 + +## 分发 + +只走 Developer ID,不上 App Store——沙盒不允许访问 SMC、读取其他应用的缓存、安装特权辅助工具, +而这正是大部分功能。 + +| 你拥有的 | 别人打开时看到的 | +|---|---| +| 什么都没有 | ad-hoc 签名,只能在你自己的 Mac 上运行。别人会看到 *“OpenStats 已损坏”*。 | +| Developer ID 证书 | 启用 Hardened Runtime。别人会看到 *“Apple 无法检查其是否包含恶意软件”*。 | +| 证书 + 公证 | Gatekeeper 放行,只有常规的 *“从互联网下载”* 提示。 | + +发布前请在 `HelperShared/HelperProtocol.swift` 中填写 Team ID,让辅助工具只接受由该团队签名的调用方。 + +## 架构 + +- `Packages/OpenStatsKit/Sources/SMC`——SMC 读写、风扇控制、温度传感器发现。 +- `Packages/OpenStatsKit/Sources/Metrics`——CPU、内存、网络、GPU、磁盘、电池、进程、传感器的采集器, + 以及只采集屏幕上需要的指标的 `MetricsHub`。 +- `Packages/OpenStatsKit/Sources/Cleaner`——清理规则、安全守卫、扫描与执行。 +- `Packages/OpenStatsKit/Sources/HelperShared`——XPC 协议与系统维护命令。 +- `Packages/OpenStatsKit/Sources/OpenStatsUI`——设计 token、面板、设置窗口、菜单栏绘制。 +- `Helper/`——特权辅助工具及其 launchd 配置;`App/`——应用入口。 + +更多内容见 [ARCHITECTURE.md](ARCHITECTURE.md)。应用的每一项改动都按日期记录在 [CHANGELOG.md](CHANGELOG.md)。 + +## 致谢 + +OpenStats 基于以下开源项目,谢谢。 + +| 项目 | 作者 | 许可证 | OpenStats 借鉴了什么 | +|---|---|---|---| +| [Stats](https://github.com/exelban/stats) | Serhiy Mytrovtsiy | MIT | SMC 访问、Apple Silicon 风扇解锁流程、菜单栏迷你样式的字号参数 | +| [Mole](https://github.com/tw93/Mole) | tw93 | GPL-3.0 | 哪些目录值得清理、哪些绝对不能碰;清理模块为独立的 Swift 实现,不含 Mole 代码 | +| [QuotaBar](https://github.com/gentpan/quotabar) | GiantAccel, LLC | MIT | 本 README 的版式、更新日志同步与活跃度图脚本 | + +详见 [ThirdPartyNotices.md](ThirdPartyNotices.md)。 + +OpenStats 是独立的第三方应用,与 Apple 及文中提到的其他公司没有隶属、认可或赞助关系。相关名称与标志归各自所有者所有。 + +## 许可证 + +MIT,见 [LICENSE](LICENSE)。 diff --git a/Scripts/sync_changelog.py b/Scripts/sync_changelog.py new file mode 100644 index 0000000..72c9947 --- /dev/null +++ b/Scripts/sync_changelog.py @@ -0,0 +1,260 @@ +#!/usr/bin/env python3 +"""Puts CHANGELOG.md where people look, and draws the commit calendar. + + python3 Scripts/sync_changelog.py + +Rewrites, from CHANGELOG.md and `git log`: + +- the "recent updates" block in README.md and README.zh-CN.md, between + and ; +- Assets/readme/activity.svg and activity.zh.svg, 26 weeks of commits. + +Run it after every CHANGELOG edit. Standard library only, so it runs on a +stock Mac and in CI. Adapted from QuotaBar's script of the same name. +""" + +import argparse +import datetime +import math +import pathlib +import re +import subprocess +from collections import Counter + +ROOT = pathlib.Path(__file__).resolve().parent.parent +RECENT_DAYS = 3 +WEEKS = 26 + +KIND_EN = {"新增": "Added", "样式": "Style", "修复": "Fixed"} + + +# ── CHANGELOG.md ────────────────────────────────────────────────────────── + +def parse(text): + """Releases, newest first: each with its days, each day with its groups. + + "## 未发布" holds "### YYYY-MM-DD" days; "## 0.1.0 · 2026-09-20" holds its + groups directly, which count as one day on the release date. + """ + releases, release, day, group = [], None, None, None + for line in text.splitlines(): + heading = re.match(r"^## (.+)$", line) + dated = re.match(r"^### (\d{4}-\d{2}-\d{2})\s*$", line) + kind = re.match(r"^#### (.+)$", line) + if heading: + title = heading.group(1).strip() + version = re.match(r"^v?([\d.]+)\s*·\s*(\d{4}-\d{2}-\d{2})$", title) + release = { + "version": version.group(1) if version else None, + "date": version.group(2) if version else None, + "days": [], + } + releases.append(release) + day = {"date": release["date"], "groups": []} if version else None + if day: + release["days"].append(day) + group = None + elif dated and release is not None: + # A release that kept its dated days: drop the empty day that + # stood in for the release date. + if release["days"] and not release["days"][-1]["groups"]: + release["days"].pop() + day = {"date": dated.group(1), "groups": []} + release["days"].append(day) + group = None + elif kind and day is not None: + group = {"kind": kind.group(1).strip(), "items": []} + day["groups"].append(group) + elif line.startswith("- ") and group is not None: + group["items"].append(line[2:].strip()) + elif line.startswith(" ") and line.strip() and group is not None and group["items"]: + group["items"][-1] += line.strip() + for release in releases: + release["days"] = [d for d in release["days"] if any(g["items"] for g in d["groups"])] + return [r for r in releases if r["days"]] + + +def day_entries(releases): + """Every day, newest first, with the release it belongs to.""" + days = [(release, day) for release in releases for day in release["days"]] + days.sort(key=lambda pair: pair[1]["date"] or "", reverse=True) + return days + + +def item_count(day): + return sum(len(g["items"]) for g in day["groups"]) + + +def counts(day, en): + parts = [] + for g in day["groups"]: + n = len(g["items"]) + if en: + parts.append(f"{n} {KIND_EN.get(g['kind'], g['kind']).lower()}") + else: + parts.append(f"{g['kind']} {n}") + return " · ".join(parts) + + +def latest_release(releases): + return next((r for r in releases if r["version"]), None) + + +def unreleased(releases): + return next((r for r in releases if not r["version"]), None) + + +# ── README ──────────────────────────────────────────────────────────────── + +def readme_block(releases, en): + latest = latest_release(releases) + pending = unreleased(releases) + pending_count = sum(item_count(d) for d in pending["days"]) if pending else 0 + lines = [""] + lines.append("" + if en else "") + head = [] + if latest: + head.append(f"Latest release **{latest['version']}** ({latest['date']})" if en + else f"最新版本 **{latest['version']}**({latest['date']})") + elif en: + head.append("Not released yet") + else: + head.append("尚未发布正式版本") + if pending_count: + head.append(f"**{pending_count}** changes in development" if en + else f"开发中 **{pending_count}** 项改动尚未发布") + head.append("[full changelog](CHANGELOG.md) (kept in Chinese)" if en else "[完整更新日志](CHANGELOG.md)") + lines += ["", " · ".join(head), ""] + for index, (release, day) in enumerate(day_entries(releases)[:RECENT_DAYS]): + label = release["version"] or ("Unreleased" if en else "未发布") + opened = " open" if index == 0 else "" + lines.append(f"") + lines.append(f"{day['date']} · {label} · {counts(day, en)}") + lines.append("") + for g in day["groups"]: + lines.append(f"**{KIND_EN.get(g['kind'], g['kind']) if en else g['kind']}**") + lines.append("") + lines += [f"- {item}" for item in g["items"]] + lines.append("") + lines.append("") + lines.append("") + lines.append("") + return "\n".join(lines) + + +def replace_block(path, block, start="", end=""): + text = path.read_text(encoding="utf-8") + pattern = re.compile(re.escape(start) + r".*?" + re.escape(end), re.S) + if not pattern.search(text): + raise SystemExit(f"{path.relative_to(ROOT)}: no {start} … {end} markers") + updated = pattern.sub(lambda _: block, text, count=1) + if updated != text: + path.write_text(updated, encoding="utf-8") + return True + return False + + +# ── Commit calendar ─────────────────────────────────────────────────────── + +def commit_days(): + dates = subprocess.run( + ["git", "log", "--format=%ad", "--date=short"], + cwd=ROOT, capture_output=True, text=True, check=True).stdout.split() + return Counter(dates) + + +def activity_svg(per_day, today, en): + cell, gap, left, top = 11, 3, 30, 18 + step = cell + gap + # Columns are weeks starting Sunday, the last one holding today. + end = today + datetime.timedelta(days=(5 - today.weekday()) % 7) # the Saturday ending this week + start = end - datetime.timedelta(days=WEEKS * 7 - 1) + days = [start + datetime.timedelta(days=i) for i in range(WEEKS * 7)] + window = {d: per_day.get(d.isoformat(), 0) for d in days if d <= today} + total = sum(window.values()) + peak = max(window.values(), default=0) + palette = ["rgba(139,148,158,0.18)", "#9be9a8", "#40c463", "#30a14e", "#216e39"] + + def level(n): + return 0 if n == 0 or peak == 0 else max(1, min(4, math.ceil(4 * n / peak))) + + width = left + WEEKS * step + height = top + 7 * step + 40 + font = 'font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,PingFang SC,sans-serif"' + parts = [f''] + title = (f"{total} commits in the last {WEEKS} weeks" if en else f"近 {WEEKS} 周共 {total} 次提交") + parts.append(f"{title}") + parts.append(f'') + months_en = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + last_month = None + for w in range(WEEKS): + first = days[w * 7] + if first.month != last_month and first.day <= 7: + label = months_en[first.month - 1] if en else f"{first.month}月" + parts.append(f'{label}') + last_month = first.month + elif last_month is None: + last_month = first.month + for row, label in ((1, "Mon" if en else "一"), (3, "Wed" if en else "三"), (5, "Fri" if en else "五")): + parts.append(f'{label}') + parts.append("") + for i, d in enumerate(days): + if d > today: + continue + n = window[d] + x, y = left + (i // 7) * step, top + (i % 7) * step + tip = f"{n} commits on {d.isoformat()}" if en else f"{d.isoformat()}:{n} 次提交" + parts.append(f'{tip}') + # The legend under the grid on the right, the caption on its own line + # below: side by side they collide in English. + base = top + 7 * step + 14 + caption = (f"{total} commits in the last {WEEKS} weeks · through {today.isoformat()}" if en + else f"近 {WEEKS} 周共 {total} 次提交 · 截至 {today.isoformat()}") + parts.append(f'') + parts.append(f'{caption}') + legend_x = width - 5 * step - 34 + parts.append(f'{"Less" if en else "少"}') + for k in range(5): + parts.append(f'') + parts.append(f'{"More" if en else "多"}') + parts.append("") + return "\n".join(parts) + "\n" + + +def write_if_changed(path, content): + path.parent.mkdir(parents=True, exist_ok=True) + if path.exists() and path.read_text(encoding="utf-8") == content: + return False + path.write_text(content, encoding="utf-8") + return True + + +def main(): + parser = argparse.ArgumentParser(description="Sync CHANGELOG.md into the READMEs and the activity chart.") + parser.add_argument("--changelog", default=str(ROOT / "CHANGELOG.md"), + help="read this file instead, e.g. the committed copy while other edits are pending") + parser.add_argument("--through-today", action="store_true", + help="include today's commits in the calendar (default stops at yesterday)") + args = parser.parse_args() + releases = parse(pathlib.Path(args.changelog).read_text(encoding="utf-8")) + changed = [] + if replace_block(ROOT / "README.md", readme_block(releases, en=True)): + changed.append("README.md") + if replace_block(ROOT / "README.zh-CN.md", readme_block(releases, en=False)): + changed.append("README.zh-CN.md") + # The calendar runs through yesterday by default: a finished day does not + # change, so running this again after today's commits leaves the chart + # alone rather than redrawing it with every commit that records the redraw. + today = datetime.date.today() + if not args.through_today: + today -= datetime.timedelta(days=1) + per_day = commit_days() + for name, en in (("activity.svg", True), ("activity.zh.svg", False)): + if write_if_changed(ROOT / "Assets" / "readme" / name, activity_svg(per_day, today, en)): + changed.append(f"Assets/readme/{name}") + print("已更新:" + "、".join(changed) if changed else "已是最新") + + +if __name__ == "__main__": + main()