cmux NEXT: notifications panel clears a selected row; ⌘⌫ clears all

Merged
AU
2d ago
+230-41

Fixes https://github.com/manaflow-ai/cmux/issues/34442

What was wrong

In the cmux NEXT notifications panel (⌘I), selecting a row and pressing Delete, or using the row's Clear, did nothing visible. Most rows come from agent chats and have no terminal. The daemon's notification.clear could only clear by terminal, by workspace, or for the whole session. So for those rows the handler only marked the row read, and the row stayed. On a real ledger, 224 of 256 rows had no terminal_id.

Change

  • Daemon: notification.clear takes notification_id, which clears one ledger row. It accepts at most one of terminal_id, workspace_id and notification_id. The tab's unread marker goes with the tab's last row, unless a feed item still keeps it unread. The idempotency fingerprint includes the id.
  • App: the row's Clear and Delete on a selected row now clear that row by id. If an older daemon refuses the field with validation.invalid, the app falls back to the old behavior: it clears the row's terminal, or marks a terminal-less row read.
  • Panel: ⌘⌫ runs Clear All, the same as the header's Clear All button.

Changelog

Fixed: cmux NEXT's notifications panel now clears a selected notification, and ⌘⌫ clears them all.

Verification

(filled in below as it runs)

🤖 Generated with Claude Code