Skip to content

cmux NEXT sidebar: preserve harness identity in chat history rows - #28651

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
history-row-harness-icons
Nov 1, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
history-row-harness-icons

Conversation

@teamleaderleo

Copy link
Copy Markdown
Collaborator

The session-tree Pinned and Earlier rows discarded AcpmuxChat.harness and rendered only a title plus age. That made old Claude/Codex chats indistinguishable after they left a workspace, despite the current sidebar contract requiring a harness mark with a stable fallback on every agent/session row.

This draft carries the harness family through the metadata-only history model and feed, resolves registered harness ids through AgentBrandCatalog, and gives unknown harnesses a person mark tinted with GroupColor.unset(id:). The row uses the shared leading icon column, clears the mark on reuse, and keeps the type only in accessibility text. Existing click, pin menu, age layout, row height, and sidebar.sessionTree default are unchanged.

Evidence and prior art

Tests

  • SidebarChatHistoryTests verifies the feed preserves Codex/Claude harnesses.
  • A row-reuse regression verifies known Codex uses the catalog mark, unknown acme-agent gets a stable fallback colour, and the previous mark identity is not retained.
  • git diff --check and scripts/cmux-next/prepush-gate.py pass.
  • cmux-ci test -- swift test --package-path Packages/macOS/CmuxNext --filter SidebarChatHistoryTests -j 4 dispatched run 41151216458 for head 5e2ee40f9407f05ba3ffdd21178039ec4d23f4fb; the lane stopped its wrapper after 30s, and the saved receipt remains available for the fleet wait. No green claim is made yet.

Capture

Draft capture is still required before marking ready: add a DEBUG history fixture with Claude, Codex and an unknown harness in Pinned/Earlier, then attach 2x light and dark before/after images.

risk: normal

Agent session: agent session

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

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, router-review): BLOCK at 5e2ee40

BLOCK at 5e2ee40

Visual verdict: BLOCK — required after screenshots are absent.

  1. [P1] [blocking] The changed sidebar UI cannot be visually reviewed. The PR explicitly says capture is still required ([review/pr.body:21]), while the image manifest reports no GitHub-hosted images ([review/images/README.txt:2]). This prevents verification of the new row icons, colors, and layout.

Follow-ups: none

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

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Views/SidebarChatHistoryRow.swift
#	Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/SidebarChatHistoryTests.swift
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

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

Not verified: macOS jobs did not run: compile and app tests were skipped on c95e454173; ci-status is green without them.

CI passes on c95e454173 (run 41262511374 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

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.

Default changes

This pull request changes 1 default at c95e4541730b (what everyone gets without configuring anything):

  • tunable-source.CmuxNextAgentLanes/SidebarChatHistoryFeed.swift:historyChat: "26981e7628d24125f0b16298e8437ffb488ddb39e5697507948848821f091f26" -> "22b1ce3eb88be73456abad0f6f81fcfa43a91406ace1db0079ad268f97e9c3bb"

Signed off on this commit by review (subagent claude-opus-5-5 medium).

Merge receipt: merged as 9175c1bb4384 with these defaults changed, signed off by review (subagent claude-opus-5-5 medium).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at c95e454

Compile: no problems found. Every API the diff calls exists at the head (SidebarStyle.titleTextX/iconBox/kindGlyphSize, AgentBrandCatalog.brand(for:), templateImage(brand:size:), GroupColor.unset(id:)), and the new harness: parameters default to nil, so the other callers compile unchanged. Row reuse resets harness, colour, image and visibility on every configure. Layout: with no icon the title x is unchanged; with one it follows the shared icon column. The merge resolution keeps base's anti-clipping meta frame. Row height is unchanged. The earlier BLOCK at 5e2ee40 was only about missing screenshots, which never block.

Follow-ups:

  • [follow-up] The accessibility label uses the raw harness id ("claude-code"). It should use a display name.
  • [follow-up] The fallback person.crop.circle symbol should take SymbolConfiguration(pointSize: SidebarStyle.kindGlyphSize) so it matches the brand marks.
  • [follow-up] A catalog harness with no mark draws the person symbol in the plain secondary tint, not the per-harness fallback colour.

@teamleaderleo
teamleaderleo marked this pull request as ready for review November 1, 2026 02:09
@teamleaderleo
teamleaderleo merged commit 9175c1b into feat-cmux-next Nov 1, 2026
175 of 182 checks passed
@teamleaderleo
teamleaderleo deleted the history-row-harness-icons branch November 1, 2026 02:31

This branch was previously deployed

1 inactive deployment
ci-routing-agent — c95e4541 Deployed Nov 1, 2026 by teamleaderleo via namespace autofix #10559
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