From b7b49794070b64b1bfeb38cbaec7a09fedceb3bb Mon Sep 17 00:00:00 2001 From: spencrmartin Date: Mon, 17 Nov 2025 12:52:30 -0500 Subject: [PATCH] feat: add distinct visual styling for Matrix DM sessions in chat history MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add green color scheme for Matrix DM sessions (border, background, icons, labels) - Add purple color scheme for collaborative Matrix sessions - Keep blue color scheme for regular Matrix group chats - Add MessageCircle icon specifically for DM sessions - Update labels to be more descriptive: 'Direct Message', 'Collaborative', 'Group Chat' - Maintain existing functionality while improving visual distinction Matrix session types now have clear visual hierarchy: 🟢 Green: Direct Messages (1:1 chats with full Goose integration) 🟣 Purple: Collaborative Sessions (multi-user with Goose participation) 🔵 Blue: Group Chats (regular Matrix rooms) ⚪ Default: Regular Goose sessions --- .../components/sessions/SessionListView.tsx | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/ui/desktop/src/components/sessions/SessionListView.tsx b/ui/desktop/src/components/sessions/SessionListView.tsx index 24d781befb..a0d07f3622 100644 --- a/ui/desktop/src/components/sessions/SessionListView.tsx +++ b/ui/desktop/src/components/sessions/SessionListView.tsx @@ -9,6 +9,7 @@ import { Trash2, Users, Hash, + MessageCircle, } from 'lucide-react'; import { Card } from '../ui/card'; import { Button } from '../ui/button'; @@ -433,13 +434,27 @@ const SessionListView: React.FC = React.memo( // Get session display info const displayInfo = unifiedSessionService.getSessionDisplayInfo(session); const isMatrix = displayInfo.type === 'matrix' || displayInfo.type === 'collaborative'; + const isMatrixDM = isMatrix && session.extension_data?.matrix?.isDirectMessage; + const isCollaborative = displayInfo.type === 'collaborative'; + + // Determine styling based on session type + let borderStyle = ''; + let bgStyle = ''; + if (isMatrixDM) { + borderStyle = 'border-l-4 border-l-green-500'; + bgStyle = 'bg-green-50/30 dark:bg-green-950/20'; + } else if (isCollaborative) { + borderStyle = 'border-l-4 border-l-purple-500'; + bgStyle = 'bg-purple-50/30 dark:bg-purple-950/20'; + } else if (isMatrix) { + borderStyle = 'border-l-4 border-l-blue-500'; + bgStyle = 'bg-blue-50/30 dark:bg-blue-950/20'; + } return ( setSessionRefs(session.id, el)} >
@@ -466,10 +481,12 @@ const SessionListView: React.FC = React.memo( {isMatrix && (
- {displayInfo.type === 'collaborative' ? ( - + {isMatrixDM ? ( + + ) : displayInfo.type === 'collaborative' ? ( + ) : ( - + )}
)} @@ -505,8 +522,14 @@ const SessionListView: React.FC = React.memo( )}
{isMatrix && ( -
- {displayInfo.type === 'collaborative' ? 'Collaborative' : 'Matrix'} +
+ {isMatrixDM ? 'Direct Message' : isCollaborative ? 'Collaborative' : 'Group Chat'}
)}