Panels now close when clicking empty areas of NavPri sidebar - Fixed useEffect logic to close panels when activePanel is null - Previously only closed when activePanel was a different panel ID - Now correctly closes when activePanel is null (sidebar background clicked)
Add click-outside detection to primary navigation panels - Added backdrop overlay to NavPriItemWithPanel component - Click or touch outside panel now closes it - Increased z-index to ensure backdrop is visible above NavTop bar - Matches behavior of NavTopPanel for consistent UX
Make ROFL letters highly visible with increased opacity, size, z-index, and debug logging
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
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 ...
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...
Make SessionUtilityService Redis connection configurable via Spring properties
Replace try-with-resources with manual close for OtkValidator
Update SecurityRoleController to use session package SessionData
Update SessionUtilityService to use existing Redis utilities from shared library
Use getOrganizationFromRequest to get current user from Redis session
Use getOrganizationIdFromRequest instead of getCurrentUserOrganization
Add cascade annotations to OrgRole.rights to ensure rights are saved
Use getRoleByIdWithRights to prevent NullPointerException in DTO conversion
Add getRoleByIdWithRights to properly load lazy collections
Show all available rights when editing a role, not just currently set rights
Reload role after updating rights to populate rights collection for DTO conversion
Convert string rightType to RoleRightType enum in create/update role endpoints
Change RoleRightUpdate.rightType from enum to String to match frontend API contract
Add JavaTimeModule to ObjectMapper to handle LocalDateTime serialization
Make role rights endpoint publicly accessible to fix 403 error
Improve error handling in SecurityRoleManager to handle role rights fetch failures independently
Always call API to fetch user info, don't check HttpOnly cookie client-side
Replace RoleRightType.valueOf with manual lookup of static instances
Use property access instead of method calls for RoleRightType and ServiceType
Add usernameAlias, memberEmail, and countryAbbreviation to user-info endpoint
Extract session ID from upstream and set *** cookie explicitly for internal domain
Remove cookie domain attribute for proper per-subdomain cookie setting
Update cookie name from KAMOSESH to *** throughout kamo-internal
Update session naming - use *** cookie and SESSION<guid> Redis keys per SSO specification
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.