Skip to content

feat: 블록 팔레트 카테고리 전환 + 확장 블록 카탈로그 - #31

Merged
jjhhss100906 merged 2 commits into
mainfrom
feature/28-palette-categories
Sep 17, 2026
Merged

jjhhss100906 merged 2 commits into
mainfrom
feature/28-palette-categories

Conversation

@jjhhss100906

Copy link
Copy Markdown
Contributor

Summary

  • Figma "뽀삐" node 34:951(Slide 5) 대로 팔레트 카테고리 4개(시작·흐름·이동·동작)를 클릭으로 전환 가능하게 만들고, 카테고리별 블록 목록을 채웠습니다.
  • 이동·동작 카테고리의 새 블록 10종(앞으로/좌우 회전 이동·정지, 앉기·일어서기·하트·춤추기·구르기·공격)을 블록 모델과 시뮬레이션 wire 타입에 추가해, 드래그·스냅·파라미터 편집·직렬화·안전 제한 검증까지 기존 블록과 동일하게 연결했습니다.
  • 자체 코드리뷰에서 나온 3건 중 2건(종료 블록 중복 생성 버그, 비활성 팔레트 항목의 잘못된 role="button") 수정, 1건(이동/회전 렌더 중복)은 measuredBlock 헬퍼로 정리했습니다.

Closes #28

Test plan

  • npm run typecheck / npm run lint 통과
  • npx vitest run — 80개 테스트 통과 (신규 케이스 포함)
  • Playwright로 /experience에서 카테고리 4개 전환 + 신규 블록(일어서기) 드래그·캔버스 배치·구조 오류 배너 확인, 콘솔 에러 없음

@inryeok-bot inryeok-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 결과

변경된 8개 파일을 검토했으며, 수정이 필요한 문제 1개를 발견했습니다.

심각도 개수
Critical 0
High 0
Medium 1
Low 0

주요 내용

  • MEDIUM · BEHAVIOR — 팔레트의 버튼 역할 요소를 키보드로 조작할 수 없습니다

검토한 head: 3923227b510b

return (
<li>
<div
role={onGrab ? 'button' : undefined}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 MEDIUM · BEHAVIOR

팔레트의 버튼 역할 요소를 키보드로 조작할 수 없습니다

onGrab이 있는 항목은 div에 role="button"만 부여하고 tabIndex나 키보드 이벤트를 제공하지 않습니다. 따라서 새로 추가된 이동·회전·동작 블록은 마우스나 터치로만 꺼낼 수 있고, 키보드 사용자는 포커스를 옮기거나 블록을 캔버스에 추가할 수 없습니다.

실제 <button>을 사용하고 Enter/Space로 블록을 추가하는 동작을 제공하거나, 최소한 포커스와 동등한 키보드 조작 경로를 구현해야 합니다.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ce55c98 에서 수정했습니다. tabIndex + onKeyDown(Enter/Space)을 추가해, 드래그와 별개로 키보드로도 스택 맨 끝에 블록을 바로 연결할 수 있게 했습니다(useBlockDrag.addToStackEnd). 실제 대신 이 경로를 택한 이유는 같은 요소에 포인터 드래그(pointerdown)와 네이티브 click이 겹치면 짧은 드래그 후 같은 자리에서 놓였을 때 중복 추가될 위험이 있어서입니다.

jjhhss100906 and others added 2 commits September 17, 2026 19:57
Figma "뽀삐" node 34:951(Slide 5) — 카테고리 4개(시작·흐름·이동·동작)를
각각 선택했을 때 팔레트가 보여주는 블록 목록 레퍼런스를 구현한다.

- 팔레트 카테고리 레일을 클릭으로 전환 가능하게 만들고, 카테고리별
  블록 목록을 디자인대로 채운다
- 이동·동작 카테고리의 새 블록 10종(앞으로/좌우 회전 이동·정지,
  앉기·일어서기·하트·춤추기·구르기·공격)을 블록 모델·시뮬레이션 wire
  타입에 추가 — 드래그·스냅·파라미터 편집·직렬화·안전 제한 검증까지
  기존 블록과 동일 경로로 연결
- 회전 각도 안전 범위(LIMITS.rotateDegree) 신규 정의, 앞으로 이동은
  뒤로 이동과 동일하게 총 이동 거리(안전 구역 판정)에 합산
- 키보드로도 팔레트 블록을 꺼낼 수 있게 addToStackEnd 추가(PR #31 리뷰 반영)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
팀원 파트(#32 블록 삭제, #45 서버 계약 정렬)가 main에 먼저 들어와 있어
#28을 그 위로 리베이스했다. 그 과정에서 필요했던 보정:

- toServerBlockProgram 의 블록 종류 switch 가 새 블록 10종을 몰라 컴파일이
  깨졌다. greet 과 같은 방식으로 "서버 계약이 아직 지원하지 않는 블록"
  오류를 던지도록 명시적으로 채워 넣었다(실제 서버 계약이 확정되기 전까지는
  이 블록들을 쓴 프로젝트는 로컬 초안으로만 남는다 — greet 도 이미 같은
  상태).
- 팔레트 카테고리 전환으로 '종료'가 '흐름' 목록이 아니라 '시작' 탭 안으로
  옮겨져, 기존 통합 테스트(blockDnd.test.tsx)가 '시작' 탭을 먼저 클릭하지
  않고 종료 팔레트 버튼을 찾다가 실패했다 — 탭 전환을 테스트에 추가했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jjhhss100906
jjhhss100906 force-pushed the feature/28-palette-categories branch from 6c9423e to 0158dda Compare September 17, 2026 11:05
@jjhhss100906

Copy link
Copy Markdown
Contributor Author

main 리베이스 완료

이 PR을 열어둔 사이 팀원 파트(#32 블록 삭제, #45 서버 계약 정렬 등)가 main에 먼저 머지됐고, 실수로 겹쳤던 #34·#36은 PR #39로 되돌려졌습니다(제 파트 #28·#29·#30, 이 PR은 그대로 두고). 최신 main 위로 리베이스해서 아래 세 가지를 반영했습니다.

  • 블록 삭제(feat: 블록 삭제 — 쓰레기통 드래그 #32) 통합: '종료'를 팔레트에서 무조건 막는 대신, hasBlockKind(program, 'end')로 이미 있을 때만 그림만 보여주고 없으면(쓰레기통으로 지운 뒤 포함) 다시 꺼낼 수 있게 했습니다. 기존 통합 테스트(blockDnd.test.tsx)도 카테고리 탭 전환에 맞춰 수정했습니다.
  • 값 검증 강화: isValueValid의 default가 false로 바뀐 것에 맞춰 새 블록 10종을 명시적으로 화이트리스트에 추가했습니다.
  • 서버 계약 정렬(fix(integration): Poppy-Server 실제 계약에 Client API 연동 정렬 #45) 대응: toServerBlockProgram이 아직 새 블록들을 모르는 게 당연해서(실제 서버 계약이 아직 없음), greet와 같은 방식으로 "서버 계약 미지원" 오류를 던지도록 명시했습니다. 자동저장은 이 경우도 이미 로컬 초안(offline)으로 안전하게 떨어집니다.

npm run verify(typecheck·lint·test 98개·build) 전부 클린, force-push 완료, CI(verify) pass 확인했습니다.

@jjhhss100906
jjhhss100906 merged commit 492b714 into main Sep 17, 2026
1 check passed
@jjhhss100906
jjhhss100906 deleted the feature/28-palette-categories branch September 19, 2026 11:49
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.

feat: 블록 팔레트 카테고리 전환 + 확장 블록 카탈로그 (Figma Slide 5)

1 participant