From 5b6b63e1bc5509d600ac2b4437d62414877a22c2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 14 Jul 2026 22:57:49 -0500 Subject: [PATCH] fix(public): always show real hero; drop nav from landing page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug 1 — Logged-out visitors saw the coming-soon Maintenance page while admins saw the real hero. That difference is produced client-side by MaintenanceGate (site_mode=maintenance && no user). Pull the `/` hero route out from behind the gate so every visitor always lands on the real Portal hero; the MaintenanceGate stays on all other public routes, so content pages remain gated during maintenance and admins still preview through it. Bug 2 — The landing hero rendered the site nav because Portal used PublicLayout with the default header=true. Pass header={false} so the hero has no top nav (footer retained), using the layout's existing escape hatch. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0114TpmrNW4wNXsHq5CR72jQ --- client/src/App.jsx | 8 ++++++-- client/src/routes/public/Portal.jsx | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/App.jsx b/client/src/App.jsx index fcb4241..3b2e99a 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -60,7 +60,12 @@ export default function App() { - {/* Public site — gated by maintenance mode (admins preview through it) */} + {/* Landing hero — always public, even in maintenance mode. The hero is + itself the pre-launch "coming soon" page, so it sits outside the + MaintenanceGate and every visitor sees it regardless of auth/site mode. */} + } /> + + {/* Rest of the public site — gated by maintenance mode (admins preview through it) */} @@ -68,7 +73,6 @@ export default function App() { } > - } /> } /> } /> } /> diff --git a/client/src/routes/public/Portal.jsx b/client/src/routes/public/Portal.jsx index 1851b35..9cf1fd6 100644 --- a/client/src/routes/public/Portal.jsx +++ b/client/src/routes/public/Portal.jsx @@ -40,7 +40,7 @@ export default function Portal() { const elements = [...layout.elements].sort((a, b) => (a.z || 0) - (b.z || 0)) return ( - +
{PREVIEW && draft && (