- DashboardLayout now accepts userName, userEmail, userInitials, onLogout
props; computes initials from name; replaces hardcoded "John Doe" values
- Portal App.tsx pulls display name and email from useAuth user object and
passes them to DashboardLayout
- handleLogout performs unconditional local cleanup (cookies + localStorage
+ hard redirect to /auth) so a failed API call never leaves the user stuck
- main.tsx purges cookies whose value is the literal string "undefined",
clearing stale tokens written before the envelope interceptor fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>