cmux NEXT: a finished reply no longer rings its chat pane in blue by default
Leo (2026-10-21): "the model response does a double blue ring pulse". That was agreed not to be the default.
Cause. #22678 ("cmux NEXT: the unread ring stays until its own pane is clicked or typed in", Austin Wang, merged 2026-10-21 05:47Z) added NotificationCenterService.agentTurnEnded. When an agent chat's turn ends, every pane showing that chat gets the notification-blue attention ring, including the chat you are watching. Clicking or typing into the pane then plays classic's double-blink dismiss flash. Before #22678, nothing rang here: acpmux reads a turn that ends in a shown chat right away. Lawrence's follow-up 3caebdc9 (pushed directly, no PR) added the glow and the full-strength double blink. Leo's nightly 03960f5 already has #22678.
Takes back #22678 (its agent-turn ring default only): Leo said this ring would not be on by default.
Change (smallest version: default off, never blue, plus a test):
- The agent-turn ring is now opt-in through Debug Settings
notifications.attention.agentTurnRing(AgentTurnRing.tunable), off by default. When it is off, a reply that finishes rings nothing, which was the behavior before #22678. Terminal and other notification rings, their blue, and their dismiss flash are unchanged. - When it is on, the ring is a hairline (one device pixel) in the pane-border color with no glow, never the notification blue. It keeps that look through its dismiss flash (
AttentionMark.hairline). A user-setnotifications.sources.agent.colorstill wins. AgentTurnRingTests:- By default, a finished turn creates no attention mark.
- The opt-in mark is a hairline: not blue, at most 1 pt wide, no glow, and its flash is not blue either.
- A later notification's ring is the classic blue ring again.
No capture: this is the native pane overlay (CALayer), not a webview, so scripts/gallery-compare.sh does not cover it, and app builds are not allowed on the session host. The default now draws nothing on a turn end, which is the same as before #22678. The tests pin the opt-in look.
Agent session: cosmic-gray
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Stops an agent chat's pane from ringing in the notification blue when its reply finishes: the turn-end ring added in #22678 is now opt-in and off by default.
Changes
- Add Debug Settings
notifications.attention.agentTurnRing(AgentTurnRing.tunable), default off; when off, a finished reply rings nothing, as before #22678. - When on, the ring is a one-pixel hairline in the pane border color with no glow, never the notification blue, including through its dismiss flash.
- Terminal and other notification rings are unchanged.
AgentTurnRingTestscover the default-off behavior, the hairline look when on, and that a later notification's ring is blue again.
Leo-ask: ask-651924f676