Commit Graph
135 Commits
Author SHA1 Message Date
shkim4 6b6f17c1a9 Merge fix/sw-viewer-strip-round: rounded viewer menu surface end and solid viewer background 2026-10-21 19:02:13 +09:00
shkim4 3671657ee0 fix(sw): rounded menu surface end before the viewer strip; solid viewer background
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).
2026-10-21 19:02:11 +09:00
shkim4 d63a9ac9e8 test(sw): approve the f26ec7c SW viewer header merge baseline
Deploy Storybook / deploy (push) Successful in 1m3s
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.
2026-10-21 18:55:06 +09:00
shkim4 f26ec7c696 Merge docs/sw-viewer-layer-eye: SW Viewer layer eye-icon rule, header hover, trailing strip and file name width 2026-10-21 18:52:39 +09:00
shkim4 caf4c32592 feat(sw): viewer layer eye-icon rule, header hover, trailing strip and file name width
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.
2026-10-21 18:52:38 +09:00
shkim4 32e46c32be test(sw): approve the 21fe7a2 property count hover merge baseline
Deploy Storybook / deploy (push) Successful in 1m4s
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.
2026-10-21 18:08:03 +09:00
shkim4 21fe7a29c7 Merge fix/sw-property-counts-hover: property popup count hover only on the object list 2026-10-21 18:06:00 +09:00
shkim4 17170d2be9 fix(sw): limit the property popup count hover to the object list
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.
2026-10-21 18:05:59 +09:00
shkim4 f195c932f8 test(sw): refresh the detail-buttons header baseline for the current Stories
Deploy Storybook / deploy (push) Successful in 2m7s
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).
2026-10-21 17:53:07 +09:00
shkim4 2d5d2d9848 test(sw): approve the c73f043 SW doc alignment merge baselines
Deploy Storybook / deploy (push) Successful in 1m7s
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.
2026-10-21 17:48:31 +09:00
shkim4 c73f043a01 Merge fix/sw-design-review-2026-10-21: align SW AI docs and comments with the 2026-10-21 implementation 2026-10-21 17:45:45 +09:00
shkim4 8127cc72c4 docs(sw): align AI docs and comments with the 2026-10-21 implementation
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).
2026-10-21 17:45:26 +09:00
shkim4 646fb60462 test(sw): approve the c1a69a4 SW design review merge baselines
Deploy Storybook / deploy (push) Successful in 7m48s
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).
2026-10-21 17:30:37 +09:00
shkim4 c1a69a4948 Merge fix/sw-design-review-2026-10-21: SW design review and responsive header without More from 760px 2026-10-21 17:29:50 +09:00
shkim4 e1e6fcaf14 test(sw): approve the 2fc1b3e SW Header Story declarations
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).
2026-10-21 17:29:45 +09:00
shkim4 2fc1b3e108 fix(sw): 2026-10-21 SW design review and responsive header without More from 760px
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.
2026-10-21 17:29:25 +09:00
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