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 )} - {!isOwn && prevSameUser &&
} + {!isOwn && prevSameUser &&
}
{!isOwn && !prevSameUser && ( diff --git a/frontend/src/index.css b/frontend/src/index.css index a1d8e2a..362d1bb 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -391,3 +391,11 @@ a { color: inherit; text-decoration: none; } color: #ffffff; background: rgba(255,255,255,0.25); } + +[data-theme="dark"] .reaction-btn { + background: var(--surface-variant); + border-color: var(--border); +} +[data-theme="dark"] .reaction-btn:hover { + background: var(--primary-light); +}