mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-11-13 06:31:47 +00:00
* feat(frontend): improve file attachment recovery and artifact presentation * feat(extensions): add Office artifact previews with search and navigation * fix: preserve public viewers and HTTP Office previews * fix: address file preview and upload review findings * fix: use typed upload errors and linear bookmark allocation * fix(office-preview): isolate parsing and bound preview resources * fix(ci): install Office preview fixture dependencies for E2E * fix(ci): provision matching Playwright browsers before E2E tests * fix(ci): isolate Python libraries and include Office documentation * test(frontend): wait for download status to finish rendering
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import "katex/dist/katex.min.css";
|
|
import "streamdown/styles.css";
|
|
|
|
import { I18nProvider } from "@/core/i18n/context";
|
|
import { detectLocaleServer } from "@/core/i18n/server";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
/**
|
|
* Chrome-free layout for the standalone artifact window.
|
|
*
|
|
* Deliberately not nested under `/workspace`: this route opens in its own
|
|
* browser window, so it wants the same rich-content styles as the chat page
|
|
* but none of its sidebar/thread shell.
|
|
*
|
|
* The auth guard lives in the page rather than here. A layout cannot read
|
|
* `searchParams`, and this route carries its whole target in the query string
|
|
* — guarding here would redirect to /login with nothing to come back to.
|
|
* The page also owns the auth/query providers: installed preview contributions
|
|
* need the current viewer, while public showcase readers stay anonymous.
|
|
*/
|
|
export default async function ArtifactViewerLayout({
|
|
children,
|
|
}: Readonly<{ children: React.ReactNode }>) {
|
|
const locale = await detectLocaleServer();
|
|
|
|
return <I18nProvider initialLocale={locale}>{children}</I18nProvider>;
|
|
}
|