From ecbe33596013416efbcd24cf5bf5a66625ab6b7d Mon Sep 17 00:00:00 2001 From: Pedram Amini Date: Fri, 12 Dec 2025 13:02:46 -0600 Subject: [PATCH] ## CHANGES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Unread messages now show iPhone-style red notification badge ๐Ÿ”ด - Badge overlaps top-right corner of status indicator beautifully ๐Ÿ“ - Removed separate pulsing green dot for cleaner interface โœจ - Unified notification system across all session view modes ๐ŸŽฏ - Red badge provides better visibility than previous green dot ๐Ÿ‘๏ธ - Consistent positioning using absolute CSS for perfect alignment ๐Ÿ“ - Badge appears only on non-active sessions with unread messages ๐Ÿ’ฌ - Smaller 1.5px size creates subtle yet noticeable alert ๐ŸŽช - Updated README to reflect new red badge notification style ๐Ÿ“ - Cleaner visual hierarchy with single indicator per session ๐Ÿงน --- README.md | 2 +- src/renderer/components/SessionList.tsx | 164 +++++++++++++----------- 2 files changed, 87 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 37fc8fad..64c2aa62 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,7 @@ Each session shows a color-coded status indicator: - ๐ŸŸก **Yellow** - Agent is thinking - ๐Ÿ”ด **Red** - No connection with agent - ๐ŸŸ  **Pulsing Orange** - Attempting to establish connection -- ๐ŸŸข **Pulsing Green** - Unread messages (appears next to status dot for non-active sessions) +- ๐Ÿ”ด **Red Badge** - Unread messages (small red dot overlapping top-right of status indicator, iPhone-style) ## Screenshots All these screenshots were captured in the them "Pedurple". For screenshots of other themes, see [THEMES.md](THEMES.md). Also note that these screenshots are probably dated as the project is evolving rapidly. diff --git a/src/renderer/components/SessionList.tsx b/src/renderer/components/SessionList.tsx index 5270c8ce..ec605bac 100644 --- a/src/renderer/components/SessionList.tsx +++ b/src/renderer/components/SessionList.tsx @@ -1468,31 +1468,33 @@ export function SessionList(props: SessionListProps) { AUTO )} - {/* AI Status Indicator */} -
- {/* Unread Message Indicator */} - {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( + {/* AI Status Indicator with Unread Badge */} +
- )} + {/* Unread Notification Badge */} + {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( +
+ )} +
); @@ -1764,31 +1766,33 @@ export function SessionList(props: SessionListProps) { AUTO
)} - {/* AI Status Indicator */} -
- {/* Unread Message Indicator */} - {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( + {/* AI Status Indicator with Unread Badge */} +
- )} + {/* Unread Notification Badge */} + {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( +
+ )} +
); @@ -2014,24 +2018,26 @@ export function SessionList(props: SessionListProps) { AUTO
)} - {/* AI Status Indicator */} -
- {/* Unread Message Indicator */} - {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( + {/* AI Status Indicator with Unread Badge */} +
- )} + {/* Unread Notification Badge */} + {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( +
+ )} +
); @@ -2175,24 +2181,26 @@ export function SessionList(props: SessionListProps) { AUTO
)} - {/* AI Status Indicator */} -
- {/* Unread Message Indicator */} - {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( + {/* AI Status Indicator with Unread Badge */} +
- )} + {/* Unread Notification Badge */} + {activeSessionId !== session.id && session.aiTabs?.some(tab => tab.hasUnread) && ( +
+ )} +
);