An events × channels notification matrix that saves as you toggle: per-switch pending and single-switch rollback on failure, locked always-on rows, a disconnected channel column with a real Connect entry point, row/column bulk actions with a bulk-vs-manual marker, and a quiet-hours window that wraps past midnight.
npx shadcn@latest add @zyeon/notification-preferencesZyeon UI limits how often it can be asked, and Notification Preferences hasn't had its turn. Its source will show here once it has.