Releases: AlexGladkov/Spacie
Releases · AlexGladkov/Spacie
Spacie 1.3.0 — iTransfer для iOS приложений
Главное — iTransfer для iOS приложений
Новый мастер переноса приложений с iPhone на Mac и обратно. Теперь можно:
- Скачать любое приложение с iPhone к себе на Mac в виде IPA архива (Wi-Fi или кабель)
- Установить IPA обратно на iPhone одной кнопкой (полезно для бэкапов любимых приложений, которые удалили из App Store)
- Перенести батч приложений между двумя iPhone — выбрал список, нажал старт, ушёл пить кофе
- Локальная библиотека архивов — все скачанные IPA хранятся отдельно с иконками, версиями, размерами
Авторизация через Apple ID (с поддержкой 2FA). Пароль безопасно передаётся через PTY — другие процессы системы его не видят.
Сканирование диска — заметно шустрее
- Клик по диску открывает результаты в ~10 раз быстрее на больших объёмах
- Везде где идёт долгая операция теперь крутится спиннер с понятным текстом
Удаление из списка больших файлов
- Правый клик в Large Files / Old Files → Move to Trash (или ⌘⌫)
- Multi-select — выделил несколько → один confirm → все удалены
- Подтверждение показывает сколько места освободится
- Если файл уже куда-то делся — просто убирается из списка без раздражающей ошибки
Под капотом
Приложение переписано на Kotlin Multiplatform. В следующих версиях появятся сборки под Windows и Linux.
System requirements: macOS 14+, Apple Silicon (arm64).
Для iTransfer: Homebrew + libimobiledevice (мастер всё установит сам).
Spacie for Windows v1.0.0
Spacie for Windows
Installation
- Download
Spacie-1.0.0.msibelow - Run the installer
- Install libimobiledevice via Chocolatey:
choco install libimobiledevice
Requirements
- Windows 10 / 11
- Chocolatey + libimobiledevice (for iPhone connectivity)
v1.2.0 — Duplicate Finder
What's New
Duplicate Finder
- Progressive hashing pipeline: size grouping → partial SHA-256 (16 KB head+tail) → full SHA-256 on demand
- Found 83 534 groups and 28.43 GB of wasted space on a real 800 GB disk in ~7 minutes
- Search, min-size filter (4 KB / 64 KB / 1 MB / 10 MB / 100 MB), sort by Wasted Space / Count / File Size
- Auto-Select strategy: Keep Newest, Keep Oldest, Keep Shortest Path
- Expand groups to see file paths and dates; click to verify with full hash
- Send selected files to Drop Zone for safe deletion via Trash
Performance
- Tab switching no longer freezes — cached
filteredGroupsandselectedForDeletioninstead of recomputing on every SwiftUI render buildSizeBuckets()— single O(N) pass through FileTree under one lock, hardlink dedup via inode
Bug Fixes (6 critical)
- Sentinel node (index 0) no longer processed as a duplicate candidate
sendToDropZonenow usestreeIndex: UInt32— eliminatesFileNodeInfo(id: 0)sentinel crash- Selection state moved to
ViewModel.selectedFileIds: Set<String>— no more full group recreation on every toggle - Partial hash increased from 4 KB to 16 KB head + 16 KB tail
- I/O:
pread(2) + F_NOCACHE + O_NOFOLLOWinstead of FileHandle - Concurrent tasks: 8 for partial hashing, 4 for full hashing
v1.1.0 — Stability & Reliability
What's Changed
This release is focused entirely on stability and reliability improvements identified through a comprehensive code audit.
🔴 Critical fixes (crashes & data races)
- FileTree thread safety — all 20 read methods now hold
os_unfair_lock, preventing data races with the UI during Phase 2 scanning - Crash on empty tree — fixed
1...0range crash in Go To Folder and Storage Overview when tree has no nodes - DeepScanner data race —
thresholdReachedis now read under lock viaisThresholdReached - Static variable races —
ScanExclusionManagerandBlocklistManagerlazy-loaded statics now protected byos_unfair_lock - Potential deadlock — replaced
DispatchSemaphore.wait()inside SwiftTaskwithDiskScanner.scanSync()to avoid cooperative thread pool exhaustion - Thread-unsafe lazy var —
ScanCache.walmoved fromlazy vartoinit()for safe eager initialization - Main thread freeze —
OldFilesViewModel.refreshnow runs onTask.detached, no longer blocks the UI on large trees
🟡 Medium fixes
aggregateEntryCounts()now idempotent via guard flagremoveSubtreeFromPathIndexandensureParentChainconverted from recursive to iterative (prevents stack overflow on deepnode_moduleshierarchies)_children(of:)now has a safety counter to prevent infinite loop on corrupted sibling listScanCacheforce-unwrap onFileManager.urlsreplaced with safe fallbackDuplicateScanStateEquatable now handles all cases (.computingFullHash,.error)DuplicateFinderViewModelno longer silently drops scan results when navigating away
🟢 Low-priority cleanup
- Removed dead
didAddvariable inDropZoneView isPackageExtensiondeduplicated from 3 scanners into a singleString.isPackageDirectoryextensionDiskScannerrefactored to support synchronous callback viascanSync()
Spacie 1.0.0
Spacie 1.0.0
Real-time disk space analyzer for macOS (Apple Silicon).
Features
- Live filesystem scanning with incremental cache — instant startup from persisted data
- Interactive treemap visualization of disk usage
- Contextual file type classification with category breakdown
- Large files panel for quick identification of space hogs
- App Nap prevention during active scans
Install
- Download
Spacie-1.0.0-arm64.dmg - Open the DMG and drag Spacie to Applications
- On first launch: right-click the app → Open (required for ad-hoc signed apps)
Requires macOS 15.0+, Apple Silicon