Skip to content

Agent chat and ± viewer fixes from dogfood run 2 (cx-p5fgx, cx-4ukqc, cx-ku7r1) - #19746

Merged
teamleaderleo merged 7 commits into
feat-cmux-nextfrom
op-next-dogfood-batch4
Oct 12, 2026
Merged

teamleaderleo merged 7 commits into
feat-cmux-nextfrom
op-next-dogfood-batch4

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Three fixes from dogfood run 2 (hq #1893): the Edited card, and the diff viewer that the chat header's ± opens.

cx-p5fgx: an edit waiting on a permission question never reads as Edited.
Claude asks one question at a time. In run 2, a second edit (upload_test.sh) arrived with its diff while the first edit's question was still open. It read as "Edited upload_test.sh +1 -1" with nothing on disk. #19708 held only the edit named in the question.

cx-4ukqc: the ± viewer stages and refreshes in Branch.
From a chat, the ± opens the viewer on Branch. #19724 offered Stage and the refresh check only in Unstaged, Staged and Uncommitted, so on that path neither worked.

  • Branch now takes the host's branch fingerprint.
  • It offers Stage on files with work-tree changes, using the Unstaged file list read once per load. A file that only differs by commits gets no Stage.

cx-ku7r1: the scope chip stays whole beside a chat.
At about 400 px, Commit and Push in the toolbar pill left the scope chip 32 px, so "Branch" read "Br". Below 600 px, Commit and Push now move to a row under the toolbar.

cx-acd1d, also filed from run 2, was my misreading of the accessibility dump; it's closed without a change. The header icons are labeled, and the unlabeled buttons were the window's traffic lights.

Verification

Test Red Green
test/agent-pane-edit-awaiting-permission.test.ts (Chromium) 3 fail: a pending edit's "Edited" fold, and "Edited 2 files" including the unasked test edit 4 pass
test/diff-viewer-git.test.tsx, test/diff-viewer-freshness.test.tsx 3 fail: no Branch Stage, no Branch fingerprint reader 6 pass
test/diff-toolbar-narrow.test.ts (Chromium, new harness) at 400 px the chip showed 32 of 121 px 2 pass (at 400 and 560 px)

Each red is from a clean export of its test commit. bun run check, ui-rules, diff-split-narrow pass. No new strings; web only.

Changelog

  • Fixed: an agent chat no longer shows an edit as Edited while it still waits for permission, and the diff viewer opened from a chat stages, refreshes after edits and keeps its scope label in a narrow pane.

🤖 Generated with Claude Code


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


Summary by cubic

Fixes three issues from dogfood run 2 in the agent chat and the diff viewer that the chat header's ± opens.

  • An edit that arrives while a permission question is open now stays pending until it completes or fails, so it no longer reads as "Edited" before anything is written to disk.
  • Branch view now refreshes after edits via the host's branch fingerprint, and offers Stage on files with work-tree changes; committed-only files get no Stage.
  • Below 600 px, Commit and Push move to a row under the toolbar so the scope chip keeps its full label beside a chat.

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

View guided diff Turn on auto-fix

teamleaderleo and others added 7 commits October 11, 2026 23:18
…ed (cx-p5fgx)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cx-p5fgx)

Claude asks one question at a time, so a second edit arrives, diff
included, while the first one's question is open. Edits that arrive while
a question is open are held as pending until they complete or fail, and a
pending edit draws as its call, not as an Edited fold (which also read
'Edited 0 files' for a lone pending edit).

Red: 3 fail (Edited fold for a pending edit; 'Edited 2 files' with the
unasked test edit). Green: bun test test/agent-pane-edit-awaiting-permission.test.ts, 4 pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…kqc)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The chat header's ± opens the viewer on Branch, where #19724 offered no
Stage and took no fingerprint. Branch now reads the host's branch scope
for the freshness check, and offers Stage on files with work-tree changes
(the Unstaged file list, read once per load).

Red: 3 fail (useDiffStageAction missing; no Branch fingerprint reader).
Green: bun test test/diff-viewer-git.test.tsx test/diff-viewer-freshness.test.tsx, 6 pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…7r1)

Beside a chat (about 400 px) Commit and Push in the toolbar's pill left the
scope chip 32 px, so Branch read 'Br'. Below 600 px they move to a row
under the toolbar. (Formatting of the new test is folded in.)

Red: at 400 px the chip showed 32 of 121 px. Green: bun test
test/diff-toolbar-narrow.test.ts (Chromium), 2 pass.

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

coderabbitai Bot commented Oct 12, 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
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: e7beb3c4-cf91-4cee-bce4-e1afe0af0899

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

Comment @coderabbitai help to get the list of available commands.

@blacksmith-sh

blacksmith-sh Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test/chat-find.test.ts/chat-find.test View Logs
test/chat-menu-instructions.test.tsx/chat-menu-instructions.test.tsx View Logs

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

@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Unclear: web / react-apps-check failed: no known signature; failed step: Test webviews.

CI failed on a64fd98f23 (run 38213391394 attempt 2): 1 unknown.

Job Verdict Why
web / react-apps-check unknown no known signature; failed step: Test webviews

Not re-run automatically: web / react-apps-check is not a machine failure.

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.

@github-actions

Copy link
Copy Markdown
Contributor

CI fast guards failed on a64fd98f23 (https://github.com/manaflow-ai/cmux/actions/runs/38213391394). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally. This comment is updated in place on each push.

@github-actions

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

150 states changed: pages.settings/appearance-group-4, pages.settings/invalid-search-template, pages.settings/appearance-group-5, pages.settings/general-group-10, agent-pane.edited-files-settings/defaults, ... · 1 new state · 39 broken states · 79 play checks failed

Diff page and renders (the run's gallery-pr artifact)

State Before · after
pages.settings/appearance-group-4 (Apple System Colors, chromium)
pages.settings/invalid-search-template (Apple System Colors Light, webkit)
pages.settings/appearance-group-5 (Apple System Colors, chromium)
pages.settings/general-group-10 (Apple System Colors Light, webkit)
agent-pane.edited-files-settings/defaults (Apple System Colors, webkit)
pages.settings/notifications-group-4 (Apple System Colors, webkit)

144 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • pages.settings/appearance-group-4: /wt/op-next-dogfood-batch4/?entry=pages.settings#/pages.settings/appearance-group-4
  • pages.settings/invalid-search-template: /wt/op-next-dogfood-batch4/?entry=pages.settings#/pages.settings/invalid-search-template
  • pages.settings/appearance-group-5: /wt/op-next-dogfood-batch4/?entry=pages.settings#/pages.settings/appearance-group-5
  • pages.settings/general-group-10: /wt/op-next-dogfood-batch4/?entry=pages.settings#/pages.settings/general-group-10
  • agent-pane.edited-files-settings/defaults: /wt/op-next-dogfood-batch4/?entry=agent-pane.edited-files-settings#/agent-pane.edited-files-settings/defaults
  • pages.settings/notifications-group-4: /wt/op-next-dogfood-batch4/?entry=pages.settings#/pages.settings/notifications-group-4
  • 93 more on the diff page

Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):

  • agent-pane.composer-pickers/model-press-drag-release (Apple System Colors, webkit): play: no element for [role="option"][data-key="model:gpt-6-astra"]
  • agent-pane.composer-pickers/model-press-drag-release (Apple System Colors, webkit): play: no element for [role="option"][data-key="model:gpt-6-astra"]
  • agent-pane.changes-options-menu/keyboard (Apple System Colors, chromium): play: waitFor did not hold within 5000 ms
  • agent-pane.diff-panel/address-thread (Apple System Colors, chromium): step 2 click text "Branch": layout shift 0.0000 (limit 0) · play: waitFor did not hold within 5000 ms
  • agent-pane.diff-panel/empty (Apple System Colors Light, chromium): step 2 click text "Uncommitted": layout shift 0.0000 (limit 0)
  • agent-pane.diff-panel/error (Apple System Colors Light, chromium): step 2 click text "Uncommitted": layout shift 0.0093 (limit 0)
  • 399 more on the diff page

528 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

6062 unchanged · base 07c6fb4 · head a64fd98

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Merging with react-apps-check red on two suites that this PR doesn't touch:

  • chat-find "inside a closed Worked for fold": fails the same way on op-next-cursors/newtab-mic, which doesn't carry this change. It passes 5 of 5 locally on this head, including pinned to one CPU.
  • editor page: the runner's browser closed ("Target page, context or browser has been closed").

This PR's suites pass in the same run: agent-pane-edit-awaiting-permission, diff-toolbar-narrow, diff-viewer-git and diff-viewer-freshness.

@teamleaderleo
teamleaderleo merged commit dbdf09a into feat-cmux-next Oct 12, 2026
120 of 124 checks passed
@teamleaderleo
teamleaderleo deleted the op-next-dogfood-batch4 branch October 12, 2026 07:36
teamleaderleo added a commit that referenced this pull request Oct 12, 2026
#19812)

* test: webviews files that start a dev server never run at once

Red: editor-page, ui-a11y, text-field-focus and settings-scroll start
`vp dev` themselves, outside the two configs the runner serializes, so
they run in the parallel lane and race on node_modules/.vite. The
no-timeout case also lacked grep and basename in its fake PATH, so it
ran zero files.

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

* fix(ci): run every webviews file that starts a dev server one at a time

editor-page, ui-a11y, text-field-focus, diff-virtualization, desktop-feel,
menu-focus, files-panel-coverage and settings-scroll spawn `vp dev`
themselves, so the serial lane's config match missed them and they ran
in parallel, optimizing into one node_modules/.vite. On #19746's
react-apps-check, editor-page's first page never loaded in 60 s, hit the
120 s file limit, and every later case failed with "browser has been
closed". Match the `"dev",` spawn argument too.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 12, 2026
…ache

cmuxDevServer's config hook set a per-port cacheDir over vite.config.ts's,
so the seven default-config files ignored CMUX_VITE_CACHE_DIR, copied an
empty seed and started cold together (the #19746 stall). The plugin now
prefers CMUX_VITE_CACHE_DIR. new-tab-typing and diff-toolbar-narrow call
createServer and were not matched as dev server files at all. Cache
upkeep in the worker no longer aborts the lane under set -e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 12, 2026
…cache (no bead) (#19831)

* test: webviews dev server files run at once, each on its own warm Vite cache

#19812 ran every file that starts a dev server one at a time after the
rest, so they never optimize into one node_modules/.vite at once; the
web test phase went from 7m18s to 9m44s. Pin the faster contract:
several at once, never on one cache, each but one per config starting
from a warmed copy.

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

* ci: run webviews dev server files at once, each on its own warm Vite cache

The dev configs read CMUX_VITE_CACHE_DIR (dev-server/viteCacheDir.mjs).
The runner runs one file per config first, alone, to warm that config's
cache, then the rest CMUX_WEB_TEST_DEV_JOBS at once (default half the
jobs), each on its own copy: no two share node_modules/.vite and none
starts the cold first bundle beside another. A config whose warming file
fails keeps its files one at a time on cold caches.

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

* ci: run dev server webviews files two at a time

At four at a time on the 8-core runner, per-file time barely moved and
instructions-notice's frame budget and agent-pane-seen's attach timing
failed under the load.

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

* test: every dev config and createServer file uses its own Vite cache

Red: vite.config.ts resolves to node_modules/.vite-dev-deps-0 (the dev
server plugin's per-port cache) with CMUX_VITE_CACHE_DIR set, and
new-tab-typing (createServer with vite.config.ts) gets no cache of its own.

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

* fix: give vite.config.ts and createServer test files their own Vite cache

cmuxDevServer's config hook set a per-port cacheDir over vite.config.ts's,
so the seven default-config files ignored CMUX_VITE_CACHE_DIR, copied an
empty seed and started cold together (the #19746 stall). The plugin now
prefers CMUX_VITE_CACHE_DIR. new-tab-typing and diff-toolbar-narrow call
createServer and were not matched as dev server files at all. Cache
upkeep in the worker no longer aborts the lane under set -e.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant