Skip to content

Releases: sw33tLie/macshot

v3.5.3

03 Apr 03:21

Choose a tag to compare

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

02 Apr 21:50

Choose a tag to compare

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 zoomCmd+=/Cmd+- to zoom in/out, Cmd+0 for 100%, Cmd+1 for 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

01 Apr 23:46

Choose a tag to compare

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/2 shows 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

01 Apr 18:30

Choose a tag to compare

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

30 Mar 23:48

Choose a tag to compare

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 moveTo reading 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

30 Mar 15:51

Choose a tag to compare

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 applyPostProcessing method in the editor, reducing code duplication across 6 output paths.

v3.4.3

29 Mar 21:38

Choose a tag to compare

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

29 Mar 21:19

Choose a tag to compare

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

29 Mar 19:05

Choose a tag to compare

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

29 Mar 17:55

Choose a tag to compare

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.