Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

quickshell/nuguland/.system/specs/NL-SPEC-C49F734E-notification-surfaces-and-lifecycle/index.md

Raw
Rendered preview

id: NL-SPEC-C49F734E type: spec title: Notification surfaces and lifecycle

Notification surfaces and lifecycle

Outcome

Notifications form one coherent system across a bar widget, persistent popup history, and transient toasts.

Behavior

  • The widget exposes unread or active state without rendering a card.
  • The popup renders full cards grouped by application.
  • Toasts render compact cards on the primary screen when notifications arrive.
  • Reusing a protocol ID updates its history row and visible toast without duplication or reordering.
  • Transient notifications may appear as toasts but never enter history.
  • Invoking an action closes a non-resident notification; resident notifications remain.
  • Dismissing a toast preserves history; closing a card removes that notification.
  • clear all removes history and visible toasts.
  • dnd immediately removes and suppresses low and normal toasts.
  • Critical toasts bypass dnd and remain until dismissed.
  • SUPER+ESC dismisses every visible toast, including critical toasts, without deleting history.
  • Positive expiry uses the supplied duration, unspecified expiry uses five seconds, and zero is sticky.

Rendering

  • Full cards show the resolved application icon, application name, relative time, summary, wrapped body, optional image, and server actions.
  • Compact cards show the resolved icon, summary, urgency, and applicable progress or lifetime state.
  • Named icons use theme lookup; image paths and URLs render as images.
  • Critical urgency is destructive, normal urgency is accented, and low urgency is subdued.
  • Full cards expose close, explicit copy, optional progress, and inline reply only when advertised.
  • User-facing labels are lowercase.
  • Drag-to-dismiss, debug metadata, cryptic count pills, and unused telemetry are absent.

Contracts and safety

  • Notification state remains additive and exposes active toast rows separately from history.
  • Copying body text requires explicit user action.
  • Native notification references are released when neither history nor a toast needs them.
  • Destructive history clearing is button-only and has no implicit keyboard route.

Acceptance

  • Isolated checks cover replacement, read preservation, dnd, critical bypass, sticky timeout, transient exclusion, and toast dismissal.
  • Real notifications verify icons, wrapping, images, actions, replacement, expiry, critical persistence, and dnd.
  • Screenshots confirm full and compact layouts and lowercase labels.
  • Popup history scrolls, the shortcut dismisses toasts end to end, and runtime logs contain no QML errors.
---
id: NL-SPEC-C49F734E
type: spec
title: Notification surfaces and lifecycle
---

# Notification surfaces and lifecycle

## Outcome

Notifications form one coherent system across a bar widget, persistent popup history, and transient toasts.

## Behavior

- The widget exposes unread or active state without rendering a card.
- The popup renders full cards grouped by application.
- Toasts render compact cards on the primary screen when notifications arrive.
- Reusing a protocol ID updates its history row and visible toast without duplication or reordering.
- Transient notifications may appear as toasts but never enter history.
- Invoking an action closes a non-resident notification; resident notifications remain.
- Dismissing a toast preserves history; closing a card removes that notification.
- `clear all` removes history and visible toasts.
- `dnd` immediately removes and suppresses low and normal toasts.
- Critical toasts bypass `dnd` and remain until dismissed.
- `SUPER+ESC` dismisses every visible toast, including critical toasts, without deleting history.
- Positive expiry uses the supplied duration, unspecified expiry uses five seconds, and zero is sticky.

## Rendering

- Full cards show the resolved application icon, application name, relative time, summary, wrapped body, optional image, and server actions.
- Compact cards show the resolved icon, summary, urgency, and applicable progress or lifetime state.
- Named icons use theme lookup; image paths and URLs render as images.
- Critical urgency is destructive, normal urgency is accented, and low urgency is subdued.
- Full cards expose close, explicit copy, optional progress, and inline reply only when advertised.
- User-facing labels are lowercase.
- Drag-to-dismiss, debug metadata, cryptic count pills, and unused telemetry are absent.

## Contracts and safety

- Notification state remains additive and exposes active toast rows separately from history.
- Copying body text requires explicit user action.
- Native notification references are released when neither history nor a toast needs them.
- Destructive history clearing is button-only and has no implicit keyboard route.

## Acceptance

- Isolated checks cover replacement, read preservation, `dnd`, critical bypass, sticky timeout, transient exclusion, and toast dismissal.
- Real notifications verify icons, wrapping, images, actions, replacement, expiry, critical persistence, and `dnd`.
- Screenshots confirm full and compact layouts and lowercase labels.
- Popup history scrolls, the shortcut dismisses toasts end to end, and runtime logs contain no QML errors.