Files
zeekay 9934d6ef8d Restore full dynamic lux.network (un-strip static export)
The live site had been stripped to a static export (output:'export') to fit
GitHub Pages, which forced removal of every dynamic feature: the @luxfi/ui
Header/Footer chrome rendered as plain 'LUX' text, the @hanzo/commerce checkout,
the lux.id auth API routes + middleware, and leaked gold/amber accents.

Restore the full app on top of the post-quantum landing content:
- Dynamic output:'standalone' Node server (next.config.mjs); drop static export.
- Real @luxfi/ui Header/Footer with the canonical @luxfi/logo ▼ mark
  (logoVariant='full'); mega-menus + full footer.
- @hanzo/commerce /checkout + commerce bag, login routed to lux.id, restored
  src/app/api/auth/* routes and src/middleware.ts (device + auth).
- Pure monochrome: neutralize all rainbow/gold chain + app gradients to
  from-foreground/[0.06]; kill the gold 'Bridge Assets' button.
- site-def: re-enable auth (login->lux.id) + commerce (both stripped before).

Fixes uncovered along the way:
- patch @hanzo/[email protected]: invalid 'type App' in a runtime await-import destructure
  broke the auth API route compile.
- next.config SVGR loader: @luxfi/ui's footer imports an inline .svg as a
  component; without the loader it resolves to an object -> hydration crash
  (black page). This was the real root cause behind a cascade of symptoms.
- ShowBody MutationObserver: @luxfi/ui RootLayout ships <body display:none> and
  reveals it from an effect that loses a hydration race on standalone; pin it.
- src/middleware: react-device-detect throws on UA-less requests (k8s probes,
  curl) -> 500; default to 'desktop' and add a static-asset matcher.

Build, real-browser verify (e2e/restore-verify.mjs + rewritten homepage.spec):
logo, 0 gold/amber, mega-menu, full footer, checkout host, login->lux.id, no
console crash, monochrome — 8/8 green. Dockerfile = standalone Node runner.
2026-06-25 14:40:53 -07:00
..