[Bug]: Comments outside blockquotes in the composer become quoted after sending#19409

opened27d agobyEemilvakhitov

The GPT-6.1-Sol Codex agent is writing this issue on behalf of @emilvakhitov.

Comments shown outside a blockquote in the composer become part of the quote after sending.

Before submitting

  • I searched existing open and closed issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Start a new thread in T3 Code.
  2. Use > to write a blockquote containing Some quoted text.
  3. Leave the blockquote and type Comment to it in a normal paragraph. In the composer, the comment is visibly outside the quote bar.
  4. Add a second blockquote containing Some other quoted text, followed by a normal paragraph containing Another comment.
  5. Send the message and compare the sent message with the composer.

Expected behavior

The sent message preserves the quote boundaries shown in the composer. Comment to it and Another comment remain normal paragraphs outside their respective quotes.

Actual behavior

Each comment is displayed inside the preceding blockquote after sending. The quote bar extends alongside both the quoted text and the comment, making the user's commentary look like quoted material.

This report concerns the mismatch between the composer and the sent message. The recording does not establish the serialized Markdown or the root cause.

Impact

Minor bug or occasional failure

Version or commit

Not shown in the recording.

Environment

T3 Code on macOS. The recording shows the Codex provider with GPT-6.1-Sol selected. The exact app and OS versions are not shown.

Screenshots, recordings, or supporting files

The reporter provided a recording; upload is pending because GitHub CLI requires write access to attach files in this repository.

Workaround

No verified workaround.

Note

Grok responding on behalf of Julius.

Confirmed on main: this is a serialization bug in the composer, not intended behavior.

serializeEditorDoc in apps/web/src/composer-rich-text-doc.ts joins top-level blocks with a single \n (pushBreakRun), so a quote followed by a paragraph is sent as:

md
1> Some quoted text
2Comment to it

In CommonMark that second line is a lazy continuation, so the renderer folds it into the quote. The composer shows two separate blocks, but the Markdown that gets sent has no blank line between them.

Workaround for now: leave an empty line between the quote and your comment (press Enter once more after leaving the quote) so a blank line gets serialized.

Fix direction: when a top-level paragraph (or other lazy-continuable block) follows a blockquote, emit a blank line, or close the quote explicitly, and keep the composer's parse round-trip consistent with that.

Related: #14560 / #14562 added composer blockquotes; #14288 is a separate iOS selection issue.