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