diff --git a/backend/package.json b/backend/package.json index ad85d71..2fd35ab 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "jama-backend", - "version": "0.10.9", + "version": "0.11.0", "description": "TeamChat backend server", "main": "src/index.js", "scripts": { diff --git a/build.sh b/build.sh index f0cfba2..46df09d 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ # ───────────────────────────────────────────────────────────── set -euo pipefail -VERSION="${1:-0.10.9}" +VERSION="${1:-0.11.0}" ACTION="${2:-}" REGISTRY="${REGISTRY:-}" IMAGE_NAME="jama" diff --git a/frontend/package.json b/frontend/package.json index 65e58ce..aebd453 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "jama-frontend", - "version": "0.10.9", + "version": "0.11.0", "private": true, "scripts": { "dev": "vite", diff --git a/frontend/src/pages/Chat.jsx b/frontend/src/pages/Chat.jsx index 4940ed1..b008857 100644 --- a/frontend/src/pages/Chat.jsx +++ b/frontend/src/pages/Chat.jsx @@ -354,6 +354,8 @@ export default function Chat() { {modal === 'profile' && setModal(null)} />} {modal === 'settings' && setModal(null)} onFeaturesChanged={setFeatures} />} {modal === 'branding' && setModal(null)} />} + {modal === 'help' && setModal(null)} dismissed={helpDismissed} />} + {modal === 'about' && setModal(null)} />} ); } @@ -379,6 +381,8 @@ export default function Chat() { {modal === 'profile' && setModal(null)} />} {modal === 'settings' && setModal(null)} onFeaturesChanged={setFeatures} />} {modal === 'branding' && setModal(null)} />} + {modal === 'help' && setModal(null)} dismissed={helpDismissed} />} + {modal === 'about' && setModal(null)} />} ); } diff --git a/frontend/src/pages/GroupManagerPage.jsx b/frontend/src/pages/GroupManagerPage.jsx index 6c58768..b6f82ec 100644 --- a/frontend/src/pages/GroupManagerPage.jsx +++ b/frontend/src/pages/GroupManagerPage.jsx @@ -508,7 +508,7 @@ function U2URestrictionsTab({ allUserGroups, isMobile = false }) { } // ── Main page ───────────────────────────────────────────────────────────────── -const SIDEBAR_W = 260; +const SIDEBAR_W = 320; export default function GroupManagerPage({ isMobile = false, onProfile, onHelp, onAbout }) { const [tab, setTab] = useState('all'); @@ -559,7 +559,7 @@ export default function GroupManagerPage({ isMobile = false, onProfile, onHelp, )} {/* ── Right panel ── */} -
+
{/* Mobile tab bar — only shown on mobile */} {isMobile && ( @@ -578,11 +578,9 @@ export default function GroupManagerPage({ isMobile = false, onProfile, onHelp, {tab==='u2u' && }
- {/* Mobile footer — hidden when keyboard is open */} - {isMobile && !keyboardOpen && ( -
- -
+ {/* Mobile footer — in-flow so it stays at bottom and never floats with keyboard */} + {isMobile && ( + )}
diff --git a/frontend/src/pages/UserManagerPage.jsx b/frontend/src/pages/UserManagerPage.jsx index 4a6f0b4..81d4b5b 100644 --- a/frontend/src/pages/UserManagerPage.jsx +++ b/frontend/src/pages/UserManagerPage.jsx @@ -4,7 +4,7 @@ import { api } from '../utils/api.js'; import Avatar from '../components/Avatar.jsx'; import UserFooter from '../components/UserFooter.jsx'; -const SIDEBAR_W = 260; +const SIDEBAR_W = 320; function isValidEmail(e) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e); } @@ -349,7 +349,7 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o )} {/* ── Right panel ── */} -
+
{/* Mobile tab bar — only on mobile since desktop uses left panel */} {isMobile && ( @@ -361,7 +361,7 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o )} {/* Content */} -
+
{tab === 'users' && ( <> setSearch(e.target.value)} @@ -389,11 +389,9 @@ export default function UserManagerPage({ isMobile = false, onProfile, onHelp, o {tab === 'bulk' && }
- {/* Mobile footer — hidden when keyboard is open */} - {isMobile && !keyboardOpen && ( -
- -
+ {/* Mobile footer — in-flow so it stays at bottom and never floats with keyboard */} + {isMobile && ( + )}