Version 1.5.2

Version 1.5.2 - April 16, 2026

RawCull changes summary β€” v1.5.0 β†’ v1.5.2

Changelog: v1.5.0 β†’ latest (main)

Repository: rsyncOSX/RawCull
Range: v1.5.0...main
Generated: 2026-04-16


πŸš€ Features

Burst grouping workflow

  • Added indexAndGroupBursts() to index embeddings and then cluster files into bursts.
  • Added reGroupBursts() to re-run clustering when sensitivity changes.
  • Added keepBestInGroup() to auto-rate the sharpest frame as β˜…β˜…β˜… and reject the rest.

Files

  • RawCull/Model/ViewModels/RawCullViewModel+BurstGrouping.swift
  • RawCull/Model/ViewModels/SimilarityScoringModel.swift
  • RawCull/Views/GridView/GridThumbnailSelectionView.swift
  • RawCull/Views/GridView/SimilarityControlsView.swift

Burst grouping model/state

  • Added BurstGroup model.
  • Added burst-related state:
    • burstGroups
    • burstGroupLookup
    • burstSensitivity
    • burstModeActive
    • isGrouping
  • Added async sequential grouping pass over embeddings in shot order.

Burst-aware grid UI

  • Grid now supports burst-mode sections.
  • Added per-group header with:
    • burst frame count
    • best-frame display (and optional sharpness %)
    • Keep Best
    • Reject All
  • Added crown marker overlay for the best frame inside burst groups.

New Focus settings tab

  • Added Settings β†’ Focus tab.
  • Moved focus-mask tuning controls from image overlay into settings.
  • Added centralized focus-point marker-size control.

Files

  • RawCull/Views/Settings/FocusSettingsTab.swift
  • RawCull/Views/Settings/SettingsView.swift
  • RawCull/Main/RawCullApp.swift (environment injection for settings)

πŸ›  Fixes

Zoom clamp fix

  • Fixed zoom-in clamping logic:
    • from max(0.5, currentScale + 0.4) (incorrect for upper bound)
    • to min(5.0, currentScale + 0.4).

Files

  • RawCull/Views/ZoomViews/ZoomableFocusePeekCSImageView.swift
  • RawCull/Views/ZoomViews/ZoomableFocusePeekNSImageView.swift

Settings environment propagation

  • Ensured settings views receive the shared viewModel via .environment(viewModel).

⚑ Performance / Responsiveness

  • Burst grouping work runs in a detached async task.
  • Grouping path uses a sequential O(n) pass over precomputed embeddings.
  • Added grouping progress indicator (Grouping bursts…) while clustering is running.

♻️ Refactors / UX Simplification

Overlay controls simplified

  • Removed the expanded in-overlay focus-mask slider panel.
  • Overlay controls now focus on:
    • focus-mask toggle
    • focus-point toggle
    • zoom controls
  • Advanced focus controls moved to Settings β†’ Focus.

Focus point marker size centralized

  • Moved marker size to shared view model state:
    • RawCullViewModel.focusPointMarkerSize
  • Applied consistently across main image + zoom surfaces + settings.

Grid toolbar layout cleanup

  • Header reorganized into two rows:
    • Row 1: analysis tools
    • Row 2: rating/culling filters
  • Sharpness controls are hidden during burst mode to reduce clutter.

πŸ§ͺ Tests / Tooling

  • Updated .periphery.yml excludes to include:
    • RawCull/RawCullTests/SharpnessScoringTests.swift
    • RawCull/RawCullTests/SimilarityScoringTests.swift

⚠️ Breaking changes

No clear API-breaking change detected in this range.
Behavioral UX change to note:

  • Focus mask tuning moved from in-overlay controls to Settings β†’ Focus.

Last modified April 16, 2026: update (32702a0)