User-approved 2026-10-22 change to the SW Viewer layer popup.
- New public export SWLayerVisibilityIcon({ on }) + SWLayerVisibilityIconProps:
the SW Header layer bulb art reused as is (header design and behavior unchanged).
- Layer rows: eye (Eye / EyeOff) icon replaced by the bulb, 24 x 24 button kept.
- All layers: the 전체 켜기 / 전체 끄기 buttons replaced by one SWViewerField +
SWViewerSwitch on top. ON only when every layer is shown; a partial state reads
OFF and a click shows all. Derived from the hidden-layer state, so it stays synced.
- AI docs (VIEWER.md 4.1, catalog, design rules, composition, AI_GUIDE sync) and
example H follow the new rule, replacing the 2026-10-21 eye-icon rule.
- viewer.browser.mjs: layer popup checks moved to the bulb / switch behavior.
- R1 sw COMPONENT_CATALOG §9: SWViewerHeaderButton is 32 x 48 in the trailing strip, 32 x 40 inside custom items
- R2 sw COMPOSITION_PATTERNS §7: open icon has only its own black outline, no frame border or face
- R3 sw VIEWER §2: open icon area 16 x 16 and button padding 0 12px 0 24px
- R4 docs/ai/MAINTAINING §1: sw ai files incl. FOOTER.md and examples A-J (G, I)
- R5 docs/ai/AI_GUIDE: center-graphic entries /reference and /style.css, synced to 4 package copies
User-requested SW Viewer changes (2026-10-21); no new Props, public .d.ts unchanged.
- Layer popup visibility: AI docs (VIEWER §4.1, catalog, design rules, patterns,
AI_GUIDE) require the Eye / EyeOff icon button, never a switch; example H now
renders a real layer list with eye buttons; Storybook eye button gets the pointer.
- Viewer header hover: text and icon #FFC600, the #266651 hover face removed; size and
position unchanged. Status stays display only.
- Trailing strip: status, the trailing icon button (info / license) and SWHeader
minimize / close are full-height (48px) segments on the window-area face, no gap, top
and bottom on the object surface border; no line around the license button.
- File name: the measured steps use the file-name basis (header width), not the text
width, so a short and a long name give the same Open / file-name widths.
- File open icon: the black icon outline of every viewer icon (SWViewerIcon), no frame.
Documentation and comment-only changes (no component logic, Props or design change):
- VIEWER.md / AI_GUIDE / AI_USAGE / catalog / patterns: the two SWViewerHeader versions
(default, and minimize/close with SWHeaderWindowControls at the end of `trailing`);
the earlier "never mix SWHeader parts" rule now names this approved exception.
- collapseBelow / iconOnlyBelow (types.ts JSDoc, VIEWER.md, AI_GUIDE): measured steps,
the numbers only set the order, not pixel breakpoints. Viewer file open is the
onDocumentOpen button (logoMenu is compatibility only).
- COMPONENT_CATALOG / DESIGN_RULES: recent files show at most 3 rows; preview caption is
previewTitle or path + file name; body is the red no-preview sign on the brown panel;
preview / renderPreview are accepted but not rendered (JSDoc updated to match).
- packages/sw/README.md and sw-header-usage.md: current Story list and counts (40, 14
shown + 26 verification); 760px+ no-More condition; read-only Property Bar values as
<output>.
- SWHeader.tsx comment: titles are kept (not hidden) from 760px up.
- AI_GUIDE synced into the package ai/ copies (npm run sync:ai-docs).
SW AI usage / design rules / composition / viewer docs, example J and the
shared AI_GUIDE (synced to every package with sync:ai-docs) state the
Noto Sans KR default and the 2026-10-20 weight scope.
- Common AI_GUIDE (synced copies in ui / sw / org-chart / org-chart-react ai/): mixed-use rule 1 adds the font split
(SW = Dotum, Web = Noto Sans KR, OrgChart keeps its own) and forbids copying one package's font into another area.
- SW AI_USAGE / DESIGN_RULES / VIEWER / COMPOSITION_PATTERNS / Example J: Dotum is the default (no "approval pending"),
SW screens use SWTheme and SW tokens, no Web font copy, synthesized-bold width note; example override = Malgun Gothic.
- README: SW default Dotum, Web default Noto Sans KR.
Integrate the SW home (logo) menu into SWHeader for SW general mode only.
SW viewer mode code and stories are unchanged.
- Resolve conflicts: keep both sw-home-menu and sw-viewer exports;
renumber AI docs (catalog viewer 8->9, patterns home menu 7->8,
design rules home menu 11->12)
- SWHeader: start the home menu after the file name when it sits
inside controls, so the file name stays visible
- AI guides: mark home menu as general-mode only; forbid it in viewer
mode (AI_USAGE, catalog, design rules, patterns, VIEWER.md, AI_GUIDE)
- Tests: ignore wildcard identifiers in ai-docs check; update expected
Storybook SW titles (SW/Tool removed, SW/Viewer added)
- Add merge QA report docs/sw/sw-home-menu-merge-2026-10-19.md
- Five checked items from the independent session's report: document sync,
33 viewer exports, SW general/viewer mode selection, component search,
three-step rule for new UI
- Live ResizeObserver re-layout and the real ask/answer flow stay NOT VERIFIED
- Usage types are now Web / SW (general mode, viewer mode) / OrgChart / mixed.
Shared AI_GUIDE step 1 asks for the SW mode only when the request or the
project setting (HMDesign 사용 유형: SW 일반 | SW 뷰어) leaves it open;
examples B0/B1/B2 cover "HMDesign SW로 화면을 만들어 주세요", general and viewer.
- Missing-component handling in three steps (reuse in the chosen type/mode ->
build with that mode's tokens -> HMDesign-consistent style, reported as
"AI 구성 값 — 디자인 확인 필요"), plus SW general/viewer separation rules.
- sw/ai: AI_USAGE §0 mode selection, catalog §8 lists all 33 SWViewer* exports,
DESIGN_RULES §11 viewer tokens, PATTERNS 7 viewer composition; examples B/F
marked as general mode. ui/ai and org-chart/ai aligned with the new types.
- AGENTS_SNIPPET, AGENTS.md and MAINTAINING updated; copies synced.
- scripts/ai-docs.mjs: shared-copy check ignores CRLF/LF (core.autocrlf=true
checks out packages/sw as LF and the rest as CRLF).
- Verification record updated (code samples typechecked, built and rendered).
- Shared entry point docs/ai/AI_GUIDE.md (type selection Web / SW / OrgChart / mixed,
steps 1-7, package style separation, report format, examples A-D) and
AGENTS_SNIPPET.md, copied into every package ai/ folder
- New ai/ docs for @hm-design/ui and @hm-design/org-chart (+ org-chart-react pointer):
AI_USAGE, COMPONENT_CATALOG, DESIGN_RULES, COMPOSITION_PATTERNS
- SW ai/ linked to the shared guide; catalog lists every Props type explicitly
- "ai" added to package files of ui, org-chart, org-chart-react
- scripts/ai-docs.mjs: sync:ai-docs / check:ai-docs (copies, files, catalog <-> exports, links)
- Maintenance guide and verification record under docs/ai