Repository navigation
cmux NEXT: a banner with Show for a tab an agent marked - #24345
teamleaderleo wants to merge 68 commits into
Conversation
… why tab-attention-v1 (the daemon half is #24286): the tab record's extra.attention {reason, at_ms} becomes TabModel.attention, and showsUnread reads it, so the tab's blue dot, the screen bar, the sidebar tab list and the pane's blue ring all show it with no new drawing. The workspace row gets its manual dot and shows the reason as its text line. Going into the pane (a click or a key) or Dismiss Highlight hides the ring; the dot stays until the agent clears the mark, the page changes or the tab closes, and a new request rings again. Mark as Read on the tab also drops the mark. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
A tab an agent marked with `cmux attention request` (tab-attention-v1) now
shows in two places, each by the agent's reason, the workspace and the tab
title, never an id:
- Needs you: a `kind: "tab"` item. AgentPaneAttentionTabs pushes the marked
tabs to every agent page (`attentionTabs` host event); its Go to calls
`chat.attention.open {tabId}`, which shows only a listed tab through the
App's user jump (revealTab). No answers and no side question.
- The palette's Go to What Needs Me (`attention.goTo`): a page of the marked
tabs, newest first; Return goes through the same Go to. No default key.
AttentionTabsWatch observes the store and updates the list; nothing polls.
Strings localized in every catalog locale.
Leo: "idk where things are man i dont see anything other than the current
workspace which is you and you have a cmux next github brwoser tab open (we
need to have cmux expose this harder if it isn't already/hve better
instructions)"
Leo-ask: ask-12231fbe5e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
When an agent marks a tab with `cmux attention request` (tab-attention-v1), the app posts one system banner per request: "Workspace › Tab", "Needs you", the agent's reason. Show (or a click) goes to the tab through the same Go to as Needs you and the palette; posting it moves nothing. It follows notifications.* like an agent's notification (desktop mode, muted workspaces, quiet hours, sound), marks made before launch post nothing, and a cleared mark takes its banner back. Leo: "idk where things are man i dont see anything other than the current workspace which is you and you have a cmux next github brwoser tab open (we need to have cmux expose this harder if it isn't already/hve better instructions)" Leo-ask: ask-12231fbe5e Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; base red: the same failure on the base 2289f95; does not block Default changesThis pull request changes 19 defaults at
Needs a review. It passes with an independent review receipt on this commit: a comment or review whose first line is Regenerate the snapshot with |
|
Found 7 test failures on Blacksmith runners: Failures
|
|
Bead |
attention.goTo is a focus action, so an agent-origin `cmux action run attention.goTo` now refuses unless focus was requested, as Search Tabs does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
|
Orphaned: no activity for 13 h, and no lane holds a lease on it. The orphan sweep could not merge |
Regenerated on the fleet (scripts/cmux-next/regenerate-action-exports.sh, steps 3ee6d476 and c491d7ee) and with web/scripts/export-docs-shortcuts.ts. They also pick up the base's stale entries for home.*Conversation* and neverHibernateSite. The defaults snapshot is bot-only (#21946), so it is left to the base autofix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
# Conflicts: # plans/cmux-next/actions.md # webviews/src/agent-session/acpmux/needsYou/NeedsYou.tsx
Fleet step df753c55 (regenerate-action-exports.sh at 1c2a8dc); action-surfaces.json and the docs shortcuts were already fresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
|
|
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (independent Astra high): SHIP at 4f1f974
Independent whole-diff static review at high effort with fast mode found no introduced blocking defects after integration of base 2289f95. Reviewed snapshot-time baselines, reconnect/coalesced deltas, replay/store replacement, pending clears, machine/request-bound routing, gesture gating, mute/sound migration, Quiet After Typing, and observation ownership. The base Dock badge cancellation path is preserved; catalogs retain version 1.0.
Exact-head fleet compile/tests are separate pending evidence. Native system-banner capture remains blocked by the display capture route. Both structural dogfood and Swift dependency HOLDs remain; this receipt does not authorize merging while held.
|
Review (codex gpt-6-astra, router-review): BLOCK at 9cc3b7b BLOCK at 9cc3b7b Visual verdict: no images supplied (range review); the visual verdict must come separately
Static inspection confirmed the duplicate. Swift and Bun were unavailable, so test suites could not run. exit=1 |
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. At current head |
1 similar comment
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. At current head |
|
Conflict wave: not merged. Both #24336 and #24345 (stacked) have an open BLOCK on their own code, so a merge with feat does not make them landable: #24336's "Go to What Needs Me" palette renders off-screen in the captures (review at 4b0cc7f), and #24345's AgentPageProvider passes |
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. Carried on #32213: the original commits with their authorship, merged with current feat-cmux-next, and the duplicate |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-10-22:
Leo-ask: ask-12231fbe5e
This is the fourth slice of "needs you here", after #24286 (daemon mark and CLI), #24311 (blue dot and ring) and #24336 (Needs you item and Go to What Needs Me). When an agent marks a tab with
cmux attention request --tab T --reason R, the app posts one system banner per request:Show (or a click on the banner) goes to the tab through the same Go to that Needs you and the palette use (
AgentPaneAttentionTabs.open, thenrevealTab). Posting the banner moves no focus.notifications.*the way an agent notification does: desktop mode, muted workspaces, quiet hours and sound (NotificationPolicy).AttentionTabsWatch(from cmux NEXT: Go to What Needs Me, and marked tabs in Needs you #24336) drives this. Nothing polls.This depends on #24336, and its commits are in this branch. After #24336 lands, this diff is 154 lines plus translations for the two strings ("Needs you", "Show").
Changelog
Added: A system notification with a Show button when an agent needs you in a tab.
Tests
Tests/CmuxNextAppTests/AttentionBannerTests.swiftcovers:Observed / Not run
cmux-ci compile-check --apppassed at 3890390.prepush-gatereported no new violations.Agent session: cosmic-gray
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Posts a system notification with a Show button when an agent marks a tab as needing you (
cmux attention request), so a request reaches you beyond the tab list and sidebar dot.The banner titles the tab by its workspace and tab titles (never ids), shows "Needs you", and carries the agent's reason. Show or a click goes to the tab through the same jump Needs you and the palette use; posting moves no focus. Marked tabs are keyed by a 16-hex digest of their machine and tab id, so rows, jumps, and banner policy read the machine that owns the tab — a forked machine sharing a tab id never shows or hides another's, a Go to whose workspace id this Mac's workspace also has (a cloned machine) refuses it, and Show opens the tab only while that banner's request is still a live mark, so a banner from an earlier launch or one a newer request replaced opens nothing.
Banners follow
notifications.*like agent notifications — desktop mode, quiet hours, and sound, with workspace mutes keyed by the owning machine so a cloned id's settings never cross machines — and are driven byAttentionTabsWatch, so nothing polls. A new request on an already-marked tab replaces its banner; a cleared mark, navigation, or tab close withdraws it, and an open palette page drops or adds its row as the marks change. Marks made before this launch post nothing.attention.goTois a focus action, so an agent-origincmux action run attention.goTorefuses unless focus was requested, and a Go to from a marked tab's row (chat.attention.open, now on the page host allowlist) spends the pane's one-use user gesture, so page script alone cannot show a tab.Changelog
Added: A system notification with a Show button when an agent needs you in a tab.
Bug Fixes
at_msis no mark.AppServicesnow owns the watch, so releasing the services cancels its observation loop.Written for commit 4f1f974. Summary will update on new commits.