refactor: remove obsolete config and cross-layer exports

Drop the temporary static-generation retry override and stale hydration suppression. Refresh outdated Next.js and migration comments, and stop re-exporting Result through the storage layer.
This commit is contained in:
2026-07-13 18:45:59 +08:00
parent f7f910bd61
commit 4083cf0b6c
11 changed files with 31 additions and 118 deletions
+2 -6
View File
@@ -3,12 +3,8 @@
/**
* 全局 Error Boundary
*
* Next.js 16 文档要求 global-error 必须是 Client Component
* 16.2.7 存在 prerender `/_global-error` 的内部 bugworkStore 未初始化),
* 本文件通过不挂任何 Client Context 副作用、纯静态 HTML 输出来规避。
*
* 当根 layout 自身抛出错误时渲染;必须包含 `<html>` + `<body>`
* 因为它会替换根 layout。
* global-error 必须是 Client Component,并自行提供 `<html>` 和 `<body>`
* 因为它会在根 layout 渲染失败时替换整个文档。
*/
import { ExceptionHandler } from "@/core/errors";
+2 -12
View File
@@ -9,7 +9,7 @@ import { RootProviders } from "@/providers/root-providers";
export const metadata: Metadata = {
title: "cozsweet",
description: "cozsweet frontend (Next.js)",
// PWA:链接到 public/manifest.json(由 @ducanh2912/next-pwa 体系使用)
// Static web app manifest served from `public/`.
manifest: "/manifest.json",
// iOS Safari "添加到主屏" 元数据
appleWebApp: {
@@ -24,17 +24,11 @@ export const metadata: Metadata = {
},
};
/**
* Next.js 14+ 推荐:viewport 相关元数据独立导出。
* 之前放在 `metadata.themeColor` 会在 Next.js 16 触发 deprecation 警告。
* 详见 https://nextjs.org/docs/app/api-reference/functions/generate-viewport
*/
export const viewport: Viewport = {
// 浏览器顶栏 / Android PWA 顶栏颜色
themeColor: "#f84d96",
// 让页面延伸到 notch / home indicator 区域,
// env(safe-area-inset-bottom) 才能取到非零值(见 chat-input-bar.module.css)。
// Next.js 16 的 Viewport 类型未列出此键,但 generate-viewport.md 允许附加原始 meta 值。
viewportFit: "cover",
};
@@ -44,19 +38,15 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
// suppressHydrationWarningnext/font + Tailwind v4 偶发类名差异;详见
// `src/app/api/auth/[...nextauth]/route.ts` 的"水合闪屏"说明。
<html
lang="en"
suppressHydrationWarning
className={`${geistSans.variable} ${geistMono.variable} ${athelas.variable} h-full antialiased`}
>
<body className="min-h-full flex flex-col">
{/* NextAuth SessionProvider:为所有客户端组件提供 useSession() 上下文 */}
<SessionProvider>
<RootProviders>
{/* PWA Service Worker 注册器 —— Serwist Turbopack 在 build 时编译 app/sw.ts
通过 /serwist/sw.js 路由 handler 服务。SerwistProvider 内部处理注册 + 生命周期。 */}
{/* SerwistProvider registers the service worker built from app/sw.ts. */}
<SerwistProvider swUrl="/serwist/sw.js">{children}</SerwistProvider>
</RootProviders>
</SessionProvider>
+2 -6
View File
@@ -1,12 +1,8 @@
/**
* 根路径处理
*
* Server Component:把访客直接送入 `/splash`,由 splash 页(Client)根据
* `authStorage.hasLoginToken()` 决定是否再跳 `/chat`
*
* 这里不做鉴权重定向:Server 端读不到 localStorage,且当前没有 HttpOnly
* cookie(见 `src/data/storage/auth/auth_storage.ts` 的 TODO)。
* `src/proxy.ts` 已为未来 cookie 化预留了基于 `login_token` cookie 的 short-circuit。
* 根页面只负责进入 splash。浏览器端认证初始化完成后,再由导航守卫决定
* 进入聊天页或保留在启动页
*/
import { redirect } from "next/navigation";