Skip to content

cmux NEXT composer: append Quote in Reply at the bottom - #26654

Closed
teamleaderleo wants to merge 2 commits into
feat-cmux-nextfrom
lane/nx-composer-quote-bottom
Closed

teamleaderleo wants to merge 2 commits into
feat-cmux-nextfrom
lane/nx-composer-quote-bottom

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Leo: "I feel like putting it at the very lowest bit makes sense ... quote in reply ... a little bit useful"

The agent composer now accepts the shared hc-quote selection event and appends the selected text at the bottom of the existing draft. Each quote is separated by a blank line, successive quotes keep their order, and the editor focuses after the trailing blank line. Milkdown continues to render a quiet muted blockquote bar while serializing the prompt as Markdown (> ...).

  • Added the shared composer quote append helper and event listener for composer, document, and window dispatch targets.
  • Added bottom and stacked composer gallery fixtures while retaining Backspace unwrap coverage from composer: unwrap quote blocks with Backspace #25681.
  • Kept the native context-menu event boundary owned by the agent-chat surface; no Swift or transcript files changed.

Validation

  • Red regression: a063ab5e12f (bun test test/composer-quote-backspace.test.tsx failed before the helper existed: module not found).
  • Green repair: abf0afa9d17 (bun test test/composer-quote-backspace.test.tsx: 5 passed).
  • bun run typecheck passed (2,896 files).
  • Changed-file bunx vp fmt --check and bunx vp lint passed.
  • python3 scripts/cmux-next/prepush-gate.py --base origin/feat-cmux-next --head HEAD passed.
  • Browser gallery sweep on GCP passed: 40 tests, 157 expectations.
  • No native build or local macOS verification; the exact quote visual is represented by the composer gallery bottom and stacked fixtures for the managed capture lane.

Changelog

  • Changed: Quote in Reply appends muted Markdown quotes at the bottom of the agent composer draft.

Agent session: agent session


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Adds Quote in Reply support to the agent composer via the shared hc-quote event, appending quoted text to the bottom of the draft, separated by blank lines and preserving order.

Written for commit abf0afa. Summary will update on new commits.

View guided diff Turn on auto-fix

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review abf0afa: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr26654 -f ref=lane/nx-composer-quote-bottom -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check failed: no known signature; failed step: Check webview test shards.

CI failed on abf0afa9d1 (run 40633316122 attempt 1): 3 code, 1 unknown.

Job Verdict Why
web / react-apps-base-check (1) code a web test failed
web / react-apps-base-check (4) code a web test failed
web / react-apps-base-check (2) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs agent-pane-dock-gutters.test.ts chromium > the gutter beside every part of the stack scrolls the transcript, and the part keeps the ...: failed (job)
  • seen on other PRs agent-pane-dock-gutters.test.ts webkit > the gutter beside every part of the stack scrolls the transcript, and the part keeps the po...: failed (job)
  • seen on other PRs changes-stage-hunk-keys.test.ts n then s stages the hunk n stopped at: failed (job)
  • seen on other PRs clickable-cursor.test.ts no stylesheet sets the arrow or auto on a clickable element: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab composer: hover gives the hovered button alone the soft pill; the box stays put: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab stage composer: hover gives the hovered button alone the soft pill; the box stays ...: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: chat composer: keyboard focus gives a button the soft pill and the bar's outline: failed (job)
  • seen on other PRs composer-caret-focus.test.ts chromium: New Tab composer: keyboard focus gives a button the soft pill and the bar's outline: failed (job)
  • seen on other PRs layout.test.ts only page.css imports the page's sheets: failed (job)
  • seen on other PRs agent-pane-queue-scroll-bottom.test.ts chromium > a prompt the fold hides, run elsewhere, leaves no room as the stack shrinks, opens and cl...: failed (job)
  • ... 14 more in the job logs
Matched log lines
web / react-apps-base-check (1): (fail) chromium > the gutter beside every part of the stack scrolls the transcript, and the part keeps the pointer [8733.41ms]
web / react-apps-base-check (4): (fail) only page.css imports the page's sheets [43.81ms]
web / react-apps-base-check (2): (fail) the summary card lists the chat's background tasks: running ones first, the finished folded [986.11ms]

Not re-run automatically: web / react-apps-base-check (1), web / react-apps-base-check (4), web / react-apps-base-check (2), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: web / Web status; base red: the same failure on the base fedea9e; does not block
red: web / react-apps-base-check (1); no finished base run on fedea9e to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (2); no finished base run on fedea9e to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (4); no finished base run on fedea9e to compare; do not merge until green; see lane-rules
red: web / react-apps-check; base red: the same failure on the base fedea9e; does not block

Gallery before/after for abf0afa: 16 states rendered, 4 images differ, 876 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40633315952 -R manaflow-ai/cmux -n gallery-advisory-26654-abf0afa9d17a660f727eda733ae0131e00a456f6 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.composer/new-chat Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/new-chat Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/side-session Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/side-session Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-suggest-open Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-suggest-open Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-suggest-failing Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-suggest-failing Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-suggest-draft Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-suggest-draft Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-reasoning Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/new-chat-reasoning Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/agent-home Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/agent-home Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/agent-home-path Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/agent-home-path Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-quote/bottom Apple System Colors Light new 0% own Composer.tsx
agent-pane.composer-quote/bottom Apple System Colors new 0% own Composer.tsx
agent-pane.composer-quote/stacked Apple System Colors Light new 0% own Composer.tsx
agent-pane.composer-quote/stacked Apple System Colors new 0% own Composer.tsx
agent-pane.composer-quote/text Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer-quote/text Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-quote/empty Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer-quote/empty Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-quote/after-paragraph Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer-quote/after-paragraph Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-row/claude-auto Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer-row/claude-auto Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-row/long-model Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer-row/long-model Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-row/leo-report Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer-row/leo-report Apple System Colors unchanged 0% own Composer.tsx

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 28, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 120 test failures on Blacksmith runners:

Failures

Test View Logs
build_only must be a conjunctive exclusion on the helper, signing, and publication jobs
, and must not gate the unsigned app build/
build_only must be a conjunctive exclusion on the helper, signing, and publication jobs
, and must not gate the unsigned app build
View Logs
nightly.yml must derive the embedded key and sign every appcast through the helper/
nightly.yml must derive the embedded key and sign every appcast through the helper
View Logs
src/pages/settings/layout.test.ts/layout.test View Logs
src/pages/settings/layout.test.ts/layout.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-background-tasks.test.ts/agent-pane-background-tasks.test View Logs
test/agent-pane-chat-unavailable.test.ts/agent-pane-chat-unavailable.test View Logs
test/agent-pane-chat-unavailable.test.ts/agent-pane-chat-unavailable.test View Logs
test/agent-pane-dock-gutters.test.ts/agent-pane-dock-gutters.test View Logs
test/agent-pane-dock-gutters.test.ts/agent-pane-dock-gutters.test View Logs

...and 110 more test failures. View all on Blacksmith: run 40633316122, run 40633316145

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-5qv01a created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at abf0afa

No blocking findings.

Non-blocking: The added tests cover Markdown generation and rendering, but never dispatch hc-quote through Composer; event deduplication and final caret placement remain untested.

Review was limited to supplied files; repository-tool access to unchanged dependencies was denied.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Superseded by #26655 (composer insertion, head 89df1bcbca1276ecc07489f6e62bdc434a7c065c) and #26660 (native/transcript route, head 2bee6c10daa99102b321d5cbd29ec8b0ef1678ae). The active owner confirmed that the canonical route is chat.quoteReply({markdown}) → ComposerHandle.quoteReply(markdown).

The surviving composer PR covers the behavior here: preserve the existing draft, append at the bottom even with a focused selection, keep successive quotes ordered, leave an empty reply paragraph/caret after the quote, hide raw quote markers, and send Markdown. It also preserves definition-like selected text and retains the existing Backspace behavior.

Closing this duplicate does not mark the request fixed. The owner of #26655/#26660 owns integration, fresh exact-head independent review, inspected light/dark interaction captures, and landing of the surviving changes.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — abf0afa9 Deployed Oct 28, 2026 by teamleaderleo via cmux-tui tree preflight #69475
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant