Releases: sw33tLie/macshot
Releases · sw33tLie/macshot
v3.5.3
Added
- 18 new mesh gradient styles — replaced the previous 7 mesh gradients with 18 new high-contrast styles featuring displaced grid points and bolder color combinations. Added "Charcoal" linear gradient style.
- Scroll capture live stitching — frames are now captured and stitched continuously during manual scrolling, not just after the scroll gesture ends. Preview updates in real time as you scroll.
Changed
- Scroll capture engine rewrite — completely rewritten for reliability. Uses on-demand frame capture (
CGWindowListCreateImage) instead of persistent streams, TIFF byte-by-byte comparison for pixel-perfect frame settlement, Vision-based offset detection, and incremental stitching. Handles Chrome smooth scrolling, lazy-loaded content, and scrollbar interference. Max scroll height increased from 20,000 to 30,000 pixels. - Beautify shadow slider range — increased maximum from 40 to 100 for more dramatic shadow effects.
- Hotkey modal dismiss — pressing the capture hotkey while a modal dialog is open (e.g. Preferences, permission prompts) now dismisses the modal and triggers the capture, instead of being silently ignored.
- Status bar menu reliability — clicking the menu bar icon while a modal is open now properly dismisses the modal before showing the menu.
Fixed
- Function key hotkeys — F1–F20 can now be used as capture hotkeys without requiring modifier keys (Cmd/Shift/Option/Ctrl). Fixes support for non-Mac keyboards with dedicated function keys.
v3.5.2
Added
- Smart marker mode — OCR-based text detection snaps the marker's vertical position and height to actual text lines. Respects the user's horizontal drag range while auto-aligning to the nearest text. Toggle in marker tool options. Vertical pill cursor when active.
- Scroll capture live preview panel — floating panel beside the capture region shows the stitched image updating in real-time as you scroll. Bottom-aligned with the selection rectangle, grows upward.
- Editor zoom dropdown — the zoom percentage in the editor top bar is now a clickable dropdown with Zoom In/Out, Fit Canvas, and preset levels (50%/100%/200%). Replaces the old reset-zoom button.
- Editor keyboard zoom —
Cmd+=/Cmd+-to zoom in/out,Cmd+0for 100%,Cmd+1for fit canvas in the editor window. - Arrow flip toggle — new "Flip" button in arrow tool options to reverse the arrowhead direction (head at start instead of end).
- Toolbar color customization — accent and icon colors are now configurable in Preferences with live preview and reset-to-default.
- GIF recordings in history — GIF recordings now appear in the screenshot history with a thumbnail from the first frame.
- Homebrew Cask CI — release workflow auto-bumps the Homebrew cask formula via
brew bump-cask-pr.
Changed
- Scroll capture frame stability — fixed a critical bug where the frame stability check was non-functional: it compared GPU-backed frames whose pixel data was inaccessible, so the comparison always failed silently. Every capture was essentially grabbing whatever frame happened to be available, including mid-scroll and mid-render states. Now properly converts frames to CPU-backed memory before comparing, with exponential backoff (10ms–80ms) for apps with slow compositors like Chrome.
- Scroll capture speed — persistent capture stream runs at 120fps (was 60fps) for fresher frames. Auto-scroll cycle reduced from ~200ms to ~80ms per frame. Manual scroll settlement tuned for reliable captures without unnecessary delays.
- Annotation selection highlight — replaced the dashed rectangle with semi-transparent fill with a clean accent-colored outline that follows the annotation's actual shape (rounded rect corners, ellipse outline, etc.). Resize handles now use white fill with accent border.
- Rotation snap — holding Shift while rotating now snaps to 45-degree steps instead of 90-degree.
- Rotation hit-testing — hit-test for rotated annotations now properly un-rotates the test point, fixing cases where clicking on a rotated shape wouldn't select it.
- Pencil cursor — larger (25% bigger) with black outline for better visibility on light backgrounds.
- Thick arrow sizing — reduced to match proportions of other arrow styles at the same stroke width.
- Editor scroll behavior — mouse wheel now scrolls content vertically (instead of zooming). No elastic bounce when content fits within the window. Scrollbar tracks extend to window edges.
- Editor toolbar spacing — increased margins for bottom and right toolbars in the editor window.
- Toolbar overlap — right toolbar moves out of the bottom toolbar's way instead of vice versa, with vertical fallback when horizontal shift isn't enough.
- Hotkey display — added F13–F20, arrow keys, and other special keys to the key name map in Preferences.
Fixed
- Scroll capture stitch glitches — the frame stability fix above is the primary fix. Previously, capturing mid-render frames (especially in Chrome and Electron apps) produced horizontal line artifacts, shifted rows, and misaligned seams in the stitched output.
- Video editor save failure — when the recording directory bookmark is invalid or inaccessible, the save button now falls back to a Save As panel instead of silently failing.
Removed
- Velocity pencil mode — removed the experimental per-point stroke width feature. The variable-width rendering had visual artifacts and the velocity tracking was unreliable with Chaikin smoothing.
v3.5.1
Added
- Window snap beautify with native chrome — snapping a window now captures it independently (with transparent corners) and renders it on the gradient background using the real window chrome instead of a synthetic title bar.
- "Copy to clipboard" recording option — new post-recording action in both the toolbar popover and Preferences. GIF recordings copy inline data; MP4 copies the file URL.
- "Open from Clipboard" menu item — paste an image from the clipboard directly into the editor.
- Quick capture mode dropdown — replaced the "Auto-copy to clipboard" checkbox with a 3-option dropdown: Save / Copy / Save+Copy.
Changed
- Auto-measure: click to commit — holding
1/2shows a live preview that follows the cursor; click to place the measurement, release the key to dismiss. Previously committed on key release, causing accidental placements. - Auto-measure performance — cached bitmap context and helper text size to eliminate per-frame allocations during mouse tracking.
- Options row centering in editor — the tool options bar now centers correctly relative to the editor container, not the document view.
Fixed
- Clipboard copy pastes as JPG in browsers — clipboard now explicitly sets PNG data instead of using NSImage's default TIFF representation, matching native macOS screenshot behavior. Previously, apps like browsers would interpret the TIFF as JPG.
- Save button not applying beautify/effects — the Save toolbar button now applies post-processing (effects, beautify) before saving, matching the confirm flow.
- Preferences toolbar actions layout — split the tools list into "Bottom Toolbar Actions" and "Right Toolbar Actions" sections matching their actual positions.
v3.5.0
Added
- Scroll capture auto-scroll button — new "Auto Scroll" button in the scroll capture HUD replaces unreliable keyboard shortcuts. Click to start/stop automatic scrolling of the target window.
- Accessibility permission prompt — clicking Auto Scroll when Accessibility permission is not granted shows a dialog explaining why it's needed and offers to open System Settings.
- "Remember last selected tool" preference — new toggle in Preferences > General (on by default). When disabled, each new capture starts with the Arrow tool and resets effects/beautify.
Changed
- Scroll capture stitching quality — improved stitch accuracy with triple-fallback shift detection (exact row matching → pixel refinement → original offset), scroll-settle-capture cycle to avoid mid-render captures, and wider search bands for alignment.
- Scroll capture auto-stop — no longer triggers when cursor hovers over the HUD panel; only counts zero-shift frames when cursor is inside the capture region.
- Tool options row width — the secondary toolbar now expands to fit its content when wider than the main toolbar, preventing controls from being clipped when tools are disabled.
- Preferences "Tools" tab reorganized — toolbar actions split into "Bottom Toolbar Actions" and "Right Toolbar Actions" sections matching where buttons actually appear.
Fixed
- Scroll capture keyboard shortcuts unreliable — Tab key was intercepted by the target app (e.g. browser) instead of toggling auto-scroll. Replaced with clickable HUD buttons.
- Auto-scroll not scrolling target window — fixed cursor warp coordinate conversion for multi-monitor, target app re-activation after HUD click, and switched to line-based scroll units for broad app compatibility.
- Effects preset persisting unexpectedly — when "Remember last selected tool" is off, effects and beautify state are now properly cleared between captures.
v3.4.5
Added
- Thumbnail right-click menu — right-click any floating thumbnail preview to "Close All" or "Save All to Folder…" for batch operations.
Changed
- Overlay window level raised — overlay now appears above modal panels, alerts, and security software popups (e.g. LuLu firewall).
- Enter/quick-capture defaults to clipboard — new installs default to copy-to-clipboard instead of save-to-file on Enter.
- Instant clipboard copy — clipboard copy uses lazy encoding via
writeObjects, making it instant regardless of image format. - Confirm dismisses immediately — the overlay closes before post-processing (effects/beautify), so the user can continue working sooner.
- History always saves as PNG — screenshot history uses PNG internally regardless of the configured save format, eliminating slow WebP/HEIC encodes on clipboard-only captures.
Fixed
- Save button always saves to file — the "Save" toolbar button now always saves to the configured directory, independent of the Enter/quick-capture preference.
- Save As / stamp file picker hidden behind overlay — file dialogs now appear above the overlay window (level 258).
- WebP encoding corruption — fixed broken WebP output caused by Swift-WebP's macOS encoder using wrong stride (RGB instead of RGBA) and logical size instead of pixel dimensions. Now uses the CGImage RGBA path directly.
- Floating thumbnail stuck mid-slide — fixed thumbnails getting stuck partway through their slide-in animation when taking rapid screenshots, caused by
moveToreading an in-flight animation position. - List picker hover glitch on scroll — fixed hover highlights getting stuck on multiple rows when scrolling the language picker (or other list popovers) with the scroll wheel.
- Tool cursor shown over popovers — popovers now always show the arrow cursor instead of the active tool's cursor.
- CATransaction flush before activate — overlay windows render before app activation to prevent a flash of the deactivating app underneath.
v3.4.4
Added
- Image effects (Adjust) — new "Adjust" button in the toolbar with non-destructive CIFilter-based image effects. Includes 8 presets (Noir, Mono, Sepia, Chrome, Fade, Instant, Vivid) and 4 adjustment sliders (Brightness, Contrast, Saturation, Sharpness). Works independently of Beautify — use effects alone, with Beautify, or both. Live preview in the overlay.
- Auto-blur/pixelate faces — one-click face detection using Apple Vision to blur or pixelate all faces in the selection. Available in the blur/pixelate tool options row.
- Auto-blur/pixelate people — one-click human body detection to blur or pixelate all people in the selection.
- Text Only draw mode — segmented control in blur/pixelate options to switch between "All" (blur everything in drawn rectangle) and "Text Only" (OCR the drawn rectangle, blur only detected text lines). Matches Shottr-style content-aware blur.
Changed
- Improved blur/pixelate options row — reorganized with clear grouping: "Draw" mode selector, "Auto" detection buttons (All Text, PII, Types), and detection buttons (Faces, People). Dimmed section labels and pipe separators make the layout easier to scan.
- Centralized post-processing pipeline — effects and beautify are now applied through a single
applyPostProcessingmethod in the editor, reducing code duplication across 6 output paths.
v3.4.3
Fixed
- Editor window not opening — fixed "Open in Editor" button not working due to the app hiding itself before the editor window could appear.
v3.4.2
Added
- Recording settings popover — gear icon in the recording toolbar opens a quick-access popover to change format (MP4/GIF), FPS, and post-recording action for the current session without changing Preferences defaults.
- Auto-copy OCR text — OCR results are automatically copied to the clipboard when the OCR window opens. Toggle in Preferences > General (default: on).
- "Open editor" recording option — new default post-recording action that opens the video editor. Available in both the toolbar popover and Preferences.
Changed
- Beautify gradient picker stays open — clicking a gradient swatch no longer dismisses the popover, so you can quickly preview multiple styles.
Fixed
- ESC restores previous app focus — pressing Escape to cancel a capture now returns focus to the previously active application (e.g. Chrome) instead of leaving macshot active with nothing visible.
- Resize handles in recording setup — selection resize handles (corner/edge circles) now appear during recording setup mode, matching screenshot mode behavior.
- GIF recording speed — fixed GIF recordings appearing sped up due to incorrect frame decimation math. The GIF encoder now uses the actual recording FPS instead of a hardcoded 60fps estimate.
- Google Drive upload reliability — uploads now use a dedicated session with longer timeouts (5 min), automatic retry with backoff on network errors, and token refresh on 401 responses mid-upload.
v3.4.1
Added
- Add Capture — new button in the editor top bar to capture additional screen regions and compose them into a single image. The added capture is placed as a draggable stamp; the canvas auto-resizes to fit all content and trims empty space when you reposition it.
Fixed
- Cursor update crash — fixed an infinite recursion in AppKit's
cursorUpdate:→hitTest:chain that caused a stack overflow crash, particularly when using the editor with scroll views. - Checkbox text color in light mode — "Smooth" (pencil) and "On" (beautify) toggle labels are now always white, fixing near-invisible black text on systems using light appearance.
v3.4.0
Changed
- Simplified screen recording — recording now dismisses the capture overlay when you press Start. A floating timer pill and selection border remain visible during recording. Stop recording via the clickable timer pill or the menu bar icon (which becomes a stop button).
- Menu bar stop button — the menu bar icon turns into a red stop button during recording, even if the user had hidden it in Preferences. The icon restores to normal after recording ends.
- Capture Screen targets active monitor — "Capture Screen" and "Record Screen" now only apply full-screen selection on the monitor where the mouse cursor is, instead of all connected screens.
- Improved audio quality — mic recording upgraded to 192kbps stereo; system audio to 192kbps with max quality preset.
- Large internal refactor — annotation tool handlers extracted into dedicated protocol-based classes, toolbar UI migrated to proper AppKit components (NSPopover, NSView-based strips), and recording flow simplified by removing annotation-during-recording mode.
Fixed
- Cross-screen resize handles — resize handles now appear on both screens during a cross-screen selection, and dragging handles from the secondary screen correctly resizes the selection on the primary.
- Cross-screen resize sync — resizing a selection edge from the secondary screen no longer snaps the opposite edge to the screen boundary.
- Window snap on secondary screen — window snap highlights no longer appear on secondary screens while a selection is active.
- Selection resize during recording setup — the selection area can now be resized and moved while in recording setup mode (before pressing Start).
- Move button stuck state — the Move Selection button no longer stays visually pressed after releasing the drag.
- Tool preview cleanup on mode switch — marker cursor preview, loupe preview, stamp preview, and color sampler preview are now properly cleared when switching to recording mode.
- Recording HUD on all desktops — the recording timer pill now follows across desktop spaces (previously only visible on the space where recording started).
- Keyboard focus after cross-screen resize — Enter/Cmd+C now work immediately after resizing a selection from the secondary screen.