Skip to content

feat(next): render sent user Markdown and compose message menus - #26660

Open
teamleaderleo wants to merge 19 commits into
feat-cmux-nextfrom
codex/nx-quote-transcript-menu-1028
Open

teamleaderleo wants to merge 19 commits into
feat-cmux-nextfrom
codex/nx-quote-transcript-menu-1028

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Status: final independent review, native compile reconciliation and current before/after media publication are owned by the coordinating lane.

Sent user bubbles render blockquotes, lists, inline/fenced code and links through the existing transcript Markdown renderer. Plain prompts retain the literal-text path; Copy and Edit retain the original Markdown source. Bubble spacing, colours and glass stay the same.

Leo: “where is the rendering for this :(” — his own sent quote showed literal > lines in NEXT nightly 1.0.0-nightly.4080221127101 (a63986a4). This completes the existing request, “rendering actual quotes when I'm sending the response myself”.

The survivor also retains its native transcript menu changes: Copy message, Copy message as Markdown, Quote in Reply, Attach selection as context, Pin as chapter and Fork from here, with Search the Web and Ask About This last. Pin state uses the rail's existing action, and stale session callbacks cannot affect a replacement session. Leo: “I feel like putting it at the very lowest bit makes sense”.

Canonical route stays chat.quoteReply({markdown}) → ComposerHandle.quoteReply(markdown), supplied by #26655. Composer insertion is outside this recovery. Claude desktop's transcript menu and transcript-markdown-rendering capture are the named private design references; private captures are never published.

Validation

Frozen head: 8e0c5dda55f4d5d0821cf21a4b520c2397145d00; tree: ce59bcabc9eff282605b87b878ff2ada026c639f. Rebased onto 9b7d6d9f93c44c90f690ae141a1a02b84777e155. This retained survivor is 14 files, including its 21-locale native menu table; the Markdown recovery adds only the renderer gate and focused fixtures/tests.

  • Red: fleet run 40810128908 failed both light/dark standalone-list assertions before the gate repair (expected two items, received zero).
  • Same-tree verification: fleet run 40810571609 passed the complete web check and all 27 targeted tests / 113 assertions: browser light/dark rendering, raw-source Copy/Edit, collapse, glass, message controls and transcript selection. Snapshot 04a561b1da813132c4e82d296dc417dd3bb4c788 has exactly the frozen head's tree.
  • That run's overall conclusion is FAILURE: the final static gate judged its parentless CI snapshot as a new commit and incorrectly attributed existing sidebar files to it. The same gate against the real branch history passed locally in 3.4 seconds. The corrected hosted static gate run 40811217126 is SUCCESS: it fetches the immutable base and frozen head and reports no new violations in 2.0 seconds. Its snapshot has the same frozen tree.
  • Four actual 900×1000 light/dark before/after browser PNGs were decoded from that run's log, hash checked and inspected. They use synthetic prompts only. Before uses the pinned 85b76c63b5c9b95ddd1c6bc5c671d5172c2df911 PromptText source in the same fixture; after uses the exact frozen tree. Publication is pending, and these browser captures do not claim a native-menu runtime check.
  • Previous reviews and native receipts were for older heads. Fresh whole-diff independent review and current native compile/runtime reconciliation remain pending under HOLD.

Performance

No perf numbers: this changes Markdown rendering correctness, with functional assertions and preserved bubble styles; it makes no measured performance claim.

Prior composer interaction evidence

These existing captures exercise the registered action on combined source at b95c200fae699529cb2bfda166daa1f07d38af93; they are not evidence for the frozen head's sent-bubble renderer or native menu. Fleet run 40664890704 passed eight light/dark composer interactions, full web check, localization scanners and web lint on that earlier source.

Existing draft Quote appended, typed reply outside it
Dark draft Dark appended quote
Light draft Light appended quote

Changelog

Changed: sent user messages render Markdown; the transcript context menu exposes explicit copy, quote, context, pin and fork actions.

Agent session: agent session

@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 b00c6c8: 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=pr26660 -f ref=codex/nx-quote-transcript-menu-1028 -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check (1) failed: no known signature; failed step: Fail on the gate checks.

CI failed on 9a16d26540 (run 41837198059 attempt 1): 2 unknown.

Job Verdict Why
web / react-apps-check (1) unknown no known signature; failed step: Fail on the gate checks
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Not re-run automatically: web / react-apps-check (1), 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: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: Web bundle key inputs (+1 more) is not red on the base a727959; do not merge until green; see lane-rules
red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules
red: web / react-apps-check; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules
red: web / react-apps-check (1); no finished base run on a727959 to compare; do not merge until green; see lane-rules

Gallery before/after for b00c6c8: 16 states rendered, 0 images differ, 3403 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41706521526 -R manaflow-ai/cmux -n gallery-advisory-26660-b00c6c85be12bb350fd4788fa1b1c23e6e8056e2 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/standard Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/short-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/short-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/before Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/before Apple System Colors unchanged 0% own App.tsx
agent-pane.copy-controls/output Apple System Colors Light unchanged 0% own App.tsx
agent-pane.copy-controls/output Apple System Colors unchanged 0% own App.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
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@blacksmith-sh

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 10 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp614uqd0i/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmp83up03el/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
imported web bundle inputs are not routed:/imported web bundle inputs are not routed: View Logs
nightly cmux-tui resolve/nightly cmux-tui resolve View Logs
nightly.yml must not read vars.NIGHTLY_SIGN while nightly-sign.yml is in shadow mode/
nightly.yml must not read vars.NIGHTLY_SIGN while nightly-sign.yml is in shadow mode
View Logs
the short nightly decide gate must use the pooled Linux route with a Blacksmith fallbac
k/
the short nightly decide gate must use the pooled Linux route with a Blacksmith fallbac
k
View Logs

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

@teamleaderleo
teamleaderleo force-pushed the codex/nx-quote-transcript-menu-1028 branch from 4ed7390 to 2bee6c1 Compare October 28, 2026 06:20
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 1dbae59
Visual verdict: native context-menu rows change (Copy message / Copy message as Markdown, Attach selection as context, Pin as chapter, selection rows merged into the message menu); no images attached, code verdict only.

Checked the Swift menu rebuild, the new Actions members (memberwise order matches the test's .init labels), AgentPaneMessageTarget report parsing, and the page side (chat.attachSelection, chat.pinChapter with the stale-session guard, messageMenuTarget summary row). The earlier tuple-== compile blocker is fixed: the test now compares [String] and [[String: String]]. Menu actions run synchronously, so the new test needs no run-loop drain; copyAsPlainText stays as an alias, so AgentPaneMoreMenuTests still finds its row.

Follow-ups:

  • [follow-up] messageMenu.ts turnRows(...).find(turnSummary): after an interrupted turn continues, Pin as chapter targets the hidden earlier continued summary (the earlier Astra P2, still present at this head).
  • [follow-up] On a prompt, "Copy message" and "Copy message as Markdown" copy the same text; consider showing one row.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, sweep, via the review router; full diff from merge base 1382711 to this head): SHIP at 54fb99c

[P2] [follow-up] webviews/src/agent-session/acpmux/conversation/messageMenu.ts:155 - After “Send now” interrupts and continues a turn, the first summary can have continued: true. The transcript hides that summary, but “Pin as chapter” bookmarks its sequence instead of the visible completed reply’s summary, leaving that reply unmarked. Fix by selecting the completed summary used by the rendered footer, excluding continued summaries.

@cursor

cursor Bot commented Nov 3, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 14:20 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 14:20 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 14:21 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 46a9cf9

The independent SHIP at 54fb99c carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (e5933dd013b08742) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base b7aa4ec to this head): SHIP at 46a9cf9

[P2] [follow-up] webviews/src/agent-session/acpmux/conversation/messageMenu.ts:155 - After a “Send now” continuation, turnRows() includes the earlier continued summary. Selecting the first summary makes “Pin as chapter” bookmark that hidden row instead of the final reply’s visible footer, leaving its Pin indicator unset. Resolve the reply’s displayed summary, excluding superseded continuation summaries.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 16:21 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 16:21 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 16:22 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, sweep, via the review router; full diff from merge base afde3d7 to this head): SHIP at 128b6ac

[P2] [follow-up] webviews/src/agent-session/acpmux/conversation/messageMenu.ts:164 - After a prompt interrupts and continues a turn, turnRows() includes both summaries, and completedTurnSeq selects the earlier, hidden summary. “Pin as chapter” therefore bookmarks the wrong row instead of the visible final answer. Resolve the pin target from the displayed answer’s summary, excluding superseded continued summaries.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 18:31 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 18:32 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 19:47 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 19:47 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 3, 2026 19:48 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base aec2026 to this head): SHIP at b00c6c8

No P1/P2 findings.

Keeps base's reply-time menu header (not on selection menus) and the
chat part's Open on Right / Go to Chat beside this branch's row and
session ids, Pin as chapter and selection actions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-627034dbf10a04318c5c

This branch was previously deployed

3 inactive (2 outdated) deployments
ci-routing-agent — 9a16d265 Deployed Nov 4, 2026 by teamleaderleo via wait for same-key tree publisher #111805
artifacts — 54fb99ce Deployed Nov 3, 2026 by cmux-bot[bot] via publish tree-addressed cmux-tui #104209
sentry-dsyms — 54fb99ce Deployed Nov 3, 2026 by cmux-bot[bot] via upload cmux-tui dSYMs to Sentry #104209
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