Eilen Shin 81de0761ed
feat: improve file attachments and add Office artifact previews (#8009)
* 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
2026-11-12 20:30:17 +08:00

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>;
}