id: NL-PLAN-5E808493
type: plan
title: Deliver notification surfaces and lifecycle
spec: NL-SPEC-C49F734E
status: approved
Deliver notification surfaces and lifecycle
Notification identity
Introduce ID-keyed replacement preserving read state and row order.
Cover it through the service self-test.
Toast lifecycle
Track active toast snapshots separately from history.
Define eligibility, expiry, transient handling, critical behavior, reference cleanup, and dismissal.
Expose active toasts additively through state and IPC.
Shared card
Provide full and compact modes with icon resolution, images, dismissal, actions, and advertised reply.
Popup surface
Render grouped, scrollable full cards with lowercase notification controls.
Remove debug labels, drag handling, and masked action rails.
Toast surface
Render compact cards in a non-focus-stealing primary-screen overlay.
Preserve independent lifetimes across model rebuilds and sticky critical behavior.
Compositor route
Bind the reserved shortcut to toast dismissal and verify the IPC target end to end.
Service cleanup
Remove drag IPC and telemetry only after proving no live consumers remain.
Verification
Run isolated and real-notification checks covering replacement, transient handling, expiry, DND, critical persistence, actions, images, scrolling, and shortcuts.
Verify both card modes and inspect logs after cache-clean restarts.
---
id: NL-PLAN-5E808493
type: plan
title: Deliver notification surfaces and lifecycle
spec: NL-SPEC-C49F734E
status: approved
---
# Deliver notification surfaces and lifecycle
1. **Notification identity**
Introduce ID-keyed replacement preserving read state and row order.
Cover it through the service self-test.
2. **Toast lifecycle**
Track active toast snapshots separately from history.
Define eligibility, expiry, transient handling, critical behavior, reference cleanup, and dismissal.
Expose active toasts additively through state and IPC.
3. **Shared card**
Provide full and compact modes with icon resolution, images, dismissal, actions, and advertised reply.
4. **Popup surface**
Render grouped, scrollable full cards with lowercase notification controls.
Remove debug labels, drag handling, and masked action rails.
5. **Toast surface**
Render compact cards in a non-focus-stealing primary-screen overlay.
Preserve independent lifetimes across model rebuilds and sticky critical behavior.
6. **Compositor route**
Bind the reserved shortcut to toast dismissal and verify the IPC target end to end.
7. **Service cleanup**
Remove drag IPC and telemetry only after proving no live consumers remain.
8. **Verification**
Run isolated and real-notification checks covering replacement, transient handling, expiry, DND, critical persistence, actions, images, scrolling, and shortcuts.
Verify both card modes and inspect logs after cache-clean restarts.