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
{{ message }}
Repository navigation
feat(composer): lock the composer and show the prompt as Sending in the feed #1181
Pressing Enter in an agent composer leaves the prompt in the composer, still editable, until the provider accepts it. For Claude that is the JSONL acknowledgement, which can take seconds. Claude also paints no user row until the committed transcript row arrives. The only feedback is the Send button turning into … and a Sending chip, so the submit looks like it did nothing and the editable draft invites a second Enter.
Intended behavior
Enter locks the composer (read-only, dimmed) until the provider accepts or rejects the prompt. Escape and Ctrl+C still reach the agent.
The draft is cleared on Enter, and the prompt appears in the feed at once as a user row at reduced opacity with a Sending… caption.
"Sent" means the provider accepted it: Claude's JSONL acknowledgement, OpenCode's HTTP handoff, Codex's completed PTY writes.
This applies to every provider, including Claude (which has no optimistic row today).
A prompt queued behind a running turn unlocks the composer on the queue acceptance and shows as queued. For Claude, its queue strip takes over.
A failed send removes the pending row and restores the text and images into the composer.
Acceptance criteria
The composer cannot be edited while a prompt is sending, and becomes editable again after acceptance or failure.
A pending user row with Sending… appears immediately for Claude, Codex and OpenCode, and is not duplicated once the committed row lands.
A failed send puts the prompt back in the composer.
Repeating an earlier prompt verbatim (e.g. continue) still shows its pending row.
Activity
test(composer): pin unique optimistic uuids for same-millisecond submits
fix(composer): keep the draft stored while a prompt is sending
fix(sessions): flush committed rows before answering a prompt delivery
fix(feed): match a pasted Claude prompt to its pending row
docs(composer): record the review-driven revisions in the plan