Skip to content

cmux NEXT: Needs you holds no peer ask that beats its chat's summary - #23475

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
leo/needs-you-followup
Oct 21, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
leo/needs-you-followup

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Follow-up to the review of #22646 (the Needs you list).

Summary

  • Peer asks. AskTracker.pending held a peer's relayed permission_pending whenever it arrived before that chat's session summary, because it rejected only chats it already knew were remote. The list then showed the ask with Allow and Deny until the summary came. acpmux sets peer (and via: "peer") on every relayed notice (cmux-tui/crates/acpmux/src/server/pending.rs peer_permission_pending). Now pending also rejects a notice that names a peer.
  • Dead CSS. needsYou.css had rules for the SessionSidebar that cmux-next: remove the dead SessionSidebar (not shipped since #17504) #23339 deleted. This removes the .acpmux-session-preview-status.acpmux-session-mark-input selector and the .acpmux-session-mark .acpmux-needs-you-dot rule, which no longer match anything, and fixes the header comment. The .acpmux-session-mark-input tint stays, since the dev prototype's workspace row (prototype/WorkspaceShell.tsx) still uses it.
  • Not done here: the native Priority row's "needs you" chip (SidebarPriorityRowView.chipColor, Palette.attention). That color is shared with workspace rows, so changing it is a native visual change that needs a capture. It belongs in its own PR.

Testing

The regression test is committed before the fix (8ba6b00), in webviews/test/agent-pane-needs-you-asks.test.ts: "a peer's pending notice that beats its chat's summary is not held as an ask".

Command, from webviews/ on cmux16: bun test test/agent-pane-needs-you-asks.test.ts

  • Base plus the test (8ba6b00): 16 pass, 1 fail. expect(ids(asks)).toEqual([]) received ["p-far"].
  • Head (63f3b0c): 17 pass, 0 fail.

Observed / Not run

  • Observed: the red and green runs above, python3 scripts/cmux-next/prepush-gate.py (no new violations), and scripts/web-lint.sh. web-lint failed only on check:browser-lanes (test/diff-paint-perf.test.ts), check:fixed-waits and check:text-focus (FileExplorerCell.swift). All three are in files this PR does not touch and are red on base 1a88342, so I pushed with CMUX_WEB_LINT_SKIP_REASON naming them.
  • Not run: the rest of the webviews suite, and any visual check of the CSS removal. The removed selectors match no element.

Changelog

  • Fixed: the Needs you list no longer offers Allow and Deny for another computer's request that arrives before its chat is listed.

Agent session: cosmic-gray

🤖 Generated with Claude Code


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


Summary by cubic

Fixes the Needs you list so a peer's permission request that arrives before its chat's session summary is no longer held as an ask with Allow and Deny. AskTracker.pending now rejects any notice that names a peer (peer, via: "peer"), which acpmux sets on every relayed request; previously only chats already known to be remote were rejected. Also removes dead CSS in needsYou.css for the SessionSidebar deleted by #23339; the input-mark tint stays for the dev prototype's workspace row. A regression test is added and fails on the base.

Not included

  • The native Priority row's "needs you" chip color, which is shared with workspace rows and warrants its own PR.

Written for commit 63f3b0c. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits October 21, 2026 07:40
…s summary is not held

A relayed `permission_pending` names its peer (`peer`, `via: "peer"`), but the
tracker only rejects asks of chats it already knows are remote, so one that beats
the session list is held with Allow and Deny. This test fails on the base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…drop dead input-mark CSS

`AskTracker.pending` now also rejects a notice that names its peer (`peer`, set
with `via: "peer"` by acpmux `peer_permission_pending`), so a relayed request that
lands before the chat's summary no longer shows with Allow and Deny.

needsYou.css drops the rules for the deleted SessionSidebar (#23339): the preview
status selector and the dot inside a session mark. The input-mark tint stays for
the dev prototype's workspace row, which still uses it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by priority-view on cosmic-gray · session

@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 63f3b0c: 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=pr23475 -f ref=leo/needs-you-followup -f platform=macos -f backend_mode=local

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

gh run download 39619206058 -R manaflow-ai/cmux -n gallery-advisory-23475-63f3b0c3d00f64764f6f8cdfdc97f8f920441409 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.needs-you/list Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/list Apple System Colors unchanged 0% own needsYou.css
agent-pane.needs-you/badge-and-pill Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/badge-and-pill Apple System Colors unchanged 0% own needsYou.css
agent-pane.needs-you/pill-one-ask Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/pill-one-ask Apple System Colors unchanged 0% own needsYou.css
agent-pane.needs-you/ask-about-this Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/ask-about-this Apple System Colors unchanged 0% own needsYou.css
agent-pane.needs-you/compact Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/compact Apple System Colors unchanged 0% own needsYou.css
agent-pane.needs-you/empty Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/empty Apple System Colors unchanged 0% own needsYou.css
agent-pane.needs-you/before Apple System Colors Light unchanged 0% own needsYou.css
agent-pane.needs-you/before Apple System Colors unchanged 0% own needsYou.css
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.chat-width/standard Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/new-chat Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/new-chat Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/after-turn Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/after-turn Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/working Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/working Apple System Colors unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/typing-in-dock Apple System Colors Light unchanged 0% imports asks.ts (2 hops)
agent-pane.docked-chat/typing-in-dock Apple System Colors unchanged 0% imports asks.ts (2 hops)

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

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

CI failed on 63f3b0c3d0 (run 39619206843 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: web / Web status; NEW: green on the base 1d32a18; do not merge until green; see lane-rules
red: web / react-apps-check; no finished base run on 1d32a18 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (1); no finished base run on 1d32a18 to compare; do not merge until green; see lane-rules

CI fast guards failed on 63f3b0c3d0 (https://github.com/manaflow-ai/cmux/actions/runs/39619206843). 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.

Tour of 63f3b0c3d0 (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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next guards / defaults-snapshot is red on 18 of 20 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Merge receipt: head 63f3b0c (priority-view lane, session 6807b41c)

Review: PASS, by an independent review subagent that read the head from git.

  • Only peer_permission_pending sets peer. It is called from the ev.remote branch (server/mod.rs:902), and local records carry no peer, so a local ask can't be hidden.
  • The check reuses onPeer, so null, "" and a missing field all count as local, the same as session() treats them.
  • The new test drives the real AskTracker and would fail without the fix.
  • Both CSS rules it removes match nothing left in webviews/.

Red/green. bun test test/agent-pane-needs-you-asks.test.ts, run on cmux16: red at 8ba6b00, the test-only commit (16 pass, 1 fail; it got ["p-far"]), and green on this head (17 pass).

Checks. The webviews tests ran 179 files with 0 failed. The reds are all base, and none is in this PR's files:

  • web lint check:browser-lanes, check:fixed-waits and check:text-focus on the merge with base 1d32a18;
  • defaults-snapshot (inline menu rows in FileExplorerOpenWithMenu.swift and FileExplorerSectionView.swift);
  • action export areas, which was cancelled.

Risk. risk:normal, from risk_tier.py.

Follow-up, outside this PR. At direct.ts:1537, a peer notice still reaches applyPermission. This is the loaded chat's own permission card, and whether it can show Allow/Deny there is worth its own look.

@teamleaderleo
teamleaderleo merged commit 913f2e6 into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the leo/needs-you-followup branch October 21, 2026 15:11
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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