Repository navigation
Solid themed toasts, "New Tab" titles, no raw workspace ids - #19759
Conversation
A closed New Tab page's toast reads "New Tab", the toast is an opaque theme surface with a small radius at the bottom center, hover holds it, and the no-workspace refusal carries no raw id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The toast is an opaque theme surface (the Reduce Transparency overlay fill, pinned) with the popups' 8 pt radius and shadow, roomier padding and a full-strength Undo. Refusals (the old capsule HUD) and the Feed and Tasks panels' rejects now go through CmuxToastCenter, the latter via a cmuxToast SwiftUI modifier. A closed New Tab page's toast names it as its strip does, and one shared rule (TabItemMapping.shownTitle) turns empty or about:blank/newtab titles into "New Tab" for toasts and sidebar tab rows. The no-workspace and no-workspace-group refusals are sentences without the raw id, in every catalog locale. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
|
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by |
Sidebar tab rows and the group-close toast name an agent chat, a diff page tab, a New Tab page and a blank browser tab as their strip does. A Feed/Tasks reject pushed out of the toast stack, or left by a closed panel, clears its model. No refusal about a missing object shows its id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
TabTitleResolver pulls the strip's title resolution out of PaneController (New Tab page, agent chat, Home conversation, page and app tabs, incognito) and the strip, the sidebar's tab rows (SidebarBridge -> SidebarMapping tabTitle) and the closed-tab toasts (pane and tab-group close) all use it. Only browser tabs and real New Tab pages become "New Tab"; TabItemMapping.shownTitle, which renamed every chat and page tab, is gone. cmuxToast now clears its model on every end of the toast, eviction by the stack limit included, on the next main-actor turn, and when its view is dismantled, so a repeated reject shows again and a reopened panel does not replay an old one. Twelve more refusals that named a raw id (tab, pane, screen, closed item, column, tab groups, window, screen group, ...) are now id-free sentences in every catalog locale; the old keys are gone. The debug.window comment describes the refusal toast. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Toasts in cmux-next were cramped, translucent glass, and a closed New Tab page said
Closed “about:blank”. Now every toast uses one solid, themed component, tabs keep their strip names everywhere, and no error shows a raw id.The component (
CmuxNextDesign/Toast)ThemeTokens.opaqueOverlayFillatChromeTunables.opaqueOverlayLift, the same fill Reduce Transparency uses), pinned on every Mac.Palette.popupSurfaceisn't on base yet; a comment marks where to swap it in.PopupStyle.standard), not a capsule, and the toast casts the popups' one subtle shadow.CmuxToastCenteralready did placement (bottom-center, 24 pt up), stacking (three per window), auto-dismiss onDemandTimerand the hover hold; tests now cover them.Toasts routed through it
RefusalHUD, the capsule that said "no workspace ", is now a toast with idrefusal.FeedToastis deleted. The Feed reject and the Tasks pane's reject overlay go through a newcmuxToast(id:message:onDismiss:)SwiftUI modifier.onDismissruns on the next main-actor turn whenever the toast ends, including when a newer toast pushes it out of the stack, so the same reject shows again.CmuxToastCenter, now with the new look: closed tab, group and workspace close or undo, pin, icon history, tab icon, room deleted, remote forget, keymap, CLI install, cloud move and result, recovery notice, file recovery, browser, bookmark and password imports, classic import, and surface zoom.webviews/srcshows a toast.Tab titles
TabTitleResolvermoves the strip's title logic out ofPaneController. It covers the New Tab page (or History), agent chats, Home conversations, page and app tabs, and incognito tabs.SidebarBridgepasses it asSidebarMapping'stabTitle) and the closed-tab toast, from both a pane close and a tab-group close.about:blank.No raw ids
not_found.Refusals.xcstringsandScreens.xcstringsare translated into all 21 locales in each catalog, and the old keys are removed.Testing
cmux-ci run --class light --script scripts/ci/run-swift-testing-suites.sh --arg Packages/macOS/CmuxNext:First round
eb65fddc8077c87d9bc59eae7637a0d2d25a81cf:CmuxToastSurfaceTestsandToastCopyTestsfailed on assertions: a glass material instead of opaque, a 10 pt radius,Closed “about:blank”, andno workspace ws_….Review round
09c5f377c1bb4d5b59614d3b96a3e48377de4c8d(tests only): the build failed because the new test API (CmuxToastAnchorView.centeranddismantle,TabTitleResolver,SidebarMapping'stabTitle) didn't exist yet. These tests never failed on an assertion before the fix.ToastCopyTestsnow checks four things:CmuxToastModifierTestschecks that a reject pushed out of the stack, and one left behind by a closed panel, clears its model.d0dbac151ae71aa0ed61e563782ae880f59cc888: all 141 suites passed, including those three suites andHeaderDiffPlacementTests.Local checks
check-concurrency.sh(1 hit),check-theme-scope.sh(15) andcrash_ratchet.py(5 modules) match base; none of the hits are in this change.check-system-blue.pyandcheck-no-godfiles.shpass.lint-ios-package-conventions.shflags only the two namespace-type errors already on base (CommandRetentionSetting,AgentPaneWarmup).localization_catalog.py checkreports nothing for the new keys.Not verified: there's no live capture, and the Feed and Tasks panel toasts haven't been checked in a running app.
Changelog
Changed: Toasts are a solid, theme-colored card at the bottom center of the window. A closed New Tab page is called "New Tab", chats and pages keep their names in the sidebar and in toasts, and errors no longer show raw ids.
🤖 Generated with Claude Code