2026
یک اپ بومی macOS که یک بار همهٔ پوشههای دیسک را نقشهبرداری میکند، آن نقشه را از روی گزارش تغییرات macOS بهروز نگه میدارد، و آن را به فهرست کوتاهی تبدیل میکند که بدون خراب کردن چیزی میتوانید پاکش کنید.
Ballast یک اپ بومی SwiftUI برای macOS 26 است که به سه پرسش بهترتیب پاسخ
میدهد: فضا کجا رفت، چه چیزی را میشود با خیال راحت پاک کرد، و آیا چیزی خراب
میشود؟ برای همهٔ کسانی است که فضای دیسکشان تمام میشود، و بهخصوص
برنامهنویسها، که دیسکشان از node_modules، خروجی build، ابزارها،
شبیهسازها و کش مدیرهای بسته پر میشود — چیزهایی که دور انداختنشان بیخطر است
اما پیدا کردنشان سخت.
Ballast یک بار /System/Volumes/Data را پیمایش میکند (نه /، تا پوشههای
firmlinkشده مثل /Users فقط یک بار شمرده شوند) و همهٔ پوشهها را در یک
ایندکس SQLite ذخیره میکند، با اندازههایی که از فضای واقعاً تخصیصیافته روی
دیسک میآیند — همان چیزی که du گزارش میدهد — و hard linkها فقط یک بار
شمرده میشوند. هر اجرای بعدی، گزارش FSEvents را که macOS در هر حال نگه میدارد
بازپخش میکند و فقط پوشههای تغییرکرده را دوباره بررسی میکند. اگر نشود به آن
گزارش اعتماد کرد — رویدادها از دست رفته باشند، شناسهها سرریز کرده باشند،
ریشه عوض شده باشد — بهجای حدس زدن، اسکن کامل انجام میدهد.
درایوهای خارجی و ولومهای دیگر ایندکس جداگانهٔ خودشان را دارند و فقط وقتی بخواهید اسکن میشوند. درایوهای APFS و Mac OS Extended از گزارش تغییرات خودشان بهروز میشوند؛ ExFAT و FAT با هر بار وصل شدن گزارش تازهای شروع میکنند، پس Ballast آنها را دوباره اسکن میکند و این را میگوید.
هر مورد یکی از چهار حکم را میگیرد که درست در لحظهٔ حذف دوباره بررسی میشود:
| حکم | نمونهها |
|---|---|
| بیخطر | کش اپها، node_modules، DerivedData، نصبکنندههای دانلودشده |
| اول اپ را ببندید | کش مرورگر وقتی مرورگر باز است |
| اول بررسی کنید | مخزنهای Git، پوشههای ابزار، اپها |
| محافظتشده | دادهٔ اپها، Keychainها، Mail، Photos، .ssh، .git |
پیشفرض انتقال به سطل زباله است، و هر پاکسازی ثبت میشود تا Put Back
بتواند آن را برگرداند — هرگز روی چیز تازهای که در همان مسیر ساخته شده باشد.
ابزارهایی که فرمان پاکسازی خودشان را دارند (npm cache clean،
go clean -modcache، brew cleanup) بهجای حذف فایلها همان فرمان را اجرا
میکنند. Ballast هرگز برای حذف، دسترسی مدیر نمیخواهد.
target/ فقط کنار Cargo.toml، .next فقط کنار package.json
یا پیکربندی Next — هرگز فقط از روی نام.brew و git.ایندکس، تاریخچهٔ رشد و گزارش پاکسازی در
~/Library/Application Support/Ballast میمانند. بررسی بهروزرسانی (Sparkle) و
دادهٔ مصرف ناشناس هر دو تا وقتی اجازه ندهید خاموشاند؛ رویدادهای مصرف فقط
مقادیری از فهرستهای ثابت، بولی و بازه را حمل میکنند — هرگز مسیر، نام یا
اندازهٔ دقیق.
نسخهها بهصورت Ballast.zip در GitHub منتشر میشوند. buildها امضای ad-hoc
دارند و notarize نشدهاند، پس macOS برای اولین اجرا از شما تأیید میخواهد.
Full Disk Access توصیه میشود تا پوشههای محافظتشده هم اندازهگیری شوند.
Swift 6، SwiftUI، SQLite، FSEvents، WidgetKit، App Intents، Sparkle. با مجوز GNU AGPL v3.