Changelog
All notable changes to Reticle, most recent first.
v0.5.0
alpha2026-06-03Added
- +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-03Added
- +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-03Added
- +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-03Added
- +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-30Added
- +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%, …)