Restore text field editing by targeting pointerEvents more specifically - Changed pointerEvents from FormControlLabel to only target the label element - Prevents disabling text input fields while still protecting Everyone role - Uses MUI selector to target only the label, not the entire form control
Use case-insensitive contains check for Everyone role - Changed from exact title match to **************** - Handles variations like 'Everyone (Applies To All)' - More robust role detection for Everyone role protection - Applied to all role checks: checkbox state, toggle prevention, save enforcement, and edit loading
모든 역할 수정을 차단하는 백엔드 검증 추가
- updateRole endpoint에 추가된 보호 체크 - deleteRole endpoint에 추가된 보호 체크 - 보호 된 역할을 수정하려고 시도 할 때 403 금지 - 작업 수행하기 전에 checks isAllowDelete 필드 - 응답에 있는 명확한 오류 메시지 - 보안 모...
Protect Everyone role from modifications in UI
- Edit button shows 'Protected' and is disabled for Everyone role - Delete button is disabled and grayed out for Everyone role - Both buttons have reduced opaci...
Add 3-letter day names to all date displays
- Main display: 'Mon 10/15/25 6:00PM' (was '10/15/25 6:00PM') - Your Time in tooltip: 'Monday, October 15, 2025' (full day name) - Other timezones: All include ...
Add full month name display under Your Time in tooltip
- Added full date with month name (e.g., 'October 15, 2025') - Positioned between compact time and timezone abbreviation - Slightly larger font size (0.75rem) f...
Use compact date format without leading zeros (m/d/yy h:mmAM/PM)
- Changed from 'Oct 15, 2025, 6:00 PM' to '10/15/25 6:00PM' - Removed leading zeros from single-digit months, days, and hours - Compact AM/PM without space (6:0...
Prevent cell width adjustment by using fixed 180px width
- Outer container now has fixed width: 180px - Removed minWidth in favor of fixed width - Inner flex container handles content layout - No more width adjustment...
Make timer update every second and add 'ago' suffix to elapsed time
- Timer now updates EVERY SECOND regardless of age (truly live) - calculateTimeAgo() uses currentTime state for real-time calculation - Added ' ago' suffix to a...
Make timer truly live with constant recalculation and stabilize hover area
- Timer now recalculates on every render (truly live, no lag) - State updates trigger re-renders at smart intervals (1s to 1hr) - Fixed glitchy hover by adding ...
Make elapsed timer truly live and add elegant hover transformation
- Timer now updates every second for recent timestamps (truly live) - Hover over date transforms it to elapsed time (1M 18S, 27D 4H, etc) - Smooth animated tran...
Add live animated elapsed time timer to DateTimeDisplay tooltip
- Real-time updating timer showing time elapsed since timestamp - Smart formatting based on scale (1M 18S, 27D 4H, 2M 7D, etc) - Updates every second for recent...
Apply sophisticated nav bar gradient styling to DateTimeDisplay
- Tooltip background uses same gradient as NavPri (primary color mix with black) - Header and footer use subtle primary color gradients - Hover effects with pri...
Store and retrieve timezone from localStorage instead of API calls
- Updated validate route to fetch timezone from Redis session data - Store timezone in localStorage during validation - DateTimeDisplay now reads from localStor...
Add sophisticated DateTimeDisplay component with timezone support and global time tooltip
- Created reusable DateTimeDisplay component - Displays dates in user's timezone from *** session - Beautiful glassmorphic tooltip showing 8 relevant global tim...
Add modern form validation to all three settings tabs
- Added inline validation with error states and helper text - Required field validation with minimum/maximum length checks - Real-time error clearing as user ty...