bd11ba96c5f63c717957244950ca3273fc632571
Two issues: (1) directoryExists(at:) only checked existence + isDirectory, so an existing-but-unwritable OneDrive folder skipped the oneDriveFolderUnavailable branch and surfaced as a generic pdfCompositionFailed message instead — now uses OneDriveLocator.isWritableDirectory(at:). (2) send() read `self.outboxURL` again inside composePDFForSend() after at least one await had already run, so a concurrent chooseTransport() call (SettingsView.swift) could flip transport/outboxURL/recordUncommented mid-send, landing the PDF under one transport's folder while the archive/status branch ran the other's. Fix: send() now snapshots BOTH transport and the destination folder into local `let`s once, before any await, and passes the folder explicitly into the renamed composePDFForSend(outbox:) — which no longer reads self.outboxURL at all. The archive/status switch already used the frozen `transport` local. (chooseTransport/chooseOneDriveFolder additionally refuse outright while isSending is true — see the SettingsView.swift commit — so in practice this race can no longer even be triggered, but the snapshot is the actual structural fix regardless.) 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%