diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx
index 3a91a34..0a5afa1 100644
--- a/apps/web/src/App.tsx
+++ b/apps/web/src/App.tsx
@@ -236,20 +236,23 @@ export function App() {
);
}
- // Still loading auth state or setup check
- if (authDisabled === null || sessionLoading || needsSetup === null) return null;
+ // Still loading auth state or setup check (skip setup check in dev mode)
+ if (authDisabled === null || sessionLoading) return null;
- // Dev mode: show login selector
+ // Dev mode: show login selector (no setup check needed in dev mode)
if (authDisabled && location.pathname === "/login") {
return ;
}
- // Dev mode: use dev login selector
+ // Dev mode: use dev login selector (no setup check needed in dev mode)
if (authDisabled && !getDevUser()) {
return ;
}
- // Production mode: if no session, show login page (avoids redirect loops)
+ // Production: need setup check
+ if (needsSetup === null) return null;
+
+ // Production mode: if no session, redirect to Authentik sign-in
if (!authDisabled && !session) {
return ;
}
diff --git a/apps/web/src/portal/CustomerPortal.tsx b/apps/web/src/portal/CustomerPortal.tsx
index 484a26a..7fbc453 100644
--- a/apps/web/src/portal/CustomerPortal.tsx
+++ b/apps/web/src/portal/CustomerPortal.tsx
@@ -122,21 +122,22 @@ export function CustomerPortal() {
const isReadOnly = session?.status === "active";
const renderSection = () => {
+ const sessionId = session?.id ?? null;
switch (activeSection) {
case "dashboard":
- return ;
+ return ;
case "appointments":
- return ;
+ return ;
case "pets":
- return ;
+ return ;
case "reports":
- return ;
+ return ;
case "billing":
- return ;
+ return ;
case "messages":
- return ;
+ return ;
case "settings":
- return ;
+ return ;
}
};
@@ -279,7 +280,7 @@ export function CustomerPortal() {
-
Hi, {CUSTOMER.name.split(" ")[0]}
+
Hi, {clientName.split(" ")[0] || "Guest"}
SM