diff --git a/.env.example b/.env.example index dfb50c0..57c966e 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.6.6 +JAMA_VERSION=0.6.7 # Default admin credentials (used on FIRST RUN only) ADMIN_NAME=Admin User diff --git a/backend/package.json b/backend/package.json index 57c1069..b9b2d20 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "jama-backend", - "version": "0.6.6", + "version": "0.6.7", "description": "TeamChat backend server", "main": "src/index.js", "scripts": { diff --git a/build.sh b/build.sh index e7fb74e..6adb43d 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ # ───────────────────────────────────────────────────────────── set -euo pipefail -VERSION="${1:-0.6.6}" +VERSION="${1:-0.6.7}" ACTION="${2:-}" REGISTRY="${REGISTRY:-}" IMAGE_NAME="jama" diff --git a/frontend/package.json b/frontend/package.json index e228d01..c688b3f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "jama-frontend", - "version": "0.6.6", + "version": "0.6.7", "private": true, "scripts": { "dev": "vite", diff --git a/frontend/src/components/GroupInfoModal.jsx b/frontend/src/components/GroupInfoModal.jsx index 665e468..15b8820 100644 --- a/frontend/src/components/GroupInfoModal.jsx +++ b/frontend/src/components/GroupInfoModal.jsx @@ -13,6 +13,7 @@ export default function GroupInfoModal({ group, onClose, onUpdated, onBack }) { const [addSearch, setAddSearch] = useState(''); const [addResults, setAddResults] = useState([]); const [customName, setCustomName] = useState(group.owner_name_original ? group.name : ''); + const [savedCustomName, setSavedCustomName] = useState(group.owner_name_original ? group.name : ''); const [savingCustom, setSavingCustom] = useState(false); const isDirect = !!group.is_direct; @@ -30,8 +31,10 @@ export default function GroupInfoModal({ group, onClose, onUpdated, onBack }) { const handleCustomName = async () => { setSavingCustom(true); try { - await api.setCustomGroupName(group.id, customName.trim()); - toast(customName.trim() ? 'Custom name saved' : 'Custom name removed', 'success'); + const saved = customName.trim(); + await api.setCustomGroupName(group.id, saved); + setSavedCustomName(saved); + toast(saved ? 'Custom name saved' : 'Custom name removed', 'success'); onUpdated(); } catch (e) { toast(e.message, 'error'); @@ -165,9 +168,17 @@ export default function GroupInfoModal({ group, onClose, onUpdated, onBack }) { placeholder={group.owner_name_original || group.name} onKeyDown={e => e.key === 'Enter' && handleCustomName()} /> - + {customName.trim() !== savedCustomName ? ( + + ) : savedCustomName ? ( + + ) : null} {group.owner_name_original && (