From 8116b307f74d45025ac71f91d8fa5324cf683cc7 Mon Sep 17 00:00:00 2001 From: Ricky Stretch Date: Sun, 22 Mar 2026 14:30:06 -0400 Subject: [PATCH] v0.11.20 UI updates --- backend/package.json | 2 +- build.sh | 2 +- frontend/package.json | 2 +- frontend/src/components/ChatWindow.jsx | 16 +++++++++++++++- frontend/src/components/Sidebar.jsx | 4 ++-- frontend/src/pages/Chat.jsx | 2 ++ 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/backend/package.json b/backend/package.json index 68bbcda..1c168e0 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "jama-backend", - "version": "0.11.19", + "version": "0.11.20", "description": "TeamChat backend server", "main": "src/index.js", "scripts": { diff --git a/build.sh b/build.sh index cbb52f6..15c8ddb 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ # ───────────────────────────────────────────────────────────── set -euo pipefail -VERSION="${1:-0.11.19}" +VERSION="${1:-0.11.20}" ACTION="${2:-}" REGISTRY="${REGISTRY:-}" IMAGE_NAME="jama" diff --git a/frontend/package.json b/frontend/package.json index ef9253c..4f13189 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "jama-frontend", - "version": "0.11.19", + "version": "0.11.20", "private": true, "scripts": { "dev": "vite", diff --git a/frontend/src/components/ChatWindow.jsx b/frontend/src/components/ChatWindow.jsx index ea947b1..340ca0d 100644 --- a/frontend/src/components/ChatWindow.jsx +++ b/frontend/src/components/ChatWindow.jsx @@ -8,6 +8,12 @@ import { useSocket } from '../contexts/SocketContext.jsx'; import './ChatWindow.css'; import GroupInfoModal from './GroupInfoModal.jsx'; +// Must match Avatar.jsx and Sidebar.jsx exactly so header colours are consistent with message avatars +const AVATAR_COLORS = ['#1a73e8','#ea4335','#34a853','#fa7b17','#a142f4','#00897b','#e91e8c','#0097a7']; +function nameToColor(name) { + return AVATAR_COLORS[(name || '').charCodeAt(0) % AVATAR_COLORS.length]; +} + export default function ChatWindow({ group, onBack, onGroupUpdated, onDirectMessage, onMessageDeleted, onlineUserIds = new Set() }) { const { user: currentUser } = useAuth(); const { socket } = useSocket(); @@ -237,13 +243,21 @@ export default function ChatWindow({ group, onBack, onGroupUpdated, onDirectMess {group.name} {isOnline && } + ) : isDirect && !group.is_managed ? ( + // No custom avatar — use same per-user colour as Avatar.jsx and Sidebar.jsx +
+
+ {(group.peer_real_name || group.name)[0]?.toUpperCase()} +
+ {isOnline && } +
) : group.is_managed ? (
{group.is_multi_group ? 'MG' : 'UG'}
) : (
- {group.type === 'public' ? '#' : isDirect ? (group.peer_real_name || group.name)[0]?.toUpperCase() : group.name[0]?.toUpperCase()} + {group.type === 'public' ? '#' : group.name[0]?.toUpperCase()}
)} diff --git a/frontend/src/components/Sidebar.jsx b/frontend/src/components/Sidebar.jsx index 6ed950b..fd88aea 100644 --- a/frontend/src/components/Sidebar.jsx +++ b/frontend/src/components/Sidebar.jsx @@ -139,7 +139,7 @@ export default function Sidebar({ groups, activeGroupId, onSelectGroup, notifica return (
- {!isMobile && !groupMessagesMode && ( + {!isMobile && (
- {isMobile && !groupMessagesMode && ( + {isMobile && (
); }