3abb8dc6ca2395e5e7f7ed9a3e5272dac72f4475
The Core-level regression tests added for the launch-paths BLOCKER (ReturnWatcherTests.swift) hand-replicate what AppDelegate.makeLaunchModel() and AppModel.bootstrap() do, rather than calling them — a future revert of either would not fail `swift test`. Neither lives in ShotdeckCore, so ShotdeckCoreTests cannot reach them; this new test target depends on the Shotdeck executable target itself and uses @testable import (confirmed this works cleanly with SwiftPM despite Shotdeck's main.swift top-level-code entry point — no separate main-symbol conflict). realLaunchModelAndBootstrapDetectAMarkedOneDriveReturn persists transport=.oneDrive (UserDefaults.standard, snapshot-and-restore — the same established pattern PickerSelfTest's ONEDRIVE-SELFTEST phase already uses, since neither of these real call sites has any defaults-threading to plug an isolated suite into), calls AppDelegate.makeLaunchModel(appSupportRoot: <temp>) and awaits model.bootstrap() UNMODIFIED, then drops a marked-up Redline PDF into the temp OneDrive folder and asserts the watcher reports it. Verified this test actually catches the original blocker: temporarily reverted makeLaunchModel() to the AirDrop-only resolver, and separately reverted bootstrap()'s updateWatchFolder reconcile — both reproduce the failure (the discarded revert is not part of this commit). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012ZiTXPbPCSjzPVsfoweAbp
Redline
A macOS menu-bar app that captures a remembered screen region, builds a one-screenshot-per-page PDF, AirDrops it to an iPad for markup, then watches for the annotated file to come back.
Hotkeys
- ⌥⇧1 — pick a new region, then capture it.
- ⌥⇧2 — capture the remembered region instantly (no picker).
Screen Recording permission
On first launch macOS asks once for Screen Recording. Grant it at System Settings > Privacy & Security > Screen Recording. You never have to do this again as long as the app is not re-signed with a different identity.
The grant is bound to the bundle identifier ai.flowmaster.shotdeck plus the code signature. Changing either one forces a fresh prompt.
Build
swift build && swift test
./scripts/build-app.sh # signed .app for daily use
open .build/Redline.app
Description
macOS menu-bar app: hotkey region capture into a review PDF with PASS/FAIL boxes, AirDrop send, annotation-return tracking
962 KiB
Languages
Swift
95.2%
Shell
4.8%