发布

  • fix: pre-release hardening on v2.6.0 surfaces

    frostbyte_neo 发布于 2026-05-24 06:10:52 +00:00 | 75 次提交 在此版本后已推送到 main

    • AppBundleDragHandle now uses NSItemProvider(object: bundleURL as NSURL)
      which is the exact shape Finder emits for an .app drag. The previous
      contentsOf form registered as a generic file-copy and could be rejected
      by System Settings' Privacy panes that read the URL representation
      directly.

    • ConfettiView no longer overwrites the AppKit-provided CALayer on its
      NSView host. The override discarded the layer's backing-store scale
      and rendered particles at 1x on Retina displays. wantsLayer alone is
      enough; AppKit supplies a properly-scaled layer.

    • ConfettiView's two asyncAfter cleanup blocks now use weak captures
      plus a window-nil bail so a confetti burst on a dismissed view stops
      allocating particles immediately rather than running for the full
      4-second cycle against an orphaned layer.

    • OnboardingView records hasSeenConfetti the moment the burst fires
      (+0.35s) instead of after it finishes (+4s). A user who clicks Start
      within the first second of the ready scene now still gets the
      once-per-install guarantee — previously, a fast click would skip the
      flag write and re-show the burst on the next launch.

    • PermissionCoordinator.requestAccess now cancels any pending grant
      DispatchWorkItem in addition to clearing the prior callback. Without
      this, a second requestAccess() during the 1-second post-grant delay
      would fire both callbacks — the queued one for the prior batch and
      the new one for the current request.

    • AppState.removeSelectedFiles refuses re-entry while a prior batch's
      permission sheet is still active. This closes a race where a second
      removeSelectedFiles() call could overwrite lastFailedRemovalURLs
      before the first batch's retry closure read it, causing the retry to
      execute against the wrong batch with the first sheet's app-name
      context.

    下载附件