From c7809d3b3723fbd309e63544375424a1a69536dc Mon Sep 17 00:00:00 2001 From: JK Date: Wed, 17 Jun 2026 23:07:17 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Spotlight=EB=A5=BC=20internal=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A1=9C=20=ED=95=9C=EC=A0=95?= =?UTF-8?q?=ED=95=A9=EB=8B=88=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary 전역 Nextra layout에 들어간 Spotlight 주입을 제거하여 일반 문서 페이지에는 회사 소식 카드가 보이지 않도록 합니다. - root layout의 TOC extraContent를 ConfluenceSourceLink 전용으로 되돌립니다. - Spotlight는 /{locale}/internal 페이지의 전용 렌더만 유지합니다. - root layout에 Spotlight가 다시 들어오지 않도록 회귀 테스트를 추가합니다. Constraint: PR #1017이 이미 main에 병합되어 새 fix PR로 수정해야 했습니다. Rejected: main 직접 push | 명시적 승인 없이 main에 직접 push하지 않는 저장소 규칙을 위반합니다. Confidence: high Scope-risk: narrow Directive: /{locale}/internal 외 경로에는 DocsSpotlightSidebar를 전역 layout으로 주입하지 않습니다. Tested: npm run test:run -- src/app/[lang]/layout.test.ts src/app/[lang]/internal/page.test.tsx src/components/docs-spotlight-card.test.tsx src/lib/docs-spotlight/content.test.ts Tested: npm run lint Tested: npx tsc --noEmit Tested: git diff --check Tested: headless Chrome에서 /ko/internal은 Spotlight 표시, /ko/overview는 Spotlight 미표시를 확인했습니다. Not-tested: production build는 로컬 기본 검증 범위에서 제외했습니다. Generated-With: Codex Co-Authored-By: Atlas --- src/app/[lang]/layout.test.ts | 12 ++++++++++++ src/app/[lang]/layout.tsx | 8 +------- 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 src/app/[lang]/layout.test.ts diff --git a/src/app/[lang]/layout.test.ts b/src/app/[lang]/layout.test.ts new file mode 100644 index 000000000..c702c0cb9 --- /dev/null +++ b/src/app/[lang]/layout.test.ts @@ -0,0 +1,12 @@ +import { readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { describe, expect, it } from 'vitest'; + +const layoutSource = readFileSync(join(process.cwd(), 'src/app/[lang]/layout.tsx'), 'utf8'); + +describe('/[lang] root layout', () => { + it('keeps Spotlight out of the global Nextra layout', () => { + expect(layoutSource).not.toContain('DocsSpotlightSidebar'); + expect(layoutSource).toContain('extraContent: '); + }); +}); diff --git a/src/app/[lang]/layout.tsx b/src/app/[lang]/layout.tsx index 76e248ef6..cd6469351 100644 --- a/src/app/[lang]/layout.tsx +++ b/src/app/[lang]/layout.tsx @@ -9,7 +9,6 @@ import { LastUpdated } from '@/components/last-updated'; import LanguageSelector2 from "@/components/language-selector2"; import ConfluenceSourceLink from "@/components/confluence-source-link"; import { QueryPieLogo } from '@/components/querypie-logo'; -import { DocsSpotlightSidebar } from '@/components/docs-spotlight-sidebar'; import { filterDynamicPageMapRoutes } from '@/lib/nextra-page-map'; const defaultMetadata: Metadata = { @@ -86,12 +85,7 @@ export default async function RootLayout({ children, params }) {

On This Page

), - extraContent: ( - <> - - - - ), + extraContent: , }} lastUpdated={} >