Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nickshatilo/snapper
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1
Choose a base ref
...
head repository: nickshatilo/snapper
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.1
Choose a head ref
  • 4 commits
  • 35 files changed
  • 1 contributor

Commits on Feb 27, 2026

  1. fix: resource leaks, race conditions, perf issues, and editor improve…

    …ments
    
    Critical fixes:
    - WindowSelectorController: add didFinish guard + finish(with:) to prevent
      mouse monitor and overlay window leaks
    - CaptureCoordinator: fix isCapturing race condition for OCR/timer modes by
      deferring flag reset to completion notifications instead of resetting
      immediately; close existing controllers before reassignment
    - AreaSelectorWindowController: use window.close() instead of orderOut to
      properly release windows
    - OCRResultPanel: close old panel before creating new one
    - TimerCaptureController: add window cleanup in deinit, post finish
      notification on cancellation
    
    Safety:
    - HotkeyManager: add deinit calling stop(); cap permission retry timer at
      40 attempts (60s) to prevent runaway polling
    - AppState: replace force-unwrap on desktop directory with safe fallback
    
    Performance:
    - BlurAnnotation/PixelateAnnotation: crop source image to annotation rect
      before applying CIFilter (50-100x faster for 4K screenshots)
    - CanvasNSView: remove duplicate synchronizeAnnotationSelectionState() call
      from drawAnnotationSelectionOverlay; add early init in viewDidMoveToWindow
    - HistoryBrowserView: add 300ms search debouncing
    - AppState: coalesce UserDefaults writes with 0.5s idle flush
    - ScreenCaptureService: add 2-second SCShareableContent cache
    
    Resource management:
    - QuickAccessManager: nil panel after orderOut to release view hierarchy
    - DesktopIconsHelper: replace deprecated synchronize() with
      CFPreferencesAppSynchronize
    - HistoryManager: only post historyDidChange on successful save
    
    Quality:
    - Extract triplicated directorySize() into StorageSizeCalculator utility
    - Remove redundant zOrder/isVisible assignments in CanvasState snapshots
    - Enable rotation for line annotations
    nickshatilo committed Feb 27, 2026
    Configuration menu
    Copy the full SHA
    cd551e9 View commit details
    Browse the repository at this point in the history
  2. Merge pull request #1 from nickshatilo/fix/bugs-perf-resource-leaks

    Fix resource leaks, race conditions, and perf issues
    nickshatilo authored Feb 27, 2026
    Configuration menu
    Copy the full SHA
    95ae69d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4b1b1f5 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    9b5ed63 View commit details
    Browse the repository at this point in the history
Loading