Version 1.5.9

RawCull Changelog — v1.5.0 → 1.5.9

UI changes

New viewing experience

  • In-window zoom overlay replaces the separate zoom windows. Double-click any thumbnail to open a full-view zoom overlay inside the main window (ZoomOverlayView.swift).
  • Legacy views removed: horizontal main thumbnails strip, ImageTableHorizontalView, both focus-peek zoom windows (ZoomableFocusePeekCSImageView / ZoomableFocusePeekNSImageView), and TagImageFocusView.
  • Thumbnail grid opens in its own window via a separate Scene in RawCullApp, so the main navigation and the grid can sit side-by-side.
  • Main-view modes added for switching between detail/grid layouts from the toolbar.

Toolbar and sidebar rework

  • Unified shared toolbar (SharedMainToolbarContent): badge toggles, split-view toggle, and view-mode controls now live in one place.
  • Removed: dedicated rating toolbar, sharpness toggle, sidebar toggle, and the columnVisibility prop.
  • Split view visibility is controlled from the shared toolbar.
  • Search + rating filter moved directly into FileTableRowView.

Burst grouping (new feature)

  • Auto-clusters consecutive similar frames into burst groups using Vision feature prints.
  • Best-frame info + header cached for snappy group rendering.
  • Debounced / cancellable grouping so scroll and filter changes don’t stack stale work.
  • Sharpness and similarity controls hidden while in burst mode.
  • Keep Best action disabled until sharpness scoring has run.

Ratings, badges, and stats

  • isTagged renamed to isUnrated; a Picked badge was added.
  • Crown badge removed — the colored rating strip alone now communicates the top pick.
  • CullingStatsView removed; burst cell simplified.
  • RatingView.swift deleted (consolidated into inline row UI).
  • Saved-files toggle handlers removed.

Focus controls

  • Focus controls moved to Settings (FocusSettingsTab) rather than floating in the main window.
  • Marker size centralized so it stays consistent across views.

Naming / layout polish

  • TaggedPhotoHorisontalGridViewRatedPhotoGridView; TaggedPhotoItemViewRatedPhotoItemView.
  • Grid padding and overall formatting refreshed.

Technical changes

Thumbnail caching

  • Dedicated grid thumbnail cache with a fast path separate from the main preview cache.
  • Configurable grid cache size in Settings.
  • Live cache-usage display for the grid cache.
  • Removed the old thumbnailSizeGridView setting.
  • OSAllocatedUnfairLock guards grid cache cost accounting.
  • New handler for “extraction-needed” thumbnails so misses can trigger on-demand extraction.

Scoring / similarity pipeline

  • Aperture hint + ISO scaling added to focus scoring (FocusDetectorConfig.apertureHint).
  • Max sharpness score cached for O(1) reads.
  • Burst grouping tasks debounced and stale tasks cancelled.
  • Crown-badge derivation moved to the rating cache instead of re-reading sharpness scores.

State / architecture

  • selectedFile is now derived from selectedFileID (single source of truth).
  • Sheet handling centralized in RawCullViewModel.
  • Async disk load + UI update path simplified.
  • WindowIdentifier and associated zoom/selection plumbing removed along with the old zoom windows.

Housekeeping

  • Periphery ignores added; dead code and legacy views pruned.
  • Test cleanup.
  • Multiple project.pbxproj bumps; version lands at 1.5.9.
Last modified April 19, 2026: update (cbc7cf2)