# SW Viewer Header · Storybook 정리 main 병합 검증 (2026-10-21) ## 1. 병합 | 항목 | 값 | |---|---| | 작업 Commit | `23d522c` (SW Viewer Header Optional Props, SW Storybook 정리) | | 선언 승인 기록 | `34f02bf` (`approvedHeaderSourceChanges`에 23d522c 선언 11개, 브랜치에서 병합 전 기록) | | main 병합 | `46119ea` → `34f02bf` Fast-forward, 원격 main Push | | 병합 후 수정 | `b320a8f` Settings Popup Story 높이·배치, `VIEWER.md` Story 이름 | | 승인 기준 Commit | 이 보고서와 같은 테스트 전용 Commit | ## 2. 승인 기준 갱신 - `public-api.approved.json`: 깨끗한 `34f02bf` 빌드(`build-info.json` dirty false)에서 `--snapshot`. 170개 Export·42개 선언 파일 유지, 바뀐 값은 `approvedCommit`과 `components/sw-viewer/SWViewerHeader.d.ts` 해시뿐입니다. 이 차이는 `SWViewerHeaderProps`의 Optional Props 7개(`logoMenu`, `logoMenu.items[].icon`, `documents`, `activeDocumentId`, `onDocumentSelect`, `onDocumentOpen`, `documentOpenLabel`)입니다. `logoMenu`·`icon`은 현재 Story·Fixture에서 쓰지 않지만 사용자 지시로 유지합니다. - `approvedMainCommit`: `b4e0771` → `b320a8f` (§9 절차의 테스트 전용 Commit, 보호 경로 변경 없음). Snapshot의 `34f02bf`는 `b320a8f`와 HEAD의 조상입니다. - `approvedHeaderDeclarations`: `Overview`, `ResponsiveMore`, `PropertyPanelComparePage`, `InteractiveStates`, `DocumentDropdown` → `23d522c` (이전 170a5c2 / 2b0e1a2 승인 대체). `approvedHeaderSourceChanges`의 23d522c 항목(11개)과 같은 승인입니다. - `withApprovedOrder`: 승인된 SW Header 최상단 정렬(`sw-header--overview`)을 미사용 검사의 순서 비교에 반영합니다. 이름·제목·태그 비교는 그대로입니다. - `storybook-simplification`: 사용자 요청으로 SW/Theme가 사이드바에서 숨겨져 기대 순서를 Header → Footer → Popup → Viewer로 바꿨습니다. Theme Story ID와 직접 URL은 유지됩니다. ## 3. 검증 결과 (Node 22.23.2, `npm run build-storybook` 후, 증거는 저장소 밖 임시 폴더) | 검사 | 결과 | |---|---| | Public API Guard | 7/7 PASS | | Typecheck (`tsconfig.app.json`) | 오류 0 | | `check:ai-docs`, `ai-docs.check.mjs` | PASS, 46/46 PASS | | home-menu-integration | 23/23 PASS | | overview / overview overlays | 54/54, 20/20 PASS | | storybook-unused-removal (Source Guard) | 93/93 PASS | | dropdown-consolidation (Source Guard, Dropdown 숨김·직접 URL) | 229/229 PASS | | storybook-cleanup-stage1 | 41/41 PASS | | property-panel-comparison | 71/71 PASS | | storybook-simplification | 9/9 PASS | | integrated-improvement (options, popup) | 90/90 PASS | | footer-popup-viewer-refinement | 47/47 PASS | | keyboard-dismiss | 22/22 PASS | | text-weight | 50/50 PASS | | viewer | 70/70 PASS | | viewer-logo-document-menu | 47/47 PASS | | theme-inheritance | 25/25 PASS (수정 전 24/25, 아래 §4) | | detail-buttons verify | 103/123, 기존 실패 20 (아래 §5) | ## 4. 병합 후 발견·수정 - theme-inheritance 회귀 1건(`sw-viewer--content-variants@1440`): 통합한 Settings Popup Story의 프레임이 870px로 커져 1000px 창보다 페이지가 길어졌고, 전체 페이지 캡처가 Viewport를 바꾸면서 속성 팝업의 실시간 좌표 값 9개가 바뀌었습니다(대조 실행도 같은 9개, 픽셀 차이 0). 상속 구조 문제가 아니라 Story 배치 문제라 `b320a8f`에서 프레임 760px, 옵션 오른쪽, 축척 지정은 속성 아래로 옮겼습니다. 1200px 기본 열에서 네 팝업이 겹치지 않습니다. - `packages/sw/ai/VIEWER.md`의 Story 이름 `Popup Content Variants` → `SW/Viewer › Settings Popup`. ## 5. 남은 항목 - detail-buttons의 Header DOM 기준(`docs/sw/detail-button-qa/baseline.json`, 2026-10-16 `fc26afd`)은 이후 승인된 Header Commit 18개(글꼴·Bold·More 등) 이전 값이라 `overview`·`k-guide` 20건이 이번 변경 전부터 실패합니다(K Guide는 이번에 바뀌지 않음). 기준 갱신은 사용자 승인 후 진행합니다. - 시각 회귀(`integrated-visual`, `viewer-regression`)는 이전 빌드와 새 빌드를 비교하는 스크립트라 실행하지 않았습니다. 간소화한 SW Story(SW Header·Responsive More·Home Menu·Footer Responsive More·Popup·Viewer Settings Popup·Header + Dropdown)의 스크린샷 차이는 예상된 차이이며 기준 이미지 재승인이 필요합니다. 기준 이미지는 갱신하지 않았습니다. - Firefox 계열(range-cross-browser, viewer-logo-document-menu-firefox, hover-stability-firefox)과 hover-stability는 이번에 다시 실행하지 않았습니다. - `packages/sw/src/components/sw-viewer/types.ts`의 `collapseBelow` / `iconOnlyBelow` JSDoc은 숫자를 순서로만 쓰는 현재 동작보다 오래된 설명입니다. 수정하면 Public API 선언 해시가 바뀌므로 별도 승인 작업으로 남깁니다.