diff --git a/apps/web/src/app/auth/signin/page.tsx b/apps/web/src/app/auth/signin/page.tsx index 9a3d991..942d7f5 100644 --- a/apps/web/src/app/auth/signin/page.tsx +++ b/apps/web/src/app/auth/signin/page.tsx @@ -59,10 +59,15 @@ export default function SignInPage() { setTotp(""); } } else { - // Invalidate the Next.js Router Cache so (app)/layout.tsx re-renders - // with the fresh session, then navigate to the dashboard. - router.refresh(); - router.push("/dashboard"); + // Full-page navigation instead of router.push to guarantee a fresh + // server request with the new session cookie. Soft navigation keeps + // the React tree (incl. QueryClient with cached pre-auth errors and + // the Next.js Router Cache) alive, which caused the recurring bug + // where the dashboard rendered with empty widgets until the user + // pressed Ctrl+R. Skipping setLoading(false) prevents a visual flash + // while the navigation happens. + window.location.assign("/dashboard"); + return; } setLoading(false); @@ -86,21 +91,28 @@ export default function SignInPage() { Resource planning that stays readable under pressure.
- Estimates, staffing, chargeability, and timelines in one workspace with sharper structure for day-to-day planning. + Estimates, staffing, chargeability, and timelines in one workspace with sharper + structure for day-to-day planning.
Visibility
-Clearer data density, stronger contrast, faster scanning.
++ Clearer data density, stronger contrast, faster scanning. +
Planning
-Dynamic staffing, resources, and chargeability in one flow.
++ Dynamic staffing, resources, and chargeability in one flow. +
Control
-Theme-aware UI that works in bright and dark environments.
++ Theme-aware UI that works in bright and dark environments. +
Welcome Back
++ Welcome Back +
- Open your authenticator app (e.g. Google Authenticator, Authy) and enter the current code. + Open your authenticator app (e.g. Google Authenticator, Authy) and enter the + current code.