diff --git a/.env.example b/.env.example
index c45256d..4112bf0 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.4
+JAMA_VERSION=0.3.5
# Default admin credentials (used on FIRST RUN only)
ADMIN_NAME=Admin User
diff --git a/backend/package.json b/backend/package.json
index 9142f85..671124c 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "jama-backend",
- "version": "0.3.4",
+ "version": "0.3.5",
"description": "TeamChat backend server",
"main": "src/index.js",
"scripts": {
diff --git a/build.sh b/build.sh
index bd2ad72..671727a 100644
--- a/build.sh
+++ b/build.sh
@@ -13,7 +13,7 @@
# ─────────────────────────────────────────────────────────────
set -euo pipefail
-VERSION="${1:-0.3.4}"
+VERSION="${1:-0.3.5}"
ACTION="${2:-}"
REGISTRY="${REGISTRY:-}"
IMAGE_NAME="jama"
diff --git a/frontend/package.json b/frontend/package.json
index 5cb538b..96ef78a 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "jama-frontend",
- "version": "0.3.4",
+ "version": "0.3.5",
"private": true,
"scripts": {
"dev": "vite",
diff --git a/frontend/src/components/Message.css b/frontend/src/components/Message.css
index 6a498f8..2a2fdfd 100644
--- a/frontend/src/components/Message.css
+++ b/frontend/src/components/Message.css
@@ -54,15 +54,17 @@
.message-wrapper {
display: flex;
- align-items: flex-end;
+ align-items: flex-start;
gap: 8px;
padding: 1px 0;
position: relative;
}
.message-wrapper.own { flex-direction: row-reverse; }
-.message-wrapper.grouped { margin-top: 1px; }
-.message-wrapper:not(.grouped) { margin-top: 8px; }
+.message-wrapper.grouped { margin-top: 2px; }
+.message-wrapper:not(.grouped) { margin-top: 10px; }
+
+.avatar-spacer { width: 32px; flex-shrink: 0; }
.msg-avatar { flex-shrink: 0; }
@@ -102,7 +104,7 @@
/* Bubble row */
.msg-bubble-wrap {
display: flex;
- align-items: flex-end;
+ align-items: flex-start;
gap: 6px;
}
@@ -254,7 +256,7 @@
gap: 3px;
padding: 3px 8px;
border-radius: 12px;
- background: white;
+ background: var(--surface);
border: 1px solid var(--border);
font-size: 14px;
cursor: pointer;
diff --git a/frontend/src/components/Message.jsx b/frontend/src/components/Message.jsx
index aea8290..944ef2d 100644
--- a/frontend/src/components/Message.jsx
+++ b/frontend/src/components/Message.jsx
@@ -49,9 +49,9 @@ export default function Message({ message: msg, prevMessage, currentUser, onRepl
const showDateSep = !prevMessage ||
parseTS(msg.created_at).toDateString() !== parseTS(prevMessage.created_at).toDateString();
- const prevSameUser = prevMessage && prevMessage.user_id === msg.user_id &&
- prevMessage.type !== 'system' && msg.type !== 'system' &&
- parseTS(msg.created_at) - parseTS(prevMessage.created_at) < 60000;
+ const prevSameUser = !showDateSep && prevMessage &&
+ prevMessage.user_id === msg.user_id &&
+ prevMessage.type !== 'system' && msg.type !== 'system';
const canDelete = !msg.is_deleted && (
msg.user_id === currentUser.id ||
@@ -147,7 +147,7 @@ export default function Message({ message: msg, prevMessage, currentUser, onRepl