Skip to content

Needs you: a waiting chat's row shows its question, not its last reply - #23847

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
session-panel-needsyou-question
Oct 22, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
session-panel-needsyou-question

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The Needs you popover drew a chat that waits on the person, but whose ask the page cannot read (a chat on another computer, such as a huge-blue session), as "Waiting 5m" over the chat's last reply. acpmux already names what such a chat waits on in its session summary (waitingOn, and waitingPrompt: the waiting question's first prompt, hub/subsession_send.rs waiting_on), and the pane already parses it (sessionList.ts sessionWaiting). This makes that row show the question itself, labelled as a decision (or an approval for a pending permission). Only a chat that names no question text falls back to the last reply.

Changelog

Fixed: the Needs you list shows the question a waiting chat asks instead of the chat's last reply.

Testing

Focused command (run on huge-blue): cd webviews && bun test test/agent-pane-needs-you.test.tsx

  • Base (test commit b97818a): fails, a waiting chat's row shows the question it waits on, not its last reply (the row is input with the last reply as its text).
  • Head (1f2c819): passes; with test/agent-pane-needs-you-asks.test.ts, 37 pass, 0 fail.

Capture

Webview-only change. Gallery before/after of agent-pane.needs-you (list): https://cmux-lawrences-mac-mini.tail137216.ts.net:18796/compare/session-panel-needsyou-question/?entry=agent-pane.needs-you . The "Release notes on build box" row reads "Waiting 31m / Drafted the notes from the merged pull requests." before and "Decision 31m / Which tag should the notes start from?" after.
No capture: webview-only (needsYou model and gallery fixture); no native UI changed.

Observed / Not run

  • Observed (huge-blue): the focused test red on the test commit and green on the head; scripts/web-lint.sh and python3 scripts/cmux-next/prepush-gate.py clean; gallery screenshots (headless Chromium, built at the base and the head) show the change above.
  • Not run: the real app. A permission wait has no text in acpmux's summary, so its row keeps the last reply as the fallback (now labelled Approval).

Agent session: cosmic-gray

…s last reply (red)

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

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 1f2c819: 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=pr23847 -f ref=session-panel-needsyou-question -f platform=macos -f backend_mode=local

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

gh run download 39697292577 -R manaflow-ai/cmux -n gallery-advisory-23847-1f2c8195da5cf7b85e2c1713194137946b285a40 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.needs-you/list Apple System Colors Light changed 0% own NeedsYou.gallery.ts
agent-pane.needs-you/list Apple System Colors changed 0% own NeedsYou.gallery.ts
agent-pane.needs-you/badge-and-pill Apple System Colors Light unchanged 0% own NeedsYou.gallery.ts
agent-pane.needs-you/badge-and-pill Apple System Colors unchanged 0% own NeedsYou.gallery.ts
agent-pane.needs-you/pill-one-ask Apple System Colors Light unchanged 0% own NeedsYou.gallery.ts
agent-pane.needs-you/pill-one-ask Apple System Colors unchanged 0% own NeedsYou.gallery.ts
agent-pane.needs-you/ask-about-this Apple System Colors Light changed 0% own NeedsYou.gallery.ts
agent-pane.needs-you/ask-about-this Apple System Colors changed 0% own NeedsYou.gallery.ts
agent-pane.needs-you/compact Apple System Colors changed 0.161% own NeedsYou.gallery.ts
agent-pane.needs-you/compact Apple System Colors Light changed 0.161% own NeedsYou.gallery.ts
agent-pane.needs-you/empty Apple System Colors Light changed 0% own NeedsYou.gallery.ts
agent-pane.needs-you/empty Apple System Colors changed 0% own NeedsYou.gallery.ts
agent-pane.needs-you/before Apple System Colors Light unchanged 0% own NeedsYou.gallery.ts
agent-pane.needs-you/before Apple System Colors unchanged 0% own NeedsYou.gallery.ts
agent-pane.agent-pair-note/paused Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/paused Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/held-list Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/held-list Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/repeating Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/repeating Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/cap Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/cap Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/release-failed Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/release-failed Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/resumed Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.agent-pair-note/resumed Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.background-task-note/on-call Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.background-task-note/on-call Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.background-task-note/lone Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.background-task-note/lone Apple System Colors unchanged 0% imports model.ts (2 hops)
agent-pane.background-task-note/ended Apple System Colors Light unchanged 0% imports model.ts (2 hops)
agent-pane.background-task-note/ended Apple System Colors unchanged 0% imports model.ts (2 hops)

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

Passes: CI passes on 1f2c8195da.

CI passes on 1f2c8195da (run 39697292692 attempt 1).

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.

web and size checks: green

Tour of 1f2c8195da (run): no media. The tour did not run: only webview code changed (3 path(s)), which the gallery advisory run checks in Linux Chromium on the pull request (its artifact holds any captures); add the media-tour-mac label to tour it on a Mac.

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

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
nightly cmux-tui resolve/nightly cmux-tui resolve View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
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

Owned by session-panel on cosmic-gray · session

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

Copy link
Copy Markdown
Collaborator Author

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

…last reply

A chat whose ask the page cannot read (another computer's) was one
"Waiting" row over its last reply. Its acpmux summary names what it waits
on (waitingOn, waitingPrompt): the row now says that question, as a
decision (or an approval for a pending permission); only a chat naming no
question text falls back to its last reply.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Oct 22, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent): SHIP at 1f2c819

Correctness checked; nothing blocking.

  • Kind mapping and fallback (model.ts): no waitingOn → input; permission → approval; question → verify or decision by the existing VERIFY regex; ask = question prompt, else the preview, else "". Matches the PR description.
  • Consumers of a chat: item that is no longer input: answerParams returns undefined without permissionId. answers is [], so no answer buttons are drawn and no answer path runs. goTo falls back to .acpmux-permission as before. The CSS data-kind accent for approval/decision/verify is cosmetic. JumpPill doesn't read kind. The side-question prompt only interpolates the kind label. None of these misbehave.
  • Data availability: Hub::session_summary (hub/views.rs:265) sets waitingOn/waitingPrompt from subsession_send::waiting_on on every session summary, not only sub-session rows. Peer summaries pass them through, with waitingPrompt masked (server/peer_text.rs:73). sessionEntry maps them via sessionWaiting. So both local and peer chats carry them.
  • Test: committed red first and covers all four branches plus the rendered row. The focused tests pass at head (37 pass, 0 fail).
  • Gallery fixture: now shows the reply/question split the fix is about. Fine.

Nits (non-blocking):

  • A permission wait has no prompt, so its row shows the chat's last reply under an "Approval" label. The test pins that behavior. That is the same reply-as-ask confusion this PR fixes for questions. Consider an empty ask there, so askText shows "Waiting", or the session's doing line.
  • A question with no waitingPrompt runs VERIFY on the last reply, so a reply that starts "Check…" would label the row Verify.
  • The sessionList.ts doc comment on waitingOn still says acpmux names it on a sub-session's family rows. It is on every session summary.

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

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