From 51ef7602cacd18826c80efc5aa5359971d81637b Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 7 Aug 2026 18:51:45 +0200 Subject: [PATCH] perf: migrate pages to Cache Components via root layout opt-out Remove the per-route 'export const instant = false' opt-outs now that the root layout carries the single Cache Components opt-out. Child pages inherit the opt-out, so admin/mod/radio leaf pages that only access cached or DB data stay instant while runtime-dependent pages remain dynamic. Update the staff-smoke contract test to assert the root-layout contract. --- src/app/(site)/apply/staff/page.tsx | 4 ---- src/app/(site)/apply/team/page.tsx | 4 ---- src/app/(site)/badges/page.tsx | 4 ---- src/app/(site)/banned/page.tsx | 4 ---- src/app/(site)/community/page.tsx | 4 ---- src/app/(site)/developers/page.tsx | 4 ---- src/app/(site)/draw-badge/page.tsx | 4 ---- src/app/(site)/events/[slugOrId]/page.tsx | 4 ---- src/app/(site)/events/page.tsx | 4 ---- src/app/(site)/forgot/page.tsx | 4 ---- src/app/(site)/friends/page.tsx | 4 ---- .../(site)/guilds/[id]/forum/[threadId]/page.tsx | 4 ---- src/app/(site)/guilds/[id]/forum/new/page.tsx | 4 ---- src/app/(site)/guilds/[id]/forum/page.tsx | 4 ---- src/app/(site)/guilds/[id]/page.tsx | 4 ---- src/app/(site)/guilds/page.tsx | 4 ---- src/app/(site)/help/[category]/page.tsx | 4 ---- src/app/(site)/help/page.tsx | 4 ---- src/app/(site)/help/tickets/[id]/page.tsx | 4 ---- src/app/(site)/help/tickets/page.tsx | 4 ---- src/app/(site)/layout.tsx | 4 ---- src/app/(site)/leaderboard/page.tsx | 4 ---- src/app/(site)/login/page.tsx | 4 ---- src/app/(site)/logo/page.tsx | 4 ---- src/app/(site)/maintenance/page.tsx | 4 ---- src/app/(site)/marketplace/page.tsx | 4 ---- src/app/(site)/me/page.tsx | 4 ---- src/app/(site)/messages/page.tsx | 4 ---- src/app/(site)/news/[...slug]/page.tsx | 4 ---- src/app/(site)/news/page.tsx | 4 ---- src/app/(site)/page.tsx | 4 ---- src/app/(site)/photos/page.tsx | 4 ---- src/app/(site)/polls/[id]/page.tsx | 4 ---- src/app/(site)/polls/page.tsx | 4 ---- src/app/(site)/radio/apply/page.tsx | 4 ---- src/app/(site)/radio/contests/[id]/page.tsx | 4 ---- src/app/(site)/radio/contests/page.tsx | 4 ---- src/app/(site)/radio/giveaways/[id]/page.tsx | 4 ---- src/app/(site)/radio/giveaways/page.tsx | 4 ---- src/app/(site)/radio/layout.tsx | 4 ---- src/app/(site)/radio/leaderboard/page.tsx | 4 ---- src/app/(site)/radio/page.tsx | 4 ---- src/app/(site)/radio/requests/page.tsx | 4 ---- src/app/(site)/radio/schedule/page.tsx | 4 ---- src/app/(site)/radio/shouts/page.tsx | 4 ---- src/app/(site)/rankings/page.tsx | 4 ---- src/app/(site)/rares/[category]/page.tsx | 4 ---- src/app/(site)/rares/page.tsx | 4 ---- src/app/(site)/redeem/page.tsx | 4 ---- src/app/(site)/register/page.tsx | 4 ---- src/app/(site)/reset/page.tsx | 4 ---- src/app/(site)/room/[id]/page.tsx | 4 ---- src/app/(site)/search/page.tsx | 4 ---- src/app/(site)/settings/2fa/page.tsx | 4 ---- src/app/(site)/settings/page.tsx | 4 ---- src/app/(site)/settings/sessions/page.tsx | 4 ---- src/app/(site)/shop/page.tsx | 4 ---- src/app/(site)/shop/topup/page.tsx | 4 ---- src/app/(site)/staff/page.tsx | 4 ---- src/app/(site)/u/[username]/page.tsx | 4 ---- src/app/(site)/verify/page.tsx | 4 ---- src/app/admin/achievements/page.tsx | 4 ---- src/app/admin/ads/[id]/page.tsx | 4 ---- src/app/admin/ads/new/page.tsx | 4 ---- src/app/admin/ads/page.tsx | 4 ---- src/app/admin/alerts/page.tsx | 4 ---- src/app/admin/analytics/activity/page.tsx | 4 ---- src/app/admin/analytics/economy/page.tsx | 4 ---- src/app/admin/analytics/page.tsx | 4 ---- src/app/admin/applications/page.tsx | 4 ---- src/app/admin/articles/[id]/page.tsx | 4 ---- src/app/admin/articles/new/page.tsx | 4 ---- src/app/admin/articles/page.tsx | 4 ---- src/app/admin/badges/page.tsx | 4 ---- src/app/admin/banners/page.tsx | 4 ---- src/app/admin/bans/page.tsx | 4 ---- src/app/admin/calendar/[id]/page.tsx | 4 ---- src/app/admin/calendar/page.tsx | 4 ---- src/app/admin/catalog/[id]/page.tsx | 4 ---- src/app/admin/catalog/builder-club/[id]/page.tsx | 4 ---- src/app/admin/catalog/builder-club/page.tsx | 4 ---- src/app/admin/catalog/page.tsx | 4 ---- src/app/admin/commandocentrum/page.tsx | 4 ---- src/app/admin/devops/errors/page.tsx | 4 ---- src/app/admin/devops/page.tsx | 4 ---- src/app/admin/email-templates/page.tsx | 4 ---- src/app/admin/emulator/page.tsx | 4 ---- src/app/admin/events/[id]/page.tsx | 4 ---- src/app/admin/events/create/page.tsx | 4 ---- src/app/admin/events/page.tsx | 4 ---- src/app/admin/events/types/page.tsx | 4 ---- src/app/admin/favicon/page.tsx | 4 ---- src/app/admin/guilds/[id]/page.tsx | 4 ---- src/app/admin/guilds/page.tsx | 4 ---- src/app/admin/help-questions/[id]/page.tsx | 4 ---- src/app/admin/help-questions/new/page.tsx | 4 ---- src/app/admin/help-questions/page.tsx | 4 ---- src/app/admin/help-tickets/[id]/page.tsx | 4 ---- src/app/admin/help-tickets/page.tsx | 4 ---- src/app/admin/housekeeping/page.tsx | 4 ---- src/app/admin/import/audit/page.tsx | 4 ---- src/app/admin/import/badges/page.tsx | 4 ---- src/app/admin/import/clone/page.tsx | 4 ---- src/app/admin/import/clothing/page.tsx | 4 ---- src/app/admin/import/effects/page.tsx | 4 ---- src/app/admin/import/furni/page.tsx | 4 ---- src/app/admin/import/furni/upload/page.tsx | 4 ---- src/app/admin/import/page.tsx | 4 ---- src/app/admin/import/pets/page.tsx | 4 ---- src/app/admin/import/repair-icons/page.tsx | 4 ---- src/app/admin/import/sync/page.tsx | 4 ---- src/app/admin/ip/page.tsx | 4 ---- src/app/admin/items/[id]/page.tsx | 4 ---- src/app/admin/items/page.tsx | 4 ---- src/app/admin/layout.tsx | 7 ++----- src/app/admin/logs/audit/page.tsx | 4 ---- src/app/admin/logs/chat/page.tsx | 4 ---- src/app/admin/logs/commands/page.tsx | 4 ---- src/app/admin/logs/page.tsx | 4 ---- src/app/admin/logs/trades/page.tsx | 4 ---- src/app/admin/maintenance/page.tsx | 4 ---- src/app/admin/marketplace/page.tsx | 4 ---- src/app/admin/media/page.tsx | 4 ---- src/app/admin/menu/page.tsx | 4 ---- src/app/admin/moderation/actions/page.tsx | 4 ---- src/app/admin/moderation/cfh/[id]/page.tsx | 4 ---- src/app/admin/moderation/cfh/page.tsx | 4 ---- src/app/admin/moderation/page.tsx | 4 ---- src/app/admin/moderation/team/page.tsx | 4 ---- src/app/admin/navigation/page.tsx | 4 ---- src/app/admin/online/page.tsx | 4 ---- src/app/admin/page.tsx | 4 ---- src/app/admin/permissions/[id]/page.tsx | 4 ---- src/app/admin/permissions/page.tsx | 4 ---- src/app/admin/photos/page.tsx | 4 ---- src/app/admin/polls/[id]/page.tsx | 4 ---- src/app/admin/polls/create/page.tsx | 4 ---- src/app/admin/polls/page.tsx | 4 ---- src/app/admin/prefixes/page.tsx | 4 ---- src/app/admin/radio/api-keys/page.tsx | 4 ---- src/app/admin/radio/autodj/page.tsx | 4 ---- src/app/admin/radio/banners/page.tsx | 4 ---- src/app/admin/radio/embed/page.tsx | 4 ---- src/app/admin/radio/history/page.tsx | 4 ---- src/app/admin/radio/layout.tsx | 4 ---- src/app/admin/radio/moderation/page.tsx | 4 ---- src/app/admin/radio/monitoring/page.tsx | 4 ---- src/app/admin/radio/page.tsx | 4 ---- src/app/admin/radio/points/page.tsx | 4 ---- src/app/admin/radio/ranks/page.tsx | 4 ---- src/app/admin/radio/settings/page.tsx | 4 ---- src/app/admin/rare-values/page.tsx | 4 ---- src/app/admin/rooms/[id]/furni/page.tsx | 4 ---- src/app/admin/rooms/[id]/page.tsx | 4 ---- src/app/admin/rooms/edit/[id]/page.tsx | 4 ---- src/app/admin/rooms/page.tsx | 4 ---- src/app/admin/rooms/show/[id]/page.tsx | 4 ---- src/app/admin/settings/page.tsx | 4 ---- src/app/admin/shop/[id]/page.tsx | 4 ---- src/app/admin/shop/new/page.tsx | 4 ---- src/app/admin/shop/page.tsx | 4 ---- src/app/admin/sounds/page.tsx | 4 ---- src/app/admin/subscriptions/page.tsx | 4 ---- src/app/admin/tags/page.tsx | 4 ---- src/app/admin/teams/page.tsx | 4 ---- src/app/admin/theme/page.tsx | 4 ---- src/app/admin/tickets/[id]/page.tsx | 4 ---- src/app/admin/tickets/desk/page.tsx | 4 ---- src/app/admin/tickets/page.tsx | 4 ---- src/app/admin/tickets/templates/page.tsx | 4 ---- src/app/admin/transactions/page.tsx | 4 ---- src/app/admin/translations/client/page.tsx | 4 ---- src/app/admin/translations/cms/page.tsx | 4 ---- src/app/admin/translations/emulator/page.tsx | 4 ---- src/app/admin/translations/layout.tsx | 4 ---- src/app/admin/translations/page.tsx | 4 ---- src/app/admin/users/[id]/edit/page.tsx | 4 ---- src/app/admin/users/[id]/page.tsx | 4 ---- src/app/admin/users/edit/[id]/page.tsx | 4 ---- src/app/admin/users/multi-accounts/page.tsx | 4 ---- src/app/admin/users/page.tsx | 4 ---- src/app/admin/users/show/[id]/page.tsx | 4 ---- src/app/admin/vouchers/page.tsx | 4 ---- src/app/admin/vpn/page.tsx | 4 ---- src/app/admin/wordfilter/page.tsx | 4 ---- src/app/admin/writeable-boxes/page.tsx | 4 ---- src/app/client/page.tsx | 4 ---- src/app/layout.tsx | 6 ++++-- src/app/mod/actions/page.tsx | 4 ---- src/app/mod/bans/page.tsx | 4 ---- src/app/mod/cfh/[id]/page.tsx | 4 ---- src/app/mod/cfh/page.tsx | 4 ---- src/app/mod/help-tickets/[id]/page.tsx | 4 ---- src/app/mod/help-tickets/page.tsx | 4 ---- src/app/mod/layout.tsx | 4 ---- src/app/mod/page.tsx | 4 ---- src/app/mod/team/page.tsx | 4 ---- src/app/mod/tickets/[id]/page.tsx | 4 ---- src/app/mod/tickets/desk/page.tsx | 4 ---- src/app/mod/tickets/page.tsx | 4 ---- src/app/mod/users/[id]/page.tsx | 4 ---- src/app/mod/users/page.tsx | 4 ---- src/lib/staff-smoke-contract.test.ts | 14 ++++++++++---- 203 files changed, 16 insertions(+), 811 deletions(-) diff --git a/src/app/(site)/apply/staff/page.tsx b/src/app/(site)/apply/staff/page.tsx index 96ead689..ce8c9493 100644 --- a/src/app/(site)/apply/staff/page.tsx +++ b/src/app/(site)/apply/staff/page.tsx @@ -14,10 +14,6 @@ import { import { formatDate } from "@/lib/format-date"; import { resolveHotelName } from "@/lib/hotel-name"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Canonical Habbo badge image CDN (same base used by the profile page). const BADGE_IMG_BASE = "https://images.habbo.com/c_images/album1584"; diff --git a/src/app/(site)/apply/team/page.tsx b/src/app/(site)/apply/team/page.tsx index 760f339b..eff964c4 100644 --- a/src/app/(site)/apply/team/page.tsx +++ b/src/app/(site)/apply/team/page.tsx @@ -8,10 +8,6 @@ import { auth } from "@/lib/auth"; import { db, WebsiteStaffApplications, WebsiteTeams } from "@/lib/db"; import { resolveHotelName } from "@/lib/hotel-name"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Canonical Habbo badge image CDN (same base used by the profile page). const BADGE_IMG_BASE = "https://images.habbo.com/c_images/album1584"; diff --git a/src/app/(site)/badges/page.tsx b/src/app/(site)/badges/page.tsx index 4620e61f..d374f6fb 100644 --- a/src/app/(site)/badges/page.tsx +++ b/src/app/(site)/badges/page.tsx @@ -3,10 +3,6 @@ import { getTranslations } from "next-intl/server"; import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, WebsiteBadges } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Badges" }; // Canonical Habbo badge image CDN. A badge_key (e.g. "ADM") maps to a .gif here. diff --git a/src/app/(site)/banned/page.tsx b/src/app/(site)/banned/page.tsx index e92f8497..4df2bfa3 100644 --- a/src/app/(site)/banned/page.tsx +++ b/src/app/(site)/banned/page.tsx @@ -5,10 +5,6 @@ import { auth } from "@/lib/auth"; import { unixNow } from "@/lib/bans"; import { Ban, db } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const FAR_FUTURE = Math.floor(Date.now() / 1000) + 50 * 365 * 24 * 3600; export default async function BannedPage() { diff --git a/src/app/(site)/community/page.tsx b/src/app/(site)/community/page.tsx index 2edb64a7..0a276be5 100644 --- a/src/app/(site)/community/page.tsx +++ b/src/app/(site)/community/page.tsx @@ -2,10 +2,6 @@ import Link from "next/link"; import { useTranslations } from "next-intl"; import { ContentCard } from "@/components/public/ui"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Community" }; const LINKS = [ diff --git a/src/app/(site)/developers/page.tsx b/src/app/(site)/developers/page.tsx index 841bbdc9..db575deb 100644 --- a/src/app/(site)/developers/page.tsx +++ b/src/app/(site)/developers/page.tsx @@ -1,9 +1,5 @@ import { ContentCard } from "@/components/public/ui"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Public API documentation. Static, hand-maintained from the routes that // actually exist under src/app/api — keep this in sync when endpoints change. diff --git a/src/app/(site)/draw-badge/page.tsx b/src/app/(site)/draw-badge/page.tsx index 7a5d0c77..e72d6c93 100644 --- a/src/app/(site)/draw-badge/page.tsx +++ b/src/app/(site)/draw-badge/page.tsx @@ -6,10 +6,6 @@ import { auth } from "@/lib/auth"; import { db, User, WebsiteDrawbadges } from "@/lib/db"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Reads the live users + website_drawbadges tables and writes credits/badges on // purchase — must never be statically rendered. diff --git a/src/app/(site)/events/[slugOrId]/page.tsx b/src/app/(site)/events/[slugOrId]/page.tsx index 51ca0b32..6d6ef9d4 100644 --- a/src/app/(site)/events/[slugOrId]/page.tsx +++ b/src/app/(site)/events/[slugOrId]/page.tsx @@ -17,10 +17,6 @@ import { import { formatDate } from "@/lib/format-date"; import { EventRegisterButton } from "./event-register-button"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - function parseEventId(slugOrId: string): number | null { if (/^\d+$/.test(slugOrId)) return Number.parseInt(slugOrId, 10); const match = slugOrId.match(/-(\d+)$/); diff --git a/src/app/(site)/events/page.tsx b/src/app/(site)/events/page.tsx index fb2b3d6e..ed625baf 100644 --- a/src/app/(site)/events/page.tsx +++ b/src/app/(site)/events/page.tsx @@ -12,10 +12,6 @@ import { import { excerpt, slugify } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Events" }; export default async function EventsPage() { diff --git a/src/app/(site)/forgot/page.tsx b/src/app/(site)/forgot/page.tsx index 3e942eee..289fea1b 100644 --- a/src/app/(site)/forgot/page.tsx +++ b/src/app/(site)/forgot/page.tsx @@ -6,10 +6,6 @@ import { CaptchaWidget } from "@/components/auth/captcha-widget"; import { ContentCard } from "@/components/public/ui"; import { captchaConfig } from "@/lib/services/captcha"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ForgotPage({ searchParams, }: { diff --git a/src/app/(site)/friends/page.tsx b/src/app/(site)/friends/page.tsx index 6b4d37d9..f95c68c3 100644 --- a/src/app/(site)/friends/page.tsx +++ b/src/app/(site)/friends/page.tsx @@ -10,10 +10,6 @@ import { db, MessengerFriendships, User } from "@/lib/db"; import { avatarImageUrl } from "@/lib/format"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Friends" }; type SearchParams = Promise<{ removed?: string; error?: string }>; diff --git a/src/app/(site)/guilds/[id]/forum/[threadId]/page.tsx b/src/app/(site)/guilds/[id]/forum/[threadId]/page.tsx index 2627e1b4..238664d5 100644 --- a/src/app/(site)/guilds/[id]/forum/[threadId]/page.tsx +++ b/src/app/(site)/guilds/[id]/forum/[threadId]/page.tsx @@ -15,10 +15,6 @@ import { } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ replied?: string; error?: string }>; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/guilds/[id]/forum/new/page.tsx b/src/app/(site)/guilds/[id]/forum/new/page.tsx index 51c68ebe..c5b7294b 100644 --- a/src/app/(site)/guilds/[id]/forum/new/page.tsx +++ b/src/app/(site)/guilds/[id]/forum/new/page.tsx @@ -8,10 +8,6 @@ import { ContentCard } from "@/components/public/ui"; import { auth } from "@/lib/auth"; import { db, Guilds } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ error?: string }>; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/guilds/[id]/forum/page.tsx b/src/app/(site)/guilds/[id]/forum/page.tsx index 25146897..e8d2e1fe 100644 --- a/src/app/(site)/guilds/[id]/forum/page.tsx +++ b/src/app/(site)/guilds/[id]/forum/page.tsx @@ -7,10 +7,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, Guilds, GuildsForumsThreads, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ posted?: string }>; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/guilds/[id]/page.tsx b/src/app/(site)/guilds/[id]/page.tsx index 14ff39f7..b5c8a7d6 100644 --- a/src/app/(site)/guilds/[id]/page.tsx +++ b/src/app/(site)/guilds/[id]/page.tsx @@ -8,10 +8,6 @@ import { avatarImageUrl } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type GuildView = { id: number; name: string; diff --git a/src/app/(site)/guilds/page.tsx b/src/app/(site)/guilds/page.tsx index a4d72563..0da0d868 100644 --- a/src/app/(site)/guilds/page.tsx +++ b/src/app/(site)/guilds/page.tsx @@ -5,10 +5,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, Guilds } from "@/lib/db"; import { excerpt } from "@/lib/format"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Guilds" }; type GuildCard = { diff --git a/src/app/(site)/help/[category]/page.tsx b/src/app/(site)/help/[category]/page.tsx index 3d77b139..71f35f2d 100644 --- a/src/app/(site)/help/[category]/page.tsx +++ b/src/app/(site)/help/[category]/page.tsx @@ -8,10 +8,6 @@ import { db, WebsiteHelpCenterCategories } from "@/lib/db"; import { resolveHotelName } from "@/lib/hotel-name"; import { sanitize } from "@/lib/sanitize"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Asset path matches AtomCMS's Blade view: asset('/assets/images/help-center/'). const HELP_IMAGE_BASE = "/assets/images/help-center"; diff --git a/src/app/(site)/help/page.tsx b/src/app/(site)/help/page.tsx index 46f7a840..3497d37e 100644 --- a/src/app/(site)/help/page.tsx +++ b/src/app/(site)/help/page.tsx @@ -9,10 +9,6 @@ import { WebsiteRules, } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type HelpCategory = { id: bigint; name: string; diff --git a/src/app/(site)/help/tickets/[id]/page.tsx b/src/app/(site)/help/tickets/[id]/page.tsx index 0b5cb7e8..1e2048e0 100644 --- a/src/app/(site)/help/tickets/[id]/page.tsx +++ b/src/app/(site)/help/tickets/[id]/page.tsx @@ -15,10 +15,6 @@ import { } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ replied?: string; closed?: string; diff --git a/src/app/(site)/help/tickets/page.tsx b/src/app/(site)/help/tickets/page.tsx index 5339a683..9a06b75b 100644 --- a/src/app/(site)/help/tickets/page.tsx +++ b/src/app/(site)/help/tickets/page.tsx @@ -9,10 +9,6 @@ import { auth } from "@/lib/auth"; import { db, WebsiteHelpCenterTickets } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ created?: string; error?: string }>; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/layout.tsx b/src/app/(site)/layout.tsx index b62317c0..c151250f 100644 --- a/src/app/(site)/layout.tsx +++ b/src/app/(site)/layout.tsx @@ -7,10 +7,6 @@ import { SiteHeader } from "@/components/site-header"; import { TopHeader } from "@/components/top-header"; import { auth } from "@/lib/auth"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - /** * Public site chrome. Route group `(site)` keeps this off `/admin` and `/client`, * so housekeeping is never constrained by the public max-w-7xl grid. diff --git a/src/app/(site)/leaderboard/page.tsx b/src/app/(site)/leaderboard/page.tsx index 9572e4d2..742e86b3 100644 --- a/src/app/(site)/leaderboard/page.tsx +++ b/src/app/(site)/leaderboard/page.tsx @@ -6,10 +6,6 @@ import { db, User, UsersCurrency, UsersSettings } from "@/lib/db"; import { avatarImageUrl } from "@/lib/format"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Leaderboard" }; // Currency type ids (see UsersCurrency in src/db/schema.ts): diff --git a/src/app/(site)/login/page.tsx b/src/app/(site)/login/page.tsx index ceeadb2e..6693af03 100644 --- a/src/app/(site)/login/page.tsx +++ b/src/app/(site)/login/page.tsx @@ -15,10 +15,6 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { captchaConfig } from "@/lib/services/captcha"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function LoginPage() { const t = await getTranslations("pages.login"); const th = await getTranslations("header"); diff --git a/src/app/(site)/logo/page.tsx b/src/app/(site)/logo/page.tsx index ab1ff779..d74f5b59 100644 --- a/src/app/(site)/logo/page.tsx +++ b/src/app/(site)/logo/page.tsx @@ -2,10 +2,6 @@ import LogoGenerator from "@/components/public/logo-generator"; import { ContentCard } from "@/components/public/ui"; import { resolveHotelName } from "@/lib/hotel-name"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Logo generator" }; /** diff --git a/src/app/(site)/maintenance/page.tsx b/src/app/(site)/maintenance/page.tsx index dbd6f23d..eecfe2be 100644 --- a/src/app/(site)/maintenance/page.tsx +++ b/src/app/(site)/maintenance/page.tsx @@ -3,10 +3,6 @@ import { ContentCard } from "@/components/public/ui"; import { resolveHotelName } from "@/lib/hotel-name"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function MaintenancePage() { const t = await getTranslations("pages.maintenance"); const [hotel, message] = await Promise.all([ diff --git a/src/app/(site)/marketplace/page.tsx b/src/app/(site)/marketplace/page.tsx index adb789b7..540dd3b4 100644 --- a/src/app/(site)/marketplace/page.tsx +++ b/src/app/(site)/marketplace/page.tsx @@ -4,10 +4,6 @@ import { ContentCard, EmptyState, StatBlock } from "@/components/public/ui"; import { db, MarketplaceItems, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Marketplace" }; // state == 1 → an active, unsold offer in the Arcturus marketplace. diff --git a/src/app/(site)/me/page.tsx b/src/app/(site)/me/page.tsx index 2051ad34..154aa9c7 100644 --- a/src/app/(site)/me/page.tsx +++ b/src/app/(site)/me/page.tsx @@ -24,10 +24,6 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { siteSettings } from "@/lib/services/site-settings"; import CopyReferralButton from "./CopyReferralButton"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "My dashboard" }; type SearchParams = Promise<{ claimed?: string; error?: string }>; diff --git a/src/app/(site)/messages/page.tsx b/src/app/(site)/messages/page.tsx index fd3508f5..a788d865 100644 --- a/src/app/(site)/messages/page.tsx +++ b/src/app/(site)/messages/page.tsx @@ -21,10 +21,6 @@ import { avatarImageUrl } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ accepted?: string; declined?: string; diff --git a/src/app/(site)/news/[...slug]/page.tsx b/src/app/(site)/news/[...slug]/page.tsx index 9ea18a8a..1ed8a2c0 100644 --- a/src/app/(site)/news/[...slug]/page.tsx +++ b/src/app/(site)/news/[...slug]/page.tsx @@ -21,10 +21,6 @@ import { excerpt } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; import { sanitize } from "@/lib/sanitize"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ comment?: string; reaction?: string; diff --git a/src/app/(site)/news/page.tsx b/src/app/(site)/news/page.tsx index 50628e2a..02392dc0 100644 --- a/src/app/(site)/news/page.tsx +++ b/src/app/(site)/news/page.tsx @@ -7,10 +7,6 @@ import { db, WebsiteArticles } from "@/lib/db"; import { excerpt } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "News" }; export default async function NewsPage() { diff --git a/src/app/(site)/page.tsx b/src/app/(site)/page.tsx index 5827edd7..286d9e8d 100644 --- a/src/app/(site)/page.tsx +++ b/src/app/(site)/page.tsx @@ -21,10 +21,6 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { captchaConfig } from "@/lib/services/captcha"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - async function getHotelData() { const [hotelName, imagerRaw, logo] = await Promise.all([ resolveHotelName(), diff --git a/src/app/(site)/photos/page.tsx b/src/app/(site)/photos/page.tsx index 20dfca95..67ec492d 100644 --- a/src/app/(site)/photos/page.tsx +++ b/src/app/(site)/photos/page.tsx @@ -8,10 +8,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { CameraWeb, db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Photos" }; type Photo = { diff --git a/src/app/(site)/polls/[id]/page.tsx b/src/app/(site)/polls/[id]/page.tsx index bdc88121..30787738 100644 --- a/src/app/(site)/polls/[id]/page.tsx +++ b/src/app/(site)/polls/[id]/page.tsx @@ -13,10 +13,6 @@ import { import { formatDate } from "@/lib/format-date"; import { PollVoteForm } from "./poll-vote-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function PollDetailPage({ params, }: { diff --git a/src/app/(site)/polls/page.tsx b/src/app/(site)/polls/page.tsx index 024f297f..14f279e3 100644 --- a/src/app/(site)/polls/page.tsx +++ b/src/app/(site)/polls/page.tsx @@ -6,10 +6,6 @@ import { db, WebsitePoll, WebsitePollQuestion } from "@/lib/db"; import { excerpt } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Polls" }; export default async function PollsPage() { diff --git a/src/app/(site)/radio/apply/page.tsx b/src/app/(site)/radio/apply/page.tsx index 68bb1a74..cfa66ed0 100644 --- a/src/app/(site)/radio/apply/page.tsx +++ b/src/app/(site)/radio/apply/page.tsx @@ -8,10 +8,6 @@ import { auth } from "@/lib/auth"; import { db, RadioApplications } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - function feedbackStyle(tone: "success" | "error"): CSSProperties { const accent = tone === "error" ? "var(--color-danger)" : "var(--color-primary)"; diff --git a/src/app/(site)/radio/contests/[id]/page.tsx b/src/app/(site)/radio/contests/[id]/page.tsx index 81d5f32f..7a8fc69b 100644 --- a/src/app/(site)/radio/contests/[id]/page.tsx +++ b/src/app/(site)/radio/contests/[id]/page.tsx @@ -6,10 +6,6 @@ import { ContentCard } from "@/components/public/ui"; import { db, RadioContests } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RadioContestDetailPage({ params, }: { diff --git a/src/app/(site)/radio/contests/page.tsx b/src/app/(site)/radio/contests/page.tsx index f679cc83..161cc0e7 100644 --- a/src/app/(site)/radio/contests/page.tsx +++ b/src/app/(site)/radio/contests/page.tsx @@ -5,10 +5,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, RadioContests } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RadioContestsPage() { const t = await getTranslations("pages.radioContests"); diff --git a/src/app/(site)/radio/giveaways/[id]/page.tsx b/src/app/(site)/radio/giveaways/[id]/page.tsx index 8a26c9ed..52d5d59c 100644 --- a/src/app/(site)/radio/giveaways/[id]/page.tsx +++ b/src/app/(site)/radio/giveaways/[id]/page.tsx @@ -6,10 +6,6 @@ import { ContentCard } from "@/components/public/ui"; import { db, RadioGiveaways } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RadioGiveawayDetailPage({ params, }: { diff --git a/src/app/(site)/radio/giveaways/page.tsx b/src/app/(site)/radio/giveaways/page.tsx index b4951588..8b24f193 100644 --- a/src/app/(site)/radio/giveaways/page.tsx +++ b/src/app/(site)/radio/giveaways/page.tsx @@ -5,10 +5,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, RadioGiveaways } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RadioGiveawaysPage() { const t = await getTranslations("pages.radioGiveaways"); diff --git a/src/app/(site)/radio/layout.tsx b/src/app/(site)/radio/layout.tsx index 1c8d4225..f304de50 100644 --- a/src/app/(site)/radio/layout.tsx +++ b/src/app/(site)/radio/layout.tsx @@ -2,10 +2,6 @@ import Link from "next/link"; import { getTranslations } from "next-intl/server"; import type { ReactNode } from "react"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const RADIO_SIDEBAR_LINKS = [ { key: "schedule", href: "/radio/schedule", icon: "🗓️" }, { key: "shouts", href: "/radio/shouts", icon: "📣" }, diff --git a/src/app/(site)/radio/leaderboard/page.tsx b/src/app/(site)/radio/leaderboard/page.tsx index 498d92b6..1f99b3ec 100644 --- a/src/app/(site)/radio/leaderboard/page.tsx +++ b/src/app/(site)/radio/leaderboard/page.tsx @@ -6,10 +6,6 @@ import { db } from "@/lib/db"; import { avatarImageUrl } from "@/lib/format"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type LeaderRow = { username: string; look: string; diff --git a/src/app/(site)/radio/page.tsx b/src/app/(site)/radio/page.tsx index 963dcbce..91d5c239 100644 --- a/src/app/(site)/radio/page.tsx +++ b/src/app/(site)/radio/page.tsx @@ -5,10 +5,6 @@ import { ContentCard, EmptyState, OnlineBadge } from "@/components/public/ui"; import { db, RadioSchedules, User } from "@/lib/db"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Radio config + today's schedule are read live from the DB / settings table. // Canonical weekday order so today's slots come out chronologically and we can diff --git a/src/app/(site)/radio/requests/page.tsx b/src/app/(site)/radio/requests/page.tsx index 7b224b34..642552ab 100644 --- a/src/app/(site)/radio/requests/page.tsx +++ b/src/app/(site)/radio/requests/page.tsx @@ -7,10 +7,6 @@ import { auth } from "@/lib/auth"; import { db, RadioSongRequests, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ posted?: string; error?: string }>; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/radio/schedule/page.tsx b/src/app/(site)/radio/schedule/page.tsx index 00fc990d..bc24b675 100644 --- a/src/app/(site)/radio/schedule/page.tsx +++ b/src/app/(site)/radio/schedule/page.tsx @@ -3,10 +3,6 @@ import { getTranslations } from "next-intl/server"; import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, RadioSchedules, User } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Weekly order so the table reads Monday → Sunday regardless of insert order. // The `day` column stores a free-form string; we key case-insensitively. const DAYS = [ diff --git a/src/app/(site)/radio/shouts/page.tsx b/src/app/(site)/radio/shouts/page.tsx index 929303f6..5871f7ca 100644 --- a/src/app/(site)/radio/shouts/page.tsx +++ b/src/app/(site)/radio/shouts/page.tsx @@ -9,10 +9,6 @@ import { avatarImageUrl } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ posted?: string; error?: string }>; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/rankings/page.tsx b/src/app/(site)/rankings/page.tsx index 6778e597..6626822b 100644 --- a/src/app/(site)/rankings/page.tsx +++ b/src/app/(site)/rankings/page.tsx @@ -12,10 +12,6 @@ import { db, User } from "@/lib/db"; import { avatarImageUrl } from "@/lib/format"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Rankings" }; type TopUser = { diff --git a/src/app/(site)/rares/[category]/page.tsx b/src/app/(site)/rares/[category]/page.tsx index 4812a50e..ddefe3d8 100644 --- a/src/app/(site)/rares/[category]/page.tsx +++ b/src/app/(site)/rares/[category]/page.tsx @@ -6,10 +6,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, WebsiteRareValueCategories, WebsiteRareValues } from "@/lib/db"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type RareRow = { id: bigint; name: string; diff --git a/src/app/(site)/rares/page.tsx b/src/app/(site)/rares/page.tsx index 07ec92b1..80237974 100644 --- a/src/app/(site)/rares/page.tsx +++ b/src/app/(site)/rares/page.tsx @@ -5,10 +5,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, WebsiteRareValueCategories, WebsiteRareValues } from "@/lib/db"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Rare values" }; type CategoryRow = { diff --git a/src/app/(site)/redeem/page.tsx b/src/app/(site)/redeem/page.tsx index 2570f082..9d21d6a0 100644 --- a/src/app/(site)/redeem/page.tsx +++ b/src/app/(site)/redeem/page.tsx @@ -6,10 +6,6 @@ import { auth } from "@/lib/auth"; import { db, User } from "@/lib/db"; import RedeemForm from "./RedeemForm"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RedeemPage() { const session = await auth(); if (!session?.user?.id) redirect("/login"); diff --git a/src/app/(site)/register/page.tsx b/src/app/(site)/register/page.tsx index 14035b16..54e8dccb 100644 --- a/src/app/(site)/register/page.tsx +++ b/src/app/(site)/register/page.tsx @@ -15,10 +15,6 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { captchaConfig } from "@/lib/services/captcha"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RegisterPage() { const th = await getTranslations("header"); const tpr = await getTranslations("pages.register"); diff --git a/src/app/(site)/reset/page.tsx b/src/app/(site)/reset/page.tsx index 9b59687b..4c011302 100644 --- a/src/app/(site)/reset/page.tsx +++ b/src/app/(site)/reset/page.tsx @@ -3,10 +3,6 @@ import { getTranslations } from "next-intl/server"; import { resetPassword } from "@/actions/password-reset"; import { ContentCard } from "@/components/public/ui"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ResetPage({ searchParams, }: { diff --git a/src/app/(site)/room/[id]/page.tsx b/src/app/(site)/room/[id]/page.tsx index e16230f3..7f5328b7 100644 --- a/src/app/(site)/room/[id]/page.tsx +++ b/src/app/(site)/room/[id]/page.tsx @@ -5,10 +5,6 @@ import { notFound } from "next/navigation"; import { ContentCard, EmptyState, StatBlock } from "@/components/public/ui"; import { db, Rooms, User } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Arcturus stores room access as a short string on rooms.state. Map each known // value to a friendly label + lock icon; unknown values fall back to the raw // string so we never hide a real (future) state from the visitor. diff --git a/src/app/(site)/search/page.tsx b/src/app/(site)/search/page.tsx index b7c01e65..79cb9623 100644 --- a/src/app/(site)/search/page.tsx +++ b/src/app/(site)/search/page.tsx @@ -6,10 +6,6 @@ import { db, Rooms, User } from "@/lib/db"; import { avatarImageUrl } from "@/lib/format"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata: Metadata = { title: "Search" }; type SearchParams = Promise<{ q?: string }>; diff --git a/src/app/(site)/settings/2fa/page.tsx b/src/app/(site)/settings/2fa/page.tsx index 6fd8bce9..050e7ca3 100644 --- a/src/app/(site)/settings/2fa/page.tsx +++ b/src/app/(site)/settings/2fa/page.tsx @@ -15,10 +15,6 @@ import { totpKeyUri } from "@/lib/auth/totp"; import { db, User } from "@/lib/db"; import { resolveHotelName } from "@/lib/hotel-name"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function TwoFactorPage({ searchParams, }: { diff --git a/src/app/(site)/settings/page.tsx b/src/app/(site)/settings/page.tsx index bed1e828..631a76c6 100644 --- a/src/app/(site)/settings/page.tsx +++ b/src/app/(site)/settings/page.tsx @@ -10,10 +10,6 @@ import { db, User } from "@/lib/db"; import { avatarImageUrl } from "@/lib/format"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function SettingsPage() { const t = await getTranslations("pages.settings"); const session = await auth(); diff --git a/src/app/(site)/settings/sessions/page.tsx b/src/app/(site)/settings/sessions/page.tsx index 867aed63..644cf4ce 100644 --- a/src/app/(site)/settings/sessions/page.tsx +++ b/src/app/(site)/settings/sessions/page.tsx @@ -7,10 +7,6 @@ import { auth } from "@/lib/auth"; import { db, WebsiteLoginLogs } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ signedOutAll?: string }>; /** Tiny user-agent → "Browser on OS" summary (no dependency). */ diff --git a/src/app/(site)/shop/page.tsx b/src/app/(site)/shop/page.tsx index df56a8f4..8a25e62a 100644 --- a/src/app/(site)/shop/page.tsx +++ b/src/app/(site)/shop/page.tsx @@ -9,10 +9,6 @@ import { db, WebsiteShopArticles, WebsiteShopCategories } from "@/lib/db"; import { excerpt } from "@/lib/format"; import { creditsPerUnit } from "@/lib/services/paypal"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Shop" }; function feedbackStyle(tone: "success" | "error"): CSSProperties { diff --git a/src/app/(site)/shop/topup/page.tsx b/src/app/(site)/shop/topup/page.tsx index 1a83017a..5119fb8a 100644 --- a/src/app/(site)/shop/topup/page.tsx +++ b/src/app/(site)/shop/topup/page.tsx @@ -11,10 +11,6 @@ import { } from "@/lib/services/paypal"; import TopUpForm from "./TopUpForm"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function TopUpPage({ searchParams, }: { diff --git a/src/app/(site)/staff/page.tsx b/src/app/(site)/staff/page.tsx index c03db686..3c78dfef 100644 --- a/src/app/(site)/staff/page.tsx +++ b/src/app/(site)/staff/page.tsx @@ -5,10 +5,6 @@ import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, User, WebsiteTeams } from "@/lib/db"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Staff" }; type StaffMember = { diff --git a/src/app/(site)/u/[username]/page.tsx b/src/app/(site)/u/[username]/page.tsx index 1609ba16..af9fd9be 100644 --- a/src/app/(site)/u/[username]/page.tsx +++ b/src/app/(site)/u/[username]/page.tsx @@ -28,10 +28,6 @@ import { avatarImageUrl } from "@/lib/format"; import { formatDate } from "@/lib/format-date"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SearchParams = Promise<{ friend?: string; guestbook?: string; diff --git a/src/app/(site)/verify/page.tsx b/src/app/(site)/verify/page.tsx index 3eafd786..5b3eef70 100644 --- a/src/app/(site)/verify/page.tsx +++ b/src/app/(site)/verify/page.tsx @@ -5,10 +5,6 @@ import { getTranslations } from "next-intl/server"; import { isValidVerificationToken } from "@/actions/email-verify"; import { db, User } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Status = "verified" | "already" | "invalid" | "unavailable"; function StatusCard({ diff --git a/src/app/admin/achievements/page.tsx b/src/app/admin/achievements/page.tsx index 2ef0a1cb..9c7db09f 100644 --- a/src/app/admin/achievements/page.tsx +++ b/src/app/admin/achievements/page.tsx @@ -5,10 +5,6 @@ import { StatusCard } from "@/components/admin/dashboard"; import { Achievements, db } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Achievement = { name: string; category: string; diff --git a/src/app/admin/ads/[id]/page.tsx b/src/app/admin/ads/[id]/page.tsx index 54477cde..29a89e88 100644 --- a/src/app/admin/ads/[id]/page.tsx +++ b/src/app/admin/ads/[id]/page.tsx @@ -9,10 +9,6 @@ import { db, WebsiteAds } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { EditAdDeleteButton } from "../edit-ad-delete-button"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EditAd({ params, }: { diff --git a/src/app/admin/ads/new/page.tsx b/src/app/admin/ads/new/page.tsx index 06451f30..0edf7e0a 100644 --- a/src/app/admin/ads/new/page.tsx +++ b/src/app/admin/ads/new/page.tsx @@ -5,10 +5,6 @@ import { createAd } from "@/actions/admin-ads"; import { Button } from "@/components/ui/button"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function NewAd() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.PAGES_EDIT, session.user.rank)) { diff --git a/src/app/admin/ads/page.tsx b/src/app/admin/ads/page.tsx index c02f3ea5..bbcc6973 100644 --- a/src/app/admin/ads/page.tsx +++ b/src/app/admin/ads/page.tsx @@ -9,10 +9,6 @@ import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { AdsTable } from "./ads-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminAds() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.PAGES_VIEW, session.user.rank)) { diff --git a/src/app/admin/alerts/page.tsx b/src/app/admin/alerts/page.tsx index dfbe27ff..e4f6c2df 100644 --- a/src/app/admin/alerts/page.tsx +++ b/src/app/admin/alerts/page.tsx @@ -8,10 +8,6 @@ import { AlertLogs, db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const CRITICAL = new Set(["critical", "error", "danger"]); const WARNING = new Set(["warning", "warn"]); diff --git a/src/app/admin/analytics/activity/page.tsx b/src/app/admin/analytics/activity/page.tsx index 41cd6b23..40d740ef 100644 --- a/src/app/admin/analytics/activity/page.tsx +++ b/src/app/admin/analytics/activity/page.tsx @@ -8,10 +8,6 @@ import { Ban, db, User } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { redisCache } from "@/lib/redis-cache"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type DayRow = { label: string; chats: number; diff --git a/src/app/admin/analytics/economy/page.tsx b/src/app/admin/analytics/economy/page.tsx index 9a132b06..901dafe2 100644 --- a/src/app/admin/analytics/economy/page.tsx +++ b/src/app/admin/analytics/economy/page.tsx @@ -16,10 +16,6 @@ import { import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { redisCache } from "@/lib/redis-cache"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type EconomyData = { totalCredits: number; totalPixels: number; diff --git a/src/app/admin/analytics/page.tsx b/src/app/admin/analytics/page.tsx index c0834636..e38a7236 100644 --- a/src/app/admin/analytics/page.tsx +++ b/src/app/admin/analytics/page.tsx @@ -17,10 +17,6 @@ import { Ban, db, Rooms, RoomTradeLog, User } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { redisCache } from "@/lib/redis-cache"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type AnalyticsData = { totalUsers: number; onlineUsers: number; diff --git a/src/app/admin/applications/page.tsx b/src/app/admin/applications/page.tsx index 3de85b71..9c9a3ab8 100644 --- a/src/app/admin/applications/page.tsx +++ b/src/app/admin/applications/page.tsx @@ -9,10 +9,6 @@ import { db, User, WebsiteStaffApplications } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type ApplicationRow = { id: bigint; userId: number; diff --git a/src/app/admin/articles/[id]/page.tsx b/src/app/admin/articles/[id]/page.tsx index 0d6872d8..b27e2c43 100644 --- a/src/app/admin/articles/[id]/page.tsx +++ b/src/app/admin/articles/[id]/page.tsx @@ -9,10 +9,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteArticles } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EditArticle({ params, searchParams, diff --git a/src/app/admin/articles/new/page.tsx b/src/app/admin/articles/new/page.tsx index 1292c9be..162665fd 100644 --- a/src/app/admin/articles/new/page.tsx +++ b/src/app/admin/articles/new/page.tsx @@ -6,10 +6,6 @@ import { createArticle } from "@/actions/admin-articles"; import { ArticleForm } from "@/components/admin/article-form"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function NewArticle({ searchParams, }: { diff --git a/src/app/admin/articles/page.tsx b/src/app/admin/articles/page.tsx index 58d49d60..de79b214 100644 --- a/src/app/admin/articles/page.tsx +++ b/src/app/admin/articles/page.tsx @@ -11,10 +11,6 @@ import { db, User, WebsiteArticles } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminArticles({ searchParams, }: { diff --git a/src/app/admin/badges/page.tsx b/src/app/admin/badges/page.tsx index d4ef1f48..b615c6e1 100644 --- a/src/app/admin/badges/page.tsx +++ b/src/app/admin/badges/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteBadges } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Badges" }; export default async function AdminBadges({ diff --git a/src/app/admin/banners/page.tsx b/src/app/admin/banners/page.tsx index e8e2190e..b2ecaa26 100644 --- a/src/app/admin/banners/page.tsx +++ b/src/app/admin/banners/page.tsx @@ -4,10 +4,6 @@ import { db, WebsiteBanner } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { BannersManager } from "./banners-manager"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function BannersPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.BANNERS_VIEW, session.user.rank)) { diff --git a/src/app/admin/bans/page.tsx b/src/app/admin/bans/page.tsx index 81983a0d..5730f7bf 100644 --- a/src/app/admin/bans/page.tsx +++ b/src/app/admin/bans/page.tsx @@ -11,10 +11,6 @@ import { Ban, db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminBans() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.BANS_VIEW, session.user.rank)) { diff --git a/src/app/admin/calendar/[id]/page.tsx b/src/app/admin/calendar/[id]/page.tsx index b66943b0..6ab0e6e8 100644 --- a/src/app/admin/calendar/[id]/page.tsx +++ b/src/app/admin/calendar/[id]/page.tsx @@ -6,10 +6,6 @@ import { CalendarCampaigns, CalendarRewards, db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Campaign = { id: number; name: string; diff --git a/src/app/admin/calendar/page.tsx b/src/app/admin/calendar/page.tsx index dce70fe1..c8505a35 100644 --- a/src/app/admin/calendar/page.tsx +++ b/src/app/admin/calendar/page.tsx @@ -7,10 +7,6 @@ import { CalendarCampaigns, CalendarRewards, db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Campaign = { id: number; name: string; diff --git a/src/app/admin/catalog/[id]/page.tsx b/src/app/admin/catalog/[id]/page.tsx index 126d21c5..432b16ba 100644 --- a/src/app/admin/catalog/[id]/page.tsx +++ b/src/app/admin/catalog/[id]/page.tsx @@ -9,10 +9,6 @@ import { loadCatalogItemsData } from "@/lib/services/catalog-items-loader"; import { getAncestors } from "@/lib/services/catalog-tree"; import { CatalogDetailTabs } from "./catalog-detail-tabs"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function CatalogEditPage({ params, }: { diff --git a/src/app/admin/catalog/builder-club/[id]/page.tsx b/src/app/admin/catalog/builder-club/[id]/page.tsx index 9090e43c..4a7ee9bd 100644 --- a/src/app/admin/catalog/builder-club/[id]/page.tsx +++ b/src/app/admin/catalog/builder-club/[id]/page.tsx @@ -4,10 +4,6 @@ import { CatalogItemsBc, CatalogPagesBc, db } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { BcPageDetail } from "../bc-manager"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function BcPageDetailPage({ params: paramsPromise, }: { diff --git a/src/app/admin/catalog/builder-club/page.tsx b/src/app/admin/catalog/builder-club/page.tsx index 91c2a0bf..bdeaa141 100644 --- a/src/app/admin/catalog/builder-club/page.tsx +++ b/src/app/admin/catalog/builder-club/page.tsx @@ -1,9 +1,5 @@ import { redirect } from "next/navigation"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default function BuilderClubPage() { redirect("/admin/catalog?catalog=bc"); } diff --git a/src/app/admin/catalog/page.tsx b/src/app/admin/catalog/page.tsx index fc4d04c8..bff91966 100644 --- a/src/app/admin/catalog/page.tsx +++ b/src/app/admin/catalog/page.tsx @@ -31,10 +31,6 @@ import { CatalogManagerDialog } from "./catalog-manager-dialog-wrapper"; import { CatalogTable } from "./catalog-table"; import { CatalogViewToggle } from "./catalog-view-toggle"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - async function rawRows(query: ReturnType): Promise { const [rows] = (await db.execute(query)) as unknown as [T[], unknown]; return rows ?? []; diff --git a/src/app/admin/commandocentrum/page.tsx b/src/app/admin/commandocentrum/page.tsx index 026d7c16..4463c861 100644 --- a/src/app/admin/commandocentrum/page.tsx +++ b/src/app/admin/commandocentrum/page.tsx @@ -18,10 +18,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { siteSettings } from "@/lib/services/site-settings"; import { CommandocentrumControls } from "./commandocentrum-controls"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - function decodeStacktrace(raw: unknown): string { if (raw == null) return ""; try { diff --git a/src/app/admin/devops/errors/page.tsx b/src/app/admin/devops/errors/page.tsx index e2b83540..75a5dfcd 100644 --- a/src/app/admin/devops/errors/page.tsx +++ b/src/app/admin/devops/errors/page.tsx @@ -5,10 +5,6 @@ import { Card, CardContent } from "@/components/ui/card"; import { db, EmulatorErrors } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EmulatorErrorsPage({ searchParams, }: { diff --git a/src/app/admin/devops/page.tsx b/src/app/admin/devops/page.tsx index f819fd58..148325ce 100644 --- a/src/app/admin/devops/page.tsx +++ b/src/app/admin/devops/page.tsx @@ -10,10 +10,6 @@ import { db, EmulatorErrors, EmulatorSettings } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { HealthCheckClient } from "./health-check-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - async function getDevOpsData() { const now = Math.floor(Date.now() / 1000); const dayAgo = now - 86400; diff --git a/src/app/admin/email-templates/page.tsx b/src/app/admin/email-templates/page.tsx index 86622cca..ae8d8c34 100644 --- a/src/app/admin/email-templates/page.tsx +++ b/src/app/admin/email-templates/page.tsx @@ -10,10 +10,6 @@ import { Button } from "@/components/ui/button"; import { db, EmailTemplates } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminEmailTemplates() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.PAGES_VIEW, session.user.rank)) { diff --git a/src/app/admin/emulator/page.tsx b/src/app/admin/emulator/page.tsx index bd9899cd..06c183e4 100644 --- a/src/app/admin/emulator/page.tsx +++ b/src/app/admin/emulator/page.tsx @@ -10,10 +10,6 @@ import { Button } from "@/components/ui/button"; import { db, EmulatorSettings, EmulatorTexts } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const TEXTS_LIMIT = 300; export default async function AdminEmulator() { diff --git a/src/app/admin/events/[id]/page.tsx b/src/app/admin/events/[id]/page.tsx index c82ecc10..a59fca3d 100644 --- a/src/app/admin/events/[id]/page.tsx +++ b/src/app/admin/events/[id]/page.tsx @@ -12,10 +12,6 @@ import { EventPrizesManager } from "./event-prizes"; import { EventRegistrations } from "./event-registrations"; import { EventWinnersManager } from "./event-winners"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EventDetailPage({ params, }: { diff --git a/src/app/admin/events/create/page.tsx b/src/app/admin/events/create/page.tsx index cb9dc250..65a14b23 100644 --- a/src/app/admin/events/create/page.tsx +++ b/src/app/admin/events/create/page.tsx @@ -5,10 +5,6 @@ import { db, WebsiteEventType } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { EventForm } from "../event-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function CreateEventPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.EVENTS_EDIT, session.user.rank)) { diff --git a/src/app/admin/events/page.tsx b/src/app/admin/events/page.tsx index 736db5f8..1622b098 100644 --- a/src/app/admin/events/page.tsx +++ b/src/app/admin/events/page.tsx @@ -7,10 +7,6 @@ import { db, WebsiteEvent, WebsiteEventType } from "@/lib/db"; import { PERMS } from "@/lib/permissions"; import { EventsTable } from "./events-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EventsPage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/events/types/page.tsx b/src/app/admin/events/types/page.tsx index c5b9d2c4..e74d9317 100644 --- a/src/app/admin/events/types/page.tsx +++ b/src/app/admin/events/types/page.tsx @@ -4,10 +4,6 @@ import { db, WebsiteEventType } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { EventTypesManager } from "./event-types-manager"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EventTypesPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.EVENTS_EDIT, session.user.rank)) { diff --git a/src/app/admin/favicon/page.tsx b/src/app/admin/favicon/page.tsx index 2a88aa85..43c17e36 100644 --- a/src/app/admin/favicon/page.tsx +++ b/src/app/admin/favicon/page.tsx @@ -4,10 +4,6 @@ import { db, WebsiteSetting } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { FaviconForm } from "./favicon-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminFaviconPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.SETTINGS_VIEW, session.user.rank)) { diff --git a/src/app/admin/guilds/[id]/page.tsx b/src/app/admin/guilds/[id]/page.tsx index 12f68710..61bac825 100644 --- a/src/app/admin/guilds/[id]/page.tsx +++ b/src/app/admin/guilds/[id]/page.tsx @@ -8,10 +8,6 @@ import { db, Guilds, GuildsForumsThreads, GuildsMembers, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminGuildDetailPage({ params, }: { diff --git a/src/app/admin/guilds/page.tsx b/src/app/admin/guilds/page.tsx index ee7fb70f..10cc2997 100644 --- a/src/app/admin/guilds/page.tsx +++ b/src/app/admin/guilds/page.tsx @@ -12,10 +12,6 @@ import { db, Guilds, GuildsMembers, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminGuildsPage({ searchParams, }: { diff --git a/src/app/admin/help-questions/[id]/page.tsx b/src/app/admin/help-questions/[id]/page.tsx index 40aee76c..f88f3648 100644 --- a/src/app/admin/help-questions/[id]/page.tsx +++ b/src/app/admin/help-questions/[id]/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteHelpCenterCategories } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EditHelpQuestion({ params, searchParams, diff --git a/src/app/admin/help-questions/new/page.tsx b/src/app/admin/help-questions/new/page.tsx index da0119ac..0275a4ab 100644 --- a/src/app/admin/help-questions/new/page.tsx +++ b/src/app/admin/help-questions/new/page.tsx @@ -5,10 +5,6 @@ import { createHelpQuestion } from "@/actions/admin-help"; import { Button } from "@/components/ui/button"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function NewHelpQuestion({ searchParams, }: { diff --git a/src/app/admin/help-questions/page.tsx b/src/app/admin/help-questions/page.tsx index 9d1f5ec8..409fd14f 100644 --- a/src/app/admin/help-questions/page.tsx +++ b/src/app/admin/help-questions/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteHelpCenterCategories } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminHelpQuestions() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.PAGES_VIEW, session.user.rank)) { diff --git a/src/app/admin/help-tickets/[id]/page.tsx b/src/app/admin/help-tickets/[id]/page.tsx index caabed24..f9045d2a 100644 --- a/src/app/admin/help-tickets/[id]/page.tsx +++ b/src/app/admin/help-tickets/[id]/page.tsx @@ -17,10 +17,6 @@ import { import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { AdminHelpTicketDetail } from "./admin-help-ticket-detail"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminHelpTicketDetailPage({ params, }: { diff --git a/src/app/admin/help-tickets/page.tsx b/src/app/admin/help-tickets/page.tsx index 6efbb904..ac7af8ea 100644 --- a/src/app/admin/help-tickets/page.tsx +++ b/src/app/admin/help-tickets/page.tsx @@ -25,10 +25,6 @@ import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { type HelpTicketRow, HelpTicketsTable } from "./help-tickets-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminHelpTicketsPage({ searchParams, }: { diff --git a/src/app/admin/housekeeping/page.tsx b/src/app/admin/housekeeping/page.tsx index 56ca69d1..33828691 100644 --- a/src/app/admin/housekeeping/page.tsx +++ b/src/app/admin/housekeeping/page.tsx @@ -13,10 +13,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { getAuditLogs } from "@/lib/services/audit"; import { AuditSection, ExportSection } from "./client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminHousekeeping({ searchParams, }: { diff --git a/src/app/admin/import/audit/page.tsx b/src/app/admin/import/audit/page.tsx index 99d38aaa..6a930f4d 100644 --- a/src/app/admin/import/audit/page.tsx +++ b/src/app/admin/import/audit/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { AuditClient } from "./audit-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AuditPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.ASSETS_IMPORT, session.user.rank)) { diff --git a/src/app/admin/import/badges/page.tsx b/src/app/admin/import/badges/page.tsx index 544c04b9..bb505934 100644 --- a/src/app/admin/import/badges/page.tsx +++ b/src/app/admin/import/badges/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ImportBadgesClient } from "./import-badges-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportBadgesPage(_props: { params: Promise<{ locale: string }>; }) { diff --git a/src/app/admin/import/clone/page.tsx b/src/app/admin/import/clone/page.tsx index a98703cb..568306c6 100644 --- a/src/app/admin/import/clone/page.tsx +++ b/src/app/admin/import/clone/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ImportCloneClient } from "./import-clone-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportClonePage(_props: { params: Promise<{ locale: string }>; }) { diff --git a/src/app/admin/import/clothing/page.tsx b/src/app/admin/import/clothing/page.tsx index 4b98668a..72de5f65 100644 --- a/src/app/admin/import/clothing/page.tsx +++ b/src/app/admin/import/clothing/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ImportClothingClient } from "./import-clothing-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportClothingPage(_props: { params: Promise<{ locale: string }>; }) { diff --git a/src/app/admin/import/effects/page.tsx b/src/app/admin/import/effects/page.tsx index 9edb54b2..b23e5ace 100644 --- a/src/app/admin/import/effects/page.tsx +++ b/src/app/admin/import/effects/page.tsx @@ -3,10 +3,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ImportEffectsClient } from "./import-effects-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportEffectsPage(_props: { params: Promise<{ locale: string }>; }) { diff --git a/src/app/admin/import/furni/page.tsx b/src/app/admin/import/furni/page.tsx index e61951bc..59ebb61e 100644 --- a/src/app/admin/import/furni/page.tsx +++ b/src/app/admin/import/furni/page.tsx @@ -4,10 +4,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { getHabboGamedataHotel } from "@/lib/services/habbo-gamedata-hotel"; import { ImportFurniClient } from "./import-furni-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportFurniPage(_props: { params: Promise<{ locale: string }>; }) { diff --git a/src/app/admin/import/furni/upload/page.tsx b/src/app/admin/import/furni/upload/page.tsx index 8a660528..915d13e8 100644 --- a/src/app/admin/import/furni/upload/page.tsx +++ b/src/app/admin/import/furni/upload/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { UploadFurniClient } from "./upload-furni-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function UploadFurniPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.ASSETS_IMPORT, session.user.rank)) { diff --git a/src/app/admin/import/page.tsx b/src/app/admin/import/page.tsx index 1bf1eec8..ed2a61ac 100644 --- a/src/app/admin/import/page.tsx +++ b/src/app/admin/import/page.tsx @@ -15,10 +15,6 @@ import { redirect } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportPage() { const t = await getTranslations("pages.admin.import"); const { session, permissions } = await getAdminContext(); diff --git a/src/app/admin/import/pets/page.tsx b/src/app/admin/import/pets/page.tsx index 8ca66668..e10646c1 100644 --- a/src/app/admin/import/pets/page.tsx +++ b/src/app/admin/import/pets/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ImportPetsClient } from "./import-pets-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ImportPetsPage(_props: { params: Promise<{ locale: string }>; }) { diff --git a/src/app/admin/import/repair-icons/page.tsx b/src/app/admin/import/repair-icons/page.tsx index 25c8400a..66189cb0 100644 --- a/src/app/admin/import/repair-icons/page.tsx +++ b/src/app/admin/import/repair-icons/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { RepairIconsClient } from "./repair-icons-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RepairIconsPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.ASSETS_IMPORT, session.user.rank)) { diff --git a/src/app/admin/import/sync/page.tsx b/src/app/admin/import/sync/page.tsx index 4011edb0..f99ca767 100644 --- a/src/app/admin/import/sync/page.tsx +++ b/src/app/admin/import/sync/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { SyncAllClient } from "./sync-all-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function SyncAllPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.ASSETS_IMPORT, session.user.rank)) { diff --git a/src/app/admin/ip/page.tsx b/src/app/admin/ip/page.tsx index 60de0ac5..974f4bd7 100644 --- a/src/app/admin/ip/page.tsx +++ b/src/app/admin/ip/page.tsx @@ -13,10 +13,6 @@ import { db, WebsiteIpBlacklist, WebsiteIpWhitelist } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type IpRow = { id: bigint; ipAddress: string; diff --git a/src/app/admin/items/[id]/page.tsx b/src/app/admin/items/[id]/page.tsx index 2ed41884..64312f2d 100644 --- a/src/app/admin/items/[id]/page.tsx +++ b/src/app/admin/items/[id]/page.tsx @@ -7,10 +7,6 @@ import { db, ItemsBase } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ItemsBaseEditForm } from "./items-base-edit-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ItemsBaseDetailPage({ params, }: { diff --git a/src/app/admin/items/page.tsx b/src/app/admin/items/page.tsx index 81aeace0..017e0c44 100644 --- a/src/app/admin/items/page.tsx +++ b/src/app/admin/items/page.tsx @@ -7,10 +7,6 @@ import { db, ItemsBase } from "@/lib/db"; import { canAccess, PERMS } from "@/lib/permissions"; import { type ItemsBaseRow, ItemsTable } from "./items-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ItemsBasePage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/layout.tsx b/src/app/admin/layout.tsx index 6989d668..96d94dd3 100644 --- a/src/app/admin/layout.tsx +++ b/src/app/admin/layout.tsx @@ -21,12 +21,9 @@ import { readCsrfCookieToken } from "@/lib/foundation/security"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Request-time auth, existing CSRF cookie, and optional 2FA gate cannot be -// statically rendered. Child admin pages inherit this — leaf force-dynamic is redundant. +// statically rendered. The root layout's Cache Components opt-out +// (instant = false) covers this route tree — leaf opt-outs are redundant. export default async function AdminLayout({ children, diff --git a/src/app/admin/logs/audit/page.tsx b/src/app/admin/logs/audit/page.tsx index 39ffb24c..f84e5355 100644 --- a/src/app/admin/logs/audit/page.tsx +++ b/src/app/admin/logs/audit/page.tsx @@ -4,10 +4,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { getAuditLogs } from "@/lib/services/audit"; import { AuditTable } from "./audit-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AuditLogsPage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/logs/chat/page.tsx b/src/app/admin/logs/chat/page.tsx index a169ea0f..81e7c931 100644 --- a/src/app/admin/logs/chat/page.tsx +++ b/src/app/admin/logs/chat/page.tsx @@ -1,10 +1,6 @@ import { loadChatLogList } from "../_lib/load-ignored-logs"; import { ChatTable } from "./chat-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ChatLogsPage({ searchParams, }: { diff --git a/src/app/admin/logs/commands/page.tsx b/src/app/admin/logs/commands/page.tsx index f16dc8e1..a2c0f0ac 100644 --- a/src/app/admin/logs/commands/page.tsx +++ b/src/app/admin/logs/commands/page.tsx @@ -1,10 +1,6 @@ import { loadCommandLogList } from "../_lib/load-ignored-logs"; import { CommandsTable } from "./commands-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function CommandLogsPage({ searchParams, }: { diff --git a/src/app/admin/logs/page.tsx b/src/app/admin/logs/page.tsx index 5bccf88c..06154689 100644 --- a/src/app/admin/logs/page.tsx +++ b/src/app/admin/logs/page.tsx @@ -19,10 +19,6 @@ import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { StaffActivitiesTable } from "./staff-activities-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const SORT_MAP = { when: StaffActivities.createdAt, staff: StaffActivities.userId, diff --git a/src/app/admin/logs/trades/page.tsx b/src/app/admin/logs/trades/page.tsx index f8463ad9..2c470b9c 100644 --- a/src/app/admin/logs/trades/page.tsx +++ b/src/app/admin/logs/trades/page.tsx @@ -1,10 +1,6 @@ import { loadTradeLogList } from "../_lib/load-ignored-logs"; import { TradesTable } from "./trades-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function TradeLogsPage({ searchParams, }: { diff --git a/src/app/admin/maintenance/page.tsx b/src/app/admin/maintenance/page.tsx index 80b05b7b..31afa0f4 100644 --- a/src/app/admin/maintenance/page.tsx +++ b/src/app/admin/maintenance/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteSetting } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const KEYS = [ "maintenance_enabled", "maintenance_message", diff --git a/src/app/admin/marketplace/page.tsx b/src/app/admin/marketplace/page.tsx index 939d7785..2d3fef18 100644 --- a/src/app/admin/marketplace/page.tsx +++ b/src/app/admin/marketplace/page.tsx @@ -13,10 +13,6 @@ import { db, MarketplaceItems, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminMarketplacePage({ searchParams, }: { diff --git a/src/app/admin/media/page.tsx b/src/app/admin/media/page.tsx index 6ba8e2f6..0f558853 100644 --- a/src/app/admin/media/page.tsx +++ b/src/app/admin/media/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { AdminMediaGrid } from "@/components/admin/media-grid"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminMediaPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.PAGES_VIEW, session.user.rank)) { diff --git a/src/app/admin/menu/page.tsx b/src/app/admin/menu/page.tsx index 2197726e..910fea23 100644 --- a/src/app/admin/menu/page.tsx +++ b/src/app/admin/menu/page.tsx @@ -11,10 +11,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { siteSettings } from "@/lib/services/site-settings"; import { AdminMenuEditor } from "./admin-menu-editor"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Admin menu" }; export default async function AdminMenuPage() { diff --git a/src/app/admin/moderation/actions/page.tsx b/src/app/admin/moderation/actions/page.tsx index c8cab7b9..5e8d52c2 100644 --- a/src/app/admin/moderation/actions/page.tsx +++ b/src/app/admin/moderation/actions/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { ModActionsClient } from "./mod-actions-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function QuickActionsPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.MODERATION_EDIT, session.user.rank)) diff --git a/src/app/admin/moderation/cfh/[id]/page.tsx b/src/app/admin/moderation/cfh/[id]/page.tsx index 2f85f1ca..b1d8a12b 100644 --- a/src/app/admin/moderation/cfh/[id]/page.tsx +++ b/src/app/admin/moderation/cfh/[id]/page.tsx @@ -4,10 +4,6 @@ import { Ban, db, SupportTickets, User } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { CfhDetail } from "./cfh-detail"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function CfhDetailPage({ params, }: { diff --git a/src/app/admin/moderation/cfh/page.tsx b/src/app/admin/moderation/cfh/page.tsx index 186d8918..1d87d19e 100644 --- a/src/app/admin/moderation/cfh/page.tsx +++ b/src/app/admin/moderation/cfh/page.tsx @@ -17,10 +17,6 @@ import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { type CfhRow, CfhTable } from "./cfh-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function CfhListPage({ searchParams, }: { diff --git a/src/app/admin/moderation/page.tsx b/src/app/admin/moderation/page.tsx index ac627aea..ffb249e9 100644 --- a/src/app/admin/moderation/page.tsx +++ b/src/app/admin/moderation/page.tsx @@ -17,10 +17,6 @@ import { getMinStaffRank } from "@/lib/admin/min-staff-rank"; import { AdminAuditLog, Ban, db, SupportTickets, User } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const CFH_STATES: Record = { 0: { label: "Open", diff --git a/src/app/admin/moderation/team/page.tsx b/src/app/admin/moderation/team/page.tsx index 55fd16c3..e98556c2 100644 --- a/src/app/admin/moderation/team/page.tsx +++ b/src/app/admin/moderation/team/page.tsx @@ -14,10 +14,6 @@ import { } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModTeamPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.MODERATION_VIEW, session.user.rank)) diff --git a/src/app/admin/navigation/page.tsx b/src/app/admin/navigation/page.tsx index ddd61e8f..3bd651a9 100644 --- a/src/app/admin/navigation/page.tsx +++ b/src/app/admin/navigation/page.tsx @@ -5,10 +5,6 @@ import { StatusCard } from "@/components/admin/dashboard"; import { db, NavigatorFlatcats, NavigatorPubliccats, Rooms } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // navigator_flatcats — emulator-owned flat (private-room) categories shown in the // navigator. type Flatcat = { diff --git a/src/app/admin/online/page.tsx b/src/app/admin/online/page.tsx index 7ce09198..71e06341 100644 --- a/src/app/admin/online/page.tsx +++ b/src/app/admin/online/page.tsx @@ -7,10 +7,6 @@ import { db, User } from "@/lib/db"; import { PERMS } from "@/lib/permissions"; import { OnlineTable } from "./online-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function OnlineUsersPage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 7a74eefc..d1999b96 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -14,10 +14,6 @@ import { unixNow } from "@/lib/bans"; import { Ban, db, StaffActivities, User, WebsiteArticles } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type RankCount = { rank: number; count: number }; export default async function AdminDashboard() { diff --git a/src/app/admin/permissions/[id]/page.tsx b/src/app/admin/permissions/[id]/page.tsx index a390f919..ccd7f740 100644 --- a/src/app/admin/permissions/[id]/page.tsx +++ b/src/app/admin/permissions/[id]/page.tsx @@ -6,10 +6,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { fetchEmulatorRankForEdit } from "@/lib/services/permission-ranks"; import { RankEditClient } from "./rank-edit-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RankEditPage({ params, }: { diff --git a/src/app/admin/permissions/page.tsx b/src/app/admin/permissions/page.tsx index 9af27f51..55647d3b 100644 --- a/src/app/admin/permissions/page.tsx +++ b/src/app/admin/permissions/page.tsx @@ -5,10 +5,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { fetchEmulatorRankSummaries } from "@/lib/services/permission-ranks"; import { PermissionsList } from "./permissions-list"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function PermissionsPage({ searchParams, }: { diff --git a/src/app/admin/photos/page.tsx b/src/app/admin/photos/page.tsx index adc01f98..60b4e210 100644 --- a/src/app/admin/photos/page.tsx +++ b/src/app/admin/photos/page.tsx @@ -11,10 +11,6 @@ import { calcPagination, parseListParams } from "@/lib/admin-helpers"; import { CameraWeb, db, User } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminPhotos({ searchParams, }: { diff --git a/src/app/admin/polls/[id]/page.tsx b/src/app/admin/polls/[id]/page.tsx index ce68f157..5953741d 100644 --- a/src/app/admin/polls/[id]/page.tsx +++ b/src/app/admin/polls/[id]/page.tsx @@ -10,10 +10,6 @@ import { PollForm } from "../poll-form"; import { PollQuestionsManager } from "./poll-questions"; import { PollResultsView } from "./poll-results"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function PollDetailPage({ params, }: { diff --git a/src/app/admin/polls/create/page.tsx b/src/app/admin/polls/create/page.tsx index bab1be40..e193d584 100644 --- a/src/app/admin/polls/create/page.tsx +++ b/src/app/admin/polls/create/page.tsx @@ -3,10 +3,6 @@ import { getTranslations } from "next-intl/server"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { PollForm } from "../poll-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function CreatePollPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.POLLS_EDIT, session.user.rank)) { diff --git a/src/app/admin/polls/page.tsx b/src/app/admin/polls/page.tsx index c38b273d..5b079130 100644 --- a/src/app/admin/polls/page.tsx +++ b/src/app/admin/polls/page.tsx @@ -7,10 +7,6 @@ import { db, WebsitePoll } from "@/lib/db"; import { PERMS } from "@/lib/permissions"; import { PollsTable } from "./polls-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function PollsPage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/prefixes/page.tsx b/src/app/admin/prefixes/page.tsx index e1b1a10f..2eb62ac5 100644 --- a/src/app/admin/prefixes/page.tsx +++ b/src/app/admin/prefixes/page.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { PrefixesClient } from "./prefixes-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function PrefixesPage() { const { session, permissions } = await getAdminContext(); diff --git a/src/app/admin/radio/api-keys/page.tsx b/src/app/admin/radio/api-keys/page.tsx index 03757dbd..80333525 100644 --- a/src/app/admin/radio/api-keys/page.tsx +++ b/src/app/admin/radio/api-keys/page.tsx @@ -10,10 +10,6 @@ import { Button } from "@/components/ui/button"; import { db, RadioApiKeys } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Radio API Keys" }; type ApiKey = { diff --git a/src/app/admin/radio/autodj/page.tsx b/src/app/admin/radio/autodj/page.tsx index 256edb1c..84ef90c3 100644 --- a/src/app/admin/radio/autodj/page.tsx +++ b/src/app/admin/radio/autodj/page.tsx @@ -11,10 +11,6 @@ import { Button } from "@/components/ui/button"; import { db, RadioAutoDjPlaylist } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Radio AutoDJ" }; type Track = { diff --git a/src/app/admin/radio/banners/page.tsx b/src/app/admin/radio/banners/page.tsx index 5555294b..1f9da898 100644 --- a/src/app/admin/radio/banners/page.tsx +++ b/src/app/admin/radio/banners/page.tsx @@ -11,10 +11,6 @@ import { Button } from "@/components/ui/button"; import { db, RadioBanners } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Banner = { id: bigint; userId: bigint; diff --git a/src/app/admin/radio/embed/page.tsx b/src/app/admin/radio/embed/page.tsx index c46ad8ea..105b84ed 100644 --- a/src/app/admin/radio/embed/page.tsx +++ b/src/app/admin/radio/embed/page.tsx @@ -6,10 +6,6 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { siteSettings } from "@/lib/services/site-settings"; import { EmbedSnippet } from "./embed-snippet"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Radio Embed" }; export default async function AdminRadioEmbedPage() { diff --git a/src/app/admin/radio/history/page.tsx b/src/app/admin/radio/history/page.tsx index 52272355..9c99d2f4 100644 --- a/src/app/admin/radio/history/page.tsx +++ b/src/app/admin/radio/history/page.tsx @@ -4,10 +4,6 @@ import { StatusCard } from "@/components/admin/dashboard"; import { db, RadioHistory, User } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type History = { id: bigint; userId: bigint; diff --git a/src/app/admin/radio/layout.tsx b/src/app/admin/radio/layout.tsx index c89ba987..ac93c7c8 100644 --- a/src/app/admin/radio/layout.tsx +++ b/src/app/admin/radio/layout.tsx @@ -1,10 +1,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RadioAdminLayout({ children, }: { diff --git a/src/app/admin/radio/moderation/page.tsx b/src/app/admin/radio/moderation/page.tsx index 291e9b9d..96ce9e5c 100644 --- a/src/app/admin/radio/moderation/page.tsx +++ b/src/app/admin/radio/moderation/page.tsx @@ -6,10 +6,6 @@ import { Button } from "@/components/ui/button"; import { db, RadioShouts } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Shout = { id: bigint; userId: bigint; diff --git a/src/app/admin/radio/monitoring/page.tsx b/src/app/admin/radio/monitoring/page.tsx index 081fbe44..8b6b316e 100644 --- a/src/app/admin/radio/monitoring/page.tsx +++ b/src/app/admin/radio/monitoring/page.tsx @@ -2,10 +2,6 @@ import { getTranslations } from "next-intl/server"; import { DiagnosticRow, StatusCard } from "@/components/admin/dashboard"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Radio Monitoring" }; const FETCH_TIMEOUT_MS = 4000; diff --git a/src/app/admin/radio/page.tsx b/src/app/admin/radio/page.tsx index 111da301..5b301105 100644 --- a/src/app/admin/radio/page.tsx +++ b/src/app/admin/radio/page.tsx @@ -6,10 +6,6 @@ import { Button } from "@/components/ui/button"; import { db, RadioApplications, RadioSchedules, RadioShouts } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Shout = { id: bigint; userId: bigint; diff --git a/src/app/admin/radio/points/page.tsx b/src/app/admin/radio/points/page.tsx index 3105f749..8247f2a9 100644 --- a/src/app/admin/radio/points/page.tsx +++ b/src/app/admin/radio/points/page.tsx @@ -4,10 +4,6 @@ import { StatusCard } from "@/components/admin/dashboard"; import { Button } from "@/components/ui/button"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Radio Points" }; const DEFAULTS = { diff --git a/src/app/admin/radio/ranks/page.tsx b/src/app/admin/radio/ranks/page.tsx index dc368833..bcba6376 100644 --- a/src/app/admin/radio/ranks/page.tsx +++ b/src/app/admin/radio/ranks/page.tsx @@ -9,10 +9,6 @@ import { StatusCard } from "@/components/admin/dashboard"; import { Button } from "@/components/ui/button"; import { db, RadioRanks } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Rank = { id: bigint; name: string; diff --git a/src/app/admin/radio/settings/page.tsx b/src/app/admin/radio/settings/page.tsx index 7656a035..c8e80d76 100644 --- a/src/app/admin/radio/settings/page.tsx +++ b/src/app/admin/radio/settings/page.tsx @@ -7,10 +7,6 @@ import { StatusCard } from "@/components/admin/dashboard"; import { Button } from "@/components/ui/button"; import { db, WebsiteSetting } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Field = { key: string; comment: string }; type Group = { title: string; fields: Field[] }; diff --git a/src/app/admin/rare-values/page.tsx b/src/app/admin/rare-values/page.tsx index 56c5ec65..c816cdc4 100644 --- a/src/app/admin/rare-values/page.tsx +++ b/src/app/admin/rare-values/page.tsx @@ -12,10 +12,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteRareValueCategories, WebsiteRareValues } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const CURRENCY_TYPES = ["diamonds", "credits", "duckets", "points"]; export default async function AdminRareValues() { diff --git a/src/app/admin/rooms/[id]/furni/page.tsx b/src/app/admin/rooms/[id]/furni/page.tsx index 976436d9..0fc5f099 100644 --- a/src/app/admin/rooms/[id]/furni/page.tsx +++ b/src/app/admin/rooms/[id]/furni/page.tsx @@ -6,10 +6,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { loadRoom } from "../../_lib/load-room"; import { FurniClient } from "./furni-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RoomFurniPage({ params, }: { diff --git a/src/app/admin/rooms/[id]/page.tsx b/src/app/admin/rooms/[id]/page.tsx index ee88225d..afc73efa 100644 --- a/src/app/admin/rooms/[id]/page.tsx +++ b/src/app/admin/rooms/[id]/page.tsx @@ -1,9 +1,5 @@ import { redirect } from "next/navigation"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RoomLegacyPage({ params, }: { diff --git a/src/app/admin/rooms/edit/[id]/page.tsx b/src/app/admin/rooms/edit/[id]/page.tsx index a8534d01..c02b7490 100644 --- a/src/app/admin/rooms/edit/[id]/page.tsx +++ b/src/app/admin/rooms/edit/[id]/page.tsx @@ -8,10 +8,6 @@ import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { loadRoom } from "../../_lib/load-room"; import { RoomEditForm } from "../../[id]/room-edit-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RoomEditPage({ params, }: { diff --git a/src/app/admin/rooms/page.tsx b/src/app/admin/rooms/page.tsx index 81c5f65d..7b3bd03d 100644 --- a/src/app/admin/rooms/page.tsx +++ b/src/app/admin/rooms/page.tsx @@ -7,10 +7,6 @@ import { db, Rooms } from "@/lib/db"; import { canAccess, PERMS } from "@/lib/permissions"; import { RoomsTable } from "./rooms-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function RoomsPage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/rooms/show/[id]/page.tsx b/src/app/admin/rooms/show/[id]/page.tsx index f7baa36d..e6eab070 100644 --- a/src/app/admin/rooms/show/[id]/page.tsx +++ b/src/app/admin/rooms/show/[id]/page.tsx @@ -8,10 +8,6 @@ import { Card, CardContent } from "@/components/ui/card"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { loadRoom } from "../../_lib/load-room"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const stateVariants: Record< string, "default" | "secondary" | "destructive" | "outline" diff --git a/src/app/admin/settings/page.tsx b/src/app/admin/settings/page.tsx index 72ba1fe2..16c6a795 100644 --- a/src/app/admin/settings/page.tsx +++ b/src/app/admin/settings/page.tsx @@ -9,10 +9,6 @@ import { AdvancedSettingsPanel } from "./advanced-settings-panel"; import { FIELD_DEFAULTS, MANAGED_SETTING_KEYS } from "./cms-settings-config"; import { CmsSettingsForm } from "./cms-settings-form"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "CMS Settings" }; export default async function AdminSettings() { diff --git a/src/app/admin/shop/[id]/page.tsx b/src/app/admin/shop/[id]/page.tsx index e3c432aa..c9147ec0 100644 --- a/src/app/admin/shop/[id]/page.tsx +++ b/src/app/admin/shop/[id]/page.tsx @@ -8,10 +8,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteShopArticles } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function EditShopArticle({ params, }: { diff --git a/src/app/admin/shop/new/page.tsx b/src/app/admin/shop/new/page.tsx index c4993d4d..dc32d631 100644 --- a/src/app/admin/shop/new/page.tsx +++ b/src/app/admin/shop/new/page.tsx @@ -6,10 +6,6 @@ import { createShopArticle } from "@/actions/admin-shop"; import { Button } from "@/components/ui/button"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function NewShopArticle() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.SHOP_EDIT, session.user.rank)) { diff --git a/src/app/admin/shop/page.tsx b/src/app/admin/shop/page.tsx index c2570ad7..d2cff9ea 100644 --- a/src/app/admin/shop/page.tsx +++ b/src/app/admin/shop/page.tsx @@ -13,10 +13,6 @@ import { db, WebsitePaypalTransactions, WebsiteShopArticles } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const PAID_STATUS = new Set(["completed", "paid", "success", "approved"]); const RECENT_ORDERS = 25; diff --git a/src/app/admin/sounds/page.tsx b/src/app/admin/sounds/page.tsx index a57fa92f..a29c2cc6 100644 --- a/src/app/admin/sounds/page.tsx +++ b/src/app/admin/sounds/page.tsx @@ -9,10 +9,6 @@ import { } from "@/lib/services/soundtracks"; import { SoundsClient } from "./sounds-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function SoundsPage() { const { session, permissions } = await getAdminContext(); diff --git a/src/app/admin/subscriptions/page.tsx b/src/app/admin/subscriptions/page.tsx index 6e958925..ac56bc47 100644 --- a/src/app/admin/subscriptions/page.tsx +++ b/src/app/admin/subscriptions/page.tsx @@ -8,10 +8,6 @@ import { db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type SubRow = { id: number; userId: number | null; diff --git a/src/app/admin/tags/page.tsx b/src/app/admin/tags/page.tsx index 7ff57c99..5c89baa2 100644 --- a/src/app/admin/tags/page.tsx +++ b/src/app/admin/tags/page.tsx @@ -8,10 +8,6 @@ import { db, Taggables, Tags } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type Tag = { id: bigint; name: string; diff --git a/src/app/admin/teams/page.tsx b/src/app/admin/teams/page.tsx index 16c04183..29c6c7a7 100644 --- a/src/app/admin/teams/page.tsx +++ b/src/app/admin/teams/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteTeams } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type TeamRow = { id: bigint; rankName: string; diff --git a/src/app/admin/theme/page.tsx b/src/app/admin/theme/page.tsx index e651b184..b19d7104 100644 --- a/src/app/admin/theme/page.tsx +++ b/src/app/admin/theme/page.tsx @@ -15,10 +15,6 @@ import { listCustomThemes } from "@/lib/theme-custom-store"; import { FONTS, PRESETS } from "@/lib/theme-presets"; import { ColorField } from "./color-field"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Theme" }; const COLOR_FIELDS: { diff --git a/src/app/admin/tickets/[id]/page.tsx b/src/app/admin/tickets/[id]/page.tsx index 7dcf3fe6..ad74706c 100644 --- a/src/app/admin/tickets/[id]/page.tsx +++ b/src/app/admin/tickets/[id]/page.tsx @@ -8,10 +8,6 @@ import { db, User, WebsiteTicket } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { AdminTicketDetail } from "./admin-ticket-detail"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminTicketDetailPage({ params, }: { diff --git a/src/app/admin/tickets/desk/page.tsx b/src/app/admin/tickets/desk/page.tsx index 99ca9fac..d2dd6471 100644 --- a/src/app/admin/tickets/desk/page.tsx +++ b/src/app/admin/tickets/desk/page.tsx @@ -22,10 +22,6 @@ import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { type TicketRow, TicketsTable } from "../tickets-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminTicketsDeskPage({ searchParams, }: { diff --git a/src/app/admin/tickets/page.tsx b/src/app/admin/tickets/page.tsx index c000e203..b0f6b407 100644 --- a/src/app/admin/tickets/page.tsx +++ b/src/app/admin/tickets/page.tsx @@ -10,10 +10,6 @@ import { fetchTicketQueueOpenCounts } from "@/lib/admin/ticket-queue-counts"; import { parseListParams } from "@/lib/admin-helpers"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminTicketInboxPage({ searchParams, }: { diff --git a/src/app/admin/tickets/templates/page.tsx b/src/app/admin/tickets/templates/page.tsx index 5f37c38e..8c8cfe3d 100644 --- a/src/app/admin/tickets/templates/page.tsx +++ b/src/app/admin/tickets/templates/page.tsx @@ -4,10 +4,6 @@ import { db, WebsiteTicketTemplate } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { TicketTemplatesManager } from "./templates-manager"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function TicketTemplatesPage() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.TICKETS_EDIT, session.user.rank)) { diff --git a/src/app/admin/transactions/page.tsx b/src/app/admin/transactions/page.tsx index 08e7985a..83aae8c2 100644 --- a/src/app/admin/transactions/page.tsx +++ b/src/app/admin/transactions/page.tsx @@ -18,10 +18,6 @@ import { formatDate } from "@/lib/format-date"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { type TransactionRow, TransactionsTable } from "./transactions-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const PAID_STATUS = ["completed", "paid", "success", "approved"] as const; const FAILED_STATUS = [ "failed", diff --git a/src/app/admin/translations/client/page.tsx b/src/app/admin/translations/client/page.tsx index a0a6e661..fe4da2ef 100644 --- a/src/app/admin/translations/client/page.tsx +++ b/src/app/admin/translations/client/page.tsx @@ -7,10 +7,6 @@ import { } from "@/lib/client-translation-files"; import { ClientTranslations } from "./client-translations"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ClientTranslationsPage({ searchParams, }: { diff --git a/src/app/admin/translations/cms/page.tsx b/src/app/admin/translations/cms/page.tsx index ac78de63..fce76a0e 100644 --- a/src/app/admin/translations/cms/page.tsx +++ b/src/app/admin/translations/cms/page.tsx @@ -2,10 +2,6 @@ import fs from "node:fs/promises"; import path from "node:path"; import { TranslationsClient } from "../translations-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const LOCALES = [ "en", "it", diff --git a/src/app/admin/translations/emulator/page.tsx b/src/app/admin/translations/emulator/page.tsx index d82fa22c..f52cf250 100644 --- a/src/app/admin/translations/emulator/page.tsx +++ b/src/app/admin/translations/emulator/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { calcPagination } from "@/lib/admin-helpers"; import { db, EmulatorSettings } from "@/lib/db"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const TRANSLATION_KEY_PATTERNS = [ "commands.description.", "commands.keys.", diff --git a/src/app/admin/translations/layout.tsx b/src/app/admin/translations/layout.tsx index b9d4455d..7fc03eff 100644 --- a/src/app/admin/translations/layout.tsx +++ b/src/app/admin/translations/layout.tsx @@ -2,10 +2,6 @@ import { redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { TranslationsTabs } from "./translations-tabs"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function TranslationsLayout({ children, }: { diff --git a/src/app/admin/translations/page.tsx b/src/app/admin/translations/page.tsx index cdc62e15..86661e32 100644 --- a/src/app/admin/translations/page.tsx +++ b/src/app/admin/translations/page.tsx @@ -1,9 +1,5 @@ import { redirect } from "next/navigation"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - // Default landing for /admin/translations → first tab. // The shared TranslationsTabs (in layout.tsx) gives access to every section. export default function TranslationsHubPage() { diff --git a/src/app/admin/users/[id]/edit/page.tsx b/src/app/admin/users/[id]/edit/page.tsx index 07105824..3a1a6363 100644 --- a/src/app/admin/users/[id]/edit/page.tsx +++ b/src/app/admin/users/[id]/edit/page.tsx @@ -1,9 +1,5 @@ import { redirect } from "next/navigation"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - /** * Legacy URL — the canonical edit UI lives at /admin/users/edit/[id] * and is gated by PERMS.USERS_EDIT. diff --git a/src/app/admin/users/[id]/page.tsx b/src/app/admin/users/[id]/page.tsx index 1f76b8b3..3e35fb37 100644 --- a/src/app/admin/users/[id]/page.tsx +++ b/src/app/admin/users/[id]/page.tsx @@ -1,9 +1,5 @@ import { redirect } from "next/navigation"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - /** Legacy route — redirects to /admin/users/show/[id] */ export default async function UserLegacyPage({ params, diff --git a/src/app/admin/users/edit/[id]/page.tsx b/src/app/admin/users/edit/[id]/page.tsx index 1ff83293..ea33179f 100644 --- a/src/app/admin/users/edit/[id]/page.tsx +++ b/src/app/admin/users/edit/[id]/page.tsx @@ -14,10 +14,6 @@ import { UserEditForm } from "../../[id]/user-edit-form"; import { UserQuickActions } from "../../[id]/user-quick-actions"; import { UserRooms } from "../../[id]/user-rooms"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function UserEditPage({ params, }: { diff --git a/src/app/admin/users/multi-accounts/page.tsx b/src/app/admin/users/multi-accounts/page.tsx index 7107ba9b..182c1653 100644 --- a/src/app/admin/users/multi-accounts/page.tsx +++ b/src/app/admin/users/multi-accounts/page.tsx @@ -9,10 +9,6 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function MultiAccountsPage({ searchParams, }: { diff --git a/src/app/admin/users/page.tsx b/src/app/admin/users/page.tsx index 29cf38f4..38e40b7e 100644 --- a/src/app/admin/users/page.tsx +++ b/src/app/admin/users/page.tsx @@ -8,10 +8,6 @@ import { canAccess, PERMS } from "@/lib/permissions"; import { CreateUserDialog } from "./_components/create-user-dialog"; import { UsersTable } from "./users-table"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function UsersPage({ params: paramsPromise, searchParams, diff --git a/src/app/admin/users/show/[id]/page.tsx b/src/app/admin/users/show/[id]/page.tsx index 97e99788..bf525622 100644 --- a/src/app/admin/users/show/[id]/page.tsx +++ b/src/app/admin/users/show/[id]/page.tsx @@ -13,10 +13,6 @@ import { UserActivityLog } from "../../[id]/user-activity-log"; import { UserQuickActions } from "../../[id]/user-quick-actions"; import { UserRooms } from "../../[id]/user-rooms"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function UserShowPage({ params, }: { diff --git a/src/app/admin/vouchers/page.tsx b/src/app/admin/vouchers/page.tsx index cfd88ae7..603d8bec 100644 --- a/src/app/admin/vouchers/page.tsx +++ b/src/app/admin/vouchers/page.tsx @@ -4,10 +4,6 @@ import { db, WebsiteShopVouchers } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { type VoucherRow, VouchersClient } from "./vouchers-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminVouchers() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.SHOP_VIEW, session.user.rank)) { diff --git a/src/app/admin/vpn/page.tsx b/src/app/admin/vpn/page.tsx index 8a3bbb1e..eee72e22 100644 --- a/src/app/admin/vpn/page.tsx +++ b/src/app/admin/vpn/page.tsx @@ -7,10 +7,6 @@ import { Button } from "@/components/ui/button"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "VPN" }; const PROVIDERS: { value: string; label: string }[] = [ diff --git a/src/app/admin/wordfilter/page.tsx b/src/app/admin/wordfilter/page.tsx index f50c883b..8872d8e8 100644 --- a/src/app/admin/wordfilter/page.tsx +++ b/src/app/admin/wordfilter/page.tsx @@ -7,10 +7,6 @@ import { db, WebsiteWordfilter } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { WordFilterClient } from "./wordfilter-client"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function AdminWordFilter() { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.WORDFILTER_VIEW, session.user.rank)) { diff --git a/src/app/admin/writeable-boxes/page.tsx b/src/app/admin/writeable-boxes/page.tsx index 56d81719..197f3f3d 100644 --- a/src/app/admin/writeable-boxes/page.tsx +++ b/src/app/admin/writeable-boxes/page.tsx @@ -12,10 +12,6 @@ import { Button } from "@/components/ui/button"; import { db, WebsiteWriteableBoxes } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export const metadata = { title: "Writeable boxes" }; export default async function AdminWriteableBoxes() { diff --git a/src/app/client/page.tsx b/src/app/client/page.tsx index 155e701d..c5dd1f52 100644 --- a/src/app/client/page.tsx +++ b/src/app/client/page.tsx @@ -9,10 +9,6 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { siteSettings } from "@/lib/services/site-settings"; import { ClientView } from "./client-view"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ClientPage() { const session = await auth(); if (!session?.user?.id) redirect("/login"); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f78e67f9..f43481f6 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -14,8 +14,10 @@ import { resolveHotelName } from "@/lib/hotel-name"; import { siteSettings } from "@/lib/services/site-settings"; import "./globals.css"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components +// The root layout reads runtime data (locale cookie, request headers via +// enforceSiteAccess, DB-backed site settings) to render the element, +// which cannot be wrapped in . Child pages inherit this opt-out, +// so leaf pages that only access cached/DB data stay instant. export const instant = false; export async function generateMetadata(): Promise { diff --git a/src/app/mod/actions/page.tsx b/src/app/mod/actions/page.tsx index 977ecef9..7aad1475 100644 --- a/src/app/mod/actions/page.tsx +++ b/src/app/mod/actions/page.tsx @@ -2,10 +2,6 @@ import { ModActionsClient } from "@/app/admin/moderation/actions/mod-actions-cli import { requireModPermission } from "@/lib/admin/guard"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModQuickActionsPage() { await requireModPermission([PERMS.MOD_ACTIONS, PERMS.MODERATION_EDIT]); diff --git a/src/app/mod/bans/page.tsx b/src/app/mod/bans/page.tsx index c700bb0c..5b5692db 100644 --- a/src/app/mod/bans/page.tsx +++ b/src/app/mod/bans/page.tsx @@ -7,10 +7,6 @@ import { Ban, db } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type BanRow = { id: number; userId: number; diff --git a/src/app/mod/cfh/[id]/page.tsx b/src/app/mod/cfh/[id]/page.tsx index 6a408415..20660e6b 100644 --- a/src/app/mod/cfh/[id]/page.tsx +++ b/src/app/mod/cfh/[id]/page.tsx @@ -5,10 +5,6 @@ import { requireModPermission } from "@/lib/admin/guard"; import { Ban, db, SupportTickets, User } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModCfhDetailPage({ params, }: { diff --git a/src/app/mod/cfh/page.tsx b/src/app/mod/cfh/page.tsx index f0eac215..24e5b5c7 100644 --- a/src/app/mod/cfh/page.tsx +++ b/src/app/mod/cfh/page.tsx @@ -16,10 +16,6 @@ import { calcPagination, parseListParams } from "@/lib/admin-helpers"; import { db, SupportTickets, User } from "@/lib/db"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const SORT_COLS = { id: SupportTickets.id, issue: SupportTickets.issue, diff --git a/src/app/mod/help-tickets/[id]/page.tsx b/src/app/mod/help-tickets/[id]/page.tsx index 2a038f82..c486508a 100644 --- a/src/app/mod/help-tickets/[id]/page.tsx +++ b/src/app/mod/help-tickets/[id]/page.tsx @@ -15,10 +15,6 @@ import { } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModHelpTicketDetailPage({ params, }: { diff --git a/src/app/mod/help-tickets/page.tsx b/src/app/mod/help-tickets/page.tsx index 362c72e0..b2aee600 100644 --- a/src/app/mod/help-tickets/page.tsx +++ b/src/app/mod/help-tickets/page.tsx @@ -28,10 +28,6 @@ import { import { formatDate } from "@/lib/format-date"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const SORT_COLS = { title: WebsiteHelpCenterTickets.title, open: WebsiteHelpCenterTickets.open, diff --git a/src/app/mod/layout.tsx b/src/app/mod/layout.tsx index f72dabe6..1fdff78d 100644 --- a/src/app/mod/layout.tsx +++ b/src/app/mod/layout.tsx @@ -21,10 +21,6 @@ import { readCsrfCookieToken } from "@/lib/foundation/security"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { siteSettings } from "@/lib/services/site-settings"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModLayout({ children }: { children: ReactNode }) { const staff = await requireMod(); const csrfToken = await readCsrfCookieToken(); diff --git a/src/app/mod/page.tsx b/src/app/mod/page.tsx index c32bcd33..1b8c211b 100644 --- a/src/app/mod/page.tsx +++ b/src/app/mod/page.tsx @@ -22,10 +22,6 @@ import { } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModDashboardPage() { const t = await getTranslations("pages.mod"); const { session, permissions } = await getAdminContext(); diff --git a/src/app/mod/team/page.tsx b/src/app/mod/team/page.tsx index ae0eb131..4d04c5ac 100644 --- a/src/app/mod/team/page.tsx +++ b/src/app/mod/team/page.tsx @@ -14,10 +14,6 @@ import { } from "@/lib/db"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModTeamLitePage() { await requireModPermission([PERMS.MOD_TEAM_VIEW, PERMS.MODERATION_VIEW]); diff --git a/src/app/mod/tickets/[id]/page.tsx b/src/app/mod/tickets/[id]/page.tsx index 8189fd9f..50f4d9a7 100644 --- a/src/app/mod/tickets/[id]/page.tsx +++ b/src/app/mod/tickets/[id]/page.tsx @@ -10,10 +10,6 @@ import { fetchTicketQueueOpenCounts } from "@/lib/admin/ticket-queue-counts"; import { db, User, WebsiteTicket, WebsiteTicketMessage } from "@/lib/db"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const Creator = alias(User, "ticket_creator"); const Assignee = alias(User, "ticket_assignee"); const MessageUser = alias(User, "ticket_message_user"); diff --git a/src/app/mod/tickets/desk/page.tsx b/src/app/mod/tickets/desk/page.tsx index 0331321f..1bf4e3ec 100644 --- a/src/app/mod/tickets/desk/page.tsx +++ b/src/app/mod/tickets/desk/page.tsx @@ -25,10 +25,6 @@ import { db, User, WebsiteTicket, WebsiteTicketMessage } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - const Creator = alias(User, "ticket_creator"); const Assignee = alias(User, "ticket_assignee"); diff --git a/src/app/mod/tickets/page.tsx b/src/app/mod/tickets/page.tsx index 775af08e..f470b471 100644 --- a/src/app/mod/tickets/page.tsx +++ b/src/app/mod/tickets/page.tsx @@ -11,10 +11,6 @@ import { fetchTicketQueueOpenCounts } from "@/lib/admin/ticket-queue-counts"; import { parseListParams } from "@/lib/admin-helpers"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModTicketInboxPage({ searchParams, }: { diff --git a/src/app/mod/users/[id]/page.tsx b/src/app/mod/users/[id]/page.tsx index b09bdd95..3b383598 100644 --- a/src/app/mod/users/[id]/page.tsx +++ b/src/app/mod/users/[id]/page.tsx @@ -9,10 +9,6 @@ import { formatDate } from "@/lib/format-date"; import { getAvatarUrl } from "@/lib/imager"; import { PERMS } from "@/lib/permissions"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - export default async function ModUserDetailPage({ params, }: { diff --git a/src/app/mod/users/page.tsx b/src/app/mod/users/page.tsx index a9199972..dd8a2e4d 100644 --- a/src/app/mod/users/page.tsx +++ b/src/app/mod/users/page.tsx @@ -10,10 +10,6 @@ import { getAvatarUrl } from "@/lib/imager"; import { PERMS } from "@/lib/permissions"; import type { DataTableColumn } from "@/types/common"; -// TODO: Cache Components adoption. Refactor this route so this opt-out can be removed. -// See: https://nextjs.org/docs/app/guides/migrating-to-cache-components -export const instant = false; - type ModUserRow = { id: number; username: string; diff --git a/src/lib/staff-smoke-contract.test.ts b/src/lib/staff-smoke-contract.test.ts index 209f9301..70da775e 100644 --- a/src/lib/staff-smoke-contract.test.ts +++ b/src/lib/staff-smoke-contract.test.ts @@ -112,12 +112,18 @@ describe("staff smoke contract", () => { walk("src/app/mod"); expect(legacyHits).toBe(0); - // Both staff layouts opt out of Cache Components (was force-dynamic). - expect(readFileSync("src/app/admin/layout.tsx", "utf8")).toContain( + // The root layout carries the single Cache Components opt-out; staff + // pages inherit it (was force-dynamic, then per-layout instant=false). + expect(readFileSync("src/app/layout.tsx", "utf8")).toContain( "export const instant = false", ); - expect(readFileSync("src/app/mod/layout.tsx", "utf8")).toContain( - "export const instant = false", + // Staff layouts must not redeclare the opt-out — that is the root + // layout's job now, and redeclaring it is the legacy per-layout pattern. + expect(readFileSync("src/app/admin/layout.tsx", "utf8")).not.toContain( + "export const instant", + ); + expect(readFileSync("src/app/mod/layout.tsx", "utf8")).not.toContain( + "export const instant", ); });