User requests (2026-10-21), CSS and docs only; no Props, public .d.ts unchanged.
- .hm-sw-viewer-header__open-icon: the 16 x 16 icon itself (--hm-sw-viewer-icon-size),
margin 0; the black icon outline (SWViewerIcon) is unchanged.
- .hm-sw-viewer-header__open padding 0 12px 0 24px.
- --hm-sw-viewer-button-height 34px -> 16px (user change, DESIGN_RULES token table
updated with it).
Test-only approval commit after the 6b6f17c main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit f26ec7c -> 6b6f17c.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/sw-viewer-round-background-2026-10-21.md: changes and verification.
User requests (2026-10-21), CSS and docs only; no Props, public .d.ts unchanged.
- The viewer menu surface ends before the trailing strip like the SWHeader object area:
6px right radius (--hm-sw-header-object-radius), the same face and border, a 2px
header gap. Painted by the first strip segment over the empty group padding + gap
(4px more room below 1180px); heights, edges and button positions unchanged.
- --hm-sw-viewer-background: the Storybook viewer canvas solid #0a0a0b instead of the
gradient (viewer header only; SWHeader, Footer, Popup unchanged).
Test-only approval commit after the f26ec7c main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit 21fe7a2 -> f26ec7c.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/sw-viewer-header-strip-2026-10-21.md: changes and verification.
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.
Test-only approval commit after the 21fe7a2 main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit c73f043 -> 21fe7a2.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/sw-property-counts-hover-2026-10-21.md: change and verification.
User request (2026-10-21): in the all-selection property popup only the object
list on the right (columns 3-4: 원 1, 광선 1, 곡선 10, 호 1, 폴리선 10, 폴리선 2,
문자 1) keeps the #FF5C00 text Hover and the pointer. The summary entries of
columns 1-2 (도형 10, 직선 10, 문자 1 …) stay plain text: no Hover color, no
pointer, no click (none was added). The area is decided by the entry's column,
not by its text; entries without a column keep the Hover as before.
- SWHeaderPropertyPanel: internal data-count-summary on columns 1-2 (no Props
or type change; public .d.ts byte-identical).
- sw.css: hover and pointer selectors skip [data-count-summary].
Count, order, layout (314 x 361) and editing are unchanged.
The 2026-10-16 baseline (fc26afd) only had default-* / controls-* header
snapshots of Stories retired since, so verify compared overview-* / k-guide-*
against missing keys (102/122). Regenerated with the suite's `baseline` mode
from the Storybook of the approved 2d5d2d9 product source (approved 2026-10-21
header: 49px, five menus without More from 760px header width, More below).
- overview-* / k-guide-* at 10 widths replace default-* / controls-*.
- textDefault / textHover unchanged (byte-identical).
- baseline-story-ids.json kept: it is the 2026-10-16 reference list the Story
inventory check uses against unapproved additions; that check passes.
verify: 122/122 PASS (evidence outside the repository).
Test-only approval commit after the c73f043 main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit c1a69a4 -> c73f043.
- public-api.approved.json from the clean c73f043 build: 170 exports, 42
declaration files and the manifest kept; only comment changes in
SWRecentFiles / home-menu types / viewer types .d.ts.
- docs/sw/sw-doc-alignment-merge-2026-10-21.md: changes and verification.
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).
Test-only approval commit after the c1a69a4 main merge (sw-test-regression-
baseline section 9); no protected path changes.
- approvedMainCommit b320a8f -> c1a69a4.
- public-api.approved.json from the clean c1a69a4 build: 170 exports and the
manifest kept; only comment changes in SWFooter / SWFooterParts /
SWRecentFiles / home-menu types .d.ts (approved defaults documented).
Test-only: approvedHeaderDeclarations and approvedHeaderSourceChanges name the
user-approved 2026-10-21 design review changes of sw-header.stories.tsx
(Overview, ComposedDemo, MORE_WIDTHS, PROPERTY_FIXTURE, BAR_TITLE, BAR_FIXTURE).
User-approved design review (2026-10-21):
- SW Header: from 760px up nothing moves into More; the five menus stay with their
titles (titles and values ellipsize), file name shrinks to 96px. Open next to the
logo no longer blocks field shrinking above 760px (760/768 overflow fixed, also for
configured `controls` headers). Dropdown yellow ring inside the button, black seam.
- Property Bar values as read-only red text; property popup "=" labels, read-only
black values, per-entry hover with pointer.
- Home Menu recent files (3 rows, path + name caption, empty preview), Footer + slot
guide off by default, Viewer file list without icons, Storybook widths 1920-760.
- Tests: old More expectations (integrated-improvement, keyboard-dismiss,
footer-popup-viewer-refinement, storybook-cleanup-stage1) moved to the new rule;
functional checks kept.
Test-only approval commit after the 34f02bf main merge (sw-test-regression-
baseline section 9); no protected path changes.
- public-api.approved.json from the clean 34f02bf build: 170 exports kept,
only SWViewerHeader.d.ts changes (7 optional SWViewerHeaderProps).
- approvedMainCommit b4e0771 -> b320a8f; approvedHeaderDeclarations for the
23d522c Story declarations; withApprovedOrder for the approved SW Header
first position; storybook-simplification expects SW/Theme hidden.
- Verification report: docs/sw/sw-viewer-storybook-merge-verification-2026-10-21.md
The merged Settings Popup Story (sw-viewer--content-variants) was 870px tall,
so a full-page capture resized the viewport and the live Properties values
moved (theme-inheritance regression, control run changed the same 9 elements).
The frame is 760px again with Options at the right and the scale popup under
Properties; the four popups do not overlap at the 1200px Storybook column.
VIEWER.md now names the Story SW/Viewer > Settings Popup (was Popup Content
Variants). No component or public API change.
Records the user-approved Storybook cleanup declarations of 23d522c in
approvedHeaderSourceChanges (Overview, InteractiveStates, DocumentDropdown,
MORE_WIDTHS, ResponsiveMore, PROPERTY_STATES, PropertyCompare,
PropertyPanelComparePage, import:@hm-design/sw; StyleDemo and
MeasuredMoreDemo removed). approvedMainCommit is unchanged here; it moves in
the test-only commit after the main merge (sw-test-regression-baseline §9).
SW Viewer Header (approved optional props, public export names unchanged at 170):
- SWViewerHeader: logoMenu, documents, activeDocumentId, onDocumentSelect,
onDocumentOpen, documentOpenLabel; measured responsive toggles (full ->
icons -> More) with the SWHeader More / file-list styling.
- SW AI guides, ExampleH, viewer/text-weight/theme-inheritance tests and the
logo-document-menu tests with their QA record.
SW Storybook cleanup (Story IDs and test fixtures kept):
- Sidebar: Overview -> "SW Header" (first), 전체 Footer -> "SW Footer",
Footer/Viewer responsive pages -> "Responsive More", Viewer content-variants
-> "Settings Popup" (merges the settings popup page).
- Hidden by the verification tag (direct URL kept): Header Dropdown,
Document Open, Interactive States, Document Dropdown, Hidden Sub Controls,
Home Menu standalone; Footer tool groups / custom content / parts;
SW/Theme; Viewer menu groups / item states / variable size / settings
panel / Header + Dropdown.
- Removed demo UI: Overview size and callback output (demo data and
selection only with &verification), Home Menu Figma node table and width
demo, Header Responsive More reduced to 1440 / 768 / 390, Popup reopen
button, property-panel comparison captions, Viewer context-menu demo
(&verification only).
- Tests: storybook-inventory records the hidden and renamed Stories;
overview / range-cross-browser / viewer open the demo controls with
&verification; integrated-popup reloads the Story instead of the reopen
button; dropdown-consolidation asserts Dropdown is hidden from the sidebar
and still opens by its direct URL.
The merge of fix/test-home-menu-integration carries only approved SW changes (shared roving focus / outside pointer
helpers, Firefox line-values grid); no Story change, public API unchanged (public-api.approved.json kept). Guards:
overview 54/54, overlays 20/20, unused 93/93, dropdown 228/228, stage1 41/41, home menu 23/23, public API 7/7.
Unattended follow-up report: test alignment, Firefox fixes, shared helpers, source guard and public API checks,
verification results and the commit split.
keyboard-dismiss.browser.mjs + fixtures/tool-group.tsx: end-point wrap, Home / End, disabled items and a pointerdown
outside that does not move focus, for the callers of the shared helpers (22 checks; same result before the refactor).
- components/shared/roving-focus.ts (moveRovingFocus): the same Arrow / Home / End algorithm of SWFooter, SWToolGroup,
the SWViewerHeader tabs and SWHomeMenu; each caller passes its own keys, wrap and select behavior.
- components/shared/use-outside-pointer.ts (useOutsidePointerDown): the same pointerdown effect of the SWHeader
dropdowns, layer menu, document title and More. Escape, focus return and positioning stay in each component.
Both modules are internal: the package entry and the public declarations are unchanged.
- hover-stability-firefox: instant scroll and state waits instead of a fixed 60ms delay (smooth scroll in preview).
- integrated-visual, viewer-regression, theme-inheritance: deterministic Chromium raster flags, animations held at
time 0, layout settle wait, integer instant scroll of inner panels; tolerance stays 0.
- text-weight: wait for the Viewer More panel instead of a fixed 200ms and fix the failure report.
Firefox computed the max-content of the flex line-values row 6.4px short and cut "Continuous" in the 284px field.
The row is now a grid with the same tracks (name minmax(28px, auto), weight 38px, scale 38px, gap 12px); Chromium
geometry and pixels are unchanged and the narrow-field ellipsis stays.
- dropdown-consolidation, storybook-cleanup-stage1, detail-buttons, property-panel-comparison: assert their recorded
state and accept today only the approved later Story changes (storybook-inventory.mjs helpers).
- header-composition.browser.mjs + fixtures/header-composition.tsx: the removed Composition Story presets, hidden
controls, invalid menuOrder / hiddenControls and live changes, on a test-only page using the public API only.
- storybook-unused-removal: header comment lists which older scripts run on current Stories again.
- source-changes.mjs: source guards list untracked, staged, deleted and renamed files, not only git diff --name-only.
- overview / storybook-unused-removal: production source guards use the helper (assertions, paths, approved list unchanged).
- public-api.check.mjs + public-api.approved.json: the built @hm-design/sw entry must export exactly the approved
names and kinds, keep the package.json export settings and keep every declaration reachable from dist/index.d.ts
byte-identical. The approved surface was written from a build of 553e4df (approvedMainCommit).
Report and Chromium / Firefox evidence for the font revert and Bold scope,
history notes on the Dotum and hover-stability records, a summary of the
ignored regression logs and the handoff for continuing on another PC.
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.
Font expectations move back to Noto Sans KR (Dotum becomes the theme
inheritance verification value), viewer labels expect 700, and the new
text-weight.browser.mjs checks the requested Bold scope and outlines.
User request 2026-10-20: Composed Controls field values, footer side
titles and category tabs, viewer header file name / button labels /
Model-Layout tabs, recent-file path and preview title use 700. SWHeader
field values stay 400. The preview title gets the existing 14px outline
token; sizes, colors and widths are unchanged.
Withdraw the 2026-10-20 Dotum default (user decision). The SW font token
falls back to Malgun Gothic / Apple SD Gothic Neo; the Dotum-only 4px
padding of the drawing-mode cell is restored to 8px.
Chromium and Firefox browser tests (hover position, field text, ellipsis and
tooltip), AI docs and guide, report with the open Firefox Continuous 0.6px
issue and the Figma difference of the home menu hover.