Commit Graph
119 Commits
Author SHA1 Message Date
shkim4 a25d2b31c5 test(sw): approve the SW Viewer Header API and Storybook cleanup baselines
Deploy Storybook / deploy (push) Successful in 1m10s
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
2026-10-21 15:21:30 +09:00
shkim4 b320a8f1e0 fix(sw): fit the Viewer Settings Popup Story in one viewport; update its guide name
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.
2026-10-21 15:20:00 +09:00
shkim4 34f02bf0f4 test(sw): approve the 23d522c sw-header.stories.tsx declaration changes
Deploy Storybook / deploy (push) Successful in 1m7s
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).
2026-10-21 14:59:32 +09:00
shkim4 23d522c136 feat(sw): viewer header logo menu and file list; simplify SW Storybook
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.
2026-10-21 14:52:46 +09:00
shkim4 46119eacb5 test(sw): move approvedMainCommit to the reviewed merge b4e0771
Deploy Storybook / deploy (push) Successful in 2m2s
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.
2026-10-21 06:14:40 +09:00
shkim4 b4e0771dd0 Merge branch 'fix/test-home-menu-integration' into main 2026-10-21 06:10:06 +09:00
shkim4 c89407a436 docs(sw): record the 2026-10-21 follow-up
Unattended follow-up report: test alignment, Firefox fixes, shared helpers, source guard and public API checks,
verification results and the commit split.
2026-10-21 06:09:25 +09:00
shkim4 0f9e9b0e4c test(sw): cover roving focus wrap and outside pointer dismissal
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).
2026-10-21 06:08:46 +09:00
shkim4 7cc3aa1ff8 refactor(sw): share roving focus and outside pointer handling
- 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.
2026-10-21 06:08:45 +09:00
shkim4 af7f98d66b test(sw): stabilize Firefox hover, pixel and timing checks
- 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.
2026-10-21 06:08:31 +09:00
shkim4 1ffff67991 fix(sw): keep the line style name uncut in Firefox
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.
2026-10-21 06:08:31 +09:00
shkim4 b50e95c325 test(sw): align legacy storybook suites and add header composition fixture
- 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.
2026-10-21 06:08:23 +09:00
shkim4 1e05eaf1de test(sw): detect untracked source files and public API changes
- 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).
2026-10-21 06:08:16 +09:00
shkim4 96f7a846cb docs(sw): document storybook regression baseline maintenance 2026-10-20 23:42:06 +09:00
shkim4 20ed2f2afb test(sw): align storybook inventory checks with approved changes 2026-10-20 23:04:14 +09:00
shkim4 522ecbd193 test(sw): align overview regression checks with approved changes 2026-10-20 22:37:52 +09:00
shkim4 7fd73425c5 test(sw): align home menu integration with current stories 2026-10-20 22:19:49 +09:00
shkim4 553e4df4a8 Merge branch 'feature/sw-package' into main
Deploy Storybook / deploy (push) Successful in 1m9s
2026-10-20 21:53:55 +09:00
shkim4 e32a138f28 docs(sw): Popup guidance, example comments, package README and link check 2026-10-20 21:49:47 +09:00
shkim4 2ce24b8b43 fix(storybook): use SWSlider in the SW Popup story 2026-10-20 21:49:46 +09:00
shkim4 5032c94d9e test(sw): restore range cross-browser test on the Overview story 2026-10-20 21:49:46 +09:00
shkim4 df650c02dd test(sw): shared Playwright runtime resolver 2026-10-20 21:49:46 +09:00
shkim4 94c0a13c74 docs(sw): Noto Sans KR / Bold report, QA evidence and PC handoff
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.
2026-10-20 18:22:05 +09:00
shkim4 e31021af2d docs: Noto Sans KR SW default font and Bold scope in AI guides and README
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.
2026-10-20 18:18:01 +09:00
shkim4 ef69f5143b test(sw): align browser tests and theme story with Noto Sans KR and Bold
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.
2026-10-20 18:17:50 +09:00
shkim4 033e24246a feat(sw): bold header, footer, viewer header and recent-file text
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.
2026-10-20 18:17:40 +09:00
shkim4 11472185ea fix(sw): restore Noto Sans KR as the SW default font
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.
2026-10-20 18:17:34 +09:00
shkim4 032fcdcc03 docs(sw): hover stability tests, AI rules and evidence for header / footer / home menu
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.
2026-10-20 17:48:05 +09:00
shkim4 3f7cff5473 fix(sw): home menu tiles keep the icon and label in place on hover
Remove the 1px up-left offset of the Figma hover variant (user decision
2026-10-20): hover, pressed and Active change only color, art and the ring.
2026-10-20 17:47:57 +09:00
shkim4 83c8815445 feat(sw): footer command labels end in an ellipsis with a full-name tooltip
Same 68 x 47 slot and 14px label; without a title the full label is the native
tooltip only while it is cut. Accessible name unchanged, no new props.
2026-10-20 17:47:56 +09:00
shkim4 87598ab35e fix(sw): header field values use Dotum Regular (400)
Figma text property is Dotum Regular 14 / 0.56px; the synthetic bold (700)
cut 0_Layer_Cludmark and the dimension Standard value.
2026-10-20 17:47:50 +09:00
shkim4 6504668e85 docs(sw): Dotum default font, Footer design check and real viewer consumer QA
Report docs/sw/sw-dotum-font-2026-10-20.md and evidence docs/sw/sw-dotum-font-qa/: Noto -> Dotum layout diff of 40 SW
Stories x 4 widths, Header hysteresis trace, Footer design items (4 PASS), SW regression runs with baseline failure
classification, and the isolated HMDesignSwTest-viewer run (Chrome 34/34, Firefox 15/15; original project untouched).
Open items: synthesized-bold overflow in fixed Header cells and Footer POLYGON / WIPEOUT labels (design review),
viewer-regression not run, macOS / Linux fallback not verified.
2026-10-20 16:59:55 +09:00
shkim4 942f72ae12 docs: SW Dotum / Web Noto Sans KR font rule in AI guides and README
- 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.
2026-10-20 16:59:26 +09:00
shkim4 d818d0308e test(sw): align theme and consumer tests with the Dotum default
- theme-inheritance: default = Dotum stack, inheritance verification value = Noto Sans KR (same 23 checks).
- SW/Theme Story: verification font and labels follow the new default.
- ai-template-consumer: SWTheme token font now starts with Dotum.
- footer-design-review (new): Footer design items (전체보기 / + hover, Model selected / unselected, category pockets,
  Model / Layout text) measured in Storybook with state screenshots.
2026-10-20 16:59:12 +09:00
shkim4 633ea61c32 feat(sw): use Dotum as the SW default font
- --hm-sw-header-font-family: Dotum, "돋움", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif
  (one token on the outermost SW scope; no font file, no per-component font-family). Web UI keeps Noto Sans KR.
- Header drawing-mode cell keeps its Figma 90px width; padding 8px -> 4px because Dotum has no bold face and the
  synthesized 700 made "그리기모드" (77.8px) overflow the 74px content box.
2026-10-20 16:59:02 +09:00
shkim4 454472d344 docs(sw): AI rules, example E, tests and evidence for the popup / footer / header changes
AI documents (packages/sw/ai)
- SWPopupPropertyRow, SWSelect, SWSlider in the catalog, usage table,
  composition patterns and design rules; SWViewerSlider noted as SWSlider panel.
- Rule: the SWHeader layer / color dropdowns are header-only; popup layer /
  color / line style use SWPopupPropertyRow (property window pickers).
- Footer rules: gra-border-orange surfaces, Model / Layout text unchanged on
  hover, side button hover, vacant surface limited to the slot row.
- Header rules: measured More growing behavior (hysteresis fix A).
- Example E (custom popup) uses SWPopupPropertyRow, SWSelect and SWSlider
  instead of SWHeaderLayerMenu in the popup.

Tests (packages/sw/tests)
- New footer-popup-viewer-refinement.browser.mjs (47 checks: footer stories,
  hover / gradient / tab text / pocket, popup pickers vs property window rows,
  SWSlider, unit SWSelect parity, Popup B, header trace, viewer title art).
- integrated-popup / integrated-consumer: popup pickers and SWSelect instead of
  the header dropdown and the HM UI Select (same overlay / callback / Escape
  requirements).
- integrated-improvement: default sections skip the retired SW/Tool story
  ('tool' still runs by name); storybook-inventory / simplification record the
  retired footer IDs; theme-inheritance widths use sw-footer--full-footer.

Docs (docs/sw)
- sw-footer-popup-viewer-refinement-2026-10-20.md: causes, decisions (the
  first-pass "header dropdown in popup" change is marked withdrawn),
  verification and baseline failures; evidence footer-popup-viewer-refinement-qa
  (47/47). Footer mapping document updated for the removed sections.

Baseline failures (unchanged by this work): home-menu-integration 1,
storybook-unused-removal 5 (10-19 snapshot comparisons), range-cross-browser and
property-panel-comparison open stories retired on 2026-10-19.
2026-10-20 15:20:27 +09:00
shkim4 126a35d60d feat(sw): popup controls, SWSelect / SWSlider, footer and viewer design fixes
Components (new public exports, existing APIs unchanged)
- SWPopupPropertyRow: the property window row (layer / color / line style
  pickers, Figma 26:12250 / 26:12170) for SWPopup content. The SWHeader field
  dropdowns stay header-only; Popup B and 도면 설정 now use the popup pickers.
- SWSelect: native panel select (28px, 1px #948871, radius 4, #F1ECE1, 12px),
  used by Popup 도면 설정 단위 and Viewer 축척 지정 단위 (replaces the HM UI
  Select there and the story-only .sw-viewer-story-select CSS).
- SWSlider: appearance "panel" (default, the gauge the popup used) or
  "property" (the property window gauge), same value / events. Shares the
  property gauge CSS; SWViewerSlider renders SWSlider panel with viewer tokens.

Footer
- --hm-sw-footer-gra-border-orange (Figma gra-border-orange; the aux selected
  border token now references it): Model selected / hover, Layout hover and
  Layout + hover surfaces; 보조기능 / 명령어 전체보기 hover lights both lines
  and an orange ring; category + hover in #FF5C00 (menu-add-hover.svg).
- Model / Layout text stays the Default text (#161410, 12px, 400, no outline)
  on hover and on the orange surface: only the surface changes.
- bg_vacant covers the slot row only: the open pocket of a category tab no
  longer splits where it crosses the last command (e.g. 수정 with one command).

Viewer
- Panel title art keeps 308px (max-width: none against host img resets), so
  panels under 312px (250 x auto, 300px) paint the title from the left edge.

Storybook
- SW/Footer: 기본 Footer (sw-footer--default) and States (sw-footer--states)
  removed; full-footer keeps the live composition only, responsive keeps the
  widths (reference / Figma image sections removed, image files kept); the aux
  Figma comparison moved to the verification Story figma-variants.
- SW/Popup: unit SWSelect, SWSlider A / B section, popup pickers, Popup B state.
2026-10-20 15:20:06 +09:00
shkim4 bbb0e71c91 fix(sw-header): stabilize measured More while the header grows
Hysteresis fix A for the Open placement regression introduced by 170a5c2.
- Growing: a part its breakpoint brings back (print / K, color, the property
  block, line / text / dimension style, drawing mode) returns only when the
  measured room is there; otherwise it stays in More. Default-layout print / K
  are held through data-actions-held (window area keeps its 640px-tier state).
- Open that came back while growing is not pushed into More again by another
  part; shrinking still moves Open first, and its return width follows the
  narrowest width while it is collapsed.
- Open no longer waits for the parts still in More; the last part leaving More
  takes the More button relief into account (measured, never painted).
- A part released at a width is not held again at that width, so the layout
  passes always settle (fixes the maximum update depth error found on
  sw-header--responsive-more during verification).

Trace 520 -> 1080 (data-width 520 frame): before
[[520,0],[560,0],[600,1],[640,0],[680,0],[720,1],[760,1],[820,1],[900,0],[1080,0]],
after [[520,0],[560,0],[600,1],[640,1],[680,1],[720,1],[760,1],[820,1],[900,1],[1080,1]].
2026-10-20 15:18:49 +09:00
shkim4 2b0e1a2262 refactor(sw): simplify storybook navigation and examples 2026-10-20 13:17:15 +09:00
shkim4 47972c55ff fix(sw): stabilize theme regression test and update integration docs 2026-10-20 12:47:48 +09:00
shkim4 73e30242f2 fix(sw): stabilize footer command layout and overflow alignment 2026-10-20 10:38:42 +09:00
shkim4 41e963a12a fix(sw): preserve theme token inheritance across viewer components 2026-10-20 10:38:28 +09:00
shkim4 40c5b89814 fix(sw): correct footer auxiliary button state colors 2026-10-20 09:58:13 +09:00
shkim4 6cf885412e feat(sw): add SW Footer component and Storybook stories 2026-10-20 09:41:12 +09:00
shkim4 77a809baa3 fix(sw-viewer): prevent sample dropdown layout shift 2026-10-19 23:40:47 +09:00
shkim4 2a7182c1cc Merge branch 'feature/sw-home-menu' into feature/sw-package 2026-10-19 23:00:32 +09:00
shkim4 cc9b2834db test(sw): count only the visible home menu row in the Figma geometry check
The measured More adds a hidden measure row and a More section, so the geometry check counted 11 sections / 31 tiles / 45 icons instead of 5 / 15 / 30.
2026-10-19 23:00:22 +09:00
shkim4 170a5c23ae feat(sw): integrate responsive home menu into header
- Merge SW / Home Menu Stories into SW / Header (sidebar: Home Menu; others verification-tagged)
- Home On: logo hover ring and header top/bottom #5F4B0F lines while the menu is open
- Measured More in SWHeader; home menu narrow widths use a More (...) section with a grouped
  text menu instead of horizontal scroll, placed right after the last visible section
- Action tiles no longer stay on after a click; 최근파일 stays Active only while its list is open
- More dropdown and recent files list never open together; list top joins the accent line
- Recent files preview falls back left / over the list at narrow widths (390px)
- Update Storybook, browser tests, docs, AI guides and QA evidence
2026-10-19 22:46:28 +09:00
shkim4 c542bdc282 docs(sw): add SW package handover for PC move (2026-10-19) 2026-10-19 18:58:02 +09:00
shkim4 3cfbfc09e3 fix(sw): apply thin popup scrollbar to SW popup bodies
Port the uncommitted HMDesign-SW-Viewer change: SWPopup, SWViewerPanel and
the property window share .hm-sw-property__body, so the body and any
scrolling area inside it now use a thin #9A9284 / #E0DACE scrollbar
(--hm-sw-popup-scrollbar-thumb / -track). Document it in DESIGN_RULES.
2026-10-19 18:27:44 +09:00