Changelog

All notable changes to Reticle, most recent first.

v0.5.0

alpha2026-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

alpha2026-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

alpha2026-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

alpha2026-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

alpha2026-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%, …)