Resolve ESLint prefer-const errors in Department and JobTitle managers - Changed roleIds from let to const using ternary operator - Eliminates reassignment by using conditional spread operator - Fixes build failure: 'roleIds' is never reassigned. Use 'const' instead - Maintains same functionality while satisfying ESLint rules
Add tooltip to Security Role save button with validation requirements - Added Tooltip component to Save Role button - Shows 'Please enter a role name to continue' when title is empty - Shows 'Ready to save security role' when validation passes - Uses span wrapper to enable tooltip on disabled buttons - Consistent with Department and Job Title tooltips for better UX
Add tooltips to save buttons with validation requirements - Added Tooltip components to Save Department and Save Job Title buttons - Shows 'Please enter a [name] to continue' when title is empty - Shows 'Ready to save [item]' when validation passes - Uses span wrapper to enable tooltip on disabled buttons - Improves UX by informing users what's required before saving
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
Use isAllowDelete field to enforce protected roles - Added isAllowDelete to SecurityRole interface - Changed from checking role title to checking isAllowDelete field - More robust and matches SecurityRoleManager approach - Prevents modification of any protected role, not just Everyone - Handles future protected roles automatically
添加后端验证以屏蔽每个角色修改
- 在更新Role端点中添加保护检查 - 在删除中添加保护检查 - 在试图修改受保护角色时返回403个禁止区 - 检查是 AllowDelete 字段,然后允许操作 - 在答复中清除错误信息 - 记录所有企图违反安全监测规定的行为 - 防止任何人角色的任何后门修改
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...
