⚡ Bolt: Unblock MainActor during Docker prune and disk scans#40
⚡ Bolt: Unblock MainActor during Docker prune and disk scans#40
Conversation
Co-authored-by: acebytes <2820910+acebytes@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
💡 What: Offload synchronous I/O operations from the
@MainActorinCacheoutViewModel.🎯 Why:
Foundation.Process.waitUntilExit(),readDataToEndOfFile(), andDiskInfo.current()all execute synchronously on the thread they are called from. BecauseCacheoutViewModelruns on the@MainActor, executing these operations directly causes the main thread to block, freezing the UI completely during the execution of a Docker prune or the initial disk space check. By wrapping them inTask.detached, we execute them on background threads while the UI remains responsive.📊 Impact: Completely eliminates UI freezes and unresponsiveness during
scan()operations (which fetch disk stats) and Docker pruning (which shells out todocker system prune -f). The app remains completely fluid.🔬 Measurement: Observe the UI during a scan or Docker prune (when
isScanningorisDockerPruningstate properties change the UI) to verify that spinning progress indicators no longer freeze and the app window remains draggable.PR created automatically by Jules for task 10533459610125003356 started by @acebytes