Skip to content

Notification system: tab-linked notifications with fade overlay and F7/F8 navigation #53

Description

@JoshuaRowePhantom

Summary

Add a notification system that allows any running code (scheduled tools, agent sessions,
background services) to post tab-linked notifications. A notification associates a tab with
a reason string. The UI shows an auto-fading overlay on new notifications and a bell toggle
button for explicit browsing.

Design

See docs/design/notifications.md.

Scope

Data model

  • INotificationService.Notify(TabDescriptor tab, string? reason) — null reason clears the tab's notification
  • One notification retained per tab (newest replaces oldest, marks unread)
  • Snoozed tabs: auto-read, never trigger overlay popup; persisted in user-computer-profile

Overlay UI

  • Anchored below the toggle button (top-right header)
  • On new non-snoozed notification: appears at full opacity, fades to transparent over ~1s after 1.5s delay (unless mouse hovers)
  • Toggle button: bell icon with unread count badge; opens overlay at full opacity indefinitely on click
  • IsHitTestVisible = false when fully transparent

Notification row

  • Tab title + reason text + relative timestamp
  • Unread indicator (bold / colored dot)
  • zzz button: snooze/unsnooze the tab
  • Clicking row: navigate to tab, mark read, close overlay

Keyboard navigation

  • F8: navigate to next (newer) unread notification; mark read
  • F7: navigate to previous (older) unread notification; mark read
  • Both keys reopen closed tabs using TabDescriptor

Tab navigation on click / F7/F8

  • Tab open: MainWindowViewModel.OpenTabAsync
  • Tab closed: reopen via TabDescriptor with original disposition

Acceptance

  • Any in-process code can post/clear a notification for any tab via INotificationService
  • New non-snoozed notification causes overlay to auto-show and auto-fade
  • F7/F8 cycle through notifications navigating to each tab
  • Snoozed tabs never trigger the overlay; their notifications are auto-read
  • Null reason removes the notification for that tab

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestverifiedIssue has been verified

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions