-
feat: cleanup-completion confetti + permission-flow final hardening + bump to 2.6.1 (build 13)
发布于
2026-05-24 06:17:33 +00:00 | 73 次提交 在此版本后已推送到 mainA second confetti burst now fires on the dashboard the moment a clean
cycle finishes with disk space freed. It's pinned across the whole
dashboard frame so particles overlay the success hero, and the trigger
is gated on a rising-edge check against the .cleaned state so the burst
doesn't replay if the user navigates back to the dashboard while the
success card is still on screen.Three race fixes:
-
PermissionCoordinator.refreshStatus now routes through handleGrant
when it detects a grant during an active request. Previously it would
flip hasFullDiskAccess to true and the next poll tick would see
granted && !hasFullDiskAccess evaluate false, skipping handleGrant
entirely — the sheet would sit open in a granted state and never fire
the retry. refreshStatus is what the app-becomes-active notification
calls, so this scenario was reachable any time the user granted FDA
in Settings then re-focused PureMac. -
AppState.removeSelectedFiles re-entrance now gates on
PermissionCoordinator.shared.isRequesting in addition to
removalNeedsFullDiskAccess. AppFilesView clears that latter flag the
moment it hands off to the coordinator, leaving a window where a
second remove call could replace the pending retry batch while the
sheet was still polling. The coordinator's isRequesting covers the
full sheet-open + retry-pending span. -
OnboardingView.ReadyScene stores the +0.35s confetti work as a
cancellable DispatchWorkItem and cancels it in onDisappear. A user
who clicked Start within the first 0.35s of the ready scene would
previously have the closure fire against a torn-down view, set
hasSeenConfetti true without showing anything, and permanently
suppress the welcome burst on future re-onboardings.
下载附件
-