Skip to content

Status icon on the left or right of rows and tabs, by default - #20900

Closed
teamleaderleo wants to merge 11 commits into
feat-cmux-nextfrom
op-next-icons/status-icon-side
Closed

teamleaderleo wants to merge 11 commits into
feat-cmux-nextfrom
op-next-icons/status-icon-side

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Leo and Lawrence's team call asked for status icons on sidebar rows and tabs in place of kind icons with a corner badge, on the left or the right, with tabs matching rows. Leo 2026-10-15: no chat or kind icon on any sidebar row by default, the status icon follows sidebar.statusIconSide, and tabs match.

  • Rows (sidebar.rowBadge, new default Status icon): no kind icon on any row (agent, terminal, browser), no corner badge, no unread count. One status icon shows the row's most urgent state (error, then needs input, then working, then done for unread work); its tooltip lists every pending item.
    • Left: the status icon sits in a fixed slot before the title, so titles line up whether a row has a state or not.
    • Right: the left side is empty and the icon takes the trailing status slot.
  • Side (sidebar.statusIconSide, left or right, default left): a Debug Settings choice until it is promoted.
  • Tabs follow the rows: no kind icon or agent mark. A tab's status icon takes the icon's slot on the left, or sits at the title's end on the right with the title starting where the icon was. Pinned tabs keep their icon (it is all they show), and so does a user's own icon. Working tabs keep the spinner in the icon slot.
  • The old looks stay in Debug Settings: corner badge, glyph stack, count with trailing glyph.

Call for Leo: browser favicons. A browser row or tab keeps its page's favicon on the left, since it is the page's own icon, not a kind icon (you asked for favicons there separately). Until a page reports one, the row shows no icon (the globe kind icon is gone).

SidebarRowBadgeStyle moves to CmuxNextDesign so the tab strip can read it.

Stills

Real cmux NEXT DEV build of this head. Same window and workspaces in each: deploy (needs permission), review (question), tests (done), api (needs permission in a tab, with working, permission, done and browser tabs), notes (quiet), docs (github.com).

Dark Light
Base (corner badge) base dark base light
Status icon, left (default) left dark left light
Status icon, right right dark right light

A browser row keeps its favicon (docs, left):

docs favicon

The github.com tab in the api strip shows no favicon in these stills because its page had not loaded yet; it showed the globe kind icon in base.

Tests

StatusIconSideTests covers the default (no chat icon, status on the left), no kind icon on any row, rows left and right, unread work showing done, titles on one column, tabs left and right, tabs without kind icons with a browser favicon kept, and tabs following the row style. Each behavior commit follows a red test commit. The corner badge tests now pin the corner look.

Changelog

Changed: Sidebar rows and tabs show one status icon (on the left by default) in place of kind icons and the corner badge.

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 14, 2026 22:23
Red: with Debug Settings sidebar.rowBadge on the new Status icon style, a
sidebar row still draws its kind icon and corner badge, a tab keeps its mark
on the icon's corner, and sidebar.statusIconSide is not a Debug choice yet.
SidebarRowBadgeStyle moves to CmuxNextDesign so tabs can follow it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Debug Settings sidebar.rowBadge gains Status icon: a row drops its kind icon
and badge for one status icon (its most urgent state), on the side the new
Debug choice sidebar.statusIconSide names (left or right, default left).
Tabs follow it: the mark sits before the icon or at the title's end. The
corner badge stays the default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 5d09a818-d3d0-48e3-843f-0281b9eeceb2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

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

CI passes on a7b59319dc (run 38701471356 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

teamleaderleo and others added 3 commits October 14, 2026 23:30
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Red: rows still default to the corner badge with a kind icon, and in the
Status icon style a browser row without a favicon shows no icon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Leo 2026-10-15: agent chat rows draw no chat icon by default; their status
icon sits on the left (or the right, sidebar.statusIconSide), tabs match,
and a browser row keeps its favicon, else a globe, on the left. The corner
badge tests pin the corner look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@blacksmith-sh

blacksmith-sh Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

teamleaderleo and others added 2 commits October 15, 2026 00:28
Red: with the Status icon look an agent chat tab still draws its chat icon,
its status mark sits outside the icon slot on the left, and on the right its
title starts after the empty slot. TabItem.isAgentChat marks those tabs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Leo 2026-10-15: tabs match rows. With the Status icon look an agent chat tab
draws no chat icon or agent mark: on the left its status icon takes the
icon's slot, on the right its title starts there. Terminal and browser tabs
keep their icons, browser tabs their favicon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo teamleaderleo changed the title Status icon on the left or right of rows and tabs (Debug) Status icon on the left or right of rows and tabs, by default Oct 15, 2026
teamleaderleo and others added 4 commits October 15, 2026 00:38
Red: a browser row without a favicon draws a globe, and a terminal tab keeps
its kind icon. TabItem.isAgentChat becomes iconIsKind (still set for agent
chats only), the flag the fix reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Leo 2026-10-15: no chat or kind icon on any sidebar row by default, tabs to
match. Browser rows drop the globe fallback; a page's favicon still draws.
Tabs hide their kind icon or agent mark (not a favicon, a user's icon or a
pinned tab's), and the status icon takes the icon's slot on the left.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Folded into #21954. That PR draws each workspace and session row's status mark on the left by default, with a left/right tunable (sidebar.statusIconSide). The tab-strip half of this PR isn't in #21954 and is left for a follow-up. Closing this one so the work has one home.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant