From ee4bb4b86d1a10f6af1752b137130470d8e1961c Mon Sep 17 00:00:00 2001 From: Ricky Stretch Date: Mon, 16 Mar 2026 19:00:08 -0400 Subject: [PATCH] v0.9.42 notification fix --- .env.example | 2 +- backend/package.json | 2 +- backend/src/routes/usergroups.js | 10 ++++++++-- build.sh | 2 +- frontend/package.json | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index b9cb7da..1365661 100644 --- a/.env.example +++ b/.env.example @@ -10,7 +10,7 @@ PROJECT_NAME=jama # Image version to run (set by build.sh, or use 'latest') -JAMA_VERSION=0.9.41 +JAMA_VERSION=0.9.42 # App port — the host port Docker maps to the container PORT=3000 diff --git a/backend/package.json b/backend/package.json index 6de10c1..8ae2240 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "jama-backend", - "version": "0.9.41", + "version": "0.9.42", "description": "TeamChat backend server", "main": "src/index.js", "scripts": { diff --git a/backend/src/routes/usergroups.js b/backend/src/routes/usergroups.js index 6c1bf75..2d2b148 100644 --- a/backend/src/routes/usergroups.js +++ b/backend/src/routes/usergroups.js @@ -127,7 +127,8 @@ router.patch('/multigroup/:id', authMiddleware, teamManagerMiddleware, (req, res for (const ugId of newGroupIds) { if (!currentGroupIds.has(ugId)) { db.prepare("INSERT OR IGNORE INTO multi_group_dm_members (multi_group_dm_id, user_group_id) VALUES (?, ?)").run(mg.id, ugId); - for (const uid of getUserIdsForGroup(db, ugId)) addUser(db, mg.dm_group_id, uid, req.user.id); + // Add users silently — no per-user notifications in multi-group DMs + for (const uid of getUserIdsForGroup(db, ugId)) addUserSilent(db, mg.dm_group_id, uid); const ug = db.prepare('SELECT name FROM user_groups WHERE id = ?').get(ugId); if (ug) postSysMsg(db, mg.dm_group_id, req.user.id, `Group "${ug.name}" has been added to this conversation.`); } @@ -135,9 +136,14 @@ router.patch('/multigroup/:id', authMiddleware, teamManagerMiddleware, (req, res for (const ugId of currentGroupIds) { if (!newGroupIds.has(ugId)) { db.prepare('DELETE FROM multi_group_dm_members WHERE multi_group_dm_id = ? AND user_group_id = ?').run(mg.id, ugId); + // Remove users silently — no per-user notifications in multi-group DMs for (const uid of getUserIdsForGroup(db, ugId)) { const stillIn = db.prepare('SELECT 1 FROM multi_group_dm_members mgdm JOIN user_group_members ugm ON ugm.user_group_id = mgdm.user_group_id WHERE mgdm.multi_group_dm_id = ? AND ugm.user_id = ?').get(mg.id, uid); - if (!stillIn) removeUser(db, mg.dm_group_id, uid, req.user.id); + if (!stillIn) { + db.prepare('DELETE FROM group_members WHERE group_id = ? AND user_id = ?').run(mg.dm_group_id, uid); + io.in(`user:${uid}`).socketsLeave(`group:${mg.dm_group_id}`); + io.to(`user:${uid}`).emit('group:deleted', { groupId: mg.dm_group_id }); + } } const ug = db.prepare('SELECT name FROM user_groups WHERE id = ?').get(ugId); if (ug) postSysMsg(db, mg.dm_group_id, req.user.id, `Group "${ug.name}" has been removed from this conversation.`); diff --git a/build.sh b/build.sh index e085e27..7a96382 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ # ───────────────────────────────────────────────────────────── set -euo pipefail -VERSION="${1:-0.9.41}" +VERSION="${1:-0.9.42}" ACTION="${2:-}" REGISTRY="${REGISTRY:-}" IMAGE_NAME="jama" diff --git a/frontend/package.json b/frontend/package.json index b9d0a43..400cfe0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "jama-frontend", - "version": "0.9.41", + "version": "0.9.42", "private": true, "scripts": { "dev": "vite",