Skip to content

cmux-next: sidebar tab list draws New Tab tabs with the new-tab icon and title - #17938

Closed
azooz2003-bit wants to merge 6 commits into
feat-cmux-nextfrom
azooz-migration/17635-op-next-icons-9
Closed

azooz2003-bit wants to merge 6 commits into
feat-cmux-nextfrom
azooz-migration/17635-op-next-icons-9

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Follow-up to #17630, for item 15 of the cmux-next sweep (cmuxterm-hq#1421). #17630 gives New Tab page tabs the registry's tab.new in the tab strip. The sidebar's tab list still drew them with agent.chat, because the sidebar didn't know which tabs are still on the New Tab page.

The sidebar now gets that state (AgentTabs.pageTabs.ids, the same set the tab strip titles "New Tab" from) and lists those tabs with a new SidebarTabKind.newTab, which draws tab.new.

The fleet capture showed a second defect from the same missing state: the list titled these tabs by their record's blank-page address, "about:blank", where the strip says "New Tab". They now use the strip's localized title (Strings.untitledBrowser), with no new strings.

Converted call sites:

  • SidebarTabKind: new newTab case, icon tab.new.
  • SidebarMapping.sections(…, newTabPages:newTabTitle:) and row(…, newTabPages:newTabTitle:): new parameters, default empty. The tab list kind is .newTab, then .agentChat for other agent session tabs, else the record's kind.
  • SidebarBridge.sections, liveSections and the per-machine sections: pass newTabPages through; the per-machine sections passes Strings.untitledBrowser as the title.
  • Callers: the live observation and the space-swipe pages (both read pageTabs.ids inside their observation, so a New Tab that becomes a chat relists as a chat), the first show, and resync.

Not changed: the workspace row's own kind icon (kind(front)), which is pending Leo's call. The test checks that the row's kind is the same with or without the New Tab state.

SidebarTabKind is Codable. Adding a case keeps saved rows readable, since older saves never contain it.

Testing

Red commit 62fbccd adds SidebarMappingTests.aNewTabPageTabListsAsANewTab; the fix follows. The red run failed to compile on base (no newTabPages argument, no .newTab case), and the fix passed swift test (2308 tests).

Red commit 6f451af adds aNewTabPageTabListsUnderTheNewTabTitle for the title; its fix follows.

  • An agent session tab lists as .agentChat without the New Tab state and as .newTab (icon tab.new) with it.
  • The workspace row's kind is unchanged.
  • A New Tab page tab is listed as "New Tab"; the same tab as a chat keeps its own title.

Changelog

Fixed: New Tab tabs in the sidebar's tab list show a new-tab icon and the New Tab title instead of the agent chat bubble and about:blank

Demo Video

Fleet builds on a capture mini (1x display), launched with sidebar.showWorkspaceTabs on. The before build is #17630's base (ff267c4), which has the same sidebar mapping as this PR's base. The after build has the icon fix and predates the title fix, so it still says "about:blank". The tab strip above still shows the bubble because #17630 is not in this branch.

Tab list at 5x, before (top) and after (bottom):

list zoom

Before After
before after

Checklist

  • Behavior changes have added or updated tests, or Testing says why not
  • UI change with no new or changed user-facing strings; localization not affected

🤖 Generated with Claude Code


Migrated from #17635 after correcting the PR author identity. The original head commit 2fb5993 is preserved.


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


Summary by cubic

Fixes the sidebar tab list so tabs still on the New Tab page draw with the new-tab icon and the New Tab title, instead of the agent chat bubble and the record's "about:blank" address.

  • The sidebar now reads the same state the tab strip titles New Tab tabs from (AgentTabs.pageTabs.ids), so a New Tab that becomes a chat relists as a chat.
  • Adds a SidebarTabKind.newTab kind with the tab.new icon. SidebarTabKind is Codable, so older saved rows remain readable.
  • The workspace row's own kind icon is unchanged.

Written for commit 2fb5993. Summary will update on new commits.

Review in cubic Turn on auto-fix

teamleaderleo and others added 6 commits October 6, 2026 12:16
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The sidebar now gets the ids of tabs still on the New Tab page, the same
state the tab strip titles them from, and lists those tabs as new tabs.
It reads them inside its observation, so a New Tab that becomes a chat
relists as a chat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It listed them by their record's blank-page address (about:blank); it now
uses the tab strip's localized New Tab title.

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

coderabbitai Bot commented Oct 6, 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: bbfd3086-5806-4420-94f5-f650d0904754

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
  • Autopilot · 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 6, 2026

Copy link
Copy Markdown
Contributor

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

CI passes on 2fb599378d (run 37527008663 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.

@azooz2003-bit
azooz2003-bit deleted the azooz-migration/17635-op-next-icons-9 branch October 6, 2026 20:56
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.

2 participants