Skip to content

[DONE] Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 20개가 dock 틀 CSS 에서 그 패널의 CSS 로 간다 - #241

Merged
patternflow-bot merged 5 commits into
devfrom
claude/patternflow-round-95-mi3qq1
Oct 25, 2026
Merged

patternflow-bot merged 5 commits into
devfrom
claude/patternflow-round-95-mi3qq1

Conversation

@patternflow-bot

@patternflow-bot patternflow-bot commented Oct 25, 2026 •

Copy link
Copy Markdown

lsh / https://claude.ai/code/session_01FgcWUCHedy5R788oTvxvcv

Pattern Lab 의 dock 틀 CSS 에 남아 있던 Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 20개를 그 패널의 CSS 로 옮겼어요. 화면은 그대로이고, 머지하면 dock 틀 CSS 에 패널 파일 하나만 읽는 클래스가 다시 들어올 때 시험이 빨개져요.

좋아지는 것: 없음

체크리스트

한 일

  • web/src/app/pattern-lab/LabPanels.module.css 에서 패널 파일 하나만 읽는 규칙 20개를 그 패널의 CSS 로 옮겼어요. 값은 그대로예요.
  • PreviewPanel.tsx 만 읽는 previewBody, previewCanvasBox, previewFrame, cameraCanvas 의 규칙 다섯은 panels/PreviewPanel.module.css 끝으로 갔어요.
  • PixelPanel.tsx 만 읽는 pixelViewport, pixelStage, pixelStatus, pixelMouseHint 의 규칙 다섯과 pixel/PixelToolbars.tsx 만 읽는 swatchRow, swatch, toolSep 의 규칙 넷은 새 panels/PixelPanel.module.css 로 갔어요. 두 파일이 같이 읽어요.
  • RampPanel.tsx 만 읽는 rampDock, rampAlphaRow, rampAlphaValue 의 규칙 다섯은 panels/RampPanel.module.css 로 갔어요. 그 파일 끝의 @container ramp-controls 가 이제 그 컨테이너를 정하는 .rampDock 과 한 파일에 있어요.
  • KnobsPanel.tsx 만 읽는 .knobsDock 은 panels/KnobsPanel.module.css 의 .controls 뒤로 갔어요.
  • .panelBar .swatch 는 .swatchRow .swatch 가 됐어요. 다른 파일의 panelBar 는 셀렉터에 쓸 수 없어요(모듈마다 해시 이름이 달라요). 견본은 모두 swatchRow 안에 있고 그 줄은 패널 바 안에 있어요. 클래스 둘이라 .panelBar button(클래스 하나, 요소 하나)을 번들 순서와 상관없이 이겨요.
  • colorWell 은 Pixel, Text, Graphic Export 셋이 읽어서 LabPanels.module.css 에 남았어요.
  • 다섯 파일에서 열일곱 곳을 dock.* 에서 local.* 로 바꿨어요. PixelPanel.tsx 와 PixelToolbars.tsx 는 새 CSS 를 dock 다음에 불러와요.
  • labCss.test.ts 에 「LabPanels.module.css holds no class that only one panel file reads」 를 더했어요. 셸만 읽는 머리줄 클래스는 dock 틀이라 세지 않아요. readers() 는 registry.tsx 의 def.dock.ref 도 읽는 이름으로 세서, 이 시험은 그 파일이 정의한 클래스만 봐요. 「Pixel status line on a touch screen」 은 새 CSS 를 읽어요.
  • 네 CSS 파일 머리 주석을 지금 담는 것으로 고쳤어요.

증거

LabPanels.module.css 의 클래스마다 그 모듈을 불러오는 파일 가운데 그 이름을 읽는 파일을 셌어요(git grep 'dock\.<이름>'):

dev 9931790:
  previewBody previewCanvasBox previewFrame cameraCanvas   → panels/PreviewPanel.tsx 하나
  pixelViewport pixelStage pixelStatus pixelMouseHint      → panels/PixelPanel.tsx 하나
  swatchRow swatch toolSep                                 → panels/pixel/PixelToolbars.tsx 하나
  rampDock rampAlphaRow rampAlphaValue                     → panels/RampPanel.tsx 하나
  knobsDock                                                → panels/KnobsPanel.tsx 하나
  colorWell 3 · panelBody 5 · panelHint 7 · panelBar 9 · panel 9
LabPanels.module.css 636줄 → 466줄 · 새 PixelPanel.module.css 89줄

새 시험이 dev 의 CSS 를 잡는지: CSS 넷과 tsx 다섯을 dev 판으로 되돌리고 돌리면 빨개져요. 나머지 둘은 새 PixelPanel.module.css 가 디스크에 남아 있어서 빨개진 것이에요.

   × Pixel status line on a touch screen > drops the mouse gestures, and nothing else
   × Lab CSS modules > define no class that no component uses
   × LabPanels.module.css > holds no class that only one panel file reads
+   "cameraCanvas",
+   "knobsDock",
+   "pixelMouseHint",
+   "pixelStage",
+   "pixelStatus",
+   "pixelViewport",
+   "previewBody",
+   "previewCanvasBox",
+   "previewFrame",
+   "rampAlphaRow",
+   "rampAlphaValue",
+   "rampDock",
+   "swatch",
+   "swatchRow",
+   "toolSep",
      Tests  3 failed | 13 passed (16)

화면이 그대로인지: dev 와 이 브랜치를 빌드해 next start 로 열고, Chromium 으로 /pattern-lab 을 1440×900 와 390×844(터치, hover: none)에서 13가지 상태로 다뤘어요. 요소마다 getComputedStyle 의 모든 속성과 내용이 있는 ::before, ::after, 입력 칸의 ::placeholder 를 모아 DOM 경로로 맞춰 봤어요. 1440 은 처음 연 화면, Graphic Export 의 Viewfinder 로 Preview 에 카메라 캔버스를 띄운 화면, + Pixel 로 Pixel 패널을 앞에 둔 화면, 견본 hover, 툴바 단추 hover, 색 칸 포커스예요. 390 은 처음 연 화면, Knobs 앞, Color Ramp 앞, 카메라 캔버스, Pixel 앞(마우스 안내가 숨어요), 색 칸 포커스, Pixel 뒤의 Color Ramp 예요.

dev-1 vs dev-2      13 states, 3814 elements, 0 differ (0 in the dockview tab strip, 0 elsewhere)
dev-1 vs branch-1   13 states, 3814 elements, 0 differ (0 in the dockview tab strip, 0 elsewhere)

옮긴 규칙이 그 비교에 실제로 잡혔는지, 클래스마다 그 규칙의 값을 모두 가진 요소를 셌어요. dev 와 브랜치가 열세 상태 모두 같았어요.

1440 Pixel 앞   previewBody 1/1 · previewCanvasBox 1/1 · previewFrame 1/1 · pixelViewport 1/1 · pixelStage 1/1
                pixelStatus 1/1 · pixelMouseHint 1/1 · swatchRow 1/1 · swatch 6/6 (22×22, 둥글기 3px) · toolSep 2/2
                rampDock 1/1 (container ramp-controls) · rampAlphaRow 1/1 · rampAlphaValue 1/1 · knobsDock 1/1
1440 카메라     cameraCanvas 1/1 (image-rendering auto)
390 Pixel 앞    pixelMouseHint 1개, 보이는 것 0
견본 hover      견본 하나의 color 계열만 rgb(23, 21, 18) → rgb(247, 243, 234), 바탕은 인라인 색 그대로

빌드된 CSS(.next/static/chunks/*.css). 두 덩이 다 /pattern-lab HTML 이 처음부터 불러요:

Lab 첫 덩이                dev 113,320 B · gzip 19,039  →  branch 112,691 B · gzip 18,956
Preview·To hardware 덩이   dev   2,717 B · gzip    775  →  branch   3,359 B · gzip    971 (Preview 의 몸과 틀이 이 덩이로)
사이트 CSS 전체 466,652 B → 466,665 B (+13, 머리 주석)

다섯 검사(web/, 끝줄):

npm ci                              added 762 packages, and audited 763 packages in 28s
npm run lint -- --max-warnings=0    lint exit 0
npm run typecheck                   typecheck exit 0
npm run build                       ƒ  (Dynamic)  server-rendered on demand (exit 0)
npm run check:ci                    passed virtual-panel (Test Files 101 passed · Tests 1266 passed · links-absolute, roadmap skipped) · check:ci exit 0
npm run check:voice                 check:voice: nothing found (브랜치 44줄)

GitHub 검사(그 사이 merge 는 incoming/ 만 바꿨어요):

da10f17   Drift checks | completed | success · Web CI | completed | success
85222a9   Drift checks | completed | success · Web CI | completed | success
80e6ae5   Drift checks | completed | success · Web CI | completed | success

화면을 바꾸지 않아서 PR 에 사진은 싣지 않았어요. 상태마다 찍은 사진은 스크래치 폴더에서 상태가 맞는지 보는 데만 썼어요.

실행법

cd web
npx vitest run src/app/pattern-lab/labCss.test.ts

가정

  • 표는 규칙 18개라고 했어요. 표가 적은 줄 범위 밖에 @media (hover: none) 안의 .pixelMouseHint 와 파일 끝의 .rampDock > * 가 있었고, 둘 다 한 패널 파일만 읽어서 같이 옮겼어요. 그래서 20개예요.
  • Pixel 툴바의 규칙도 PixelPanel.module.css 에 뒀어요. 표의 고칠 곳에 새 CSS 는 그 하나이고, 툴바는 Pixel 패널을 이루는 파일이라 pixel/ 안에 CSS 를 따로 두지 않았어요.
  • 옮긴 규칙과 그 패널 CSS 의 규칙이 같은 요소의 같은 속성을 두고 다투는지 먼저 봤어요. Ramp 몸은 .panelBody 와 한 요소인데 둘이 쓰는 속성이 겹치지 않고, .rampDock > * 의 flex-shrink 를 쓰는 다른 규칙도 없어요. Knobs 의 .controls 는 padding 을 쓰지 않아요. 그래서 파일 안의 자리는 읽기 좋은 곳으로 정했어요.
  • 이 바퀴를 연 04:05(UTC)에 dev 의 incoming/ROUND.md 는 지시 1~5 를 코드 블록 안에 두었고 남은 지시가 없었어요. 지시 6 과 7 은 04:27 에 dev(90e4b81)에 들어왔고, 그때 후보 5 는 이미 끝나 검사가 초록이었어요. 그 커밋이 표를 쓰는 바퀴를 102 까지 늘리고 두 바퀴를 지시 6 과 7 에 두어서, 이 바퀴는 후보 5 그대로 두고 다음 바퀴가 지시 6 부터 해요.
  • web/ARCHITECTURE.md:78 의 「Each panel owns its stylesheet … LabPanels.module.css the dock chrome」 은 이제 맞아서 고치지 않았어요.
  • 표 밖: 390×844 터치 화면에서 Panels 메뉴를 열면 「Color Ramp」 줄(y 385~429)의 가운데 높이를 Preview 와 탭 묶음 사이의 dockview sash 가 덮어요. elementFromPoint 가 그 줄의 왼쪽, 가운데, 오른쪽 모두 dv-sash 를 돌려줘서, 그 높이를 누르면 메뉴 대신 sash 를 잡아요. dockview.css:2942 의 .dv-sash 가 z-index: 99 이고 .menuPop(LabPanels.module.css:254)이 60 이에요. 고치지 않았어요.

Changelog

Web

  • Pattern Lab's Preview, Pixel, Color Ramp and Knobs rules live with their panels. The 20 rules only one panel file read moved from the dock's LabPanels.module.css to that panel's stylesheet, Pixel's in a new PixelPanel.module.css, and a test fails when the dock file holds a class only one panel file reads. Computed styles in 13 Lab states at 390px and 1440px match dev.

경험

언제: 바퀴에서 390px 터치 화면의 Pattern Lab Panels 메뉴를 Playwright 로 누를 때
교훈: 메뉴 줄 하나를 dockview sash(z-index: 99)가 덮어 click() 이 30초 기다리다 실패하니, 메뉴 단추는 locator.evaluate((el) => el.click()) 로 눌러요
근거: #241 에서 390 흐름이 Panels 메뉴 클릭에서 dv-sash … intercepts pointer events 로 두 번 멈췄고, elementFromPoint 로 보니 「Color Ramp」 줄을 sash 가 덮었어요. 바꾼 뒤엔 13가지 상태가 다 떴어요

바퀴

바퀴 95 · 후보 5 「Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 18개가 dock 틀 CSS 에서 그 패널의 CSS 로 간다」

다음 바퀴

  • 지시 6 「텍스트 레이어 고침 셋」: 「창작자 지시」 가 표보다 먼저예요. 이번 바퀴를 연 뒤 dev(90e4b81)에 들어왔어요.
  • 지시 7 「주석 · 사본 맞추기」: 그다음이에요. ③ 의 PatternLabClient.tsx:6~:7 머리 주석은 이번 바퀴가 건드리지 않았어요.
  • 6위 「Make 가이드와 Pattern Guide 의 Lab 사진이 걷어 낸 Gallery 탭 대신 지금 Lab 을 보인다」: 표에서 남은 맨 위 줄이에요. 3~5위는 화면을 바꾸지 않아서 사진은 지금 찍어도 같아요.

https://claude.ai/code/session_01FgcWUCHedy5R788oTvxvcv


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FgcWUCHedy5R788oTvxvcv
Twenty rules in LabPanels.module.css were read by one panel file each;
they now sit in that panel's stylesheet, and a test fails when the dock
file holds a class only one panel file reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FgcWUCHedy5R788oTvxvcv
@patternflow-bot patternflow-bot changed the title [WIP] pf 95바퀴 — 이번 바퀴에 고칠 것을 고르는 중 [WIP] Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 20개가 dock 틀 CSS 에서 그 패널의 CSS 로 간다 Oct 25, 2026
@patternflow-bot patternflow-bot changed the title [WIP] Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 20개가 dock 틀 CSS 에서 그 패널의 CSS 로 간다 [DONE] Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 20개가 dock 틀 CSS 에서 그 패널의 CSS 로 간다 Oct 25, 2026
@patternflow-bot
patternflow-bot marked this pull request as ready for review October 25, 2026 04:44
@patternflow-bot
patternflow-bot merged commit 1fea592 into dev Oct 25, 2026
2 checks passed
@patternflow-bot
patternflow-bot deleted the claude/patternflow-round-95-mi3qq1 branch October 25, 2026 04:45
engmung pushed a commit to engmung/Patternflow that referenced this pull request Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants