Repository navigation
Running tray: background commands read in words, not shell - #34845
Conversation
The tray names a background command by its call's description (now kept by acpmux on the process, so a client that never loaded the call still has it), else by a declarative rule table (session-info/commandRules.ts), else by its program and main argument. The raw command stays the tooltip and the first line of the expanded tail, which links a run or pull request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
…tting Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Owned by an agent session · session |
…abels Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
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)
Shipped in:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
…ng Building Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
Review (codex gpt-6.1-sol xhigh, router-review): SHIP at 38c2f67 Visual verdict: no images; Leo tries the build.
Earlier receipt at 1725c2a (same model): SHIP, follow-ups: send label precedence over a description; |
…Bash call's description (#35548) #34845 sends a background shell's `description` (Claude's Bash `description`) in its `background_task_update` and keeps it on the process row (docs/background-processes.md), so a client that never loaded the call still names it. The hub_integration background_task and processes tests still expected the rows without it and went red on feat; they now expect the fake's descriptions ("Run npm run dev", "Run cargo test", "Build").
|
Base red from this PR: the background task updates and process rows now carry (BASE RED SUITE for the cmux-next Performance Lead; nothing to do unless you disagree with the fix.) |
Leo, 2026-11-03, on the running tray above the composer showing raw shell lines (
glaeda-gh wait run manaflow-ai/cmux/41762593154 --until done --timeout 3000 2>...,python3 -c "import time; time.sleep(560)"; ...):What changes
A background command's tray line is now named, in this order:
The call's own description. Claude's Bash
descriptionwas already used when the transcript had the call loaded; a process whose call was not loaded (an older page, a long wait) fell back to the shell line. acpmux now keepsdescriptionon the process record (claude_stdiosends it on the shell'srunningupdate,hub/processes.rsstores and lists it,docs/background-processes.md), and the web side reads it from the registry. Codex sends no such field, so its commands use the rules.A declarative rule table,
webviews/src/agent-session/acpmux/session-info/commandRules.ts(COMMAND_RULES: program, icon, and a reader that gives a pane string, its values and an optional link). Seed rules:glaeda-gh wait run|pr→ "Waiting on cmux checks" / "Waiting on cmux#34769 checks", linking the run or PRgh pr merge N→ "Merging #N" ("Merging cmux#N" with-R, linked);gh pr checks N --watch,gh pr create,gh run watchcmux-ci test --setup playwright→ "Fleet tests · Playwright";cmux-ci test -- cargo test -p X→ "Fleet tests · cargo test X";cmux-ci run --key …-34769-…→ "Fleet run for Session context: inspect sources and edit future guidance #34769";cmux-ci compile-checksleep Nandpython3 -c "import time; time.sleep(N)"→ "Waiting 9m 20s"git push,cargo test|build -p X,bun test FILE,xcodebuild -scheme S test|buildBefore matching, the command is cut to the one program that does the work: comments (
# fg-ok),cd X &&,export/assignment steps,env/timeout N/nohup/nicewrappers, redirections, pipes (| tail -5) and later steps. One linear pass, quotes and$(...)kept whole.Its program and main argument (
bun run dev,python3 merge_freeze.py,make), after fix(next): keep shell fragments out of running-command titles #34679'scommandWorkLabelfor a line with command substitutions.Builds on #34679 (merged while this was open): a setup step's substitution is still named before the rule's words, so
SHA=$(git rev-parse HEAD); cmux-ci run …reads "git rev-parse HEAD · Fleet run" (it read "git rev-parse HEAD · cmux-ci run"); #34679's tray and gallery expectations change to that. A substitution inside the program's own arguments (--key x-$(date +%s)) is part of what the rule reads.commandLabelitself is unchanged.Takes back #34679: only the outer operation's words in its two tray expectations ("cmux-ci run" → "Fleet run"), since the rule names it better; its substitution naming stays.
The raw command stays the line's tooltip, and the expanded tail now starts with it. A line whose rule names a run or pull request gets an "Open on GitHub" link in its tail. The per-row elapsed time is unchanged. New strings are in
Localizable.xcstringswith every locale.Gallery:
agent-pane.subagent-tray→command-words(the commands from the screenshot, opened; its play checks the labels).Tests
webviews/test/command-rules.test.ts: table-driven over real commands from the screenshot and agent transcripts, plus description precedence, the registry description, the program cutting and a linear-time check.webviews/test/subagent-tray.test.tsx: the undescribednice bun testline now reads "Running tests".the_running_update_carries_the_calls_description,a_description_round_trips_and_is_left_out_when_absent.Observed / Not run
cmux-ci test) at the pushed head:bun run checkgreen,check:design-tokensgreen, 164 tests pass acrosscommand-rules,subagent-tray*,background-tasks-open,session-info*,summary-background-workandagent-pane-workflow-progress;strings-build-outputpasses.cargo test -p acpmux --lib -- background_output process_index, 9 passed, including both new tests.xcodebuild … clean/archivefalls back instead of reading Building. Left as a follow-up: a backgroundacpmux sendkeeps its send label ahead of its call's description, as before.command-words(the advisory gallery run covers it) or a DEV build.Changelog
Changed: Background commands in the running tray read in words ("Waiting on cmux#34769 checks", "Fleet tests · Playwright", "Waiting 9m 20s") instead of the raw shell line, which stays in the tooltip.
🤖 Generated with Claude Code
Agent session: agent session