183 lines
11 KiB
Markdown
183 lines
11 KiB
Markdown
# HMDesignSystem Storybook LAN Preview
|
||
|
||
> HISTORICAL_RECORD — observations from the 2026-10-07 Track B QA session, including ports, processes and validation status. These are not current server availability or general execution instructions. The current Storybook default is **6024**; follow the [official execution guide](../../docs/guidelines/publisher-distribution-guide.md). Optional LAN QA is described in [LAN-PREVIEW.md](LAN-PREVIEW.md). The private address and old worktree path are neutral placeholders; historical results remain unchanged.
|
||
|
||
Result: **PARTIAL** — same-host LAN Preview is READY. A second physical PC was unavailable, so cross-PC access and cross-PC HMR remain NOT_VERIFIED.
|
||
|
||
TEMP_STORYBOOK_URL: http://<QA_HOST_IPV4>:6008/
|
||
|
||
## 1. Worktree
|
||
|
||
- Path: `<TRACK_B_WORKTREE>`
|
||
- Branch: `chore/storybook-cleanup`
|
||
- HEAD: `6b4a39e4e9fef7cd706630ffc72b5e97e8696823`
|
||
- Remote: `https://gitea.hmac.kr/b25027/HMDesign.git`
|
||
- Track A Modified: **NO**
|
||
- Track A remains clean on `main`, HEAD `4e2402e6cb3507c4bb5e58549004323db59b66a8`.
|
||
|
||
## 2. Storybook Server
|
||
|
||
- Installed binary: Storybook **10.6.1** from Track B node_modules; dependencies already existed, so npm ci was unnecessary.
|
||
- Port: **6008**; Bind: **0.0.0.0**; Server: **RUNNING**
|
||
- LAN listener PID at verification: **23804**
|
||
- Command: `node node_modules/storybook/dist/bin/dispatcher.js dev -p 6008 --host 0.0.0.0 --no-open --disable-telemetry --exact-port`
|
||
- Local: http://localhost:6008/
|
||
- LAN: http://<QA_HOST_IPV4>:6008/
|
||
- Verified current IPv4: **<QA_HOST_IPV4>** (Ethernet 3); this is a temporary LAN address, not a permanent URL.
|
||
- The old LAN process was started on 6007 and had fallen back to 6008. Only that confirmed Track B LAN process was replaced with explicit 6008/exact-port operation. The existing localhost-only Track B process (PID 33604) was preserved; both addresses use the same worktree and matched 289 Story IDs.
|
||
- package.json's official **6007** script was unchanged. Track A and other ports/processes were not stopped.
|
||
- Server stdout/stderr are in ignored `.storybook/qa/lan-preview.*.log` files. PIDs are session observations, not durable shutdown instructions.
|
||
|
||
## 3. LAN Verification
|
||
|
||
- localhost: **PASS**, HTTP 200 and Button render
|
||
- LAN IP Same Host: **PASS**, HTTP 200; manager, sidebar, preview, navigation and representative stories loaded
|
||
- SECOND_PHYSICAL_PC: **NOT_VERIFIED**
|
||
- HMR localhost: **PASS**
|
||
- HMR LAN Same Host: **PASS**
|
||
- HMR Second Physical PC: **NOT_VERIFIED**
|
||
- A temporary visible `HM LAN HMR QA` paragraph was inserted into GNB All. Both origins displayed it without reload. Removal was also applied by HMR; the Story file was restored to its exact pre-probe SHA-256. No temporary probe remains.
|
||
- Existing firewall policy was inspected: Public network profile, enabled firewall profiles and pre-existing inbound Node allow rules. Firewall rule additions: **NO**. Network profile changes: **NO**.
|
||
|
||
## 4. Storybook Chrome
|
||
|
||
- Top Bar: **#266651 PASS** (`rgb(38, 102, 81)`)
|
||
- Toolbar icon/text: **#FFFFFF PASS** (all sampled button/SVG computed colors were white)
|
||
- Bottom Panel: **DEFAULT_HIDDEN PASS**
|
||
- Alt+A: **PASS**, panel opened with Controls/Actions/Interactions; hidden state restored afterward
|
||
- Preview Rail: **0px PASS**, preview main border-left and padding-left measured 0px
|
||
- Final browser viewport overrides were reset, and a LAN Dashboard tab remains available in Codex.
|
||
|
||
## 5. Viewports
|
||
|
||
Measured in Chrome, browser zoom 100%, Storybook zoom 100%, devicePixelRatio 1:
|
||
|
||
- 1280: **PASS** — iframe / innerWidth 1280; innerHeight 900; GNB nav visible
|
||
- 1024: **PASS** — iframe / innerWidth 1024; innerHeight 900; GNB nav visible; LNB column visible
|
||
- 1023: **PASS** — iframe / innerWidth 1023; innerHeight 900; GNB nav hidden; LNB column hidden and Local mobile bar visible
|
||
- 390: **PASS** — iframe / innerWidth 390; innerHeight 844; mobile UI visible
|
||
- GNB Mobile Menu Open automatically selected 390 × 844 and its Sheet was visible.
|
||
- Existing LNB `hmMobile` preset still selected 390 × 844. Its service-menu Sheet opened successfully, including the nested three-depth menu.
|
||
- **Browser limitation:** the Codex in-app browser had a fractional-width anomaly at the 1023 boundary: rounded innerWidth was 1023 but both max-width 1023 and min-width 1024 media queries returned false. Chrome passed both boundaries. Production CSS and breakpoints were not changed; exact boundary QA should use Chrome.
|
||
|
||
## 6. Representative Stories
|
||
|
||
LAN rendering and navigation checks passed for:
|
||
|
||
- Button: **PASS** — representative variants/sizes/state board
|
||
- GNB: **PASS** — four viewport measurements and mobile menu
|
||
- LNB: **PASS** — representative board, both embedded standalone iframes, desktop/mobile boundary and mobile Sheet
|
||
- Dashboard: **PASS** — current heading, status filter and data table rendered
|
||
- Calendar: **PASS** — single/disabled/range/two-month board
|
||
- Date Picker: **PASS** — empty/selected/format/controlled/size/disabled board
|
||
- Theme Designer: **PASS** — editor/live preview and successful application of `/themes/default.json` and `/themes/service-example.json`; reset to HM Default afterward
|
||
- CENTER: **PASS** — Title compositions and Tunnel reference render
|
||
|
||
These are targeted rendering/navigation/responsive checks, not a full interaction or accessibility audit of every Story.
|
||
|
||
## 7. Story Cleanup
|
||
|
||
- Story Files: **61**; Stories: **289**
|
||
- Hierarchy: **Foundation → Components → Patterns → Center Graphic → Theme**
|
||
- PRIMARY: **65**
|
||
- VERIFICATION: **211**
|
||
- UTILITY: **13** (executable verification, compatibility and playground tools)
|
||
- Proven LEGACY / DUPLICATE: **0**
|
||
- KEEP: **65**; HIDE: **224** through the existing verification filter
|
||
- MERGE_CANDIDATE: **31**, advisory possible overlap with representative boards; all retained
|
||
- DELETE_CANDIDATE: **0**; deleted stories: **0**
|
||
- Full source-defined meta.title, Story export/name and meta/story/custom effective tags: `STORY-INVENTORY.md` and `story-inventory.json`.
|
||
- Framework-injected dev/test/manifest tags are in compiled index.json rather than the source-tag inventory.
|
||
- Before / built / inventory Story IDs: **289 / 289 / 289**, with no missing, added or renamed IDs.
|
||
- LNB `iframe.html?id=patterns-layout-lnb--standalone-desktop` and `--standalone-mobile` references were found and both nested frames rendered.
|
||
- Own Story change: GNB Mobile and Mobile Menu Open now start on global `hmMobile390`. Existing global presets, sorting, verification filtering and LNB 390 configuration were retained.
|
||
|
||
## 8. Errors
|
||
|
||
- Console: **no new errors observed** in the representative checks or final LAN tab; no Story not found, manager/addon or HMR errors observed after verification.
|
||
- Network: **no asset 404 observed**. Direct LAN HTTP probes returned 200 for the font, two Theme JSON files, preview CSS, Vite client, manager JS and checked Story modules. LNB nested previews loaded successfully.
|
||
- Known browser warning: Storybook 11 will require PopoverProvider ariaLabel. It was already present in the initial observation.
|
||
- Known build warnings: documentation-example `bg-[var(...)]` CSS optimizer warning, chunks over 500kB, and Vite plugin timing notices. The repository's existing reports already document the CSS/chunk warnings. They did not fail the build.
|
||
- Git emitted LF/CRLF normalization notices; `git diff --check` still passed.
|
||
|
||
## 9. Validation
|
||
|
||
- `npm run typecheck`: **PASS**, exit 0; generated Theme defaults matched, both workspace typechecks passed
|
||
- `npm run build-storybook`: **PASS**, exit 0; local ignored `storybook-static/` output only
|
||
- `git diff --check`: **PASS**, exit 0
|
||
- Final integration validation source stability: **PASS**, no TS/TSX/JS/CSS/HTML files changed during the final check window
|
||
- During an earlier validation window, another active task changed Dashboard Story/CSS. Those changes were preserved, and integration checks were rerun against the stable final source state, including the later concurrent changeDetection option in main.ts.
|
||
|
||
## 10. Parallel Safety
|
||
|
||
- packages/**: **UNCHANGED** (Production source; git clean for protected paths)
|
||
- themes/**: **UNCHANGED**
|
||
- package.json / package-lock.json: **UNCHANGED**
|
||
- Protected file SHA-256 comparison: **277 files, 0 changes** from this session's baseline
|
||
- Track A: **UNTOUCHED**, clean main and same HEAD
|
||
- Package source edits: **NO**
|
||
- package publish: **NO**; package version changes: **NO**
|
||
- Runtime Theme contract/loader, exports/CSS contract and Gitea CI/CD changes: **NO**
|
||
- Publishing Page QA / Publishing staticDirs / official hosting work: **NOT PERFORMED**
|
||
|
||
## 11. Git
|
||
|
||
Own changed/new files:
|
||
|
||
- `src/patterns/gnb.stories.tsx`
|
||
- `.storybook/qa/generate-inventory.mjs`
|
||
- `.storybook/qa/story-inventory.json`
|
||
- `.storybook/qa/STORY-INVENTORY.md`
|
||
- `.storybook/qa/LAN-PREVIEW.md`
|
||
- `.storybook/qa/LAN-PREVIEW-REPORT.md`
|
||
|
||
Pre-existing or concurrent changes were preserved: `.storybook/main.ts`, `.storybook/manager.css`, `.storybook/preview.tsx`, `.storybook/preview-head.html`, `src/patterns/dashboard-layout.stories.tsx`, its Story-only CSS, `src/theme/designer-theme.stories.tsx`, and the six files in `src/foundation/`.
|
||
|
||
- Commit: **NOT CREATED**
|
||
- Merge: **NOT PERFORMED**
|
||
- Rebase / cherry-pick: **NOT PERFORMED**
|
||
- No automatic main integration or push was performed.
|
||
|
||
## 12. Status
|
||
|
||
- LAN TEMP PREVIEW: **READY** for Storybook cleanup and same-host LAN QA
|
||
- Official Static Hosting: **NOT CONFIGURED** by this batch
|
||
- This URL is an official deployment URL: **NO**
|
||
- Other physical PCs can be declared verified: **NO**, pending actual cross-PC access
|
||
|
||
## Required answers
|
||
|
||
1. Storybook Worktree execution: **YES**, Track B.
|
||
2. Execution on main: **NO**.
|
||
3. 6008 bound to 0.0.0.0: **YES**.
|
||
4. localhost:6008 opens: **YES**.
|
||
5. <QA_HOST_IPV4>:6008 opens on the same PC: **YES**.
|
||
6. Opens from another physical PC: **NOT_VERIFIED**.
|
||
7. Missing cross-PC verification explicitly marked: **YES**.
|
||
8. Top Bar #266651 maintained: **YES**.
|
||
9. Toolbar icon/text white: **YES**.
|
||
10. Bottom panel default hidden: **YES**.
|
||
11. Preview rail 0px: **YES**.
|
||
12. 1280 preset available and measured: **YES**.
|
||
13. 1024 preset available and measured: **YES**.
|
||
14. 1023 preset available and measured: **YES**.
|
||
15. 390 preset available and measured: **YES**.
|
||
16. GNB/LNB 1024→1023 transition: **PASS in Chrome**, in-app-browser caveat above.
|
||
17. Story HMR works: **YES**.
|
||
18. Same-host LAN receives HMR changes: **YES**; cross-PC HMR **NOT_VERIFIED**.
|
||
19. New console errors observed: **NO**.
|
||
20. Asset 404 observed: **NO** in checked resources/screens.
|
||
21. Track A modified: **NO**.
|
||
22. Package source modified: **NO**.
|
||
23. Package publish repeated: **NO**.
|
||
24. Official deployment URL: **NO**.
|
||
25. Current preview usable for Storybook cleanup: **YES**; second physical PC validation remains outstanding.
|
||
|
||
## Time tracking (Asia/Seoul)
|
||
|
||
- Started At: 2026-10-07 15:31:24 KST
|
||
- Completed At: 2026-10-07 15:56:10 KST
|
||
- Actual Duration: 24분 46초
|
||
- Estimated Duration: 35~50분
|
||
- Variance: 예상보다 10분 14초 ~ 25분 14초 짧음
|