pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Free, open-source disk space analyzer for macOS with an interactive sunburst chart, snapshot compare and safe Trash-based cleanup.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Free, open-source disk space analyzer for macOS with an interactive sunburst chart.
See at a glance what fills your Mac, compare scans over time, and free up space safely.
DiskRings scans a volume or folder and draws its disk usage as a sunburst: every ring is one folder level, every segment is as wide as its share of the storage. Click into any folder to zoom, go back with a swipe, and clean up right from the chart. It is a native SwiftUI app for Apple Silicon and Intel Macs, and a macOS alternative to tools like WinDirStat, TreeSize, SpaceSniffer or Scanner on Windows.檢視完整 README ↗DiskRings scans a volume or folder and draws its disk usage as a sunburst: every ring is one folder level, every segment is as wide as its share of the storage. Click into any folder to zoom, go back with a swipe, and clean up right from the chart. It is a native SwiftUI app for Apple Silicon and Intel Macs, and a macOS alternative to tools like WinDirStat, TreeSize, SpaceSniffer or Scanner on Windows.
Languages: English, German, French, Spanish, Italian, Portuguese (Brazil), Dutch, Polish, Russian, Japanese, Chinese (Simplified), Korean, Turkish and Swedish. DiskRings follows your system language automatically; you can also pick a language in Settings or per app in System Settings → General → Language & Region → Applications. See Translations to improve or add one.
getattrlistbulk. DiskRings counts the space actually allocated on disk: hard links only once, sparse and compressed files with their real size, the APFS Data volume firmlinks without double counting, and iCloud files without downloading them.diskrings-cli for scans, top folders, snapshots and diffs (handy for scripts).Every ring is a folder level. Hover for details, click to zoom in, and the list on the right follows along.
Pick an earlier snapshot and DiskRings shows only what changed. In the growth view, segment size is the growth since the snapshot, and the list ranks the largest changes.
The delta coloring keeps the normal layout and paints growth orange and shrinkage blue (distinguishable with red-green color blindness; with “Differentiate without color” shrunk segments are also hatched and marked ±). New items get a dot, removed items appear as dashed outlines.
The same actions in the chart, the list and the menu bar. Protected items explain why they can't be trashed.
Pick a volume, choose a folder, or drop one onto the window.
There are good disk usage tools for the Mac already. Each has its own focus:
| DiskRings | DaisyDisk | GrandPerspective | OmniDiskSweeper | |
|---|---|---|---|---|
| Visualization | Sunburst + list | Sunburst | Treemap | Sorted list |
| Compare scans over time | Yes (snapshots) | No | No | No |
| Shows space outside folders (system data, purgeable, free) | Yes | Yes (as hidden space) | No | No |
| Delete | Trash only, with undo | Yes | Yes | Yes |
| Price | Free, open source (MIT) | Paid | Free, open source | Free |
What makes DiskRings different:
du -sk needs 65 s for the same folder). Comparing two snapshots with 2 million entries each takes about 0.3 s. Details are in dev/PERFORMANCE.md.Requirements: macOS 14 (Sonoma) or later, Apple Silicon or Intel.
Planned.
Without Full Disk Access, DiskRings still works, but macOS hides folders like ~/Library/Mail, ~/Library/Messages, Safari data and other apps' containers. They show up as unreadable, and their space is counted as "Unreadable System Data". To grant access:
DiskRings only reads file sizes and metadata. It never opens or uploads your files.
DiskRings is a Swift package without an Xcode project. The Command Line Tools with Swift 6 are enough (xcode-select --install); Xcode is optional.
git clone https://github.com/brokoskokoli/diskrings.git
cd diskrings
scripts/check.sh # build and run all tests
DISKRINGS_ADHOC=1 scripts/make-app.sh # build/DiskRings.app (release, universal, ad-hoc signed)
open build/DiskRings.app
Command-line tool:
swift run -c release diskrings-cli scan ~ --top 10 --depth 2
swift run -c release diskrings-cli scan / --json
swift run -c release diskrings-cli volumes
UI previews and Mac App Store screenshots (demo data only, nothing is scanned):
swift run DiskRings --render-snapshots build/snapshots # PNGs of many views, light and dark
swift run DiskRings --store-screenshots build/store --language en --appearance dark # 2880×1800
Releases are built, signed with the Developer ID, notarized by Apple and published by the GitHub Actions workflow release.yml when a v* tag is pushed. The version lives in VERSION and uses semantic versioning.
# 1. Bump the version on main (CI must be green)
echo 0.2.0 > VERSION
git commit -am "Version 0.2.0"
git push origin main
# 2. Tag it; the tag must match VERSION
git tag -a v0.2.0 -m "DiskRings 0.2.0"
git push origin v0.2.0
release → Approve and deploy (the release environment requires a maintainer's approval).appcast.xml and SHA256SUMS appears under Releases, with release notes generated from the commits. Installed copies newer than 0.2.1 find the update through appcast.xml (Sparkle); the ZIP is the signed update archive, the DMG is for first installs. Users of 0.2.1 or older have to download the new version once by hand.Before a release you can do a dry run that builds, signs and notarizes without publishing: gh workflow run release.yml -f dry_run=true. Only repository admins can create v* tags. A local release without CI is possible with scripts/release.sh --publish. The Mac App Store build is uploaded separately: run Actions → App Store Upload on the tag with dry_run unchecked, approve it, then select the build in App Store Connect and submit it for review, or check submit_for_review to let the workflow submit it via the App Store Connect API using the release notes in dev/release-notes/ (details in dev/APPSTORE.md, German). Automatic updates need a one-time EdDSA key: scripts/setup-release-secrets.sh --sparkle stores the private key as the secret SPARKLE_ED_PRIVATE_KEY and writes the public key to Resources/sparkle-public-ed-key.txt (commit it); without both, a real release stops in the preflight check. One-time setup, secrets, troubleshooting and security trade-offs: dev/RELEASING.md (German).
The Finder usually shows the logical file size (the number of bytes in the file). DiskRings shows the space allocated on disk, like du. They differ for compressed and sparse files, many small files (block size), and hard links, which DiskRings counts only once. APFS clones share blocks, but macOS has no public API to detect that, so cloned files can make a folder total look larger than the space it really uses.
When you scan a whole volume, DiskRings splits the space that appears in no folder (used space minus the scan sum):
/private/var/db, APFS metadata and – without Full Disk Access – the folders DiskRings wasn't allowed to read.Local APFS and Time Machine snapshots can't be measured separately without administrator rights; depending on their state they count as Purgeable or Unreadable System Data. Older versions showed all of this as one grey "Unassigned" segment.
DiskRings never deletes permanently. "Move to Trash" uses the system Trash, asks for confirmation with name, size and file count, and can be undone with ⌘Z. The root of a volume, your home folder as a whole, ~/Library as a whole, system locations such as /System and /usr, and the app itself are protected and cannot be trashed. Undo checks that the item in the Trash is still the same one before restoring it.
Yes. Any mounted volume or folder you can read can be scanned. Network volumes are slower because every directory listing goes over the network.
DiskRings contains no telemetry, analytics or crash reporting. Scan results and snapshots stay on your Mac (~/Library/Application Support/DiskRings).
~; other folder and file names are passed on unchanged.appcast.xml of the latest release) when you choose Check for Updates… and, if you allow it, about once a day. No information about you, your Mac or your files is sent, and no system profile. DiskRings asks before checking automatically; turn it off in Settings → General → Automatically check for updates. Updates are only installed if their EdDSA signature matches. Full policy: privacy.html.Issues and pull requests are welcome, especially translations, bug reports with steps to reproduce, and performance measurements on other Macs.
scripts/check.sh before submitting. It must pass without warnings.Sources/DiskRingsCore and is covered by tests in Tests/DiskRingsCoreTests. The SwiftUI app in Sources/DiskRings stays thin.The translations were created with machine assistance and reviewed for Apple's macOS terminology, but not yet by native speakers of every language. Corrections are very welcome.
Sources/DiskRingsCore/Resources/<language>.lproj/: Localizable.strings (UI texts), Localizable.stringsdict (plural forms) and InfoPlist.strings (the privacy texts macOS shows). English (en.lproj) is the source.%@, %1$@, %2$@, …) unchanged; you may reorder positional placeholders.en.lproj to <code>.lproj (e.g. cs.lproj), translate it, provide the plural categories your language needs in the .stringsdict, and add the code and the language's own name to L10n.supportedLanguages and L10n.nativeName(of:) in Sources/DiskRingsCore/Localization/L10n.swift.scripts/check.sh runs tests that catch missing or extra keys, mismatched placeholders and missing plural forms.swift run DiskRings --render-snapshots build/snapshots/fr --language fr.DiskRings is released under the MIT License. Copyright © 2026 Stefan Richter.