Deploy Storybook / deploy (push) Successful in 1m11s
Options already apply on every toggle, input and slider change, so the footer
only recorded an event and closed the popup. The options panel no longer
passes footer (no empty footer area or divider); reset stays in the title bar.
The 축척 지정 input popup keeps its footer. VIEWER.md §4.1, the composition
pattern and Example H follow.
Deploy Storybook / deploy (push) Successful in 2m10s
- Property popup: row labels 14px 500, read-only values 14px in the panel text
color, monospace removed; 일반 정보 / 기하 속성 groups 20px apart
(--hm-sw-viewer-panel-spacing on the second section).
- Layer popup: 전체 레이어 is a plain SWViewerSection title (existing
.hm-sw-viewer-section__title) with the all-layers switch on the same row;
layer names 14px 500, no monospace.
- Options popup follows the user image: 표시 (LWDISPLAY), 표시 배율 with the
px/mm unit on the input row, updated lineweight hints.
- Remove stray monospace font-family from SW Story CSS.
- VIEWER.md §4.1 / new §4.2, DESIGN_RULES §11, Example H aligned.
Drop the category kicker from the 83 sidebar Stories (kicker is now optional;
hidden verification Stories keep it) and shorten or remove repeated, obvious
or internal page/section descriptions. Required specs, limits, virtual-data
and undecided-value notices stay. Story IDs, exports, fixtures, shared state
notes and package code are unchanged. Record: docs/reports/storybook-ui-simplification-2026-10-22.md
Deploy Storybook / deploy (push) Successful in 4m4s
Test-only approval commit after the user-approved 449398e and fc65b2e
commits on main (sw-test-regression-baseline section 9); no protected path
changes, no Story change.
- approvedMainCommit 8cb98b3 -> fc65b2e.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/sw-header-switch-footer-tabs-2026-10-22.md: change and verification.
User-approved 2026-10-22 SW changes (CSS only, public API unchanged).
- Footer Model / Layout tab labels 700 in every state, letter-spacing -5%;
the name-edit input keeps 400.
- Slanted Layout tab and Model tab draw their SVG assets as 9-slice
border-images: 97px / 73px stay the minimum, the slant and corners keep
their size and only the flat middle grows with a longer label (max 12em,
then ellipsis, like the rounded tabs). Hover surfaces use a union mask of
the same asset (no mask-border), so Chromium and Firefox match. The
default width renders pixel-identical to the previous drawing; the 8px
slant / Model joint is unchanged.
- Viewer panel body: the 7px bottom padding (inside the scrollport) becomes
a 2px transparent bottom border, so scrolled rows stop 2px above the
frame border instead of running into it. SWPopup keeps its 7px.
- AI docs: DESIGN_RULES, AI_USAGE, FOOTER, VIEWER updated.
- Tests: text-weight and footer-design-review expect the 700 labels and read
the Model surface from the 9-slice ::before.
Test-only approval commit after the user-approved 8cb98b3 change on main
(sw-test-regression-baseline section 9); no protected path changes.
- public-api.approved.json re-snapshotted from the clean 8cb98b3 build:
+ SWLayerVisibilityIcon, SWLayerVisibilityIconProps (170 -> 172 exports).
- approvedMainCommit bcec066 -> 8cb98b3. No Story ID or tag change.
- docs/sw/sw-viewer-layer-bulb-switch-2026-10-22.md: change and verification.
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.
Deploy Storybook / deploy (push) Successful in 2m13s
Test-only approval commit after the bcec066 main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit fc856f5 -> bcec066.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/legacy-launcher-cleanup-merge-2026-10-22.md: change and verification.
None of these are used by npm scripts, the Gitea workflow, Docker, other
scripts or current guides; they only produced the past publisher and AI
reference ZIPs.
- Delete scripts/portable-preview/ (start-preview.bat, preview-server.cjs),
used only by create-publisher-distribution.mjs
- Delete scripts/create-publisher-distribution.mjs (2026-10-10 publisher ZIP)
- Delete scripts/create-ai-reference-package.mjs (past AI reference ZIP);
sync:ai-docs / check:ai-docs do not use it
Storybook is served on the web (main deployment), so the Windows BAT
launcher and its Node helper are no longer used. The root PORTABLE
r4-r6 verification records are historical ZIP-era notes that nothing
references.
- Delete start-storybook.bat and scripts/start-storybook.mjs
- Delete PORTABLE-R4/R5-CANDIDATE/R5/R6-VERIFICATION.md
- README, publisher distribution guide, LAN preview note: point to the
web Storybook; keep npm run storybook for local development
- v2 baseline report: unlink the removed files, keep the record text
Deploy Storybook / deploy (push) Successful in 1m13s
Test-only approval commit after the fc856f5 main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit 5a40796 -> fc856f5.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/ai-usage-examples-merge-2026-10-22.md: change and verification.
Deploy Storybook / deploy (push) Successful in 1m19s
Test-only approval commit after the 5a40796 main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit 955581c -> 5a40796.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/ai-docs-alignment-merge-2026-10-22.md: change and verification.
- 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
- AI_USAGE.md §0.4: viewer hover changes only text and icon to #FFC600 (no #266651 face)
- AI_USAGE.md §0.2: file open is the onDocumentOpen button next to the logo, samples are documents
- COMPONENT_CATALOG.md §9: SWViewerHeader open button position, logoMenu marked compatibility only
Test-only approval commit after the 955581c main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit f340a26 -> 955581c.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/sw-viewer-button-height-2026-10-21.md: change and verification.
User request (2026-10-21): --hm-sw-viewer-button-height back to 34px (16px shrank
other viewer header buttons, e.g. 전체 보기); DESIGN_RULES token table matches.
The open icon keeps its 16 x 16 area (--hm-sw-viewer-icon-size, margin 0) and the open
padding 0 12px 0 24px. No Props, public .d.ts unchanged.
Test-only approval commit after the f340a26 main merge (sw-test-regression-
baseline section 9); no protected path changes, no Story change.
- approvedMainCommit 6b6f17c -> f340a26.
- public-api.approved.json kept: the public .d.ts files are byte-identical.
- docs/sw/sw-viewer-open-icon-2026-10-21.md: changes and verification.
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).