78cc7d5b1a8255732b2d3cda47752341e14690dd
TransportSettingsTests: default airDrop, set/get round-trip, garbage stored value falls back to airDrop, oneDriveFolder store/reset, effectiveFolders for both transports, oneDriveFolderUnavailable's errorDescription contains the path. OneDriveLocatorTests: fake home tree under Library/CloudStorage — syncRoots returns only real OneDrive-* directories (ignores a same-named plain file and a GoogleDrive-* one), MMD-named root sorts first; no CloudStorage dir means empty roots and a nil defaultRedlineFolder; resolveOneDriveFolder prefers an existing stored override and falls back to the default when the stored path no longer exists. All against temp dirs, never the real home. ReturnWatcherTests: recordUncommended defaults to true and still records an unmarked PDF (existing AirDrop tests are unaffected); with it set false, an unmarked PDF is neither recorded nor returned by scanNow, and marking it up in place with a real PDFKit ink annotation then re-scanning does record it. 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%