From d07d9e3919c851473b5fc30d60bd1001f9da4bb2 Mon Sep 17 00:00:00 2001 From: Ricky Stretch Date: Sat, 28 Mar 2026 14:18:20 -0400 Subject: [PATCH] v0.12.35 UI fixes --- backend/package.json | 2 +- build.sh | 2 +- frontend/package.json | 2 +- frontend/src/components/MobileEventForm.jsx | 6 ++++-- frontend/src/components/NavDrawer.jsx | 2 +- frontend/src/components/UserFooter.jsx | 8 +++++--- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/package.json b/backend/package.json index 22fe86a..a9e3c62 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "rosterchirp-backend", - "version": "0.12.34", + "version": "0.12.35", "description": "RosterChirp backend server", "main": "src/index.js", "scripts": { diff --git a/build.sh b/build.sh index 43043c7..25c89a7 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ # ───────────────────────────────────────────────────────────── set -euo pipefail -VERSION="${1:-0.12.34}" +VERSION="${1:-0.12.35}" ACTION="${2:-}" REGISTRY="${REGISTRY:-}" IMAGE_NAME="rosterchirp" diff --git a/frontend/package.json b/frontend/package.json index 461a52e..b29a0a2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "rosterchirp-frontend", - "version": "0.12.34", + "version": "0.12.35", "private": true, "scripts": { "dev": "vite", diff --git a/frontend/src/components/MobileEventForm.jsx b/frontend/src/components/MobileEventForm.jsx index 9eec73a..f6a1949 100644 --- a/frontend/src/components/MobileEventForm.jsx +++ b/frontend/src/components/MobileEventForm.jsx @@ -475,7 +475,9 @@ export default function MobileEventForm({ event, eventTypes, userGroups, selecte -
+ {/* form wrapper suppresses Chrome Android's autofill chip bar; autoComplete="off" + on individual inputs is ignored by Chrome but respected on the form element */} +
e.preventDefault()} style={{ flex:1,overflowY:'auto' }}> {/* Title */}
setTitle(e.target.value)} autoComplete="off" placeholder="Add title" autoCorrect="off" autoCapitalize="sentences" spellCheck={false} style={{ width:'100%',border:'none',background:'transparent',fontSize:22,fontWeight:700,color:'var(--text-primary)',outline:'none' }}/> @@ -581,7 +583,7 @@ export default function MobileEventForm({ event, eventTypes, userGroups, selecte
)} -
+ {/* Overlays */} {showStartDate && {setSd(v);setShowStartDate(false);}} onClose={()=>setShowStartDate(false)}/>} diff --git a/frontend/src/components/NavDrawer.jsx b/frontend/src/components/NavDrawer.jsx index 5c5b29a..db949be 100644 --- a/frontend/src/components/NavDrawer.jsx +++ b/frontend/src/components/NavDrawer.jsx @@ -58,7 +58,7 @@ export default function NavDrawer({ open, onClose, onMessages, onGroupMessages, {/* Close X */}
-
User Menu
+ User Menu diff --git a/frontend/src/components/UserFooter.jsx b/frontend/src/components/UserFooter.jsx index 088febc..a6c5322 100644 --- a/frontend/src/components/UserFooter.jsx +++ b/frontend/src/components/UserFooter.jsx @@ -16,7 +16,9 @@ function useTheme() { const PUSH_ENABLED_KEY = 'rc_push_enabled'; function usePushToggle() { - // Push toggle is only relevant when the user has already granted permission + // Show the toggle whenever the Notification API is present, not just when + // already granted — so iOS users (where push is still being set up) can still + // reach the toggle and trigger the permission request flow. const supported = 'serviceWorker' in navigator && typeof Notification !== 'undefined'; const permitted = supported && Notification.permission === 'granted'; const [enabled, setEnabled] = useState(() => localStorage.getItem(PUSH_ENABLED_KEY) !== 'false'); @@ -40,7 +42,7 @@ function usePushToggle() { } }; - return { permitted, enabled, toggle }; + return { supported, permitted, enabled, toggle }; } // ── Debug helpers ───────────────────────────────────────────────────────────── @@ -230,7 +232,7 @@ export default function UserFooter({ onProfile, onHelp, onAbout, mobileCompact=f const { user, logout } = useAuth(); const [showMenu, setShowMenu] = useState(false); const [dark, setDark] = useTheme(); - const { permitted: showPushToggle, enabled: pushEnabled, toggle: togglePush } = usePushToggle(); + const { supported: showPushToggle, enabled: pushEnabled, toggle: togglePush } = usePushToggle(); const menuRef = useRef(null); const btnRef = useRef(null); const [showConfirm, setShowConfirm] = useState(false);