Skip to content

[DONE] Pattern Lab 에 두세 번 적힌 도우미 다섯이 한 곳에서 온다 - #238

Merged
patternflow-bot merged 2 commits into
devfrom
claude/lsh-pf-round92-c4aeqz
Oct 25, 2026
Merged

patternflow-bot merged 2 commits into
devfrom
claude/lsh-pf-round92-c4aeqz

Conversation

@patternflow-bot

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

Copy link
Copy Markdown

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

Pattern Lab 에 두세 벌씩 적혀 있던 도우미 다섯이 한 벌씩만 남아요. 화면은 그대로이고, To hardware 의 .h 와 Director 의 .pfs, .mid 는 이제 Graphic Export 와 같은 함수로 내려받아요.

좋아지는 것: 없음

  • 후보 2위 고르기. 창작자 지시 1~5 는 끝났고, 10월 15일 뒤로 세 직함이 쓴 꼬리말 없는 댓글은 없어요
  • FNV-1a 해시 셋을 lib/lab/hash.ts 의 fnv1a 하나로
  • 파일 내려받기 셋을 lib/lab/capture/download.ts 의 downloadBlob 하나로
  • commentSafe 둘을 lib/lab/flatten.ts 하나로
  • roundRangeValue 둘을 lib/pattern/controls.ts 하나로
  • sortedLane 둘을 lib/lab/director/bake.ts 하나로
  • To hardware 붙여 넣기와 셰이더의 키를 못 박는 시험(lib/lab/hash.test.ts), 고치기 전 코드에서 먼저 통과
  • 다섯 검사와 check:voice
  • Chromium 에서 .h, .pfs, .mid 를 실제로 내려받기
  • dev merge(갈라진 뒤 움직이지 않아 이미 최신)
  • GitHub 검사. 225e0d1 의 Drift checks 와 Web CI 가 둘 다 success

한 일

몸이 같은 함수를 하나만 남기고, 나머지 자리는 그 하나를 불러요. 어디에 남겼는지는 부르는 쪽이 이미 무엇을 불러오는지로 정했어요.

  • 해시. capture/probe.ts, capture/shaderStore.ts, hardwarePastes.ts 의 promptKey 가 같은 32비트 FNV-1a 를 제각기 적었어요. 새 파일 lib/lab/hash.ts 의 fnv1a 하나가 됐어요. 셋 가운데 둘은 브라우저에 남는 것의 이름이에요. To hardware 의 붙여 넣기는 sessionStorage 에 128:1q359yv 꼴로, 셰이더는 localStorage 에 code:968204348 꼴로 들어가요. 해시가 한 글자라도 달라지면 새로 고친 뒤 둘 다 못 찾아요.
  • 내려받기. app/pattern-lab/panels/director/showFiles.ts 의 downloadBlob 과 HardwareModal.tsx 의 downloadH 가 capture/download.ts 의 downloadBlob 을 불러요. 셋은 두 곳이 달랐어요. 남긴 하나는 링크를 문서에 붙였다 떼고, 주소를 30초 뒤에 거둬요(Firefox 는 내려받기를 늦게 시작해요). 지운 둘은 붙이지 않고 click() 하고 주소를 바로 거뒀어요. 이제 셋 다 앞의 길로 가요.
  • commentSafe. flatten.ts 것을 export 하고, pixelToCode.ts 가 이미 flatten.ts 에서 rleEncodeRGBA 를 받던 줄에 더했어요.
  • roundRangeValue. KnobsPanel.tsx 와 cppPrompt.ts 가 둘 다 이미 lib/pattern/controls.ts 에서 노브 셈을 받아서 knobDetentStep 옆에 두었어요.
  • sortedLane. bake.ts 것을 export 하고, useShowEditing.ts 가 이미 bake.ts 를 부르던 줄에 더했어요. 바퀴 91 이 다음 바퀴에 적은 그대로예요.

증거

$ git diff --stat origin/dev -- web/src
 14 files changed, 83 insertions(+), 69 deletions(-)

$ git grep -nE "function (fnv1a|downloadBlob|commentSafe|roundRangeValue|sortedLane)\b" -- web/src
web/src/lib/lab/capture/download.ts:30:export function downloadBlob(blob: Blob, fileName: string) {
web/src/lib/lab/director/bake.ts:72:export function sortedLane(lane: DirectorKeyframe[]): DirectorKeyframe[] {
web/src/lib/lab/flatten.ts:92:export function commentSafe(name: string): string {
web/src/lib/lab/hash.ts:7:export function fnv1a(text: string): number {
web/src/lib/pattern/controls.ts:63:export function roundRangeValue(value: number) {

$ git grep -n 2166136261 -- web/src/lib/lab web/src/app/pattern-lab
web/src/lib/lab/hash.ts:8:  let h = 2166136261;

키 시험은 고치기 전에 썼어요. 고친 소스 셋만 git stash push 로 dev 판으로 돌려 놓고 돌렸어요.

$ npx vitest run src/lib/lab/hash.test.ts      (dev 코드)
 Test Files  1 passed (1)
      Tests  2 passed (2)

$ npx vitest run src/lib/lab/hash.test.ts src/app/pattern-lab/panels/DirectorPanel.test.tsx      (이 브랜치, FNV-1a 표준 값 셋 시험을 더해서)
 Test Files  2 passed (2)
      Tests  11 passed (11)
$ npm ci
added 762 packages, and audited 763 packages in 31s

$ npm run lint -- --max-warnings=0
> eslint --max-warnings=0
(경고 0)

$ npm run typecheck
> tsc --noEmit && tsc --noEmit -p ../tools/virtual-panel
(오류 없음)

$ npm run build
ƒ  (Dynamic)  server-rendered on demand
build exit 0

$ npm run check:ci
 Test Files  101 passed (101)
      Tests  1264 passed (1264)
passed audio-vectors · bom · bom-schematic · changelog · editions · features · markers · midi-vectors
passed mqtt-vectors · osc-vectors · presets · rest-vectors · shared · virtual-panel
skipped links-absolute · roadmap   (gh 로그인과 태그가 없는 컨테이너라서요. drift.yml 이 다시 돌려요)
ci exit 0

$ npm run check:voice
read: 83 added lines in 14 files
check:voice: nothing found

바뀐 내려받기 둘은 Chromium 으로 1440×900 의 Lab 을 열어 눌러 봤어요. To hardware 에 헤더를 붙여 넣고 Download .h 를 누르고, Director 의 첫 레인에 키 둘을 더블클릭으로 넣고 .pfs 와 MIDI 단추를 눌렀어요. 셋 다 download 이벤트가 오고 파일이 저장됐어요.

.h   code_1.h    103 bytes "#pragma once\nnamespace L"
.pfs code_1.pfs  180 bytes "PFST\u0002\u0000,\u0001\u0006\u0000\b\u0000Code 1…"
.mid code-1.mid  177 bytes "MThd\u0000\u0000\u0000\u0006…MTrk…"

GitHub 에서도 225e0d1 의 Drift checks 와 Web CI 가 둘 다 success 예요.

화면을 바꾸지 않아서 사진은 없어요.

실행법

cd web
npx vitest run src/lib/lab/hash.test.ts
git grep -nE "function (fnv1a|downloadBlob|commentSafe|roundRangeValue|sortedLane)\b" -- src

가정

  • roundRangeValue 는 Lab 밖의 lib/pattern/controls.ts 에 두었어요. 부르는 두 파일이 다 그 파일에서 노브 셈을 받고 있었고, cppPrompt.ts 에 두면 Knobs 패널이 프롬프트 파일을 불러와야 해요.
  • 표는 내려받기를 하나로 모으면 같은 길로 간다고만 적었어요. 남긴 것은 링크를 붙였다 떼고 주소를 늦게 거두는 capture/download.ts 판이라서, .h, .pfs, .mid 는 그 두 가지가 달라져요. 파일 이름과 내용은 그대로예요.
  • probe.ts 의 해시는 메모리 안의 판정 캐시 키라 브라우저에 남지 않아요. 그래서 시험은 붙여 넣기와 셰이더 키만 못 박고, 해시 자체는 FNV-1a 표준 값 셋("", "a", "foobar")으로 봐요.
  • 표 밖: components/sections/InsideGlobe/Globe.tsx:193 에 네 번째 FNV-1a 가 있어요.
  • 표 밖: lib/community/download.ts:42 의 triggerDownload 도 내려받기를 따로 적었고 주소를 바로 거둬요.
  • 표 밖: components/sections/variantPrompt.ts:19 의 roundStep 은 roundRangeValue 와 몸이 같아요.
  • 표 밖: To hardware 프롬프트는 노브 한 칸을 소수 셋째 자리로 적어서, 범위 0..0.01 인 노브(한 칸 0.000208)를 「calibrated encoder step 0 per detent」로 적어요(lib/lab/cppPrompt.ts:80).

Changelog

Web

  • Pattern Lab's twice-written helpers live in one place each. The FNV-1a hash, the file download, commentSafe, roundRangeValue and sortedLane had two or three bodies. The .h, .pfs and .mid downloads now take the Graphic Export path, and a test pins the keys a To hardware paste and a shader are filed under.

경험

언제: 바퀴에서 To hardware 창이나 그 안의 단추를 브라우저로 확인할 때
교훈: next start 빌드엔 NEXT_PUBLIC_BUILD_ENABLED 가 없어 To hardware 단추가 그려지지 않으니 next dev 로 열고 끝나면 git checkout -- web/AGENTS.md 로 되돌려요(next dev 가 그 파일을 고쳐 써요). Download .h 는 #pragma once 로 시작하는 헤더를 붙여 넣어야 켜져요
근거: #238 에서 next start 의 Lab 에서 To hardware 단추를 30초 기다리다 실패했고, next dev 에서 헤더를 붙여 넣은 뒤에야 code_1.h 103바이트를 받았어요

바퀴

바퀴 92 · 후보 2 「Pattern Lab 에 두세 번 적힌 도우미 다섯이 한 곳에서 온다」

다음 바퀴

  • 3위 「Layers 패널의 규칙 24개가 dock 틀 CSS 에서 Layers 패널의 CSS 로 간다」: 바퀴 89 의 정렬한 getComputedStyle 비교를 그대로 써요.
  • 4위 「Lab 머리줄 규칙 24개가 여럿이 쓰는 PatternLab.module.css 에서 셸의 CSS 로 간다」: 3위와 같은 비교에 labCss.test.ts 의 새 시험 하나예요. 머리줄의 To hardware 단추는 next dev 에서만 그려져요.
  • 5위 「Preview, Pixel, Color Ramp, Knobs 패널만 쓰는 규칙 18개가 dock 틀 CSS 에서 그 패널의 CSS 로 간다」: 3위와 같은 파일에서 빠지니 3위 다음에 하면 겹침이 적어요.

https://claude.ai/code/session_017uwozb36EhjHzHsJQiTQPU


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017uwozb36EhjHzHsJQiTQPU
@patternflow-bot patternflow-bot changed the title [WIP] 92바퀴 — 고를 일을 찾는 중 [WIP] Pattern Lab 에 두세 번 적힌 도우미 다섯이 한 곳에서 온다 Oct 25, 2026
The FNV-1a hash, the file download, commentSafe, roundRangeValue and
sortedLane each had two or three bodies; a new test pins the paste and
shader keys the hash files under.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017uwozb36EhjHzHsJQiTQPU
@patternflow-bot patternflow-bot changed the title [WIP] Pattern Lab 에 두세 번 적힌 도우미 다섯이 한 곳에서 온다 [DONE] Pattern Lab 에 두세 번 적힌 도우미 다섯이 한 곳에서 온다 Oct 25, 2026
@patternflow-bot
patternflow-bot marked this pull request as ready for review October 25, 2026 02:52
@patternflow-bot
patternflow-bot merged commit fe9a161 into dev Oct 25, 2026
2 checks passed
@patternflow-bot
patternflow-bot deleted the claude/lsh-pf-round92-c4aeqz branch October 25, 2026 02:53
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