feat(notifications): dock bounce, taskbar flash, and unread badge count#2534
Open
Pulkit7070 wants to merge 7 commits into
Open
feat(notifications): dock bounce, taskbar flash, and unread badge count#2534Pulkit7070 wants to merge 7 commits into
Pulkit7070 wants to merge 7 commits into
Conversation
When a needs_input or ready_to_merge notification arrives and the app window is not focused: - macOS: dock icon bounces once (informational) - Windows: taskbar flashes until the window is re-focused (deduped so rapid arrivals do not stack listeners) - Linux: flashFrame for taskbar + app.setBadgeCount for Unity/KDE launchers Badge count (unread notification count) is kept in sync on all platforms: - macOS: app.dock.setBadge - Windows: setOverlayIcon with a red dot - Linux: app.setBadgeCount UI: NotificationCenter panel scaled to w-[320px]; needs_input indicator replaced with a minimal amber dot (no icon); ready_to_merge keeps the GitPullRequest icon; error state clears on next dropdown open. BoardWelcome empty state redesigned: 3-step inset card with flow legend, no em dashes, cleaner typography. Dev: __testNotif() helper in DEV builds injects a fake notification into the React Query cache and triggers devBounce (bypasses isFocused guard) after a 3-second delay so the dock/taskbar signal is testable from the DevTools console. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the 3-step card and flow legend entirely. Welcome screen is now just the AO logo (80px), heading, one-line subtitle, and a minimal outlined button -- no box, no numbers, no icon, no fill color.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
informational) when aneeds_inputorready_to_mergenotification arrives and the app is not focusedflashFramefor taskbar attention +app.setBadgeCountfor Unity/KDE numeric badgedock.setBadge, Windows overlay icon red dot, LinuxsetBadgeCountneeds_inputuses a minimal amber dot indicator;ready_to_mergekeeps theGitPullRequesticon; sticky error state clears on dropdown reopen; panel width tightened to 320pxHow it works
Real notifications arrive via SSE (
notification_createdevent) and are merged into the React Query cache. The existingNotificationCentercomponent syncs badge count via auseEffectonunreadCount. The main process handlers (notifications:show,notifications:setBadge) are platform-branched with guards for null window, NaN/negative counts, and rapid-call dedup.Testing in dev
Test plan
__testNotif("needs_input")— dock bounces once, bell shows countflashFramefires;app.setBadgeCountcallednpx vitest run src/renderer/lib/notifications.test.ts