What changed: Sources/ShotdeckCore/Capture/CaptureRegion.swift (AppKit→CG conversion with injectable primaryHeight, isStillValid, Codable, defaultsKey), Sources/ShotdeckCore/Capture/HotkeyCenter.swift (Carbon RegisterEventHotKey, dispatch-table pattern, register returns false on non-noErr), Tests/ShotdeckCoreTests/CaptureRegionTests.swift (GEO-1..8 incl. two secondary-display cases, HK cases). 3 files, +344.
Gates: builder ran swift build && swift test in the worktree (builder claim — independent verify pending: Codex acceptance tests TEST-WP-3a + agy verifier run next). Spec review REVIEW-GLM-A2a: BLOCKERS: 0.
NOT runtime-verified: live hotkey firing needs a GUI session — capped at agent_tested until Ben drives the signed app.
Implements SPEC-A2a-capture.md WP-3a section (run shotdeck-20260830, rev 2).
What changed: `Sources/ShotdeckCore/Capture/CaptureRegion.swift` (AppKit→CG conversion with injectable primaryHeight, isStillValid, Codable, defaultsKey), `Sources/ShotdeckCore/Capture/HotkeyCenter.swift` (Carbon RegisterEventHotKey, dispatch-table pattern, register returns false on non-noErr), `Tests/ShotdeckCoreTests/CaptureRegionTests.swift` (GEO-1..8 incl. two secondary-display cases, HK cases). 3 files, +344.
Gates: builder ran `swift build && swift test` in the worktree (builder claim — independent verify pending: Codex acceptance tests TEST-WP-3a + agy verifier run next). Spec review REVIEW-GLM-A2a: BLOCKERS: 0.
NOT runtime-verified: live hotkey firing needs a GUI session — capped at agent_tested until Ben drives the signed app.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements SPEC-A2a-capture.md WP-3a section (run shotdeck-20260830, rev 2).
What changed:
Sources/ShotdeckCore/Capture/CaptureRegion.swift(AppKit→CG conversion with injectable primaryHeight, isStillValid, Codable, defaultsKey),Sources/ShotdeckCore/Capture/HotkeyCenter.swift(Carbon RegisterEventHotKey, dispatch-table pattern, register returns false on non-noErr),Tests/ShotdeckCoreTests/CaptureRegionTests.swift(GEO-1..8 incl. two secondary-display cases, HK cases). 3 files, +344.Gates: builder ran
swift build && swift testin the worktree (builder claim — independent verify pending: Codex acceptance tests TEST-WP-3a + agy verifier run next). Spec review REVIEW-GLM-A2a: BLOCKERS: 0.NOT runtime-verified: live hotkey firing needs a GUI session — capped at agent_tested until Ben drives the signed app.
🤖 Generated with Claude Code