Skip to content

Conversation

@jcscottiii
Copy link
Collaborator

Implements the new "Notification Channels" page, providing users with a centralized location to manage how they receive updates. This feature is a foundational step towards enabling subscriptions and personalized notifications.

Key changes include:

  • New Page Component: Adds a new page at /settings/notification-channels, accessible only to authenticated users.
  • Component Architecture: The page is composed of a main container and three distinct panel components for each notification type (Email, RSS, Webhook), following a composition-over-inheritance pattern.
  • Base Panel Component: A new reusable <webstatus-notification-panel> was created to ensure a consistent look and feel across all panels and to handle loading states gracefully with skeleton placeholders.
  • Email Channel Display: The page now fetches and displays the user's email notification channels, which are synced from their verified GitHub emails via the existing pingUser flow. A tooltip has been added to inform users of this behavior.
  • Coming Soon Placeholders: The RSS and Webhook panels are included as placeholders with "Coming soon" messages and disabled "Create" buttons, preparing the UI for future implementation.
  • Sidebar Refactoring: The main sidebar has been refactored to use a renderNavItem helper function for top-level links, improving code consistency. The "Notification Channels" link now appears as a top-level item under a "Settings" section that is only visible to logged-in users.
  • Testing: Comprehensive unit tests for the new page and all panel components have been added. A new end-to-end (Playwright) test ensures the page functions correctly for both authenticated and unauthenticated users, and includes visual regression snapshots.

jcscottiii added a commit that referenced this pull request Jan 2, 2026
I had the gemini CLI examine some of its shortcomings while working on
#2152

It updated GEMINI.md with its learnings
@jcscottiii jcscottiii requested a review from jrobbins January 3, 2026 21:10
@jcscottiii jcscottiii linked an issue Jan 5, 2026 that may be closed by this pull request
@jcscottiii jcscottiii force-pushed the jcscottiii/email-worker-pt10 branch from b4750c5 to 5451199 Compare January 14, 2026 02:27
@jcscottiii jcscottiii force-pushed the jcscottiii/ui-notifications branch from 97c9792 to 62b7e7d Compare January 14, 2026 02:28
jcscottiii added a commit that referenced this pull request Jan 14, 2026
I had the gemini CLI examine some of its shortcomings while working on
#2152

It updated GEMINI.md with its learnings
github-merge-queue bot pushed a commit that referenced this pull request Jan 14, 2026
I had the gemini CLI examine some of its shortcomings while working on
#2152

It updated GEMINI.md with its learnings
@jcscottiii jcscottiii force-pushed the jcscottiii/email-worker-pt10 branch from 5451199 to 24ed8ce Compare January 14, 2026 20:38
@jcscottiii jcscottiii force-pushed the jcscottiii/ui-notifications branch from 62b7e7d to fb98768 Compare January 14, 2026 20:41
@jcscottiii jcscottiii force-pushed the jcscottiii/email-worker-pt10 branch from 24ed8ce to 507eff2 Compare January 15, 2026 14:26
Base automatically changed from jcscottiii/email-worker-pt10 to main January 15, 2026 15:40
Implements the new "Notification Channels" page, providing users with a centralized location to manage how they receive updates. This feature is a foundational step towards enabling subscriptions and personalized notifications.

Key changes include:
- **New Page Component:** Adds a new page at `/settings/notification-channels`, accessible only to authenticated users.
- **Component Architecture:** The page is composed of a main container and three distinct panel components for each notification type (Email, RSS, Webhook), following a composition-over-inheritance pattern.
- **Base Panel Component:** A new reusable `<webstatus-notification-panel>` was created to ensure a consistent look and feel across all panels and to handle loading states gracefully with skeleton placeholders.
- **Email Channel Display:** The page now fetches and displays the user's email notification channels, which are synced from their verified GitHub emails via the existing `pingUser` flow. A tooltip has been added to inform users of this behavior.
- **Coming Soon Placeholders:** The RSS and Webhook panels are included as placeholders with "Coming soon" messages and disabled "Create" buttons, preparing the UI for future implementation.
- **Sidebar Refactoring:** The main sidebar has been refactored to use a `renderNavItem` helper function for top-level links, improving code consistency. The "Notification Channels" link now appears as a top-level item under a "Settings" section that is only visible to logged-in users.
- **Testing:** Comprehensive unit tests for the new page and all panel components have been added. A new end-to-end (Playwright) test ensures the page functions correctly for both authenticated and unauthenticated users, and includes visual regression snapshots.
@jcscottiii jcscottiii force-pushed the jcscottiii/ui-notifications branch from fb98768 to 840db6c Compare January 15, 2026 15:50
@jcscottiii jcscottiii enabled auto-merge January 15, 2026 15:51
The current sorting of the channels goes by updatedAt and ID. Upon the first commit where we create all of them
in the same transaction, they all have the same updated at. And the second thing is by the ID which is a UUID.

This can still lead to unstable results for the playwright tests.

Now, we sort them.

Also, use a constant enum for the channel type.
@jcscottiii jcscottiii added this pull request to the merge queue Jan 15, 2026
Merged via the queue into main with commit 96aafe2 Jan 15, 2026
8 checks passed
@jcscottiii jcscottiii deleted the jcscottiii/ui-notifications branch January 15, 2026 21:34
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.

[Frontend] Build 'My Notification Channels' Management Page

2 participants