Fixed
- Saved screenshots have wrong colors on multi-monitor setups — the save pipeline was converting Display P3 pixels to sRGB, shifting colors on mixed-colorspace setups (P3 built-in + sRGB external). Now embeds the native display color profile without altering pixel values. Removed the "Embed sRGB color profile" toggle — native profile is always embedded.
- GIF export crash on longer recordings —
CGImageDestinationFinalizeread freed pixel buffer memory (use-after-free) becausealwaysCopiesSampleData=falseallowed buffer recycling. Each frame's pixels are now copied into an owned context immediately. - GIF export freezes the UI — switched from Swift concurrency
Task.detached(cooperative thread pool shares threads with the main actor) to GCD.backgroundqueue (real kernel thread that macOS deprioritizes). - GIF export shows no progress — "Processing GIF…" status now persists with a percentage indicator (0–50% during frame reading, then 100% after finalize).
- Overlay appears instantly — overlay windows now show immediately (transparent) while screenshots capture in the background. Eliminates the 0.5–1s delay on first capture. Core Animation/Metal pipeline pre-warmed at app launch.
- Focus not returning to previous app —
dismissOverlaysinstartCapturewas consumingpreviousAppbefore the new capture started, so focus couldn't be returned after the capture finished. - Stale helper text during fast capture — idle helper text and dark tint are no longer drawn until the screenshot arrives, preventing ghost text from lingering due to partial redraws.