Replies: 4 comments
|
I really like this direction. I would use this a lot. The workflow I’m missing is similar to the annotation experience in the Codex desktop app for generated previews, but applied to the agent conversation itself. When an agent sends a long plan or analysis and only one paragraph is wrong, I want to select that part, attach a note, keep reviewing, and then send all my feedback in a single turn. Today I have to copy and paste each section into the composer and rebuild the context manually. Sending comments one by one also isn’t ideal because the agent can start acting before I’m done reviewing. For me, a simple first version would already be very useful:
I don’t think the first version needs persistent comments, collaboration, or a complex annotation system. An ephemeral draft scoped to the current workspace would be enough. Desktop/web first would be totally fine, and mobile could come later. This seems closely related to #1301. Would this fit the direction you’re thinking about for Paseo? |
|
+1. I’d use this a lot. When reviewing a long agent response, I want to select a sentence or paragraph, add a note, keep reviewing, and send all feedback in one turn. |
|
+1. Same use case as the comments above: I usually have three or four separate Quote on its own would already be worth it. |
|
+1 for me, in particular with the plan output. (I'm not sure if that's exactly part of this or not.) Being able to comment on the plan and then send it back in one turn is a huge productivity boost in Claude Desktop. Would love to see it here. |
Uh oh!
There was an error while loading. Please reload this page.
What I'm trying to do
The agent finishes a change touching six files. I read the diff and the new code
and I have five reactions: this error is swallowed, this helper duplicates one
two directories over, this name is wrong, this test asserts the mock, this part
is fine. I want to collect all five and send them as one turn, the way I would
leave review comments on a PR and then hit Submit review.
The same thing happens one level up, in the conversation itself. The agent
explains a plan in four paragraphs and one of them is wrong. I want to answer
that paragraph.
How I do it today
For code: copy the snippet, paste into the composer, type the file path and line
range from memory, write the note. Repeat five times, or give up and write one
vague message — "there are a few issues in the error handling" — and let the
agent go find them. It usually finds a different set.
For the conversation: select the paragraph, copy, paste, manually add
>toeach line so the agent can tell my words from its own, then write the response.
Both are worse on mobile, where the selection handles fight the scroll and there
is no second window to hold the path while I type.
Where Paseo gets in the way
Everything needed is already on screen. The file pane knows the path. The diff
knows the line. The message knows its own text. But the selection is inert — it
can only become clipboard text, and then I rebuild by hand the context Paseo
already had.
The second gap is that there is nowhere to accumulate. Even with perfect
one-selection-to-message, five notes are five turns, and the agent starts acting
on note one while I am still writing note three. Review is a batch operation and
the UI has no batch.
What the flow would look like
In the conversation: select text in any message, Quote — it lands in the
composer as a Markdown blockquote at my cursor, focus returns, nothing is sent.
I type my response under it.
In files and diffs: select lines, leave a comment. It goes into a per-workspace
list rather than the chat. When I am done reading, open Review comments, see
all of them with their files and line numbers, and copy the whole set into one
message. File view, source view, and the diff all feed the same list — I do not
care which surface I was looking at when I noticed something.
What we built
Both halves, roughly as described.
valid Markdown blockquote from the original Markdown source, not the rendered
text, so tables and code blocks survive. It replaces the composer's current
selection, restores focus, and does not send.
Code and source anchor to exact line numbers. Markdown preview records only the
selected text: without an AST-level source map any line number would be a
guess, and a wrong line number in a review comment is worse than none.
for the workspace, scoped by
workspaceId, with copy-all, per-item delete, anda confirmed delete-all.
menu stays, and we do not render an entry that would not work.
Code:
packages/app/src/review/,packages/app/src/assistant-selection-copy/Known limits, and where we would want your opinion
leave on the desktop are not on my phone. For a session-length review that has
not bitten us, but it is the wrong boundary if this ever becomes a shared
review surface. Host-side storage is the obvious fix and we did not want to add
a protocol for it inside a fork.
one step shorter but bakes in a message format, and the right format is a
product decision.
They describe overlapping surfaces from different directions, so there is
clearly demand here beyond us — but they also suggest the design space is
wider than what we built.
Context for all four of our fork workflows: #2914
All reactions