ef0d8712f79961fe3ef23a1556c4727ac5089dbf
AppDelegate.makeLaunchModel() built `paths` via the AirDrop-only FolderSettings.resolvedAppSupportPaths(), so ReturnWatcher's internal watchFolder (seeded from paths.watchFolder in its own init) was the AirDrop folder even when OneDrive was the persisted transport, and bootstrap() never reconciled it before starting. Net effect: on every relaunch with OneDrive selected, PDFs went to OneDrive but FSEvents kept watching the stale AirDrop folder for the whole session — marked-up returns were never detected. Fix: makeLaunchModel() now calls TransportSettings.resolvedAppSupportPaths() (single source of truth for the transport-folder mapping); made internal (not private) with an optional appSupportRoot override so PickerSelfTest's relaunch-simulation sub-step can call the exact same function against a temp root instead of the real Application Support folder. bootstrap() now unconditionally calls watcher.updateWatchFolder(watchFolderURL) before watcher.start() (belt-and-suspenders reconciliation, even though the paths fix alone already makes this a no-op in the normal case), and sets recordUncommented before start as it already did. Regression tests proving this land in the same PR (ReturnWatcherTests.swift): one characterizing the old bug's exact construction still missing a marked OneDrive-mode return, one proving the fixed launch-construction path detects it end to end. The ONEDRIVE-SELFTEST phase also gains a relaunch sub-step using this same makeLaunchModel() function. 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%