From 78dc7d5cb3b543145f2d3f1b95a1362490158330 Mon Sep 17 00:00:00 2001 From: Ricky Stretch Date: Tue, 10 Mar 2026 00:14:50 -0400 Subject: [PATCH] v0.3.8 fixed messages summaries --- .env.example | 2 +- backend/package.json | 2 +- backend/src/routes/groups.js | 11 ++++++++--- build.sh | 2 +- frontend/package.json | 2 +- frontend/src/components/Sidebar.jsx | 9 +++++++-- 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 68fc71c..54d9cbe 100644 --- a/.env.example +++ b/.env.example @@ -7,7 +7,7 @@ TZ=UTC # Copy this file to .env and customize # Image version to run (set by build.sh, or use 'latest') -JAMA_VERSION=0.3.7 +JAMA_VERSION=0.3.8 # Default admin credentials (used on FIRST RUN only) ADMIN_NAME=Admin User diff --git a/backend/package.json b/backend/package.json index c994f05..582d0e4 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "jama-backend", - "version": "0.3.7", + "version": "0.3.8", "description": "TeamChat backend server", "main": "src/index.js", "scripts": { diff --git a/backend/src/routes/groups.js b/backend/src/routes/groups.js index 8b710bc..5e099c8 100644 --- a/backend/src/routes/groups.js +++ b/backend/src/routes/groups.js @@ -51,7 +51,8 @@ router.get('/', authMiddleware, (req, res) => { SELECT g.*, (SELECT COUNT(*) FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0) as message_count, (SELECT m.content FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message, - (SELECT m.created_at FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message_at + (SELECT m.created_at FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message_at, + (SELECT m.user_id FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message_user_id FROM groups g WHERE g.type = 'public' ORDER BY g.is_default DESC, g.name ASC @@ -63,7 +64,8 @@ router.get('/', authMiddleware, (req, res) => { u.name as owner_name, (SELECT COUNT(*) FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0) as message_count, (SELECT m.content FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message, - (SELECT m.created_at FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message_at + (SELECT m.created_at FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message_at, + (SELECT m.user_id FROM messages m WHERE m.group_id = g.id AND m.is_deleted = 0 ORDER BY m.created_at DESC LIMIT 1) as last_message_user_id FROM groups g JOIN group_members gm ON g.id = gm.group_id AND gm.user_id = ? LEFT JOIN users u ON g.owner_id = u.id @@ -88,7 +90,10 @@ router.get('/', authMiddleware, (req, res) => { const otherUserId = g.direct_peer1_id === userId ? g.direct_peer2_id : g.direct_peer1_id; if (otherUserId) { const other = db.prepare('SELECT display_name, name FROM users WHERE id = ?').get(otherUserId); - if (other) g.name = other.display_name || other.name; + if (other) { + g.peer_real_name = other.name; // always the real name for sidebar title + g.name = other.display_name || other.name; // display name for chat header + } } } return g; diff --git a/build.sh b/build.sh index 6f8ec71..f5452ac 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ # ───────────────────────────────────────────────────────────── set -euo pipefail -VERSION="${1:-0.3.7}" +VERSION="${1:-0.3.8}" ACTION="${2:-}" REGISTRY="${REGISTRY:-}" IMAGE_NAME="jama" diff --git a/frontend/package.json b/frontend/package.json index 45fc143..fecb683 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "jama-frontend", - "version": "0.3.7", + "version": "0.3.8", "private": true, "scripts": { "dev": "vite", diff --git a/frontend/src/components/Sidebar.jsx b/frontend/src/components/Sidebar.jsx index bcbf038..37f4714 100644 --- a/frontend/src/components/Sidebar.jsx +++ b/frontend/src/components/Sidebar.jsx @@ -99,14 +99,19 @@ export default function Sidebar({ groups, activeGroupId, onSelectGroup, notifica
- {group.name} + {group.is_direct && group.peer_real_name ? group.peer_real_name : group.name} {group.last_message_at && ( {formatTime(group.last_message_at)} )}
- {(group.last_message || '').replace(/@\[([^\]]+)\]/g, '@$1') || (group.is_readonly ? '📢 Read-only' : 'No messages yet')} +{(() => { + const preview = (group.last_message || '').replace(/@\[([^\]]+)\]/g, '@$1'); + if (!preview) return group.is_readonly ? '📢 Read-only' : 'No messages yet'; + const isOwn = group.last_message_user_id && user && group.last_message_user_id === user.id; + return isOwn ? <>You: {preview} : preview; + })()} {notifs > 0 && {notifs}} {hasUnread && notifs === 0 && {unreadCount}}