fix(public): always show real hero + drop nav from landing page #61

Merged
whitlocktech merged 2 commits from fix/hero-stale-gate-and-nav into main 2026-07-15 11:03:53 +00:00
Member

Summary

Fixes two unrelated issues on the public landing page. Diagnosed against the live site first; both root causes confirmed before changing anything.

Bug 1 — logged-out visitors saw the coming-soon page instead of the real hero

Not a stale deploy, CDN cache, service worker, or Traefik/backend split — verified the origin serves identical current HTML/bundle to authenticated and unauthenticated requests, with no edge cache and no service worker. The difference was produced client-side by MaintenanceGate: when site_mode === 'maintenance' and there's no logged-in user, it renders the Maintenance coming-soon page; admins bypass it (live preview).

Change: move the / hero route out from behind MaintenanceGate so every visitor always lands on the real Portal hero. The gate remains on all other public routes (/site/*, /wiki, CMS pages), so content pages stay gated during maintenance and admins still preview through it.

Note: the "Planed to open summer 2007" copy is a database setting (maintenance_message), not code — fix it in Admin → Settings if desired (also a typo: "Planed" → "Planned", 2007 → 2027). Not touched here.

Bug 2 — site nav rendered on the hero

Portal used PublicLayout with the default header=true, so the nav rendered over the hero. Pass header={false} (the layout's existing escape hatch) so the hero has no top nav. Footer retained.

Verification

  • npm run build passes (234 modules).
  • Loaded the built hero locally: no header nav (navLinkCount: 0), footer present.

Files

  • client/src/App.jsx — hero route pulled out of the maintenance gate
  • client/src/routes/public/Portal.jsxheader={false} on the hero layout

🤖 Generated with Claude Code

https://claude.ai/code/session_0114TpmrNW4wNXsHq5CR72jQ

## Summary Fixes two unrelated issues on the public landing page. Diagnosed against the live site first; both root causes confirmed before changing anything. ### Bug 1 — logged-out visitors saw the coming-soon page instead of the real hero Not a stale deploy, CDN cache, service worker, or Traefik/backend split — verified the origin serves identical current HTML/bundle to authenticated and unauthenticated requests, with no edge cache and no service worker. The difference was produced **client-side** by `MaintenanceGate`: when `site_mode === 'maintenance'` and there's no logged-in user, it renders the `Maintenance` coming-soon page; admins bypass it (live preview). **Change:** move the `/` hero route out from behind `MaintenanceGate` so every visitor always lands on the real `Portal` hero. The gate **remains** on all other public routes (`/site/*`, `/wiki`, CMS pages), so content pages stay gated during maintenance and admins still preview through it. > Note: the `"Planed to open summer 2007"` copy is a **database** setting (`maintenance_message`), not code — fix it in Admin → Settings if desired (also a typo: "Planed" → "Planned", 2007 → 2027). Not touched here. ### Bug 2 — site nav rendered on the hero `Portal` used `PublicLayout` with the default `header=true`, so the nav rendered over the hero. Pass `header={false}` (the layout's existing escape hatch) so the hero has no top nav. Footer retained. ## Verification - `npm run build` passes (234 modules). - Loaded the built hero locally: no header nav (`navLinkCount: 0`), footer present. ## Files - `client/src/App.jsx` — hero route pulled out of the maintenance gate - `client/src/routes/public/Portal.jsx` — `header={false}` on the hero layout 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_0114TpmrNW4wNXsHq5CR72jQ
wtclaude added 1 commit 2026-07-15 03:58:20 +00:00
fix(public): always show real hero; drop nav from landing page
All checks were successful
PR Checks / server-tests (pull_request) Successful in 9m43s
PR Checks / client-build (pull_request) Successful in 9m39s
PR Checks / bot-install (pull_request) Successful in 9m40s
5b6b63e1bc
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0114TpmrNW4wNXsHq5CR72jQ
whitlocktech approved these changes 2026-07-15 03:59:36 +00:00
whitlocktech added 1 commit 2026-07-15 03:59:47 +00:00
Merge branch 'main' into fix/hero-stale-gate-and-nav
All checks were successful
PR Checks / server-tests (pull_request) Successful in 10m4s
PR Checks / client-build (pull_request) Successful in 9m41s
PR Checks / bot-install (pull_request) Successful in 9m37s
64da0067f1
whitlocktech scheduled this pull request to auto merge when all checks succeed 2026-07-15 11:03:46 +00:00
whitlocktech merged commit 70122f3626 into main 2026-07-15 11:03:52 +00:00
whitlocktech deleted branch fix/hero-stale-gate-and-nav 2026-07-15 11:03:53 +00:00
Sign in to join this conversation.
No description provided.