Changelog

All notable changes to Reticle, most recent first.

v0.5.0

alpha 2026-06-03

Added

  • + Sparkle auto-update — EdDSA-signed appcast feed; "Check for Updates…" in menu bar; CI automatically signs and publishes on every tagged release
  • + Static Mask — register fixed screen regions, app bundle IDs, or window title substrings to blur/pixelate/blackout permanently on every capture
  • + Static Mask UI — new Masks tab in Settings with per-rule enable/disable, three style options (blur / pixelate / solid fill), and live sliders

v0.4.0

alpha 2026-06-03

Added

  • + Launch at login — Settings → General toggle (SMAppService, macOS 13+)
  • + Test Connection button for SFTP — verifies host, credentials, and remote path via curl before upload
  • + Test Connection button for S3 — sends a signed HEAD request to the bucket to verify credentials and connectivity

Fixed

  • ~ SFTPUploader: .netrc temp file is now created with 0o600 permissions atomically — eliminates the brief world-readable window between write and chmod

v0.3.0

alpha 2026-06-03

Added

  • + Magnifier HUD — pixel color swatch with real-time HEX (#RRGGBB) readout under cursor
  • + Capture region selector now shows 8 circular handles (corners + edge midpoints)
  • + Annotation handles upgraded to white circles with blue stroke — hover shows glow ring
  • + Rotation handle redesigned: white circle + blue stroke, dashed stem line
  • + Speech balloon tail direction picker — 4 directions (bottom-left / bottom-right / top-left / top-right)
  • + Spotlight opacity slider in toolbar (was hardcoded 62%)
  • + Line style picker redrawn as Canvas strokes — solid, dashed, dotted (replaced Unicode glyphs)
  • + Text annotation fields use dark frosted pill backdrop with white border (accessibility focus ring restored)
  • + Size label shows pixel dimensions + origin coords in one compact pill

Changed

  • Rotation handle color: system orange → white/blue (matches resize handle system)
  • drawSpotlightOverlay respects vm.spotlightOpacity instead of hardcoded constant

v0.2.0

alpha 2026-06-03

Added

  • + Screen recording — MP4 (H.264) and GIF via SCStream + AVAssetWriter
  • + App onboarding flow for first-launch setup
  • + App icon and site logo

Fixed

  • ~ Crash in Capturer.swift when task group exhausts — guard let replaces force-unwrap
  • ~ Crash on headless/no-screen: NSScreen.screens[0] → .first with guard
  • ~ Crash on nil URL in AppDelegate, OnboardingView, and CaptureCoordinator
  • ~ Data race in ScreenRecorder — NSLock added around all nonisolated(unsafe) encoder access
  • ~ AVAssetWriter crash on 1-pixel capture rects after &~1 dimension masking
  • ~ Silent data clobber when two workflow tasks ran concurrently (profileDestinationsOverride now passed as parameter)
  • ~ Directory creation failures previously dropped silently — now logged
  • ~ OCR errors now shown in result panel instead of silent empty string
  • ~ Memory: struct captures in singleton closures replaced with direct coordinator reference

v0.1.0-alpha

alpha 2026-05-30

Added

  • + Region capture with freeze overlay
  • + Full-screen and per-monitor capture
  • + Window capture (click-to-pick)
  • + Scrolling screenshot
  • + Saved regions and last-region repeat
  • + Auto capture with configurable interval
  • + 21 annotation tools — shapes, text, effects, insert
  • + Sticky tool mode (tools stay active after placing)
  • + Blur with expanded-crop for edge accuracy
  • + Pixelate, Blackout, Spotlight, Magnify effects
  • + Undo / Redo (⌘Z)
  • + Copy to clipboard, save to file, desktop notification
  • + OCR via Vision framework
  • + Pin to screen (floating image overlay)
  • + Clipboard history (⌘⇧V, last 30 items)
  • + Color picker panel
  • + Imgur, S3/B2/R2, SFTP, custom HTTP uploaders
  • + Workflow profiles (hotkey → capture → upload)
  • + Pixel-perfect capture (Display P3 color space preserved)
  • + Filename token parser (%year%, %counter%, %app%, …)