Skip to content

[Feature] Replace in-app Toast notifications with native OS notifications #332

@Astro-Han

Description

@Astro-Han

What task are you trying to do?

I want to receive notifications for permission requests, questions from agents, and session status updates without having my UI blocked by in-app Toast popups.

What do you do today?

Currently, notifications appear as Toast popups in the bottom-right corner of the app. These popups:

  • Block the send/submit buttons
  • Create visual noise when multiple notifications stack
  • Mix important (permission requests) with less important (status updates) notifications

What would a good result look like?

Replace in-app Toast notifications with native OS notifications (macOS Notification Center / Windows Notification Area) + Dock/taskbar flash feedback:

  • System notifications fire regardless of window focus
  • Dock icon bounces once on macOS
  • Taskbar button flashes once on Windows
  • Click notification → bring window to front + navigate to session
  • Fallback to Toast if OS notification permission is denied

Which audience does this matter to most?

Both

Extra context

Design document: docs/superpowers/specs/2026-04-29-notification-system-redesign.md

Key changes:

  1. Remove focus check in packages/app/src/entry.tsx and packages/desktop-electron/src/renderer/index.tsx
  2. Remove notification-related Toast call in packages/app/src/pages/layout.tsx (line 506)
  3. Add flashFrame IPC to preload bridge (packages/desktop-electron/src/preload/index.ts and types.ts)
  4. Add flash-frame IPC handler in packages/desktop-electron/src/main/ipc.ts
  5. Implement platform-specific flash behavior:
    • macOS: app.dock.bounce()
    • Windows/Linux: win.flashFrame(true) + 1-second timer to win.flashFrame(false)

Edge cases addressed:

  • OS notification permission denied → Fallback to Toast
  • Multiple rapid notifications → Existing 5-second cooldown
  • Multi-window scenario → BrowserWindow.fromWebContents(event.sender)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium priorityappApplication behavior and product flowsenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions