CmuxNext: one-line sidebar rows by default; notification text in the hover card
Compact sidebar rows are one line by default again. sidebar.workspaceRow.notification is now off, so an unread notification's text no longer adds a second line under the row. The status glyph carries the state, and the text now reads in the row's hover card.
Call owner: Leo, 2026-10-14. On the #20410 capture, Leo asked "why is it even 2 lines in the first place?". The coordinator confirmed that question is the call, and this PR cites it as the call-owner approval for the default change.
Background: #19862 (hq#1870 P1 11) turned the setting on for parity with classic's sidebar.showNotificationMessage. @austinywang, FYI: the classic-parity behavior is still one toggle away. Settings > Appearance > Workspace Rows > Latest Notification (sidebar.workspaceRow.notification: true) draws the text under the row again. The classic settings migration still carries an explicit showNotificationMessage value across. Moving a notified workspace to the top (notifications.attention.moveToTop) is unchanged.
Changes
-
WorkspaceRowElements.standarddrops.notification. -
The workspace hover card shows the unread notification's text as a fact (bell icon, up to two lines).
-
Defaults snapshot, settings schema and MDM exports now show
false. -
scripts/cmux-next/sidebar-notification-e2e.pynow expects a one-line row by default. -
Custom hover cards: the template (
docs/cmux-next/sidebar-customization/main.js) lists the newnotificationfact (bell icon) so a card made from it keeps the text; the fact kinds doc andhovercard-live.pyfollow. -
The defaults snapshot regenerated on the merged base also picks up
setting.freeModel.enabled, which base had in its schema but not yet in its snapshot.
Tests
SidebarOneLineRowsTests:- A notified row at the default settings is one line, has no detail, and its hover card has the text.
- Turning the setting on brings the second line back.
- Red on the test commit and green on the fix: fleet receipts will follow below.
In the app
DEV builds of base and this head, same scene (three workspaces get a notification). Top: base draws the text as a second line; this PR keeps every row one line. Bottom: hovering api puts the text in the hover card, with a bell icon.

Turning on Settings > Appearance > Workspace Rows > Latest Notification in the same run brings the second line back on every notified row.
Pre-existing, on base too: a notification's text can reach the sidebar a few seconds after its unread badge, so a row (or its card) shortly after the notification may not have the text yet.
Changelog
- Changed: Sidebar rows stay one line when a workspace has an unread notification; the notification's text shows in the row's hover card, and Settings > Appearance > Workspace Rows > Latest Notification puts it back under the row.
🤖 Generated with Claude Code