cmux-next sidebar: a vertical ⋮ more button shared app-wide; a group's card counts its subgroups
Merged
TE
16d ago+294+294+012345678901234567890123456789-16-16-01234567890123456789
Leo's item via coord-deputy (sidebar-cleanup lane).
Summary
- One shared overflow button (
OverflowButton, CmuxNextDesign): a vertical ellipsis (⋮, the pack'saction.more.vertical), like Chrome's menu button. It owns the glyph, its size, the chrome hover and pressed look, the label and tooltip, and supports a press action, a press menu (pop-up style) and a right-click menu. CmuxNextDesign now imports CmuxNextIcons for the glyph. - The sidebar uses it: the workspace row's and the group header's more buttons. Other owners switch their own: pane-toolbar agreed to switch
PaneToolbarView.moreButtonafter this lands; the Chief tools, browser (already a vertical glyph) and bookmark manager buttons are follow-ups. - Choice: the host still sets the button's square, so it lines up with the pin and close buttons beside it; glyph, glyph size and hover are the same everywhere.
- Group hover card: a section lists subgroups after their parent, not inside it, so the card counted only the group's own rows and a parent whose workspaces sit in subgroups read "Workspaces: 0 · All idle". The list now keeps each group's subtree on reload, the card counts every workspace in it, and a parent's open card updates when a subgroup member changes.
- Empty groups (no workspace anywhere under them) open no card: it would say nothing. Not behind a setting.
Before / after
Group header more button (hovered), light and dark:
| before | after |
|---|---|
![]() | ![]() |
![]() | ![]() |
Card of a parent group ("cmux-next app") whose two workspaces sit in a subgroup:
| before | after |
|---|---|
![]() | ![]() |
![]() | ![]() |
Stills come from a throwaway snapshot test (not in this PR) run on the fleet at base and at this branch. The card's title line is cropped by that test's frame, not by the change.
Changelog
- Changed: the sidebar's more buttons show a vertical ellipsis (⋮).
- Fixed: a workspace group's hover card counts the workspaces in its subgroups, and an empty group shows no card.
Test plan
Focused command (fleet): cmux-ci run --class light --script scripts/ci/package-test-lane.sh --arg=suite --arg=Packages/macOS/CmuxNext --arg=SidebarOverflowGlyphTests,SidebarGroupHoverCardTests
- Red at
fd42d99207ba1d79f7a4edd9bc335bbae9620054(tests only): both glyph tests fail (glyph 84 px wide, 8 px tall), the parent card reads["cmux-next app", "All idle", "Workspaces: 0"], and the empty group offers a card. - Green at
c7d3ae51bc78ea6985f51dc81d9a3c08ec5a37b4: all pass, with GroupHeaderHoverRevealTests, GroupHeaderTrailingTests, GroupPaletteDefaultTests, SidebarMenuAnchorTests, WorkspaceRowHoverMotionTests and SidebarNestedGroupLayoutTests. cmux-ci compile-check --apppassed atc7d3ae51bc78ea6985f51dc81d9a3c08ec5a37b4.
Observed / Not run
- Observed: the runs above; the stills above.
- Not run: the full CmuxNext suite on the fleet (CI runs it); the live app (no DEV build); VoiceOver by hand. The independent review subagent passed both commits.
Agent session: cosmic-gray
🤖 Generated with Claude Code







