Skip to content

acpmux: the queue list names a teammate's queued prompt's author (chat multiplayer) - #25431

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
chat-multiplayer-queue-list-author
Oct 26, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
chat-multiplayer-queue-list-author

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

What

acpmux's queue list now names who queued a teammate's prompt, so a pane that opens a shared chat cold still knows the row is a teammate's and offers none of the reader's actions. "Cold" means after an app restart, when the authored queued record is older than the attach page.

Leo's words:

  • "we can still do the regular chat multiplayer" (2026-10-26)
  • "also chief chats we need multiplayer"
  • "for the agent chat side, we should be able to just... do stuff. unless lawrence is super actively workin on stuf rn"

Before this PR the author was only in the queued / queue_updated record's _meta.provenance {kind: "person_message", from, fromName} (#25268). QueuedPromptSummary carried only fromAgent.

  • QueuedPromptSummary gets author: {id, name} | null, typed as QueuedAuthor. _acpmux/composers queue entries get the same author.
  • It is filled from the prompt's provenance only when the kind is person_message (author::listed, built on author::of_provenance). The name falls back to the id when a record has no name. The owner's prompt and an agent's message list null.
  • It survives a daemon restart (the restore already keeps provenance) and the teammate's own edit (queue_edit keeps a person_message provenance only for its sender). Another editor's change drops it, as before.
  • Peers: a peer's session list passes the summary through as B lists it. server/peer_text.rs still masks only prompt, and author has no session text to mask. The provenance it comes from already reaches peers raw in queued records.
  • spec/acpmux-protocol.json and the web's generated types.ts are regenerated.

The pane side, which reads entry.author from the list in mergeQueue, is #25357.

No capture: no UI changes. The only webviews file is the generated protocol types.ts (one new nullable field), which no pane code reads in this PR.

Risk

Low. It adds one protocol field, and nothing reads it yet. The field is always present but nullable. Older clients ignore it. Nothing changes for a chat with no person author.

Tests

Run through cmux-ci test (Linux):

  • prompt_provenance::the_queue_list_names_a_persons_prompt_and_no_one_else (new): Ana's queued prompt lists {id, name} in the session summary and in _acpmux/composers, before and after her own edit. The owner's prompt and an agent's message list null.
  • queue_restore::a_persons_queued_prompt_stays_theirs_across_a_crash (extended): after a SIGKILL and restart, _acpmux/info lists her as the queue entry's author.
  • peer_integration::a_peer_lists_a_persons_queued_prompt_with_its_author (new): a prompt Ana queued through peer A is listed with her as author on A's session list.
  • author::tests (extended): listed, including the fallback to the id and null for an agent.
  • These still pass: protocol_ir_is_current, only_the_sender_changes_a_waiting_prompt, a_persons_prompt_through_a_peer_is_recorded_as_theirs_on_the_owning_daemon, a_peer_may_not_edit_a_queued_prompt_that_holds_a_secret and to_an_agent_that_does_not_steer_an_agents_send_queues_named. cargo clippy -p acpmux --all-targets -D warnings and cargo fmt --check are clean.

Agent session: agent session

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 26, 2026 03:11
QueuedPromptSummary and _acpmux/composers queue entries carry
author {id, name} from the prompt's person_message provenance (null for
the owner's and an agent's), so a pane that opens a shared chat cold
still knows the row is a teammate's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-847de1e22cadc71cd076
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 75ede5f: 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=pr25431 -f ref=chat-multiplayer-queue-list-author -f platform=macos -f backend_mode=local

Gallery before/after for 75ede5f: 16 states rendered, 3 images differ, 1951 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40306781382 -R manaflow-ai/cmux -n gallery-advisory-25431-75ede5f7773b4ba086bb4399672506e9da4ef254 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-width/standard Apple System Colors Light changed 1.53% imports types.ts (2 hops)
agent-pane.chat-width/standard Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/new-chat Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/new-chat Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/after-turn Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/after-turn Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/working Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/working Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/typing-in-dock Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/typing-in-dock Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/long-title Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.docked-chat/long-title Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.gutter-select/from-left-margin Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.gutter-select/from-left-margin Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.gutter-select/from-right-margin Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.gutter-select/from-right-margin Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.inspector/chat-menu Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.inspector/chat-menu Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.inspector/wire-log Apple System Colors Light changed 0.0302% imports types.ts (2 hops)
agent-pane.inspector/wire-log Apple System Colors changed 0.0271% imports types.ts (2 hops)
agent-pane.orchestration-lab/local-queue Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.orchestration-lab/local-queue Apple System Colors unchanged 0% imports types.ts (2 hops)
agent-pane.orchestration-lab/build-box Apple System Colors Light unchanged 0% imports types.ts (2 hops)
agent-pane.orchestration-lab/build-box Apple System Colors unchanged 0% imports types.ts (2 hops)

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

Tour of 75ede5f777 (run): no media. The tour job failed before the tour ran (build or setup); the run log has the output.

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

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo
teamleaderleo merged commit b0f4247 into feat-cmux-next Oct 26, 2026
198 of 212 checks passed
@teamleaderleo
teamleaderleo deleted the chat-multiplayer-queue-list-author branch October 26, 2026 10:50
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

This branch had an error being deployed

2 failed and 1 inactive deployments
artifacts — 75ede5f7 Deployed Oct 26, 2026 by teamleaderleo via publish the Windows daemon to R2 #56645
sentry-dsyms — 75ede5f7 Deployed Oct 26, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #56645
cmux-tui-merge-tree — 75ede5f7 Deployed Oct 26, 2026 by teamleaderleo via publish the merge tree #6434
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