9884c844d4619a73b3204cbd1f38108a8ec5db60
SIGN_IDENTITY now comes from REDLINE_SIGN_IDENTITY, else the first "Developer ID Application" identity in the keychain (REDLINE_KEYCHAIN adds --keychain everywhere it's searched/used), else the existing Apple Development identity with a loud WARNING that Gatekeeper will block first install elsewhere. build-app.sh still has to sign first with its own hardcoded Apple Development identity (that pair is what keeps the Screen Recording grant alive) — this script now re-signs the resulting bundle with the resolved identity, --options runtime --timestamp, before zipping. Notarization is optional: set REDLINE_NOTARY_PROFILE (a notarytool keychain profile) or all three of REDLINE_NOTARY_KEY_ID/_ISSUER/_KEY_PATH, and after the zip is built the script submits it, waits, and on Accepted staples Redline.app, rebuilds the zip and DMG from the stapled app (a new build_dmg() that ditto-copies whatever is already at .build/Redline.app rather than re-invoking make-dmg.sh, which would rebuild from source and strip both the resolved signature and the staple), staples the DMG, and requires `spctl -a -vv -t exec` to say "accepted" or the script aborts. Absent notary config: prints NOT NOTARIZED and continues exactly as before. appcast.json gains "notarized" and "teamIdentifier" (from codesign -dv); confirmed UpdateChecker's Appcast Decodable already ignores unknown JSON keys (verified with a standalone decode), so no app-side change was needed for old appcasts to keep working. Ends with a summary block: identity used, notarized yes/no, spctl verdict, team, sha256. --test dry-run behaviour (upload to .../test/, skip the git commit) is unchanged. Known gap, out of scope here: build-app.sh's own pre-sign step still hard- requires its hardcoded Apple Development identity in the keychain even when a Developer ID identity is what will actually ship — untouched per the task boundary (this file only). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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%