You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Prior art: Orca ships this as "Annotate AI Diff" (stablyai/orca, docs/site/content/docs/review/annotate-ai-diff.mdx).
How Orca does it
Hover any diff line and a + appears in the gutter; click it (or press c on the line) and type a note. Notes support markdown; Cmd-Enter saves, Esc cancels.
Notes are pinned to their line and follow it if the diff shifts.
Send to agent builds ONE prompt from all notes, each anchored to its line, then opens a "Send notes to" menu listing the worktree's agents. You can also start a new agent from that menu. A keyboard shortcut for sending exists but is unbound by default.
After the agent revises, the notes stay put so you can check each fix. Resolve collapses a thread, and unresolved notes go out again with the next Send.
Orca's reason for batching: "Sending comments one at a time causes the agent to swing back and forth."
Where it fits in Workroom
The diff surfaces already exist: macapp/WorkroomApp/Views/DiffViewer.swift and macapp/WorkroomApp/Views/ChangesPanel.swift. A grep of macapp/ for line or review comments finds nothing, so this would be new.
The diff-line-comments-swallow-taps pitfall applies: .textSelection(.enabled) diff text eats real mouse-downs, so the gutter + needs a hit target outside the selectable text.
Activity
joelmoss commentedon Oct 7, 2026
Prior art: Orca ships this as "Annotate AI Diff" (stablyai/orca,
docs/site/content/docs/review/annotate-ai-diff.mdx).How Orca does it
con the line) and type a note. Notes support markdown;Cmd-Entersaves,Esccancels.Where it fits in Workroom
macapp/WorkroomApp/Views/DiffViewer.swiftandmacapp/WorkroomApp/Views/ChangesPanel.swift. A grep ofmacapp/for line or review comments finds nothing, so this would be new.agent promptin CLI: let agents and scripts drive other agents (agent list/prompt/wait/read, terminal read, event stream) #360, ideally refusing while the agent is busy (Agent lifecycle via first-party hooks (Claude Code plugin, Codex notify) instead of inferring from OSC 9;4 #361 gives reliable state). Until then, a paste with Return viaghostty_surface_keyworks (ghostty_surface_textalone does not submit)..textSelection(.enabled)diff text eats real mouse-downs, so the gutter + needs a hit target outside the selectable text.🤖 Left by Claude Code