Redline v0.2.0 — complete app (integration branch → main) #22

Merged
kua-agent merged 45 commits from feat/shotdeck-20260830 into main 2026-09-02 06:09:38 +00:00
Member

Full Redline macOS menu-bar app as released v0.2.0: hotkey region capture (remembered region), durable spool, review PDF with PASS/FAIL boxes, truthful AirDrop send, annotation-return detection, configurable hotkey, app icon, DMG installer, built-in auto-update (appcast on get.baobab-ts.com/cowork/redline/), one-command publisher. 21 PRs merged on the integration branch, every package independently verified; four-phase in-app selftest (picker drag, region persistence, send-truth, update engine) passes on the installed release build.

🤖 Generated with Claude Code

Full Redline macOS menu-bar app as released v0.2.0: hotkey region capture (remembered region), durable spool, review PDF with PASS/FAIL boxes, truthful AirDrop send, annotation-return detection, configurable hotkey, app icon, DMG installer, built-in auto-update (appcast on get.baobab-ts.com/cowork/redline/), one-command publisher. 21 PRs merged on the integration branch, every package independently verified; four-phase in-app selftest (picker drag, region persistence, send-truth, update engine) passes on the installed release build. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kua-agent added 45 commits 2026-09-02 06:09:29 +00:00
Add ReturnsList (newest-first, max 8, click-to-Finder, hidden when empty)
and SettingsView (hotkey row, folder Choose… via FolderSettings + AppModel
seam mutators, async updateWatchFolder(url) only).
Root cause: RegionPickerView lacked acceptsFirstMouse — as an LSUIElement accessory app
Shotdeck is never active when the hotkey fires, so the user's first click on the overlay
was refused and the drag never started. Also plumbs the monitored event's location through
the controller (hardware-cursor reads made the chain untestable). Adds PickerSelfTest
(SHOTDECK_PICKER_SELFTEST): posts synthetic mouse events through the app's own queue,
asserts the exact CaptureRegion, saves a mid-drag overlay bitmap. Coordinator ran it:
PICKER-SELFTEST PASS rect=(200.0, 729.0, 400.0, 300.0); overlay bitmap shows dim+punch+chip.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ben-reported: picker opened on every activation. AppModel.init set region = nil and never
read UserDefaults back; saving worked, every launch forgot it. init now loads via
loadPersistedRegion() (decode + isStillValid). Selftest phase 2 writes a known region,
reloads through the same path, asserts the rect, restores the user's stored value.
Coordinator ran it: PICKER-SELFTEST PASS + REGION-PERSIST PASS, 90/90 tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts:
#	Sources/Shotdeck/PickerSelfTest.swift
kua-agent merged commit 380b704f8a into main 2026-09-02 06:09:38 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mmd-it/shotdeck#22