Skip to content

Notification Feed & Action Center #216

@undead2146

Description

@undead2146

1. User Story

As a player,
I want to access a history of notifications via a button in the title bar,
so that I can review messages I might have missed and find actionable items.

As a player,
I want to perform actions (Accept/Deny) directly from the notification feed,
so that I can quickly respond to requests without navigating away from my current context.


2. Description

Currently, the GenHub notification system (INotificationService) provides transient "toast" notifications that disappear after a set time. This creates a problem where users may miss important information or actionable requests if they step away or are focused elsewhere.

This feature introduces a persistent Notification Feed accessible via a new bell icon in the Main Window title bar (adjacent to the existing Update indicator).

Architectural Context:

  • Pillars Affected: Core.Services (NotificationService), UI.Shell (MainViewModel/View).
  • Pipeline Tier: Tier 1: Core/Shell.
  • Target Logic:
    • Extend NotificationService to maintain an in-memory history of NotificationMessage objects.
    • Implement a toggleable Popup or Flyout in MainView bound to the feed.
    • Enhance NotificationMessage to support bi-directional actions (Accept/Deny callbacks).

3. Acceptance Criteria

  • Criterion 1: A "Bell" icon button is added to the MainView title bar (right side, near window controls/updates).
  • Criterion 2: Clicking the Bell toggles a dropdown/flyout panel displaying the list of past notifications.
  • Criterion 3: The list supports "Actionable" notifications that display "Accept" and "Deny" buttons.
  • Criterion 4: Clicking an action button triggers the associated callback and (optionally) dismisses/archives the notification.
  • Criterion 5: A "Clear All" button is available to empty the history.
  • Validation:
    • Unit tests for NotificationManagerViewModel handling history addition/removal.
    • Manual verification that actions trigger the expected log/logic.

4. Technical Notes

  • Models/Interfaces:
    • Refactor INotificationService to expose a ReadOnlyObservableCollection<NotificationMessage> History.
    • Update NotificationMessage record (or create a wrapper NotificationFeedItemViewModel) to handle ICommand binding for actions.
  • C# / MVVM Requirements:
    • Create NotificationFeedViewModel to back the flyout view.
    • Use CommunityToolkit.Mvvm for relay commands.
    • Ensure the feed does not auto-dismiss items, unlike the toasts.
  • UI:
    • Use Avalonia Popup or custom overlay for the feed.
    • Style consistent with NotificationToastView (Dark/Glassmorphism).

5. References & Links

Metadata

Metadata

Assignees

No one assigned

    Labels

    GUIFor graphical user interface

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions