diff --git a/manager/src/app/dashboard/settings/page.tsx b/manager/src/app/dashboard/settings/page.tsx index 50e3d03..644a256 100644 --- a/manager/src/app/dashboard/settings/page.tsx +++ b/manager/src/app/dashboard/settings/page.tsx @@ -6,6 +6,20 @@ import { PushSettingsForm } from "./push-settings-form"; import { SuperAdminSettingsForm } from "./super-admin-settings-form"; export const metadata: Metadata = { title: "Settings" }; +// Every other page under /dashboard already has this (see +// dashboard/page.tsx, [slug]/page.tsx, [slug]/edit, [slug]/delete) — +// this one was missing it. Without it, this page has no request-time API +// in its render path (no cookies()/headers(), just plain fs reads), so +// Next.js statically prerenders it once at `next build` time and serves +// that frozen snapshot on every request afterward. In production that +// means whatever Settings looked like at build time (typically nothing, +// since STACKS_DIR/the settings file aren't available inside the Docker +// build stage — env_file only applies at container run time) is what +// gets served forever, regardless of what's actually since been saved — +// confirmed for real: after a `docker compose up -d --build` rebuild, +// already-saved settings appeared blank in the UI even though the +// underlying global-settings.json on disk still had them. +export const dynamic = "force-dynamic"; /** * Platform-wide settings shared by every business on this installation —